Files
oikos/web/dist/assets/Learning-C0EP82zq.js
dtoro d4d99a7473
Some checks failed
ci / build-test (push) Has been cancelled
ci / docker-build (push) Has been cancelled
feat: Phase 1 — extract the client (web SPA + desktop) to dtoro/oikos-web
Problem: the hexagonal refactor churns the backend tree for nine more
phases; the UI delivery stack (web/ SPA, cmd/desktop Wails wrapper,
compose/web image) must move to its own repo first so doc/layout
rewrites land once on a backend-only tree.

Change:
- New repo git.hubris.network/dtoro/oikos-web (v0.33.0): web/, desktop/
  (updateURL repointed to oikos-web releases), compose/, own CI (web +
  desktop jobs), own deploy script (CI-green gate, TOCTOU guard,
  version-tagged images, prune-to-3), own webhook receiver on :9798 +
  launchd unit, own compose project publishing the same 8091:80.
- Cutover executed on mac-mini in order: oikos stack's web service
  stopped+removed, oikos-web project brought up on 8091; outer Caddy
  untouched (targets the published port) — serving + Authentik flow +
  /wails 404 quirk verified post-cutover.
- Stripped from oikos: web/, cmd/desktop/, compose/web/, desktop CI
  workflow, ci.yml web job, Makefile ui/desktop/desktop-package/install
  targets, the compose web service, oikos-web from deploy.sh's fallback
  prune list; wails + go-keyring dropped from go.mod, vendor synced.
- README / CONTRIBUTING / AGENTS.md / .agents dev+operations docs now
  point at the new repo; mbse + mascot design docs carry a path note.

Risk: production SPA serving depends on the new pipeline now; rollback
is versioned-image re-up of the old web service from a pre-split
checkout (port 8091). Desktop builds installed before the split still
check dtoro/oikos releases — one manual reinstall, noted in the
oikos-web release notes.

Verification: go vet, make test (race), make generate-check, golangci
(no new findings; baseline down 400→365); post-cutover curls —
localhost:8091 200, /wails/runtime.js 404, outer Caddy 302 Authentik.
2026-08-15 22:27:52 +02:00

3 lines
8.5 KiB
JavaScript

