okengine 0.1.6 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +36 -29
  3. package/docs/spec/example.md +1187 -0
  4. package/docs/spec/unified-theory.md +1 -1
  5. package/package.json +20 -6
  6. package/src/cli/dev-app-runner.ts +6 -2
  7. package/src/cli/dev.ts +19 -10
  8. package/src/cli/doc-drift.ts +54 -21
  9. package/src/console/index.ts +25 -13
  10. package/src/console/server/app.ts +44 -7
  11. package/src/console/server/claim.test.ts +7 -4
  12. package/src/console/server/claim.ts +2 -7
  13. package/src/console/server/flows.ts +2 -6
  14. package/src/console/server/index.ts +2 -1
  15. package/src/console/server/lazy-panels.test.ts +27 -0
  16. package/src/console/server/panel-load.ts +28 -0
  17. package/src/console/server/plugin.ts +1 -1
  18. package/src/console/server/plugins.ts +7 -6
  19. package/src/console/server/public-flows.ts +12 -0
  20. package/src/console/server/state.ts +159 -122
  21. package/src/console/server/store.ts +13 -10
  22. package/src/console/ui/dist/assets/index-B71Yl_SS.js +10 -0
  23. package/src/console/ui/dist/assets/panel-access-Dd37LU2c.js +64 -0
  24. package/src/console/ui/dist/assets/panel-ai-CC7LR6-J.js +1 -0
  25. package/src/console/ui/dist/assets/panel-architecture-B5b3iKCz.js +1 -0
  26. package/src/console/ui/dist/assets/panel-channels-CeNjTKXp.js +1 -0
  27. package/src/console/ui/dist/assets/panel-clock-DgFTLoHV.js +1 -0
  28. package/src/console/ui/dist/assets/panel-diff-DxehccqB.js +1 -0
  29. package/src/console/ui/dist/assets/panel-flows-BtrVn-Eg.js +45 -0
  30. package/src/console/ui/dist/assets/panel-gates-Z9MKRGdH.js +1 -0
  31. package/src/console/ui/dist/assets/panel-overview-Bd48d9km.js +1 -0
  32. package/src/console/ui/dist/assets/panel-plugins-DWd0TowH.js +1 -0
  33. package/src/console/ui/dist/assets/panel-runs-BwsWqKeB.js +1 -0
  34. package/src/console/ui/dist/assets/panel-signals-9najbZY2.js +1 -0
  35. package/src/console/ui/dist/assets/panel-store-OHkP2pDp.js +1 -0
  36. package/src/console/ui/dist/assets/panel-traces-tn2JoY8U.js +1 -0
  37. package/src/console/ui/dist/assets/panel-vault-BbfWdox0.js +1 -0
  38. package/src/console/ui/dist/assets/rolldown-runtime-CNC7AqOf.js +1 -0
  39. package/src/console/ui/dist/assets/style-Cnl7WLya.css +3 -0
  40. package/src/console/ui/dist/index.html +14 -0
  41. package/src/docs-origin.ts +19 -0
  42. package/src/drivers/index.ts +1 -6
  43. package/src/drivers/vault-sops.ts +20 -1
  44. package/src/kernel/app.ts +1 -1
  45. package/src/kernel/boot-bind/ai.ts +31 -0
  46. package/src/kernel/boot-bind/channel.ts +27 -0
  47. package/src/kernel/boot-bind/clock.ts +74 -0
  48. package/src/kernel/boot-bind/gate.ts +28 -0
  49. package/src/kernel/boot-bind/runs.ts +28 -0
  50. package/src/kernel/boot-bind/signal.ts +68 -0
  51. package/src/kernel/boot-bind/store.ts +47 -0
  52. package/src/kernel/boot-bind/vault.ts +36 -0
  53. package/src/kernel/boot.test.ts +85 -1
  54. package/src/kernel/boot.ts +250 -212
  55. package/src/kernel/errors.registry.test.ts +4 -2
  56. package/src/kernel/errors.ts +3 -1
  57. package/src/kernel/fx.test.ts +2 -2
  58. package/src/kernel/index.ts +2 -0
  59. package/src/mcp/data.ts +1 -0
  60. package/src/mcp/docs-index.ts +252 -0
  61. package/src/mcp/docs-mcp.test.ts +176 -0
  62. package/src/mcp/docs-server.ts +233 -0
  63. package/src/mcp/docs-tools.ts +143 -0
  64. package/src/mcp/index.ts +29 -5
  65. package/src/mcp/protocol.ts +2 -1
  66. package/src/release/exports.test.ts +71 -0
  67. package/src/release/exports.ts +156 -0
  68. package/src/release/index.ts +21 -0
  69. package/src/release/limits.ts +9 -0
  70. package/src/release/measure.exports.test.ts +82 -0
  71. package/src/release/measure.ts +297 -14
  72. package/src/release/publish.ts +14 -3
  73. package/src/release/readme.test.ts +61 -0
  74. package/src/release/readme.ts +13 -0
  75. package/src/runtime/index.ts +1 -0
  76. package/src/runtime/security.test.ts +6 -1
  77. package/src/runtime/types.ts +6 -0
  78. package/src/term.test.ts +51 -0
  79. package/src/term.ts +158 -0
  80. package/src/test/create-test-app.ts +2 -0
