@zuzuucodes/cli 1.5.0 → 1.6.0
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.
- package/bin/zuzuu.mjs +12 -3
- package/package.json +1 -1
- package/web-app/dist/auth.js +91 -0
- package/web-app/dist/server.js +16 -79
- package/web-app/dist/zuzuu-cli.js +124 -0
- package/web-app/dist/{zuzuu-api.js → zuzuu-routes.js} +46 -116
- package/web-app/web-dist/assets/CommandPalette-DhBdR7X3.js +45 -0
- package/web-app/web-dist/assets/DiffTab-CqxwSjI2.js +1 -0
- package/web-app/web-dist/assets/EditorPane-94QPFR9R.js +41 -0
- package/web-app/web-dist/assets/MonacoFile-D76epTrG.js +1 -0
- package/web-app/web-dist/assets/angular-html-BVBpGdXr.js +1 -0
- package/web-app/web-dist/assets/{angular-ts-CD_OonCa.js → angular-ts-BfdufMKP.js} +1 -1
- package/web-app/web-dist/assets/{apl-uOGC3x4e.js → apl-DWBSSoBH.js} +1 -1
- package/web-app/web-dist/assets/{astro-B6ybQmWG.js → astro-3LtMP0Sq.js} +1 -1
- package/web-app/web-dist/assets/{blade-B1QGRlVx.js → blade-llJRbbtR.js} +1 -1
- package/web-app/web-dist/assets/c-Wt1voDr2.js +1 -0
- package/web-app/web-dist/assets/{cobol-BgqgtYWn.js → cobol-x_HIyl2P.js} +1 -1
- package/web-app/web-dist/assets/{coffee-0wIRKYlr.js → coffee-CThvmt4R.js} +1 -1
- package/web-app/web-dist/assets/cpp-NtAeskI3.js +1 -0
- package/web-app/web-dist/assets/{crystal-CyTK3qFN.js → crystal-DNu_sX0G.js} +1 -1
- package/web-app/web-dist/assets/css-DJp_X0uY.js +1 -0
- package/web-app/web-dist/assets/{cssMode-Dx3ub8Pk.js → cssMode-ByQBaInt.js} +1 -1
- package/web-app/web-dist/assets/dist-DQqjtuhV.js +153 -0
- package/web-app/web-dist/assets/{edge-CvML9pwC.js → edge-ozw5tpLl.js} +1 -1
- package/web-app/web-dist/assets/{editor.api2-BmGoRSl4.js → editor.api2-C7skgoRB.js} +1 -1
- package/web-app/web-dist/assets/{elixir-CrjqTiSc.js → elixir-VhA6FeZt.js} +1 -1
- package/web-app/web-dist/assets/{elm-C4JtJ0Au.js → elm-dREJmIFz.js} +1 -1
- package/web-app/web-dist/assets/{erb-Cmeb-29V.js → erb-CIg6G69l.js} +1 -1
- package/web-app/web-dist/assets/{freemarker2-B5LAi19B.js → freemarker2-CBBwP9JV.js} +1 -1
- package/web-app/web-dist/assets/{git-rebase-CXqdToiP.js → git-rebase-B44mJPta.js} +1 -1
- package/web-app/web-dist/assets/{glimmer-js-Kq-kdTyV.js → glimmer-js-vH_gHG0-.js} +1 -1
- package/web-app/web-dist/assets/{glimmer-ts-D0RKLJNf.js → glimmer-ts--abOzSAQ.js} +1 -1
- package/web-app/web-dist/assets/glsl-Dv5r7kPw.js +1 -0
- package/web-app/web-dist/assets/graphql-CB4jsw2E.js +1 -0
- package/web-app/web-dist/assets/{hack-trjVF3Po.js → hack-DvEYX148.js} +1 -1
- package/web-app/web-dist/assets/haml-zE6W3STP.js +1 -0
- package/web-app/web-dist/assets/{handlebars-B8_x7Zx7.js → handlebars-CzBR2SDs.js} +1 -1
- package/web-app/web-dist/assets/{handlebars-g7ZhGhI_.js → handlebars-tXdfxEd6.js} +1 -1
- package/web-app/web-dist/assets/html-C8UlPnhE.js +1 -0
- package/web-app/web-dist/assets/{html-CfvRMgoC.js → html-DgPn1QYH.js} +1 -1
- package/web-app/web-dist/assets/{html-derivative-BYX_F_XH.js → html-derivative-CY6NRz-J.js} +1 -1
- package/web-app/web-dist/assets/{htmlMode-DM6oHc7c.js → htmlMode-BtdIDgA2.js} +1 -1
- package/web-app/web-dist/assets/{http-BIVDpHT-.js → http-Cyd7bS_S.js} +1 -1
- package/web-app/web-dist/assets/{hurl-CFsshMju.js → hurl-CWPsiEpf.js} +1 -1
- package/web-app/web-dist/assets/index-B27_WOhS.css +2 -0
- package/web-app/web-dist/assets/index-De6DWTZM.js +7 -0
- package/web-app/web-dist/assets/java-CGc3VwQr.js +1 -0
- package/web-app/web-dist/assets/{javascript-Bxx2wV4w.js → javascript-5m05n-Be.js} +1 -1
- package/web-app/web-dist/assets/javascript-CUt1pgmJ.js +1 -0
- package/web-app/web-dist/assets/{jinja-_ZS5zWwe.js → jinja-CD-Z-FLd.js} +1 -1
- package/web-app/web-dist/assets/{jison-D8mMEpcs.js → jison-imPNup1l.js} +1 -1
- package/web-app/web-dist/assets/json-Bg9ijW3F.js +1 -0
- package/web-app/web-dist/assets/{jsonMode-DflaUwqW.js → jsonMode-BG32YnTY.js} +1 -1
- package/web-app/web-dist/assets/jsx-CY6oMTks.js +1 -0
- package/web-app/web-dist/assets/{julia-D4h2DZrs.js → julia-Dc3O-irA.js} +1 -1
- package/web-app/web-dist/assets/{just-bMqQi3xg.js → just-BhOq_Kbv.js} +1 -1
- package/web-app/web-dist/assets/{latex-DThYi3CX.js → latex-Cu4Y1d5w.js} +1 -1
- package/web-app/web-dist/assets/lib-KIOQTlcs.js +1 -0
- package/web-app/web-dist/assets/{liquid-CUjzzP4r.js → liquid-3ZnQzTbs.js} +1 -1
- package/web-app/web-dist/assets/{liquid-CesB-zzl.js → liquid-CvXMrjlQ.js} +1 -1
- package/web-app/web-dist/assets/{lspLanguageFeatures-gTnJsses.js → lspLanguageFeatures-6KXALSrl.js} +1 -1
- package/web-app/web-dist/assets/lua-BjLEUjKY.js +1 -0
- package/web-app/web-dist/assets/{marko-yoGoLK2m.js → marko-DvhNOisQ.js} +1 -1
- package/web-app/web-dist/assets/{mdc-BvtXU6eH.js → mdc-Bm9TpL1X.js} +1 -1
- package/web-app/web-dist/assets/{mdx-DrXGQbNB.js → mdx-DffTEkNE.js} +1 -1
- package/web-app/web-dist/assets/{monaco-setup-wbBeb0oN.js → monaco-setup-DM3A5_VI.js} +3 -3
- package/web-app/web-dist/assets/{nginx-DoUz032F.js → nginx-Bhc82uuv.js} +1 -1
- package/web-app/web-dist/assets/{nim-B0Pl8B4R.js → nim-DXTVBFnF.js} +1 -1
- package/web-app/web-dist/assets/{perl-D2tfAALb.js → perl-C7veXV9z.js} +1 -1
- package/web-app/web-dist/assets/{php-BImCcX5X.js → php-BRiuMnnr.js} +1 -1
- package/web-app/web-dist/assets/{pug-BcnpC8P_.js → pug-C5hz5LQ7.js} +1 -1
- package/web-app/web-dist/assets/{python-ypRCBnvu.js → python-DyLAD3Wt.js} +1 -1
- package/web-app/web-dist/assets/{qml-DFDAunHY.js → qml-BdUV3aTS.js} +1 -1
- package/web-app/web-dist/assets/r-8R7vtdQc.js +1 -0
- package/web-app/web-dist/assets/{razor-aqrhpwqZ.js → razor-C49xQTPQ.js} +1 -1
- package/web-app/web-dist/assets/{razor-1_376SZM.js → razor-DRL52XO2.js} +1 -1
- package/web-app/web-dist/assets/react-vendor-CCIEwYL0.js +9 -0
- package/web-app/web-dist/assets/regexp-Omp9DhTb.js +1 -0
- package/web-app/web-dist/assets/{rst-2vG6f11Y.js → rst-BHX71KW9.js} +1 -1
- package/web-app/web-dist/assets/{ruby-Dj6bCFXR.js → ruby-B--HzjGU.js} +1 -1
- package/web-app/web-dist/assets/{sas-BhVZ4qL2.js → sas-DrLaYOK_.js} +1 -1
- package/web-app/web-dist/assets/scss-DdSxiZKl.js +1 -0
- package/web-app/web-dist/assets/shellscript-DwcUjJBL.js +1 -0
- package/web-app/web-dist/assets/{shellsession-CyO2fnhB.js → shellsession-CPZkydE6.js} +1 -1
- package/web-app/web-dist/assets/{soy-DIkw6E88.js → soy-Br5FhD7c.js} +1 -1
- package/web-app/web-dist/assets/sql-DNssxck8.js +1 -0
- package/web-app/web-dist/assets/{stata-DvkM932O.js → stata-DXn1tqOr.js} +1 -1
- package/web-app/web-dist/assets/{surrealql-B4-Q8tqV.js → surrealql-IeLNQw0f.js} +1 -1
- package/web-app/web-dist/assets/{svelte-p6yBy-Ki.js → svelte-DOdLCIlh.js} +1 -1
- package/web-app/web-dist/assets/{templ-C7EkuiZr.js → templ-CIwIngms.js} +1 -1
- package/web-app/web-dist/assets/{tex-DkmD8uFC.js → tex-D8QMumu5.js} +1 -1
- package/web-app/web-dist/assets/{ts-tags-U-hncHg4.js → ts-tags-BMVY4q-l.js} +1 -1
- package/web-app/web-dist/assets/{tsMode-DRwkDcoK.js → tsMode-BndVBac5.js} +1 -1
- package/web-app/web-dist/assets/tsx-5Eka4NBX.js +1 -0
- package/web-app/web-dist/assets/{twig-CU0OP-IA.js → twig-C8o_5mgw.js} +1 -1
- package/web-app/web-dist/assets/{typescript-DnLjiKtn.js → typescript-B1w9vqKF.js} +1 -1
- package/web-app/web-dist/assets/typescript-DOu2WMV5.js +1 -0
- package/web-app/web-dist/assets/{vue-Db7nY3ba.js → vue-BU18DNDL.js} +1 -1
- package/web-app/web-dist/assets/{vue-html-BvAbiAw1.js → vue-html-BeluIYX0.js} +1 -1
- package/web-app/web-dist/assets/{vue-vine-BEaIQIlA.js → vue-vine-DGUAbOCX.js} +1 -1
- package/web-app/web-dist/assets/{xml-an4Nuuqq.js → xml-D8uAlVv5.js} +1 -1
- package/web-app/web-dist/assets/xml-DIqSwXR3.js +1 -0
- package/web-app/web-dist/assets/{xsl-D3NQgH22.js → xsl-Ct_-YIAy.js} +1 -1
- package/web-app/web-dist/assets/xterm-B1ffpRuj.js +36 -0
- package/web-app/web-dist/assets/xterm-addons-psDEiUMC.js +136 -0
- package/web-app/web-dist/assets/{yaml-Diiu6O9P.js → yaml-Bb7jXyQv.js} +1 -1
- package/web-app/web-dist/assets/yaml-DTtCYNlS.js +1 -0
- package/web-app/web-dist/index.html +6 -3
- package/zuzuu/actions/trail.mjs +1 -1
- package/zuzuu/commands/act.mjs +1 -1
- package/zuzuu/commands/capture.mjs +2 -2
- package/zuzuu/commands/code.mjs +2 -2
- package/zuzuu/commands/digest.mjs +2 -2
- package/zuzuu/commands/distill.mjs +15 -16
- package/zuzuu/commands/doctor.mjs +39 -4
- package/zuzuu/commands/enable.mjs +1 -1
- package/zuzuu/commands/eval.mjs +3 -36
- package/zuzuu/commands/faculty.mjs +102 -19
- package/zuzuu/commands/generation.mjs +3 -4
- package/zuzuu/commands/hook.mjs +7 -7
- package/zuzuu/commands/inbox.mjs +1 -6
- package/zuzuu/commands/init.mjs +5 -4
- package/zuzuu/commands/knowledge.mjs +1 -1
- package/zuzuu/commands/migrations/home.mjs +96 -0
- package/zuzuu/commands/migrations/index.mjs +48 -0
- package/zuzuu/commands/{migrate.mjs → migrations/items.mjs} +34 -246
- package/zuzuu/commands/migrations/proposals.mjs +100 -0
- package/zuzuu/commands/proposals.mjs +131 -0
- package/zuzuu/commands/review.mjs +13 -227
- package/zuzuu/commands/session.mjs +8 -2
- package/zuzuu/commands/sessions.mjs +159 -0
- package/zuzuu/commands/status.mjs +3 -3
- package/zuzuu/commands/trace.mjs +1 -1
- package/zuzuu/{capture-core.mjs → core/capture-core.mjs} +3 -3
- package/zuzuu/{store.mjs → core/store.mjs} +1 -1
- package/zuzuu/digest/compose.mjs +96 -0
- package/zuzuu/eval/score.mjs +14 -1
- package/zuzuu/faculties/actions/index.mjs +283 -0
- package/zuzuu/faculties/guardrails/index.mjs +320 -0
- package/zuzuu/faculties/instructions/index.mjs +288 -0
- package/zuzuu/faculties/knowledge/index.mjs +185 -0
- package/zuzuu/{memory/adapter.mjs → faculties/memory/index.mjs} +37 -9
- package/zuzuu/faculty/generation/read.mjs +206 -0
- package/zuzuu/faculty/generation/write.mjs +207 -0
- package/zuzuu/faculty/items.mjs +11 -5
- package/zuzuu/faculty/module.mjs +74 -0
- package/zuzuu/faculty/pending.mjs +63 -0
- package/zuzuu/faculty/registry.mjs +204 -18
- package/zuzuu/faculty/render.mjs +59 -0
- package/zuzuu/faculty/trail.mjs +1 -1
- package/zuzuu/{guardrails.mjs → guardrails/engine.mjs} +1 -1
- package/zuzuu/{scaffold.mjs → home/scaffold.mjs} +12 -2
- package/zuzuu/live/live-store.mjs +2 -2
- package/zuzuu/live/reconcile.mjs +2 -2
- package/zuzuu/sessions/git.mjs +47 -0
- package/zuzuu/{session-git.mjs → sessions/session-git.mjs} +5 -43
- package/web-app/web-dist/assets/DiffTab-BpGp1akx.js +0 -1
- package/web-app/web-dist/assets/MonacoFile-CqbVacUZ.js +0 -1
- package/web-app/web-dist/assets/angular-html-CmT26mqM.js +0 -1
- package/web-app/web-dist/assets/c-BvoqrSVH.js +0 -1
- package/web-app/web-dist/assets/cpp-BXsk94m0.js +0 -1
- package/web-app/web-dist/assets/css-Z8oOGxII.js +0 -1
- package/web-app/web-dist/assets/dist-C6R6xoyX.js +0 -153
- package/web-app/web-dist/assets/glsl-KwyfU2aa.js +0 -1
- package/web-app/web-dist/assets/graphql-DSeOUAa2.js +0 -1
- package/web-app/web-dist/assets/haml-azVoxQRV.js +0 -1
- package/web-app/web-dist/assets/html-D_7P5S4m.js +0 -1
- package/web-app/web-dist/assets/index-DHpC851f.js +0 -268
- package/web-app/web-dist/assets/index-O-t1gyMG.css +0 -2
- package/web-app/web-dist/assets/java-D4RbCvBe.js +0 -1
- package/web-app/web-dist/assets/javascript-Cb010CKM.js +0 -1
- package/web-app/web-dist/assets/json-DWgqV4D1.js +0 -1
- package/web-app/web-dist/assets/jsx-CZjSJa1f.js +0 -1
- package/web-app/web-dist/assets/lua-TGj_6NzO.js +0 -1
- package/web-app/web-dist/assets/r-fCpuAR7u.js +0 -1
- package/web-app/web-dist/assets/regexp-B4yxx-Ty.js +0 -1
- package/web-app/web-dist/assets/scss-QdjMO_xV.js +0 -1
- package/web-app/web-dist/assets/shellscript-BnlgeVVx.js +0 -1
- package/web-app/web-dist/assets/sql-DGnQv6iD.js +0 -1
- package/web-app/web-dist/assets/tsx-MJ0-9sYG.js +0 -1
- package/web-app/web-dist/assets/typescript-C17ZkDe8.js +0 -1
- package/web-app/web-dist/assets/xml-CA9lHFQV.js +0 -1
- package/web-app/web-dist/assets/yaml-CwRYMJka.js +0 -1
- package/zuzuu/actions/adapter.mjs +0 -122
- package/zuzuu/digest.mjs +0 -154
- package/zuzuu/faculty/generation.mjs +0 -398
- package/zuzuu/guardrails/adapter.mjs +0 -103
- package/zuzuu/instructions/adapter.mjs +0 -93
- package/zuzuu/knowledge/adapter.mjs +0 -99
- package/zuzuu/miners/actions.mjs +0 -112
- package/zuzuu/miners/guardrails.mjs +0 -176
- package/zuzuu/miners/instructions.mjs +0 -157
- package/zuzuu/miners/knowledge.mjs +0 -25
- package/zuzuu/miners/memory.mjs +0 -27
- package/zuzuu/miners/registry.mjs +0 -31
- /package/web-app/web-dist/assets/{chunk-QTnfLwEv.js → rolldown-runtime-QTnfLwEv.js} +0 -0
- /package/zuzuu/{session.mjs → core/session.mjs} +0 -0
- /package/zuzuu/{inject.mjs → home/inject.mjs} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{h as e}from"./editor.api2-
|
|
1
|
+
import{h as e}from"./editor.api2-C7skgoRB.js";var t={comments:{lineComment:`#`},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},n={tokenPostfix:`.yaml`,brackets:[{token:`delimiter.bracket`,open:`{`,close:`}`},{token:`delimiter.square`,open:`[`,close:`]`}],keywords:[`true`,`True`,`TRUE`,`false`,`False`,`FALSE`,`null`,`Null`,`Null`,`~`],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:`@whitespace`},{include:`@comment`},[/%[^ ]+.*$/,`meta.directive`],[/---/,`operators.directivesEnd`],[/\.{3}/,`operators.documentEnd`],[/[-?:](?= )/,`operators`],{include:`@anchor`},{include:`@tagHandle`},{include:`@flowCollections`},{include:`@blockStyle`},[/@numberInteger(?![ \t]*\S+)/,`number`],[/@numberFloat(?![ \t]*\S+)/,`number.float`],[/@numberOctal(?![ \t]*\S+)/,`number.octal`],[/@numberHex(?![ \t]*\S+)/,`number.hex`],[/@numberInfinity(?![ \t]*\S+)/,`number.infinity`],[/@numberNaN(?![ \t]*\S+)/,`number.nan`],[/@numberDate(?![ \t]*\S+)/,`number.date`],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,[`type`,`white`,`operators`,`white`]],{include:`@flowScalars`},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],object:[{include:`@whitespace`},{include:`@comment`},[/\}/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],[/:(?= )/,`operators`],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,`type`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\},]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],array:[{include:`@whitespace`},{include:`@comment`},[/\]/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\],]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],multiString:[[/^( +).+$/,`string`,`@multiStringContinued.$1`]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":`string`,"@default":{token:`@rematch`,next:`@popall`}}}]],whitespace:[[/[ \t\r\n]+/,`white`]],comment:[[/#.*$/,`comment`]],flowCollections:[[/\[/,`@brackets`,`@array`],[/\{/,`@brackets`,`@object`]],flowScalars:[[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/'[^']*'/,`string`],[/"/,`string`,`@doubleQuotedString`]],doubleQuotedString:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],blockStyle:[[/[>|][0-9]*[+-]?$/,`operators`,`@multiString`]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,`number`],[/@numberFloat(?=[ \t]*[,\]\}])/,`number.float`],[/@numberOctal(?=[ \t]*[,\]\}])/,`number.octal`],[/@numberHex(?=[ \t]*[,\]\}])/,`number.hex`],[/@numberInfinity(?=[ \t]*[,\]\}])/,`number.infinity`],[/@numberNaN(?=[ \t]*[,\]\}])/,`number.nan`],[/@numberDate(?=[ \t]*[,\]\}])/,`number.date`]],tagHandle:[[/\![^ ]*/,`tag`]],anchor:[[/[&*][^ ]+/,`namespace`]]}};export{t as conf,n as language};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-QTnfLwEv.js";var t=e({default:()=>n}),n=[Object.freeze(JSON.parse(`{"displayName":"YAML","fileTypes":["yaml","yml","rviz","reek","clang-format","yaml-tmlanguage","syntax","sublime-syntax"],"firstLineMatch":"^%YAML( ?1.\\\\d+)?","name":"yaml","patterns":[{"include":"#comment"},{"include":"#property"},{"include":"#directive"},{"match":"^---","name":"entity.other.document.begin.yaml"},{"match":"^\\\\.{3}","name":"entity.other.document.end.yaml"},{"include":"#node"}],"repository":{"block-collection":{"patterns":[{"include":"#block-sequence"},{"include":"#block-mapping"}]},"block-mapping":{"patterns":[{"include":"#block-pair"}]},"block-node":{"patterns":[{"include":"#prototype"},{"include":"#block-scalar"},{"include":"#block-collection"},{"include":"#flow-scalar-plain-out"},{"include":"#flow-node"}]},"block-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"1":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=\\\\?)|^ *(:)|(:)","endCaptures":{"1":{"name":"punctuation.separator.key-value.mapping.yaml"},"2":{"name":"invalid.illegal.expected-newline.yaml"}},"name":"meta.block-mapping.yaml","patterns":[{"include":"#block-node"}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S)([^:\\\\s]|:\\\\S|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},{"match":":(?=\\\\s|$)","name":"punctuation.separator.key-value.mapping.yaml"}]},"block-scalar":{"begin":"(?:(\\\\|)|(>))([1-9])?([-+])?(.*\\\\n?)","beginCaptures":{"1":{"name":"keyword.control.flow.block-scalar.literal.yaml"},"2":{"name":"keyword.control.flow.block-scalar.folded.yaml"},"3":{"name":"constant.numeric.indentation-indicator.yaml"},"4":{"name":"storage.modifier.chomping-indicator.yaml"},"5":{"patterns":[{"include":"#comment"},{"match":".+","name":"invalid.illegal.expected-comment-or-newline.yaml"}]}},"end":"^(?=\\\\S)|(?!\\\\G)","patterns":[{"begin":"^( +)(?! )","end":"^(?!\\\\1|\\\\s*$)","name":"string.unquoted.block.yaml"}]},"block-sequence":{"match":"(-)(?!\\\\S)","name":"punctuation.definition.block.sequence.item.yaml"},"comment":{"begin":"(?:^([\\\\t ]*)|[\\\\t ]+)(?=#\\\\p{print}*$)","beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.yaml"}},"end":"(?!\\\\G)","patterns":[{"begin":"#","beginCaptures":{"0":{"name":"punctuation.definition.comment.yaml"}},"end":"\\\\n","name":"comment.line.number-sign.yaml"}]},"directive":{"begin":"^%","beginCaptures":{"0":{"name":"punctuation.definition.directive.begin.yaml"}},"end":"(?=$|[\\\\t ]+($|#))","name":"meta.directive.yaml","patterns":[{"captures":{"1":{"name":"keyword.other.directive.yaml.yaml"},"2":{"name":"constant.numeric.yaml-version.yaml"}},"match":"\\\\G(YAML)[\\\\t ]+(\\\\d+\\\\.\\\\d+)"},{"captures":{"1":{"name":"keyword.other.directive.tag.yaml"},"2":{"name":"storage.type.tag-handle.yaml"},"3":{"name":"support.type.tag-prefix.yaml"}},"match":"\\\\G(TAG)(?:[\\\\t ]+(!(?:[-0-9A-Za-z]*!)?)(?:[\\\\t ]+(!(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])*|(?![]!,\\\\[{}])(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+))?)?"},{"captures":{"1":{"name":"support.other.directive.reserved.yaml"},"2":{"name":"string.unquoted.directive-name.yaml"},"3":{"name":"string.unquoted.directive-parameter.yaml"}},"match":"\\\\G(\\\\w+)(?:[\\\\t ]+(\\\\w+)(?:[\\\\t ]+(\\\\w+))?)?"},{"match":"\\\\S+","name":"invalid.illegal.unrecognized.yaml"}]},"flow-alias":{"captures":{"1":{"name":"keyword.control.flow.alias.yaml"},"2":{"name":"punctuation.definition.alias.yaml"},"3":{"name":"variable.other.alias.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"((\\\\*))([^],/\\\\[{}\\\\s]+)([^],}\\\\s]\\\\S*)?"},"flow-collection":{"patterns":[{"include":"#flow-sequence"},{"include":"#flow-mapping"}]},"flow-mapping":{"begin":"\\\\{","beginCaptures":{"0":{"name":"punctuation.definition.mapping.begin.yaml"}},"end":"}","endCaptures":{"0":{"name":"punctuation.definition.mapping.end.yaml"}},"name":"meta.flow-mapping.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.mapping.yaml"},{"include":"#flow-pair"}]},"flow-node":{"patterns":[{"include":"#prototype"},{"include":"#flow-alias"},{"include":"#flow-collection"},{"include":"#flow-scalar"}]},"flow-pair":{"patterns":[{"begin":"\\\\?","beginCaptures":{"0":{"name":"punctuation.definition.key-value.begin.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.explicit.yaml","patterns":[{"include":"#prototype"},{"include":"#flow-pair"},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","beginCaptures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","patterns":[{"include":"#flow-value"}]}]},{"begin":"(?=(?:[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s])([^],:\\\\[{}\\\\s]|:[^],\\\\[{}\\\\s]|\\\\s+(?![#\\\\s]))*\\\\s*:(\\\\s|$))","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"meta.flow-pair.key.yaml","patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","beginCaptures":{"0":{"name":"entity.name.tag.yaml"}},"contentName":"entity.name.tag.yaml","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},{"include":"#flow-node"},{"begin":":(?=\\\\s|$|[],\\\\[{}])","captures":{"0":{"name":"punctuation.separator.key-value.mapping.yaml"}},"end":"(?=[],}])","name":"meta.flow-pair.yaml","patterns":[{"include":"#flow-value"}]}]},"flow-scalar":{"patterns":[{"include":"#flow-scalar-double-quoted"},{"include":"#flow-scalar-single-quoted"},{"include":"#flow-scalar-plain-in"}]},"flow-scalar-double-quoted":{"begin":"\\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"\\"","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.double.yaml","patterns":[{"match":"\\\\\\\\([ \\"/0LN\\\\\\\\_abefnprtv]|x\\\\d\\\\d|u\\\\d{4}|U\\\\d{8})","name":"constant.character.escape.yaml"},{"match":"\\\\\\\\\\\\n","name":"constant.character.escape.double-quoted.newline.yaml"}]},"flow-scalar-plain-in":{"patterns":[{"include":"#flow-scalar-plain-in-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?][^],\\\\[{}\\\\s]","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])","name":"string.unquoted.plain.in.yaml"}]},"flow-scalar-plain-in-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$)|\\\\s*:[],\\\\[{}]|\\\\s*[],\\\\[{}])"}]},"flow-scalar-plain-out":{"patterns":[{"include":"#flow-scalar-plain-out-implicit-type"},{"begin":"[^-\\\\]!\\"#%\\\\&'*,:>?@\\\\[\`{|}\\\\s]|[-:?]\\\\S","end":"(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))","name":"string.unquoted.plain.out.yaml"}]},"flow-scalar-plain-out-implicit-type":{"patterns":[{"captures":{"1":{"name":"constant.language.null.yaml"},"2":{"name":"constant.language.boolean.yaml"},"3":{"name":"constant.numeric.integer.yaml"},"4":{"name":"constant.numeric.float.yaml"},"5":{"name":"constant.other.timestamp.yaml"},"6":{"name":"constant.language.value.yaml"},"7":{"name":"constant.language.merge.yaml"}},"match":"(?:(null|Null|NULL|~)|([Yy]|yes|Yes|YES|[Nn]|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)|([-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[_\\\\h]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)|([-+]?(?:[0-9][0-9_]*)?\\\\.[.0-9]*(?:[Ee][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*|[-+]?\\\\.(?:inf|Inf|INF)|\\\\.(?:nan|NaN|NAN))|(\\\\d{4}-\\\\d{2}-\\\\d{2}|\\\\d{4}-\\\\d{1,2}-\\\\d{1,2}(?:[Tt]|[\\\\t ]+)\\\\d{1,2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d*)?(?:[\\\\t ]*Z|[-+]\\\\d{1,2}(?::\\\\d{1,2})?)?)|(=)|(<<))(?=\\\\s*$|\\\\s+#|\\\\s*:(\\\\s|$))"}]},"flow-scalar-single-quoted":{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.yaml"}},"end":"'(?!')","endCaptures":{"0":{"name":"punctuation.definition.string.end.yaml"}},"name":"string.quoted.single.yaml","patterns":[{"match":"''","name":"constant.character.escape.single-quoted.yaml"}]},"flow-sequence":{"begin":"\\\\[","beginCaptures":{"0":{"name":"punctuation.definition.sequence.begin.yaml"}},"end":"]","endCaptures":{"0":{"name":"punctuation.definition.sequence.end.yaml"}},"name":"meta.flow-sequence.yaml","patterns":[{"include":"#prototype"},{"match":",","name":"punctuation.separator.sequence.yaml"},{"include":"#flow-pair"},{"include":"#flow-node"}]},"flow-value":{"patterns":[{"begin":"\\\\G(?![],}])","end":"(?=[],}])","name":"meta.flow-pair.value.yaml","patterns":[{"include":"#flow-node"}]}]},"node":{"patterns":[{"include":"#block-node"}]},"property":{"begin":"(?=[!\\\\&])","end":"(?!\\\\G)","name":"meta.property.yaml","patterns":[{"captures":{"1":{"name":"keyword.control.property.anchor.yaml"},"2":{"name":"punctuation.definition.anchor.yaml"},"3":{"name":"entity.name.type.anchor.yaml"},"4":{"name":"invalid.illegal.character.anchor.yaml"}},"match":"\\\\G((&))([^],/\\\\[{}\\\\s]+)(\\\\S+)?"},{"match":"\\\\G!(?:<(?:%\\\\h{2}|[]!#$\\\\&-;=?-\\\\[_a-z~])+>|(?:[-0-9A-Za-z]*!)?(?:%\\\\h{2}|[#$\\\\&-+\\\\--;=?-Z_a-z~])+|)(?=[\\\\t ]|$)","name":"storage.type.tag-handle.yaml"},{"match":"\\\\S+","name":"invalid.illegal.tag-handle.yaml"}]},"prototype":{"patterns":[{"include":"#comment"},{"include":"#property"}]}},"scopeName":"source.yaml","aliases":["yml"]}`))];export{t as n,n as t};
|
|
@@ -6,9 +6,12 @@
|
|
|
6
6
|
<meta name="color-scheme" content="dark" />
|
|
7
7
|
<title>zuzuu-web</title>
|
|
8
8
|
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%230d1117'/%3E%3Ctext x='6' y='22' font-family='monospace' font-size='16' fill='%2358e6c0'%3E%E2%9D%AF_%3C/text%3E%3C/svg%3E" />
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
-
<link rel="modulepreload" crossorigin href="/assets/
|
|
11
|
-
<link rel="
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-De6DWTZM.js"></script>
|
|
10
|
+
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
|
|
11
|
+
<link rel="modulepreload" crossorigin href="/assets/xterm-addons-psDEiUMC.js">
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/assets/xterm-B1ffpRuj.js">
|
|
13
|
+
<link rel="modulepreload" crossorigin href="/assets/react-vendor-CCIEwYL0.js">
|
|
14
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B27_WOhS.css">
|
|
12
15
|
</head>
|
|
13
16
|
<body>
|
|
14
17
|
<div id="root"></div>
|
package/zuzuu/actions/trail.mjs
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { join } from 'node:path';
|
|
8
8
|
import { mkdirSync, appendFileSync } from 'node:fs';
|
|
9
|
-
import { liveDir } from '../store.mjs';
|
|
9
|
+
import { liveDir } from '../core/store.mjs';
|
|
10
10
|
|
|
11
11
|
/** Append a fail-soft outcome record. Never throws. */
|
|
12
12
|
export function recordOutcome(agentDir, { slug, ok, error } = {}) {
|
package/zuzuu/commands/act.mjs
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
import { readFileSync, existsSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
|
-
import { paths } from '../store.mjs';
|
|
12
|
+
import { paths } from '../core/store.mjs';
|
|
13
13
|
import { allActions, actionsDir, isSafeSlug } from '../actions/manifest.mjs';
|
|
14
14
|
import { runAction } from '../actions/dispatch.mjs';
|
|
15
15
|
import { MARKER } from '../actions/marker.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// `zuzuu capture` — post-hoc: parse a host transcript into a git-native trace + record.
|
|
2
2
|
|
|
3
3
|
import { ADAPTERS, byName, detected } from '../capture/adapters/registry.mjs';
|
|
4
|
-
import { captureTrace } from '../capture-core.mjs';
|
|
5
|
-
import { paths } from '../store.mjs';
|
|
4
|
+
import { captureTrace } from '../core/capture-core.mjs';
|
|
5
|
+
import { paths } from '../core/store.mjs';
|
|
6
6
|
|
|
7
7
|
function chooseRef(adapter, args) {
|
|
8
8
|
if (args.file) return args.file;
|
package/zuzuu/commands/code.mjs
CHANGED
|
@@ -11,8 +11,8 @@ import { resolve } from 'node:path';
|
|
|
11
11
|
import { spawnSync } from 'node:child_process';
|
|
12
12
|
import { init } from './init.mjs';
|
|
13
13
|
import { enable } from './enable.mjs';
|
|
14
|
-
import { repoRoot } from '../store.mjs';
|
|
15
|
-
import { homeExists } from '../scaffold.mjs';
|
|
14
|
+
import { repoRoot } from '../core/store.mjs';
|
|
15
|
+
import { homeExists } from '../home/scaffold.mjs';
|
|
16
16
|
|
|
17
17
|
// Run a command inside `dir` without permanently changing the process cwd —
|
|
18
18
|
// init/enable resolve their target from process.cwd(), so we chdir around them.
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// start would inject. Lets a human (or a hookless host) see exactly what the
|
|
4
4
|
// agent sees.
|
|
5
5
|
|
|
6
|
-
import { paths } from '../store.mjs';
|
|
7
|
-
import { computeDigest } from '../digest.mjs';
|
|
6
|
+
import { paths } from '../core/store.mjs';
|
|
7
|
+
import { computeDigest } from '../digest/compose.mjs';
|
|
8
8
|
|
|
9
9
|
/** Pure: the digest payload — the zuzuu-web /digest source (the daemon also reads .zuzuu/.live/digest.md directly). */
|
|
10
10
|
export function digestData(agentDir, opts = {}) {
|
|
@@ -2,20 +2,15 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Default: knowledge only (back-compat, via distillSessions). With
|
|
4
4
|
// `--all-faculties`: mine each transcript ONCE into a superset, then run every
|
|
5
|
-
//
|
|
6
|
-
//
|
|
5
|
+
// faculty module's miner (the Faculty Module registry) over the shared
|
|
6
|
+
// sessions array. Miner hooks are miner-class: fail-soft + time-boxed — a
|
|
7
|
+
// broken or hung miner degrades to 0 proposals, never sinks the others.
|
|
7
8
|
|
|
8
|
-
import { paths } from '../store.mjs';
|
|
9
|
+
import { paths } from '../core/store.mjs';
|
|
9
10
|
import { distillSessions, transcriptsFor, mineHostSession } from '../knowledge/distill.mjs';
|
|
10
|
-
import * as registry from '../
|
|
11
|
-
// Import miner modules so they self-register.
|
|
12
|
-
import '../miners/knowledge.mjs';
|
|
13
|
-
import '../miners/actions.mjs';
|
|
14
|
-
import '../miners/guardrails.mjs';
|
|
15
|
-
import '../miners/instructions.mjs';
|
|
16
|
-
import '../miners/memory.mjs';
|
|
11
|
+
import * as registry from '../faculty/registry.mjs';
|
|
17
12
|
|
|
18
|
-
export function distill(args) {
|
|
13
|
+
export async function distill(args) {
|
|
19
14
|
const scope = args.all ? 'all' : args.session ? null : 'last';
|
|
20
15
|
const pairs = transcriptsFor({ scope: scope ?? 'all', session: args.session || null, cwd: process.cwd() });
|
|
21
16
|
if (!pairs.length) {
|
|
@@ -27,13 +22,17 @@ export function distill(args) {
|
|
|
27
22
|
if (args['all-faculties'] || args.allFaculties) {
|
|
28
23
|
const sessions = pairs.map(mineHostSession).filter(Boolean);
|
|
29
24
|
const hosts = new Set(sessions.map((s) => s.host));
|
|
30
|
-
|
|
25
|
+
const miners = registry.miners();
|
|
26
|
+
console.log(`distilled ${sessions.length} session(s) across ${hosts.size} host(s) and ${miners.length} faculty miner(s):`);
|
|
31
27
|
let total = 0;
|
|
32
|
-
for (const miner of
|
|
33
|
-
const
|
|
34
|
-
const
|
|
28
|
+
for (const miner of miners) {
|
|
29
|
+
const entry = { id: miner.faculty, module: miner };
|
|
30
|
+
const agg = await registry.invokeTimeboxed(entry, 'aggregate', [sessions, {}]);
|
|
31
|
+
const prop = agg.ok ? await registry.invokeTimeboxed(entry, 'propose', [agentDir, agg.value]) : agg;
|
|
32
|
+
const n = prop.ok && Number.isFinite(prop.value) ? prop.value : 0;
|
|
35
33
|
total += n;
|
|
36
|
-
|
|
34
|
+
const note = prop.ok ? '' : ' (miner degraded — see zuzuu doctor)';
|
|
35
|
+
console.log(` ${miner.faculty.padEnd(12)} ${n} proposal(s)${note}`);
|
|
37
36
|
}
|
|
38
37
|
if (total) console.log('next: zuzuu review');
|
|
39
38
|
return;
|
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
import { mkdirSync, accessSync, constants } from 'node:fs';
|
|
5
5
|
import { detected } from '../capture/adapters/registry.mjs';
|
|
6
|
-
import { paths, gitInfo } from '../store.mjs';
|
|
6
|
+
import { paths, gitInfo } from '../core/store.mjs';
|
|
7
7
|
import { listLive } from '../live/live-store.mjs';
|
|
8
8
|
import { reconcile } from '../live/reconcile.mjs';
|
|
9
|
-
import { planScaffold, homeExists } from '../scaffold.mjs';
|
|
9
|
+
import { planScaffold, homeExists } from '../home/scaffold.mjs';
|
|
10
|
+
import { facultiesOf, hookFailures } from '../faculty/registry.mjs';
|
|
10
11
|
import { loadRegistry } from '../knowledge/registry.mjs';
|
|
11
12
|
import { allItems } from '../knowledge/items.mjs';
|
|
12
13
|
import { listProposals } from '../knowledge/proposals.mjs';
|
|
13
14
|
import { detectEmbedder } from '../knowledge/embed.mjs';
|
|
14
|
-
import { activeGeneration, readGeneration, snapshotFaculties } from '../faculty/generation.mjs';
|
|
15
|
-
import { sessionStatus } from '../session-git.mjs';
|
|
15
|
+
import { activeGeneration, readGeneration, snapshotFaculties } from '../faculty/generation/read.mjs';
|
|
16
|
+
import { sessionStatus } from '../sessions/session-git.mjs';
|
|
16
17
|
import { leftoverLine } from './session.mjs';
|
|
17
18
|
|
|
18
19
|
/**
|
|
@@ -78,6 +79,32 @@ export function detectDrift(agentDir) {
|
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
|
|
82
|
+
/**
|
|
83
|
+
* Pure-ish: faculty-module health for doctor — broken manifests + recorded
|
|
84
|
+
* hook failures become warnings (the module degraded to items-only);
|
|
85
|
+
* declarative faculties get an informational note. Fail-open: any error
|
|
86
|
+
* returns empty lists rather than throwing into doctor.
|
|
87
|
+
* @returns {{warnings: string[], notes: string[]}}
|
|
88
|
+
*/
|
|
89
|
+
export function facultyModuleHealth(agentDir) {
|
|
90
|
+
try {
|
|
91
|
+
const warnings = [];
|
|
92
|
+
const notes = [];
|
|
93
|
+
const entries = facultiesOf(agentDir);
|
|
94
|
+
for (const e of entries.filter((x) => x.manifestError)) {
|
|
95
|
+
warnings.push(`faculty '${e.id}' faculty.json unreadable (${e.manifestError}) — module degraded to items-only`);
|
|
96
|
+
}
|
|
97
|
+
const declarative = entries.filter((x) => x.declarative && !x.manifestError);
|
|
98
|
+
if (declarative.length) notes.push(`declarative faculties: ${declarative.map((x) => x.id).join(', ')}`);
|
|
99
|
+
for (const f of hookFailures()) {
|
|
100
|
+
warnings.push(`faculty '${f.faculty}' hook ${f.hook} failed (${f.error}) — degraded, items-only`);
|
|
101
|
+
}
|
|
102
|
+
return { warnings, notes };
|
|
103
|
+
} catch {
|
|
104
|
+
return { warnings: [], notes: [] }; // module health must never break doctor
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
81
108
|
/** The closing line: honest about warnings, never "all good" under them. */
|
|
82
109
|
export function summaryLine(problems, warnings) {
|
|
83
110
|
if (problems) return `\n${problems} problem(s) found`;
|
|
@@ -133,6 +160,14 @@ export async function doctor() {
|
|
|
133
160
|
else ok('faculty home complete (knowledge/ memory/ actions/ instructions/ guardrails/)');
|
|
134
161
|
}
|
|
135
162
|
|
|
163
|
+
// faculty modules (the Faculty Module contract): a broken manifest or a
|
|
164
|
+
// failed hook degrades that faculty to items-only — surface it, never throw.
|
|
165
|
+
if (homeExists(root)) {
|
|
166
|
+
const health = facultyModuleHealth(dir);
|
|
167
|
+
for (const w of health.warnings) warn(w);
|
|
168
|
+
for (const n of health.notes) info(n);
|
|
169
|
+
}
|
|
170
|
+
|
|
136
171
|
// knowledge faculty
|
|
137
172
|
if (homeExists(root)) {
|
|
138
173
|
const reg = loadRegistry(dir);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { join, dirname } from 'node:path';
|
|
7
7
|
import { fileURLToPath } from 'node:url';
|
|
8
8
|
import { existsSync, readFileSync, writeFileSync, mkdirSync, rmSync } from 'node:fs';
|
|
9
|
-
import { repoRoot } from '../store.mjs';
|
|
9
|
+
import { repoRoot } from '../core/store.mjs';
|
|
10
10
|
import { addHooks, removeHooks, isInstalled, LIFECYCLE_EVENTS, GATE_EVENTS, addHookEntries, removeHookEntries } from '../live/install.mjs';
|
|
11
11
|
|
|
12
12
|
const BIN = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'bin', 'zuzuu.mjs');
|
package/zuzuu/commands/eval.mjs
CHANGED
|
@@ -7,16 +7,11 @@
|
|
|
7
7
|
// a one-line eval annotation per proposal card.
|
|
8
8
|
|
|
9
9
|
import { join } from 'node:path';
|
|
10
|
-
import { paths
|
|
10
|
+
import { paths } from '../core/store.mjs';
|
|
11
11
|
import * as registry from '../faculty/registry.mjs';
|
|
12
|
-
import {
|
|
12
|
+
import { buildSessionMtimes, facultyPending } from '../faculty/pending.mjs';
|
|
13
13
|
import { rank } from '../eval/rank.mjs';
|
|
14
14
|
import { getScorer } from '../eval/score.mjs';
|
|
15
|
-
import '../knowledge/adapter.mjs'; // self-registers the 'knowledge' adapter
|
|
16
|
-
import '../actions/adapter.mjs'; // self-registers the 'actions' adapter
|
|
17
|
-
import '../guardrails/adapter.mjs'; // self-registers the 'guardrails' adapter
|
|
18
|
-
import '../instructions/adapter.mjs'; // self-registers the 'instructions' adapter
|
|
19
|
-
import '../memory/adapter.mjs'; // self-registers the 'memory' adapter
|
|
20
15
|
|
|
21
16
|
/**
|
|
22
17
|
* Format one eval annotation line for a proposal card in `zuzuu review`.
|
|
@@ -30,34 +25,6 @@ export function evalLine({ score, confidence, rationale }) {
|
|
|
30
25
|
return `eval: ${score} [${confidence}] · ${rationale}${warn}`;
|
|
31
26
|
}
|
|
32
27
|
|
|
33
|
-
/**
|
|
34
|
-
* Build sessionMtimes from the sessions index — cheap best-effort.
|
|
35
|
-
* Falls back to {} on any error.
|
|
36
|
-
* @param {string} [cwd]
|
|
37
|
-
* @returns {Record<string, number>}
|
|
38
|
-
*/
|
|
39
|
-
function buildSessionMtimes(cwd) {
|
|
40
|
-
try {
|
|
41
|
-
const idx = readIndex(cwd);
|
|
42
|
-
const map = {};
|
|
43
|
-
for (const s of idx.sessions ?? []) {
|
|
44
|
-
if (!s.id) continue;
|
|
45
|
-
// prefer startedAt ms; fall back to 0 (neutral recency)
|
|
46
|
-
const ms = s.startedAt ? Date.parse(s.startedAt) : 0;
|
|
47
|
-
if (!isNaN(ms) && ms > 0) map[s.id] = ms;
|
|
48
|
-
}
|
|
49
|
-
return map;
|
|
50
|
-
} catch {
|
|
51
|
-
return {};
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/** Collect proposals for a given adapter (mirrors review.mjs's facultyPending). */
|
|
56
|
-
function collectProposals(agentDir, adapter) {
|
|
57
|
-
if (typeof adapter.listProposals === 'function') return adapter.listProposals(agentDir);
|
|
58
|
-
return spineListProposals(agentDir, adapter.name);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
28
|
/**
|
|
62
29
|
* Pure: gather + rank all pending proposals, returning structured data for JSON output.
|
|
63
30
|
* The zuzuu-web /eval source.
|
|
@@ -77,7 +44,7 @@ export function evalData(agentDir, { faculty: onlyFaculty = null } = {}) {
|
|
|
77
44
|
const allEntries = [];
|
|
78
45
|
for (const adapter of adapters) {
|
|
79
46
|
if (onlyFaculty && adapter.name !== onlyFaculty) continue;
|
|
80
|
-
const proposals =
|
|
47
|
+
const proposals = facultyPending(agentDir, adapter);
|
|
81
48
|
for (const proposal of proposals) {
|
|
82
49
|
allEntries.push({ proposal, faculty: adapter.name });
|
|
83
50
|
}
|
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
// zuzuu/commands/faculty.mjs — `zuzuu faculty` (W24
|
|
1
|
+
// zuzuu/commands/faculty.mjs — `zuzuu faculty` (W24 Faculty Standard + the
|
|
2
|
+
// 2026-06-13 Faculty Module contract).
|
|
2
3
|
//
|
|
3
|
-
// The read surface over the one envelope format:
|
|
4
|
+
// The read surface over the one envelope format + the module contract:
|
|
4
5
|
// zuzuu faculty items <f> [--json|--jsonl] list a faculty's envelope items
|
|
5
6
|
// zuzuu faculty schema <f> [--json] print its payload schema
|
|
7
|
+
// zuzuu faculty manifest <f> [--json] print its faculty.json manifest
|
|
8
|
+
// zuzuu faculty overview [--json] ALL faculties in ONE process:
|
|
9
|
+
// manifest.ui + counts + top-3 item
|
|
10
|
+
// titles + pending counts (the
|
|
11
|
+
// daemon's batching endpoint)
|
|
6
12
|
//
|
|
7
13
|
// `--json` = one document; `--jsonl` = one item per line (streaming consumers).
|
|
8
|
-
//
|
|
9
|
-
//
|
|
14
|
+
// Declarative faculties (manifest-only folders) are first-class here: items
|
|
15
|
+
// list from manifest.itemsDir, schemas serve from the home, the overview and
|
|
16
|
+
// digest include them. Fail-soft like everything on the serve path.
|
|
10
17
|
|
|
11
18
|
import { existsSync, readFileSync } from 'node:fs';
|
|
12
19
|
import { join } from 'node:path';
|
|
13
|
-
import { paths } from '../store.mjs';
|
|
14
|
-
import { FACULTIES } from '../faculty/contract.mjs';
|
|
20
|
+
import { paths } from '../core/store.mjs';
|
|
15
21
|
import { listFacultyItems } from '../faculty/items.mjs';
|
|
22
|
+
import { listProposals } from '../faculty/proposal.mjs';
|
|
16
23
|
import { PAYLOAD_SCHEMAS, FACULTY_KINDS } from '../faculty/envelope.mjs';
|
|
24
|
+
import { facultiesOf, facultyOf, get as getAdapter } from '../faculty/registry.mjs';
|
|
17
25
|
|
|
18
26
|
/** Pure: one faculty's envelope items + parse errors (the --json document). */
|
|
19
|
-
export function facultyItemsData(agentDir, faculty) {
|
|
20
|
-
const
|
|
27
|
+
export function facultyItemsData(agentDir, faculty, manifest = null) {
|
|
28
|
+
const m = manifest ?? facultyOf(agentDir, faculty)?.manifest;
|
|
29
|
+
const { items, errors } = listFacultyItems(agentDir, faculty, { itemsDir: m?.itemsDir });
|
|
21
30
|
return { faculty, count: items.length, items, errors };
|
|
22
31
|
}
|
|
23
32
|
|
|
@@ -32,31 +41,105 @@ export function facultySchemaData(agentDir, faculty) {
|
|
|
32
41
|
try { return { faculty, source: 'home', schema: JSON.parse(readFileSync(seeded, 'utf8')) }; }
|
|
33
42
|
catch { /* fall through to the built-in */ }
|
|
34
43
|
}
|
|
35
|
-
return { faculty, source: 'builtin', schema: PAYLOAD_SCHEMAS[faculty] };
|
|
44
|
+
return { faculty, source: 'builtin', schema: PAYLOAD_SCHEMAS[faculty] ?? null };
|
|
36
45
|
}
|
|
37
46
|
|
|
38
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Pure: one faculty's manifest document (home faculty.json when present,
|
|
49
|
+
* built-in fallback), or null for an unknown faculty.
|
|
50
|
+
*/
|
|
51
|
+
export function facultyManifestData(agentDir, faculty) {
|
|
52
|
+
const entry = facultyOf(agentDir, faculty);
|
|
53
|
+
if (!entry) return null;
|
|
54
|
+
return {
|
|
55
|
+
faculty: entry.id,
|
|
56
|
+
source: entry.manifestSource,
|
|
57
|
+
declarative: entry.declarative,
|
|
58
|
+
...(entry.manifestError ? { error: entry.manifestError } : {}),
|
|
59
|
+
manifest: entry.manifest,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Pending-proposal count for one faculty (dir-shaped adapters override). */
|
|
64
|
+
function pendingCount(agentDir, entry) {
|
|
65
|
+
try {
|
|
66
|
+
const a = getAdapter(entry.id);
|
|
67
|
+
if (a && typeof a.listProposals === 'function') return a.listProposals(agentDir).length;
|
|
68
|
+
return listProposals(agentDir, entry.id).length;
|
|
69
|
+
} catch {
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Pure: the overview document — EVERY faculty (built-in + declarative) with
|
|
76
|
+
* manifest/ui, item + pending counts and the top-3 item titles, computed in
|
|
77
|
+
* ONE process (the web daemon's batching endpoint — kills 5-spawn cycles).
|
|
78
|
+
* Fail-soft per faculty: a broken one reports zeros + its manifestError.
|
|
79
|
+
*/
|
|
80
|
+
export function facultyOverviewData(agentDir) {
|
|
81
|
+
const faculties = facultiesOf(agentDir).map((entry) => {
|
|
82
|
+
let items = [], errors = [];
|
|
83
|
+
try {
|
|
84
|
+
({ items, errors } = listFacultyItems(agentDir, entry.id, { itemsDir: entry.manifest?.itemsDir }));
|
|
85
|
+
} catch { /* unreadable → zeros */ }
|
|
86
|
+
return {
|
|
87
|
+
id: entry.id,
|
|
88
|
+
title: entry.manifest?.title ?? entry.id,
|
|
89
|
+
tagline: entry.manifest?.tagline ?? '',
|
|
90
|
+
ui: entry.manifest?.ui ?? {},
|
|
91
|
+
kinds: entry.manifest?.kinds ?? [],
|
|
92
|
+
declarative: entry.declarative,
|
|
93
|
+
...(entry.manifestError ? { manifestError: entry.manifestError } : {}),
|
|
94
|
+
counts: { items: items.length, pending: pendingCount(agentDir, entry), errors: errors.length },
|
|
95
|
+
top: items.slice(0, 3).map((i) => i.title ?? i.id),
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
return { faculties };
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/** `zuzuu faculty <sub> [<f>]` — items | schema | manifest | overview. */
|
|
39
102
|
export function faculty(args = {}, log = console.log) {
|
|
40
103
|
const [sub, f] = args._ ?? [];
|
|
41
|
-
if (!sub || !['items', 'schema'].includes(sub)) {
|
|
42
|
-
console.error('usage: zuzuu faculty items <faculty> [--json|--jsonl] · faculty schema <faculty> [--json]');
|
|
104
|
+
if (!sub || !['items', 'schema', 'manifest', 'overview'].includes(sub)) {
|
|
105
|
+
console.error('usage: zuzuu faculty items <faculty> [--json|--jsonl] · faculty schema <faculty> [--json] · faculty manifest <faculty> [--json] · faculty overview [--json]');
|
|
43
106
|
process.exitCode = 1;
|
|
44
107
|
return;
|
|
45
108
|
}
|
|
46
|
-
|
|
47
|
-
|
|
109
|
+
const agentDir = paths().dir;
|
|
110
|
+
|
|
111
|
+
if (sub === 'overview') {
|
|
112
|
+
const d = facultyOverviewData(agentDir);
|
|
113
|
+
if (args.json) { log(JSON.stringify(d, null, 2)); return; }
|
|
114
|
+
for (const fac of d.faculties) {
|
|
115
|
+
const pending = fac.counts.pending ? ` · ${fac.counts.pending} pending` : '';
|
|
116
|
+
const flag = fac.declarative ? ' [declarative]' : '';
|
|
117
|
+
log(`${fac.id.padEnd(13)} ${String(fac.counts.items).padStart(3)} item(s)${pending}${flag}${fac.manifestError ? ` ✗ ${fac.manifestError}` : ''}`);
|
|
118
|
+
}
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const entry = facultyOf(agentDir, f);
|
|
123
|
+
if (!entry) {
|
|
124
|
+
const known = facultiesOf(agentDir).map((x) => x.id);
|
|
125
|
+
console.error(`unknown faculty: ${f ?? '(none)'} — one of ${known.join(' · ')}`);
|
|
48
126
|
process.exitCode = 1;
|
|
49
127
|
return;
|
|
50
128
|
}
|
|
51
|
-
|
|
129
|
+
|
|
130
|
+
if (sub === 'manifest') {
|
|
131
|
+
const d = facultyManifestData(agentDir, entry.id);
|
|
132
|
+
log(JSON.stringify(args.json ? d : d.manifest, null, 2));
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
52
135
|
|
|
53
136
|
if (sub === 'schema') {
|
|
54
|
-
const { schema } = facultySchemaData(agentDir,
|
|
137
|
+
const { schema } = facultySchemaData(agentDir, entry.id);
|
|
55
138
|
log(JSON.stringify(schema, null, 2));
|
|
56
139
|
return;
|
|
57
140
|
}
|
|
58
141
|
|
|
59
|
-
const data = facultyItemsData(agentDir,
|
|
142
|
+
const data = facultyItemsData(agentDir, entry.id, entry.manifest);
|
|
60
143
|
if (args.jsonl) {
|
|
61
144
|
for (const item of data.items) log(JSON.stringify(item));
|
|
62
145
|
return;
|
|
@@ -65,8 +148,8 @@ export function faculty(args = {}, log = console.log) {
|
|
|
65
148
|
log(JSON.stringify(data, null, 2));
|
|
66
149
|
return;
|
|
67
150
|
}
|
|
68
|
-
const kinds = FACULTY_KINDS[
|
|
69
|
-
log(`${
|
|
151
|
+
const kinds = FACULTY_KINDS[entry.id] ?? (entry.declarative && entry.manifest?.kinds?.length ? entry.manifest.kinds : null);
|
|
152
|
+
log(`${entry.id} — ${data.count} item(s)${kinds ? ` [${kinds.join('|')}]` : ''}`);
|
|
70
153
|
for (const it of data.items) {
|
|
71
154
|
log(` ${it.id} ${it.kind} · ${it.status ?? 'active'} — ${it.title}`);
|
|
72
155
|
}
|
|
@@ -4,10 +4,9 @@
|
|
|
4
4
|
// zuzuu generation mint manually mint a generation from the current faculty state
|
|
5
5
|
// zuzuu generation rollback <id> restore a past generation by content (flip active + restore)
|
|
6
6
|
|
|
7
|
-
import { paths, repoRoot } from '../store.mjs';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
} from '../faculty/generation.mjs';
|
|
7
|
+
import { paths, repoRoot } from '../core/store.mjs';
|
|
8
|
+
import { listGenerations, readGeneration, activeGeneration, diffGenerations } from '../faculty/generation/read.mjs';
|
|
9
|
+
import { mintGeneration, rollback } from '../faculty/generation/write.mjs';
|
|
11
10
|
|
|
12
11
|
function agentDir() {
|
|
13
12
|
return paths(repoRoot(process.cwd())).dir;
|
package/zuzuu/commands/hook.mjs
CHANGED
|
@@ -14,14 +14,14 @@
|
|
|
14
14
|
import { readFileSync, writeFileSync, appendFileSync, mkdirSync } from 'node:fs';
|
|
15
15
|
import { join, dirname } from 'node:path';
|
|
16
16
|
import { byName } from '../capture/adapters/registry.mjs';
|
|
17
|
-
import { captureTrace } from '../capture-core.mjs';
|
|
18
|
-
import { SessionState } from '../session.mjs';
|
|
17
|
+
import { captureTrace } from '../core/capture-core.mjs';
|
|
18
|
+
import { SessionState } from '../core/session.mjs';
|
|
19
19
|
import { openLive, touchLive, closeLive, updateLive } from '../live/live-store.mjs';
|
|
20
|
-
import { sessionGitEnabled, openSession, checkpoint, closeSession } from '../session-git.mjs';
|
|
21
|
-
import { loadRules, evaluate, toPreToolUseDecision, toGeminiDecision } from '../guardrails.mjs';
|
|
22
|
-
import { paths, liveDir as liveDirOf } from '../store.mjs';
|
|
23
|
-
import { computeDigest } from '../digest.mjs';
|
|
24
|
-
import { activeGeneration } from '../faculty/generation.mjs';
|
|
20
|
+
import { sessionGitEnabled, openSession, checkpoint, closeSession } from '../sessions/session-git.mjs';
|
|
21
|
+
import { loadRules, evaluate, toPreToolUseDecision, toGeminiDecision } from '../guardrails/engine.mjs';
|
|
22
|
+
import { paths, liveDir as liveDirOf } from '../core/store.mjs';
|
|
23
|
+
import { computeDigest } from '../digest/compose.mjs';
|
|
24
|
+
import { activeGeneration } from '../faculty/generation/read.mjs';
|
|
25
25
|
|
|
26
26
|
// Lifecycle events, normalized across hosts (verified by observing each host):
|
|
27
27
|
// open — session starts
|
package/zuzuu/commands/inbox.mjs
CHANGED
|
@@ -5,15 +5,10 @@
|
|
|
5
5
|
// points at `zuzuu review`. Fail-soft per faculty — a broken adapter or unreadable
|
|
6
6
|
// proposal never sinks the whole view.
|
|
7
7
|
|
|
8
|
-
import { paths } from '../store.mjs';
|
|
8
|
+
import { paths } from '../core/store.mjs';
|
|
9
9
|
import { FACULTIES } from '../faculty/contract.mjs';
|
|
10
10
|
import { listProposals } from '../faculty/proposal.mjs';
|
|
11
11
|
import * as registry from '../faculty/registry.mjs';
|
|
12
|
-
import '../knowledge/adapter.mjs'; // self-registers the 'knowledge' adapter
|
|
13
|
-
import '../actions/adapter.mjs'; // self-registers the 'actions' adapter
|
|
14
|
-
import '../guardrails/adapter.mjs'; // self-registers the 'guardrails' adapter
|
|
15
|
-
import '../instructions/adapter.mjs'; // self-registers the 'instructions' adapter
|
|
16
|
-
import '../memory/adapter.mjs'; // self-registers the 'memory' adapter
|
|
17
12
|
|
|
18
13
|
/** Best-effort one-line title for a proposal (adapter.render → payload → id). */
|
|
19
14
|
function titleOf(faculty, p) {
|
package/zuzuu/commands/init.mjs
CHANGED
|
@@ -12,11 +12,12 @@
|
|
|
12
12
|
|
|
13
13
|
import { join, basename } from 'node:path';
|
|
14
14
|
import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
15
|
-
import { applyScaffold, ensureGitignore, homeExists } from '../scaffold.mjs';
|
|
16
|
-
import { injectBlock, facultiesBlock, hasBlock, BLOCK_VERSION } from '../inject.mjs';
|
|
15
|
+
import { applyScaffold, ensureGitignore, homeExists } from '../home/scaffold.mjs';
|
|
16
|
+
import { injectBlock, facultiesBlock, hasBlock, BLOCK_VERSION } from '../home/inject.mjs';
|
|
17
17
|
import { detected } from '../capture/adapters/registry.mjs';
|
|
18
|
-
import { repoRoot } from '../store.mjs';
|
|
19
|
-
import { migrateHome
|
|
18
|
+
import { repoRoot } from '../core/store.mjs';
|
|
19
|
+
import { migrateHome } from './migrations/home.mjs';
|
|
20
|
+
import { migrateItems, needsItemsMigration } from './migrations/items.mjs';
|
|
20
21
|
|
|
21
22
|
const HOST_FILES = ['CLAUDE.md', 'AGENTS.md', 'GEMINI.md'];
|
|
22
23
|
// dotfiles/dirs that don't make a directory "a project" for emptiness purposes
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Knowledge CLI: `zuzuu remember` (human-direct write — the human IS the gate),
|
|
2
2
|
// `zuzuu recall` (one command, three search modes), `zuzuu knowledge reindex|audit`.
|
|
3
3
|
|
|
4
|
-
import { paths } from '../store.mjs';
|
|
4
|
+
import { paths } from '../core/store.mjs';
|
|
5
5
|
import { loadRegistry, validateItem } from '../knowledge/registry.mjs';
|
|
6
6
|
import { slugify, writeItem, readItem, allItems } from '../knowledge/items.mjs';
|
|
7
7
|
import { upsertItem, reindex, search, neighbors, indexPath, putVector, allVectors, unembedded } from '../knowledge/index.mjs';
|