import{p as G,W as A,$ as X,a4 as Y,_ as Z,a5 as I,a as t,b as J,a2 as ee,f as m,a0 as te,c as $,y as H,a6 as le,o as Le,s as x,a7 as f,j as k,a8 as E,Q as O,R as U,bQ as Te,i as fe,ab as _e,t as q,g as s,e as F,u as De,D as V,bR as Ne,bS as We,bT as je,bU as Ee,bV as Fe,bW as Me}from"./index-B5w8gw75.js";import{S as Qe}from"./sparkles-DGJxKTzu.js";var Re=new Set(["$$slots","$$events","$$legacy","ref","class","children","size"]),Ve=m("<div><!></div>");function oe(z,r){G(r,!0);let p=A(r,"ref",15,null),g=A(r,"size",3,"default"),d=ee(r,Re);var h=Ve();X(h,N=>({"data-slot":"card","data-size":g(),class:N,...d}),[()=>Y("ring-foreground/10 bg-card text-card-foreground gap-6 overflow-hidden rounded-xl py-6 text-sm shadow-xs ring-1 has-[>img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col",r.class)]);var u=$(h);Z(u,()=>r.children??te),I(h,N=>p(N),()=>p()),t(z,h),J()}var Be=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),He=m("<div><!></div>");function de(z,r){G(r,!0);let p=A(r,"ref",15,null),g=ee(r,Be);var d=He();X(d,u=>({"data-slot":"card-content",class:u,...g}),[()=>Y("px-6 group-data-[size=sm]/card:px-4",r.class)]);var h=$(d);Z(h,()=>r.children??te),I(d,u=>p(u),()=>p()),t(z,d),J()}var Ue=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),qe=m("<p><!></p>");function ne(z,r){G(r,!0);let p=A(r,"ref",15,null),g=ee(r,Ue);var d=qe();X(d,u=>({"data-slot":"card-description",class:u,...g}),[()=>Y("text-muted-foreground text-sm",r.class)]);var h=$(d);Z(h,()=>r.children??te),I(d,u=>p(u),()=>p()),t(z,d),J()}var Ae=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),Ge=m("<div><!></div>");function ie(z,r){G(r,!0);let p=A(r,"ref",15,null),g=ee(r,Ae);var d=Ge();X(d,u=>({"data-slot":"card-header",class:u,...g}),[()=>Y("gap-1 rounded-t-xl px-6 group-data-[size=sm]/card:px-4 [.border-b]:pb-6 group-data-[size=sm]/card:[.border-b]:pb-4 group/card-header @container/card-header grid auto-rows-min items-start has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto]",r.class)]);var h=$(d);Z(h,()=>r.children??te),I(d,u=>p(u),()=>p()),t(z,d),J()}var Ie=new Set(["$$slots","$$events","$$legacy","ref","class","children"]),Je=m("<div><!></div>");function ce(z,r){G(r,!0);let p=A(r,"ref",15,null),g=ee(r,Ie);var d=Je();X(d,u=>({"data-slot":"card-title",class:u,...g}),[()=>Y("text-base leading-normal font-medium group-data-[size=sm]/card:text-sm",r.class)]);var h=$(d);Z(h,()=>r.children??te),I(d,u=>p(u),()=>p()),t(z,d),J()}var M=m("<!> <!>",1),Ke=m('<p class="py-8 text-center text-sm text-muted-foreground">No executions in the last 30 days yet.</p>'),Oe=m('<div class="w-full"></div>'),Xe=m("<!> Capability timeline",1),Ye=m('<div class="flex items-center justify-between gap-3 rounded-lg border px-3 py-2"><div><span class="font-mono text-sm"> </span> <span class="ml-2 text-xs text-muted-foreground"> </span></div> <!></div>'),Ze=m('<p class="py-8 text-center text-sm text-muted-foreground">No executions yet.</p>'),xe=m('<div class="flex flex-col gap-2"></div>'),et=m(`<p class="py-6 text-center text-sm text-muted-foreground">No patterns learned yet — patterns emerge once outcome feedback is recorded for repeated
actions.</p>`),ye=m('<div class="flex items-center justify-between gap-3 rounded-lg border px-3 py-2"><div><span class="text-sm"> </span> <span class="ml-2 text-xs text-muted-foreground"> </span></div> <!></div>'),tt=m("<!> Promoted skills",1),at=m('<p class="py-6 text-center text-sm text-muted-foreground">No skills promoted yet.</p>'),rt=m('<div class="flex h-full flex-col gap-4 overflow-y-auto p-2"><h1 class="text-lg font-semibold">Learning</h1> <!> <!> <!> <!></div>');function ot(z,r){G(r,!0);let p=H(le([])),g=H(le([])),d=H(le([])),h=H(le([])),u=H(!0),N=H(null);async function Pe(){V(u,!0);const[_,S,C,L]=await Promise.all([Ne(),We(),je(),Ee()]);V(p,_,!0),V(g,S,!0),V(d,C,!0),V(h,L,!0),V(u,!1),await Fe(),we()}Le(Pe);function we(){if(!s(N)||s(g).length===0)return;s(N).innerHTML="";const _=s(g).map(L=>new Date(L.day).getTime()/1e3),S=s(g).map(L=>L.successes),C=s(g).map(L=>L.failures);new Me({width:s(N).clientWidth||600,height:180,series:[{},{label:"succeeded",stroke:"#3fb950",width:2},{label:"failed",stroke:"#f85149",width:2}],axes:[{stroke:"#8b949e"},{stroke:"#8b949e"}],scales:{x:{time:!0}},legend:{show:!0}},[_,S,C],s(N))}function ke(_){return _?new Date(_).toLocaleDateString(void 0,{month:"short",day:"numeric"}):"—"}function ze(_){return _.total===0||_.successes===0?"destructive":_.successes===_.total?"default":"secondary"}var $e=rt(),pe=x($($e),2);f(pe,()=>oe,(_,S)=>{S(_,{children:(C,L)=>{var T=M(),D=k(T);f(D,()=>ie,(b,y)=>{y(b,{children:(P,R)=>{var n=M(),i=k(n);f(i,()=>ce,(o,e)=>{e(o,{class:"text-sm",children:(a,v)=>{var l=E("Execution outcomes — last 30 days");t(a,l)},$$slots:{default:!0}})});var c=x(i,2);f(c,()=>ne,(o,e)=>{e(o,{class:"text-xs",children:(a,v)=>{var l=E("Every gated action, by day it ran, succeeded vs failed.");t(a,l)},$$slots:{default:!0}})}),t(P,n)},$$slots:{default:!0}})});var Q=x(D,2);f(Q,()=>de,(b,y)=>{y(b,{children:(P,R)=>{var n=O(),i=k(n);{var c=e=>{var a=O(),v=k(a);{var l=w=>{var W=Ke();t(w,W)};U(v,w=>{s(u)||w(l)})}t(e,a)},o=e=>{var a=Oe();I(a,v=>V(N,v),()=>s(N)),t(e,a)};U(i,e=>{s(g).length===0?e(c):e(o,-1)})}t(P,n)},$$slots:{default:!0}})}),t(C,T)},$$slots:{default:!0}})});var me=x(pe,2);f(me,()=>oe,(_,S)=>{S(_,{children:(C,L)=>{var T=M(),D=k(T);f(D,()=>ie,(b,y)=>{y(b,{children:(P,R)=>{var n=M(),i=k(n);f(i,()=>ce,(o,e)=>{e(o,{class:"flex items-center gap-1.5 text-sm",children:(a,v)=>{var l=Xe(),w=k(l);Te(w,{class:"size-4"}),t(a,l)},$$slots:{default:!0}})});var c=x(i,2);f(c,()=>ne,(o,e)=>{e(o,{class:"text-xs",children:(a,v)=>{var l=E("What Nomos has learned to do, ordered by when it first succeeded.");t(a,l)},$$slots:{default:!0}})}),t(P,n)},$$slots:{default:!0}})});var Q=x(D,2);f(Q,()=>de,(b,y)=>{y(b,{children:(P,R)=>{var n=xe();fe(n,21,()=>s(p),i=>i.verb,(i,c)=>{var o=Ye(),e=$(o),a=$(e),v=$(a),l=x(a,2),w=$(l),W=x(e,2);{let j=De(()=>ze(s(c)));_e(W,{get variant(){return s(j)},children:(K,ae)=>{var B=E();q(()=>F(B,`${s(c).successes??""}/${s(c).total??""}`)),t(K,B)},$$slots:{default:!0}})}q(j=>{F(v,s(c).verb),F(w,j)},[()=>s(c).first_success?`first succeeded ${ke(s(c).first_success)}`:"no successes yet"]),t(i,o)},i=>{var c=O(),o=k(c);{var e=a=>{var v=Ze();t(a,v)};U(o,a=>{s(u)||a(e)})}t(i,c)}),t(P,n)},$$slots:{default:!0}})}),t(C,T)},$$slots:{default:!0}})});var ge=x(me,2);f(ge,()=>oe,(_,S)=>{S(_,{children:(C,L)=>{var T=M(),D=k(T);f(D,()=>ie,(b,y)=>{y(b,{children:(P,R)=>{var n=M(),i=k(n);f(i,()=>ce,(o,e)=>{e(o,{class:"text-sm",children:(a,v)=>{var l=E("Patterns");t(a,l)},$$slots:{default:!0}})});var c=x(i,2);f(c,()=>ne,(o,e)=>{e(o,{class:"text-xs",children:(a,v)=>{var l=E("Statistically validated behaviors, extracted from outcome feedback.");t(a,l)},$$slots:{default:!0}})}),t(P,n)},$$slots:{default:!0}})});var Q=x(D,2);f(Q,()=>de,(b,y)=>{y(b,{children:(P,R)=>{var n=O(),i=k(n);{var c=e=>{var a=et();t(e,a)},o=e=>{var a=xe();fe(a,21,()=>s(d),v=>v.id,(v,l)=>{var w=ye(),W=$(w),j=$(W),K=$(j),ae=x(j,2),B=$(ae),ve=x(W,2);_e(ve,{variant:"outline",children:(ue,re)=>{var se=E();q(he=>F(se,`${he??""}% conf.`),[()=>(s(l).confidence*100).toFixed(0)]),t(ue,se)},$$slots:{default:!0}}),q(()=>{F(K,s(l).pattern),F(B,`${s(l).applies_type??""} · ${s(l).action??""}`)}),t(v,w)}),t(e,a)};U(i,e=>{s(d).length===0?e(c):e(o,-1)})}t(P,n)},$$slots:{default:!0}})}),t(C,T)},$$slots:{default:!0}})});var Se=x(ge,2);f(Se,()=>oe,(_,S)=>{S(_,{children:(C,L)=>{var T=M(),D=k(T);f(D,()=>ie,(b,y)=>{y(b,{children:(P,R)=>{var n=M(),i=k(n);f(i,()=>ce,(o,e)=>{e(o,{class:"flex items-center gap-1.5 text-sm",children:(a,v)=>{var l=tt(),w=k(l);Qe(w,{class:"size-4"}),t(a,l)},$$slots:{default:!0}})});var c=x(i,2);f(c,()=>ne,(o,e)=>{e(o,{class:"text-xs",children:(a,v)=>{var l=E("Procedures promoted from validated patterns.");t(a,l)},$$slots:{default:!0}})}),t(P,n)},$$slots:{default:!0}})});var Q=x(D,2);f(Q,()=>de,(b,y)=>{y(b,{children:(P,R)=>{var n=O(),i=k(n);{var c=e=>{var a=at();t(e,a)},o=e=>{var a=xe();fe(a,21,()=>s(h),v=>v.id,(v,l)=>{var w=ye(),W=$(w),j=$(W),K=$(j),ae=x(j,2),B=$(ae),ve=x(W,2);{var ue=re=>{_e(re,{variant:"outline",children:(se,he)=>{var be=E();q(Ce=>F(be,`${Ce??""}% success`),[()=>(s(l).success_rate*100).toFixed(0)]),t(se,be)},$$slots:{default:!0}})};U(ve,re=>{s(l).success_rate!=null&&re(ue)})}q(()=>{F(K,s(l).name),F(B,s(l).status)}),t(v,w)}),t(e,a)};U(i,e=>{s(h).length===0?e(c):e(o,-1)})}t(P,n)},$$slots:{default:!0}})}),t(C,T)},$$slots:{default:!0}})}),t(z,$e),J()}export{ot as default};