@@ -0,0 +1 @@
1
+ import{a as e,r as t}from"./rolldown-runtime-CNC7AqOf.js";import{C as n,D as r,E as i,Q as a,b as o,d as s,g as c,k as l,nt as u,tt as d,u as f,y as p}from"./panel-access-Dd37LU2c.js";function m(e){let t=l({warn:e?.router===void 0}),n=e?.router||t;return r(n.stores.__store,i(e,n))}var h=p({q:o().optional(),path:o().optional(),category:c([`contract-breaking`,`permission-widening`,`effect-widening`,`no-impact`]).optional()});function g(e){let t=h.safeParse(e);return t.success?t.data:{}}function _(e){let t={};return e.q&&(t.q=e.q),e.path&&(t.path=e.path),e.category&&(t.category=e.category),t}var v=[`contract-breaking`,`permission-widening`,`effect-widening`,`no-impact`],y={"contract-breaking":`Contract breaking`,"permission-widening":`Permission widening`,"effect-widening":`Effect widening`,"no-impact":`No impact`};function b(e,t,n){let r=t.trim().toLowerCase();return e.filter(e=>n&&e.category!==n?!1:!r||e.path.toLowerCase().includes(r)||e.summary.toLowerCase().includes(r)||(e.blastLine?.toLowerCase().includes(r)??!1)||(e.flowName?.toLowerCase().includes(r)??!1)||(e.weeklyBillLine?.toLowerCase().includes(r)??!1))}function x(e){let t=new Map;for(let e of v)t.set(e,[]);for(let n of e)t.get(n.category)?.push(n);return v.flatMap(e=>{let n=t.get(e)??[];return n.length===0?[]:[{category:e,label:y[e],items:n}]})}function S(e){return e===`blocked`?`CI gate: blocked — undeclared break`:e===`acknowledged`?`CI gate: allowed — breaking: true`:null}function C(e){let t=`/diff`;if(!e.hasBaseline)return{hasBaseline:!1,severity:null,changeCount:0,blockedCount:0,acknowledgedCount:0,line:`No prior deploy baseline — Manifest Diff has nothing to compare yet`,href:t};let n=e.changes.length;if(n===0)return{hasBaseline:!0,severity:null,changeCount:0,blockedCount:0,acknowledgedCount:0,line:`Last deploy changed nothing in the Manifest`,href:t};let r=e.severity==null?`changes`:y[e.severity],i=e.changes[0],a=e.blockedCount>0?` · ${e.blockedCount} blocked by CI`:e.acknowledgedCount>0?` · ${e.acknowledgedCount} acknowledged break${e.acknowledgedCount===1?``:`s`}`:``;return{hasBaseline:!0,severity:e.severity,changeCount:n,blockedCount:e.blockedCount,acknowledgedCount:e.acknowledgedCount,line:`${n} Manifest change${n===1?``:`s`} (${r}): ${i.summary}${a}`,href:t}}var w=e(u(),1),T=d();function E(){let e=m({select:e=>e.location.pathname}),t=m({select:e=>e.location.search}),r=(0,w.useMemo)(()=>g(t),[t]),i=n(),o=t=>{i({to:e===`/diff`?`/diff`:`/manifest-diff`,search:_(t),replace:!0})},c=a({queryKey:[`console.diff.list`],queryFn:async()=>{let e=await s.diffList();if(e.error)throw Error(e.error.code);return e.data},refetchInterval:1e4}),l=c.data,u=(0,w.useMemo)(()=>b(l?.changes??[],r.q??``,r.category),[l?.changes,r.q,r.category]),d=(0,w.useMemo)(()=>x(u),[u]),p=r.path;return(0,T.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col`,children:[(0,T.jsxs)(`header`,{className:`shrink-0 border-b border-[var(--oke-line)] px-4 py-3`,children:[(0,T.jsx)(`h1`,{className:`text-base font-medium text-[var(--oke-fg)]`,children:`Manifest Diff`}),(0,T.jsx)(`p`,{className:`text-sm text-[var(--oke-muted)]`,children:`Blast radius of a deploy — contract, permission, effect, and no-impact. Read-only compare of current Manifest vs baseline.`}),(0,T.jsxs)(`label`,{className:`mt-2 flex max-w-sm flex-col gap-1 text-sm`,children:[(0,T.jsx)(`span`,{className:`text-[var(--oke-muted)]`,children:`Filter`}),(0,T.jsx)(`input`,{"aria-label":`Filter changes`,className:`min-h-8 border border-[var(--oke-line)] bg-transparent px-2`,value:r.q??``,onChange:e=>o({...r,q:e.target.value||void 0})})]}),(0,T.jsxs)(`div`,{role:`group`,"aria-label":`Blast-radius category`,className:`mt-2 flex flex-wrap gap-1`,children:[(0,T.jsx)(D,{label:`All`,pressed:r.category===void 0,onClick:()=>o({...r,category:void 0})}),v.map(e=>(0,T.jsx)(D,{label:y[e],pressed:r.category===e,onClick:()=>o({...r,category:r.category===e?void 0:e})},e))]})]}),l?.hasBaseline?(0,T.jsxs)(`section`,{"aria-label":`CI gate summary`,role:`status`,className:`shrink-0 border-b border-[var(--oke-line)] px-4 py-2 text-sm`,children:[(0,T.jsx)(`h2`,{className:`sr-only`,children:`CI gate`}),(0,T.jsxs)(`p`,{className:`text-[var(--oke-fg)]`,children:[(0,T.jsxs)(`span`,{className:(l.blockedCount??0)>0?`text-[var(--oke-fg)]`:`text-[var(--oke-muted)]`,children:[l.blockedCount,` undeclared break`,l.blockedCount===1?``:`s`,` blocked`]}),(0,T.jsx)(`span`,{className:`text-[var(--oke-muted)]`,children:` · `}),(0,T.jsxs)(`span`,{className:`text-[var(--oke-muted)]`,children:[l.acknowledgedCount,` acknowledged with`,` `,(0,T.jsx)(`code`,{className:`font-mono text-xs`,children:`breaking: true`})]})]})]}):null,(0,T.jsxs)(`main`,{id:`diff-main`,className:`min-h-0 flex-1 overflow-y-auto p-4`,children:[c.isLoading?(0,T.jsx)(`p`,{className:`text-[var(--oke-muted)]`,children:`Loading…`}):null,c.isError?(0,T.jsx)(`p`,{role:`alert`,children:`Failed to load Manifest Diff`}):null,l&&!l.hasBaseline?(0,T.jsx)(`p`,{className:`text-[var(--oke-muted)]`,role:`status`,children:`No baseline Manifest to compare. Deploy once, or feed a previous Manifest, to see blast radius.`}):null,l?.hasBaseline&&d.length===0?(0,T.jsx)(`p`,{className:`text-[var(--oke-muted)]`,role:`status`,children:`No behavioural changes between baseline and current Manifest.`}):null,d.map(e=>(0,T.jsxs)(`section`,{"aria-label":e.label,className:`mb-8`,children:[(0,T.jsxs)(`h2`,{className:`mb-3 text-xs uppercase tracking-wide text-[var(--oke-muted)]`,children:[e.label,(0,T.jsxs)(`span`,{className:`ml-2 font-mono normal-case`,children:[`(`,e.items.length,`)`]})]}),(0,T.jsx)(`ul`,{className:`space-y-3`,children:e.items.map(e=>{let t=S(e.ciGate),n=e.path===p;return(0,T.jsx)(`li`,{children:(0,T.jsxs)(`article`,{"aria-current":n?`true`:void 0,className:f(`border border-[var(--oke-line)] px-3 py-3`,n&&`bg-[var(--oke-line)]`),children:[(0,T.jsxs)(`button`,{type:`button`,className:`min-h-8 w-full text-left`,"aria-pressed":n,onClick:()=>o({...r,path:r.path===e.path?void 0:e.path}),children:[(0,T.jsx)(`h3`,{className:`font-mono text-sm text-[var(--oke-fg)]`,children:e.path}),(0,T.jsx)(`p`,{className:`mt-1 text-sm text-[var(--oke-muted)]`,children:e.summary})]}),e.blastLine?(0,T.jsx)(`p`,{role:`status`,className:`mt-2 text-sm text-[var(--oke-fg)]`,children:e.blastLine}):e.runCountLastWeek>0&&e.flowName?(0,T.jsxs)(`p`,{className:`mt-2 text-sm text-[var(--oke-muted)]`,children:[`Ran `,e.runCountLastWeek.toLocaleString(`en-US`),` `,`times last week`]}):null,e.weeklyBillLine?(0,T.jsxs)(`p`,{className:`mt-1 text-sm font-medium text-[var(--oke-fg)]`,children:[`Weekly bill: `,e.weeklyBillLine]}):null,t?(0,T.jsx)(`p`,{role:`status`,"data-ci-gate":e.ciGate??void 0,className:f(`mt-2 text-sm`,e.ciGate===`blocked`?`text-[var(--oke-fg)]`:`text-[var(--oke-muted)]`),children:t}):null]})},e.path)})})]},e.category))]})]})}function D(e){return(0,T.jsx)(`button`,{type:`button`,"aria-pressed":e.pressed,className:f(`min-h-8 px-2 text-xs`,e.pressed?`bg-[var(--oke-line)] text-[var(--oke-fg)]`:`text-[var(--oke-muted)]`),onClick:e.onClick,children:e.label})}var O=t({default:()=>E});export{m as i,C as n,g as r,O as t};