chainlesschain 0.166.21 → 0.166.24
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/README.md +67 -9
- package/package.json +4 -3
- package/src/assets/web-panel/assets/{AIOps-BjMnsUci.js → AIOps-DR-MWcZc.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DdYFP03A.js → ActionButton-DT8B7sEb.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Bb8TuuK_.js → Analytics-asjh3dQJ.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-Kn3TIOtk.js → AppLayout-DivQ491i.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-4IxpqI_b.js → Artifacts-DPH2uUmy.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-BOV2caqU.js → Audit-Bp2nLyc-.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-B86k-ay4.js → BackgroundAgents-CHS28khl.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-C5_ie1e3.js → Backup-CKeaFSfz.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-xpwg6QCW.js → BaseInput-CxwM9BAH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CVZOcZau.js → Chat-DYLDwaCv.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-D8fPYhUu.js → ChatBubbleRenderer-DdBJDBP0.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-MKTq3zdP.js → Checkbox-uYTWOB8j.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-JUk3wzep.js → Codegen-CvYa_dwT.js} +1 -1
- package/src/assets/web-panel/assets/{Col-JPvTA0kC.js → Col-CanMAX4m.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Tqgl87NQ.js → Community-B4WaDtHw.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BuAFYBmN.js → Compact-K93Uof_3.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CXS9WIPZ.js → Compliance-CKeDLgUW.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Ds2bFHrr.js → Cowork-P93grAeB.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-C_dV_OeW.js → Cron-BSHnMtDn.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BsO6tIRo.js → Crosschain-epAOpUVJ.js} +1 -1
- package/src/assets/web-panel/assets/{DID-rNOFqBac.js → DID-ByjXfP7t.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-C2fcKKVY.js → Dashboard-QztTU8tb.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Y7Ndr0X_.js → Dropdown-DhUc9yhN.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DcP_uPmL.js → EmailListRenderer-C2sLhJJN.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-Cwn3gDzk.js → FamilyGuardDashboard-CdfbWNDn.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-ClQuOsqb.js → Federation-CcF_R7NW.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DfwtmlcK.js → FormItemContext-Cm_X2IBk.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-zNZhtbC5.js → GenericCardRenderer-DUi4NWlb.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BZmdW-G5.js → Git-4Sq5FjBt.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CqBk4lEn.js → Governance-Dx2_v4V6.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Dbmt3ZXk.js → Inference-7Vr1xekR.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-hMTH6qf3.js → KnowledgeGraph-Cnd2XOzf.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CkiYgiW2.js → Logs-B66QPVf-.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BL1FElXg.js → MarkdownRenderer-PLsEvhly.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-CbB6wfin.js → Marketplace-BMIK9BmC.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BSwiFtte.js → McpTools-BDbyp3J_.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-B03PeHrz.js → Memory-CJdzfZGi.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CRGrnd-X.js → MobileBridge-C2TH5Y3-.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CE_5v2kO.js → MobileProjects-D1dYXkvV.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Dp11QVx1.js → Mtc-B-4A1I1j.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CYu-3JBu.js → MtcAudit-Bgcc9UOl.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CGyJ0Xl3.js → Multisig-DqOe-etP.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CoWi_ov1.js → NLProgramming-7VnhzE_6.js} +1 -1
- package/src/assets/web-panel/assets/Notes-BxawpeUQ.js +7 -0
- package/src/assets/web-panel/assets/{NotificationSettings-DX4I2b4W.js → NotificationSettings-Cr08G2aE.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Ce8bEGlK.js +1 -0
- package/src/assets/web-panel/assets/{Organization-oopLO_tk.js → Organization-BC7lveGv.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BFVvjMyf.js → Overflow-CakOW-G0.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CBy5t-Tk.js → P2P-Cf8CaOBZ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser--YWJNsu6.js → PdhVaultBrowser-Dc7b98W9.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-C2dZ8scb.js → Permissions-DGJyMEfS.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-Bs3l7Hlx.js → PersonalDataHub-DNIwSdwu.js} +6 -6
- package/src/assets/web-panel/assets/{Pipeline-DEBWbZuD.js → Pipeline-5B1S12wa.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CjHBb6NU.js → Privacy-CMB6Ke5t.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-D2WipUz5.js → ProjectInit-D5PqTFiT.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B6WfnrGB.js → ProjectSettings-CbKNdSjV.js} +2 -2
- package/src/assets/web-panel/assets/Projects-ccXaHzYL.js +1 -0
- package/src/assets/web-panel/assets/{Providers-CCv5M_Dv.js → Providers-CJF5_-Gs.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CGthxU54.js → QrScannerModal-CT6iEAdi.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CnPmXPFb.js → QuickAsk-Ci0h9mJ_.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Df_tGEa9.js → Recommend-Da5mobZu.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-Z58N0Loe.js → RemoteSession-BaCY8eey.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-CZTBQ2Vt.js → Reputation-CaITfTsI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-CdK3YpCQ.js → Row-DtUDamyP.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CFMVT5sb.js → RssFeed-DX27gFpg.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DrF8RIvD.js → Search-DFL69osN.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Ddk2f2DM.js → Security-BqGeoWv-.js} +3 -3
- package/src/assets/web-panel/assets/{Services-CCuK-VOo.js → Services-3z1WnEAc.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DxCpHzeM.js → Skeleton-C_OJQQ9Z.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-t2oTDgcv.js → Skills-BY7aT6Mo.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Df63M9_R.js → Sla-BZv7DSaD.js} +1 -1
- package/src/assets/web-panel/assets/SpeechSettings-6lJKLhCn.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-COd_tgPp.js → SyncSettings-B6D7STlI.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-CzDCcrik.js → Tasks-Co_FCZAO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-D-vfxTGA.js → Templates-CnY-9fgz.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BlpT_Gxc.js → Tenant-B71yXfZ8.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-D5rq52Hg.js → Terminal-Dd_P7awo.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DdoMndkK.js → TimelineRenderer-CvIEMyli.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BhgBsI6g.js → Tokens-DknFBGOi.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DwwzoikZ.js → Trigger-D_4nJONB.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-HkTpzXFb.js → Trust-BNl21fa7.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-D9nk6Ehe.js → UkeySign-CFrCI7uK.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BKk0rfoy.js → VideoEditing-BVfY6JLg.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-IVWIU_Lq.js → Wallet-Cj9CAK0J.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CFTCpfsG.js → WebAuthn-DcqZlzA3.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-Dnf4Obif.js → WorkflowEditor-Dfr_dMld.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D2snERdj.js → chat-Yv6UF0AD.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DKEjK1N1.js → colors-CDW_-1fs.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BEDLwQdt.js → compact-item-BYOQvd-6.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DA9iW1a0.js → createContext-BCGO0BiP.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-H-kXSuf-.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-5l2xEcY9.js → hasIn-DY-70cfQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7_W_rYd.js → index-366wfQBU.js} +1 -1
- package/src/assets/web-panel/assets/index-B0o4MeNK.js +1 -0
- package/src/assets/web-panel/assets/{index-CxEtQYdi.js → index-B9ZogJJM.js} +1 -1
- package/src/assets/web-panel/assets/{index-B00GeekA.js → index-B9m5QAMg.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7sKbM5s.js → index-BBs2mv5M.js} +1 -1
- package/src/assets/web-panel/assets/{index-CX1x4AFn.js → index-BFv1hzF6.js} +1 -1
- package/src/assets/web-panel/assets/index-BVafOL_I.js +1 -0
- package/src/assets/web-panel/assets/{index-DU2TXJu-.js → index-BXlEx4UH.js} +1 -1
- package/src/assets/web-panel/assets/{index-e-e40id6.js → index-BayRTE5w.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXet1xol.js → index-Bb9nyts1.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7z4zB_a.js → index-Bf_Va0S-.js} +1 -1
- package/src/assets/web-panel/assets/{index-fccZmC_h.js → index-Br3wQLVY.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqc8tdIF.js → index-BvK4fjkk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BO9dQjpt.js → index-C40UdtlS.js} +1 -1
- package/src/assets/web-panel/assets/{index-Csfb-7hw.js → index-C4UJA2ju.js} +1 -1
- package/src/assets/web-panel/assets/{index-Td8ZwyoC.js → index-CB_Iw73G.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZ5lY2zx.js → index-CCwWp3mT.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpqtbXdE.js → index-CFa2fPCk.js} +1 -1
- package/src/assets/web-panel/assets/{index-NJieh3T1.js → index-CIyHxV4u.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbkghqn_.js → index-CUP-A2_h.js} +1 -1
- package/src/assets/web-panel/assets/{index-DqwPFbOb.js → index-CUo27q9J.js} +3 -3
- package/src/assets/web-panel/assets/{index-B4QYBliR.js → index-CaT8trvf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgfImyZI.js → index-CnZNbcux.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbd7eEex.js → index-Cy2NE6AO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbTPvp2_.js → index-CzeEEazr.js} +1 -1
- package/src/assets/web-panel/assets/{index-5pW4t1iD.js → index-D--TEyDj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dg2a9owQ.js → index-DCtsjhhT.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_eCoZgW.js → index-DLOf7BSz.js} +1 -1
- package/src/assets/web-panel/assets/{index-7P1b8HZo.js → index-DM5c4pc-.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRPrHE7h.js → index-DRFC2Qt0.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bq5P3piS.js → index-DT_qVaaV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CjWltbi_.js → index-DUDoRk9r.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkMKuqUs.js → index-Dg-AQYDf.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLoalqRX.js → index-DuIPq5MX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGlotREA.js → index-NYVBUAVN.js} +1 -1
- package/src/assets/web-panel/assets/{index-yYEQXYaU.js → index-NaCESahy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmruhzFi.js → index-RjIMPG0u.js} +1 -1
- package/src/assets/web-panel/assets/{index-fgYk0QXO.js → index-Y9akzgFO.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvV03Ayk.js → index-hZ0Eyrrw.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CPrcB1TC.js → initDefaultProps-CG99CcR4.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BQ7mWRh_.js → motion-Z7MH0_0G.js} +1 -1
- package/src/assets/web-panel/assets/{move-CzOEq99p.js → move-BX67lOdq.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BlQI5jrw.js → mtc-parser-CmAbG1fE.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DlW4gxmv.js → omit-DiU5tI1_.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BBYms5nP.js → pickAttrs-BGfvLrYL.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-az2MPJ_7.js → placementArrow-CggLEgaJ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D1-ibEol.js → responsiveObserve-t3nlghPZ.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DHGqa4GA.js → slide-BkV4dL9s.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CYGDo6lD.js → statusUtils-qec1PUoC.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cl2EM9K6.js → styleChecker-ChjX6T8D.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DdYhzuv1.js → useFlexGapSupport-B1jLoZcM.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DWumPuBW.js → useFs-C3X53s4E.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DxAO-Aqi.js → usePersonalDataHub-DOvbbnkZ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CplsQf_N.js → vnode-Ie0TEVFT.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cw5HXNSG.js → zoom-CRUMVS8l.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +3 -3
- package/src/commands/agent.js +18 -1
- package/src/commands/evolution-benchmark.js +72 -0
- package/src/commands/evolution.js +2 -0
- package/src/commands/governed-skill-marketplace.js +142 -0
- package/src/commands/marketplace.js +4 -1
- package/src/commands/serve.js +41 -0
- package/src/commands/skill.js +3 -0
- package/src/data/changelog.json +39 -0
- package/src/gateways/ws/ws-agent-handler.js +59 -2
- package/src/gateways/ws/ws-server.js +2 -0
- package/src/harness/golden-transcript.js +1 -0
- package/src/harness/prompt-compressor.js +51 -5
- package/src/harness/provider-backed-compaction.js +28 -1
- package/src/harness/remote-session-registry.js +15 -3
- package/src/index.js +30 -4
- package/src/lazy-dispatch.js +15 -1
- package/src/lib/advisor-runtime.js +55 -2
- package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
- package/src/lib/app-server/graph-runtime.js +32 -0
- package/src/lib/app-server/server.js +45 -1
- package/src/lib/app-server/websocket-transport.js +23 -0
- package/src/lib/autonomous-agent.js +63 -13
- package/src/lib/cowork/ab-comparator-cli.js +4 -3
- package/src/lib/cowork/debate-review-cli.js +4 -3
- package/src/lib/cowork/decision-kb-cli.js +5 -0
- package/src/lib/cowork-adapter.js +38 -16
- package/src/lib/evolution/agent-evolution-ingress.js +95 -15
- package/src/lib/evolution/agent-evolution-runtime-composition.js +82 -0
- package/src/lib/evolution/agent-evolution-session-lifecycle.js +46 -0
- package/src/lib/evolution/agent-model-projection.js +217 -0
- package/src/lib/evolution/bounded-descriptor-read.js +29 -0
- package/src/lib/evolution/controlled-skill-pilot-ledger-adapter.js +551 -0
- package/src/lib/evolution/controlled-skill-production-pilot.js +308 -18
- package/src/lib/evolution/evidence-backed-wiki-maintainer.js +10 -1
- package/src/lib/evolution/evidence-json-text.js +236 -0
- package/src/lib/evolution/evolution-artifact-ports.js +202 -21
- package/src/lib/evolution/evolution-deployment-loader.js +369 -0
- package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +373 -0
- package/src/lib/evolution/evolution-eval-gate.js +14 -1
- package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +14 -0
- package/src/lib/evolution/evolution-eval-process-supervisor.js +607 -0
- package/src/lib/evolution/evolution-evidence-artifact-adapter.js +14 -1
- package/src/lib/evolution/evolution-evidence-projector.js +240 -37
- package/src/lib/evolution/evolution-file-witness.js +153 -30
- package/src/lib/evolution/evolution-ledger-ports.js +1027 -66
- package/src/lib/evolution/evolution-ledger.js +66 -2
- package/src/lib/evolution/evolution-raw-crypto-shred.js +29 -15
- package/src/lib/evolution/evolution-raw-deletion-ledger-adapter.js +865 -0
- package/src/lib/evolution/evolution-release-train-domain-stages.js +769 -0
- package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
- package/src/lib/evolution/evolution-release-train-stage-output-ledger-adapter.js +333 -0
- package/src/lib/evolution/evolution-release-train.js +586 -0
- package/src/lib/evolution/evolution-workbench-batch-executor.js +101 -144
- package/src/lib/evolution/evolution-workbench-control-ports.js +203 -0
- package/src/lib/evolution/evolution-workbench-file-resources.js +403 -0
- package/src/lib/evolution/evolution-workbench-projection.js +152 -25
- package/src/lib/evolution/evolution-workbench-registry-source.js +482 -0
- package/src/lib/evolution/evolution-workbench-review-ledger-adapter.js +823 -0
- package/src/lib/evolution/evolution-workbench-review-protocol.js +157 -0
- package/src/lib/evolution/evolution-workbench-rollback-authorization.js +57 -0
- package/src/lib/evolution/evolution-workbench-rollback-ledger-adapter.js +1016 -0
- package/src/lib/evolution/evolution-workbench-runtime.js +133 -0
- package/src/lib/evolution/evolution-workbench-version-control.js +70 -36
- package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +736 -0
- package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
- package/src/lib/evolution/governed-knowledge-candidate-rejection.js +343 -0
- package/src/lib/evolution/governed-knowledge-dependency-authority.js +227 -44
- package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +95 -83
- package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +29 -2
- package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +31 -3
- package/src/lib/evolution/governed-knowledge-record.js +148 -0
- package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
- package/src/lib/evolution/governed-knowledge-skill-rollback.js +475 -0
- package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +92 -6
- package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +57 -4
- package/src/lib/evolution/governed-knowledge-sync.js +332 -99
- package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +462 -0
- package/src/lib/evolution/governed-skill-marketplace-badge.js +208 -0
- package/src/lib/evolution/governed-skill-marketplace-candidate.js +330 -0
- package/src/lib/evolution/governed-skill-marketplace-cli-host.js +308 -0
- package/src/lib/evolution/governed-skill-marketplace-ledger-adapter.js +420 -0
- package/src/lib/evolution/governed-skill-marketplace.js +288 -5
- package/src/lib/evolution/governed-wiki-pruning-journal.js +302 -0
- package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +459 -0
- package/src/lib/evolution/governed-wiki-pruning-maintenance.js +576 -0
- package/src/lib/evolution/governed-wiki-pruning-plan-authority.js +169 -0
- package/src/lib/evolution/governed-wiki-pruning-raw-shred.js +207 -0
- package/src/lib/evolution/governed-wiki-pruning-retrieval.js +587 -0
- package/src/lib/evolution/governed-wiki-pruning-runtime.js +153 -0
- package/src/lib/evolution/governed-wiki-pruning-skill-rollback.js +360 -0
- package/src/lib/evolution/governed-wiki-pruning.js +322 -143
- package/src/lib/evolution/independent-skill-revocation-source.js +231 -0
- package/src/lib/evolution/knowledge-wiki-source-admission.js +124 -0
- package/src/lib/evolution/knowledge-wiki-source-provenance.js +359 -0
- package/src/lib/evolution/progressive-canary-external-watchdog.js +578 -0
- package/src/lib/evolution/progressive-canary-traffic-worker.js +628 -0
- package/src/lib/evolution/progressive-canary-watchdog-file-store.js +285 -0
- package/src/lib/evolution/progressive-canary-watchdog-node-pki.js +265 -0
- package/src/lib/evolution/skill-candidate-registry.js +22 -0
- package/src/lib/evolution/skill-promotion-controller.js +25 -0
- package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +100 -0
- package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +131 -2
- package/src/lib/evolution/skill-release-registry.js +25 -4
- package/src/lib/evolution/skill-retrieval-revocation-authority.js +361 -0
- package/src/lib/evolution/skill-retrieval-revocation-ledger-adapter.js +346 -0
- package/src/lib/evolution/skill-revocation-propagation.js +467 -0
- package/src/lib/evolution/skill-target-matrix-eval.js +162 -11
- package/src/lib/evolution/skill-wiki-reconciliation.js +985 -0
- package/src/lib/evolution/skill-writer-inventory-manifest.js +15 -12
- package/src/lib/evolution/statistical-progressive-canary.js +845 -0
- package/src/lib/evolution/structured-memory-agent-control-plane.js +120 -0
- package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +5 -1
- package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +126 -0
- package/src/lib/evolution/wiki-informed-skill-proposer.js +127 -21
- package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +760 -100
- package/src/lib/evolution/wiki-revision-protocol.js +120 -0
- package/src/lib/evolution/wiki-skill-proposal-ledger-adapter.js +307 -0
- package/src/lib/evolution/wiki-target-tombstone-revision.js +101 -0
- package/src/lib/evolution/wikiskill-benchmark-cli-host.js +178 -0
- package/src/lib/evolution/wikiskill-benchmark-execution-host.js +702 -0
- package/src/lib/evolution/wikiskill-benchmark-ledger-adapter.js +613 -0
- package/src/lib/evolution/wikiskill-benchmark.js +574 -0
- package/src/lib/goal-assess.js +17 -10
- package/src/lib/interactive-planner.js +9 -1
- package/src/lib/iteration-budget.js +16 -2
- package/src/lib/micro-compact.js +4 -1
- package/src/lib/model-failure-policy.js +21 -0
- package/src/lib/process-execution-broker/index.js +1 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
- package/src/lib/process-execution-broker/windows-sandbox.cs +33 -15
- package/src/lib/read-file-page.js +191 -0
- package/src/lib/runnable-provider.js +2 -1
- package/src/lib/session-host-lease.js +11 -16
- package/src/lib/skill-retrieval-router.js +22 -1
- package/src/repl/agent-repl.js +127 -33
- package/src/runtime/agent-core.js +224 -80
- package/src/runtime/agent-runtime.js +43 -0
- package/src/runtime/coding-agent-contract-shared.cjs +7 -1
- package/src/runtime/fallback-model.js +143 -62
- package/src/runtime/headless-runner.js +54 -10
- package/src/runtime/headless-stream.js +53 -6
- package/src/runtime/runtime-factory.js +41 -2
- package/src/assets/web-panel/assets/Notes-CgU9DDo9.js +0 -7
- package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +0 -1
- package/src/assets/web-panel/assets/Projects-FF_thRi6.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-l7ox6KuX.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +0 -1
- package/src/assets/web-panel/assets/index-Ck1jhFE0.js +0 -1
- package/src/assets/web-panel/assets/index-c8jJEHVs.js +0 -1
|
@@ -3,6 +3,7 @@ import fs from "node:fs";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { ensurePrivateDirectory, ensurePrivateFile } from "../secure-fs.js";
|
|
5
5
|
import { withFileLock } from "../with-file-lock.js";
|
|
6
|
+
import { readBoundedDescriptor } from "./bounded-descriptor-read.js";
|
|
6
7
|
import {
|
|
7
8
|
EVOLUTION_LEDGER_WITNESS_ANCESTRY_SCHEMA,
|
|
8
9
|
EVOLUTION_LEDGER_WITNESS_SCHEMA,
|
|
@@ -18,6 +19,8 @@ const DISCARD_DOMAIN =
|
|
|
18
19
|
const DIGEST = /^sha256:[a-f0-9]{64}$/u;
|
|
19
20
|
const IDENTIFIER = /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,159}$/u;
|
|
20
21
|
const DEFAULT_MAXIMUM_BYTES = 64 * 1024 * 1024;
|
|
22
|
+
const MAXIMUM_CACHED_RECORDS = 1024;
|
|
23
|
+
const MAXIMUM_CACHED_TEXT_BYTES = 16 * 1024 * 1024;
|
|
21
24
|
const STORE_KEYS = new Set([
|
|
22
25
|
"current",
|
|
23
26
|
"discardedAnchors",
|
|
@@ -149,6 +152,29 @@ function clone(value) {
|
|
|
149
152
|
return structuredClone(value);
|
|
150
153
|
}
|
|
151
154
|
|
|
155
|
+
function sameRecord(record, cached) {
|
|
156
|
+
if (
|
|
157
|
+
!record ||
|
|
158
|
+
typeof record !== "object" ||
|
|
159
|
+
Array.isArray(record) ||
|
|
160
|
+
Object.keys(record).length !== RECORD_KEYS.size ||
|
|
161
|
+
!record.signature ||
|
|
162
|
+
typeof record.signature !== "object" ||
|
|
163
|
+
Array.isArray(record.signature) ||
|
|
164
|
+
Object.keys(record.signature).length !== SIGNATURE_KEYS.size
|
|
165
|
+
) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
for (const key of RECORD_KEYS) {
|
|
169
|
+
if (key !== "signature" && !Object.is(record[key], cached[key]))
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
for (const key of SIGNATURE_KEYS) {
|
|
173
|
+
if (!Object.is(record.signature[key], cached.signature[key])) return false;
|
|
174
|
+
}
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
|
|
152
178
|
export function createEvolutionFileWitness({
|
|
153
179
|
id,
|
|
154
180
|
filePath,
|
|
@@ -174,6 +200,52 @@ export function createEvolutionFileWitness({
|
|
|
174
200
|
}
|
|
175
201
|
const secureOptions = { deps: { fs: fsImpl }, failIfUnavailable: true };
|
|
176
202
|
ensurePrivateDirectory(directory, secureOptions);
|
|
203
|
+
// Cache immutable encodings, never an authority decision. Keep the earliest
|
|
204
|
+
// entries when full so full-history scans cannot churn the bounded cache.
|
|
205
|
+
const recordEncodings = new Map();
|
|
206
|
+
let cachedTextBytes = 0;
|
|
207
|
+
const cachedEncoding = (record) => {
|
|
208
|
+
const cached = recordEncodings.get(record?.witnessDigest);
|
|
209
|
+
return cached && sameRecord(record, cached.record) ? cached : null;
|
|
210
|
+
};
|
|
211
|
+
const rememberEncoding = (record, message) => {
|
|
212
|
+
if (
|
|
213
|
+
recordEncodings.size >= MAXIMUM_CACHED_RECORDS ||
|
|
214
|
+
recordEncodings.has(record.witnessDigest)
|
|
215
|
+
)
|
|
216
|
+
return;
|
|
217
|
+
// Only flat scalar records may share field values with the cache. Caller
|
|
218
|
+
// objects, signature objects and verifier buffers must never be retained.
|
|
219
|
+
for (const key of RECORD_KEYS) {
|
|
220
|
+
const value = record[key];
|
|
221
|
+
if (
|
|
222
|
+
key !== "signature" &&
|
|
223
|
+
value !== null &&
|
|
224
|
+
!["string", "number", "boolean"].includes(typeof value)
|
|
225
|
+
)
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
for (const key of SIGNATURE_KEYS) {
|
|
229
|
+
if (typeof record.signature[key] !== "string") return;
|
|
230
|
+
}
|
|
231
|
+
const encoded = canonical(record);
|
|
232
|
+
// Conservatively charge UTF-16 strings plus the copied record's scalar
|
|
233
|
+
// strings (bounded by encoded.length). Entry count bounds object overhead;
|
|
234
|
+
// this is not a claim about the entire process's RSS.
|
|
235
|
+
const bytes = 2 * (message.length + 2 * encoded.length);
|
|
236
|
+
if (cachedTextBytes + bytes > MAXIMUM_CACHED_TEXT_BYTES) return;
|
|
237
|
+
// Decode from the small owned encoding so parser substring backing stores
|
|
238
|
+
// cannot retain the entire source history through one cached scalar/key.
|
|
239
|
+
const ownedRecord = JSON.parse(encoded);
|
|
240
|
+
recordEncodings.set(ownedRecord.witnessDigest, {
|
|
241
|
+
record: ownedRecord,
|
|
242
|
+
message,
|
|
243
|
+
encoded,
|
|
244
|
+
});
|
|
245
|
+
cachedTextBytes += bytes;
|
|
246
|
+
};
|
|
247
|
+
const encodeRecord = (record) =>
|
|
248
|
+
cachedEncoding(record)?.encoded ?? canonical(record);
|
|
177
249
|
|
|
178
250
|
const signed = (domain, core, digestField, purpose) => {
|
|
179
251
|
const message = Buffer.from(`${domain}${canonical(core)}`, "utf8");
|
|
@@ -194,20 +266,42 @@ export function createEvolutionFileWitness({
|
|
|
194
266
|
});
|
|
195
267
|
};
|
|
196
268
|
|
|
197
|
-
const verifySigned = (record
|
|
269
|
+
const verifySigned = (record) => {
|
|
270
|
+
const cached = cachedEncoding(record);
|
|
271
|
+
if (cached) {
|
|
272
|
+
// Reconsult the current verifier even for byte-identical historical
|
|
273
|
+
// records. Give it fresh mutable inputs, not the cached representation.
|
|
274
|
+
if (
|
|
275
|
+
verify({
|
|
276
|
+
message: Buffer.from(cached.message, "utf8"),
|
|
277
|
+
purpose: "evolution-ledger-witness",
|
|
278
|
+
signature: { ...record.signature },
|
|
279
|
+
trust,
|
|
280
|
+
}) !== true
|
|
281
|
+
) {
|
|
282
|
+
throw new Error("witness record authentication failed");
|
|
283
|
+
}
|
|
284
|
+
return record;
|
|
285
|
+
}
|
|
198
286
|
assertExactKeys(record, RECORD_KEYS, "witness record");
|
|
199
287
|
const core = clone(record);
|
|
200
288
|
const signature = core.signature;
|
|
201
|
-
const observedDigest = core
|
|
289
|
+
const observedDigest = core.witnessDigest;
|
|
202
290
|
delete core.signature;
|
|
203
|
-
delete core
|
|
204
|
-
const
|
|
291
|
+
delete core.witnessDigest;
|
|
292
|
+
const encodedMessage = `${WITNESS_DOMAIN}${canonical(core)}`;
|
|
293
|
+
const message = Buffer.from(encodedMessage, "utf8");
|
|
205
294
|
assertExactKeys(signature, SIGNATURE_KEYS, "witness signature");
|
|
206
295
|
if (
|
|
207
296
|
!DIGEST.test(observedDigest || "") ||
|
|
208
297
|
observedDigest !== hash(message) ||
|
|
209
298
|
!sameTrust(signature, trust) ||
|
|
210
|
-
verify({
|
|
299
|
+
verify({
|
|
300
|
+
message,
|
|
301
|
+
purpose: "evolution-ledger-witness",
|
|
302
|
+
signature,
|
|
303
|
+
trust,
|
|
304
|
+
}) !== true
|
|
211
305
|
) {
|
|
212
306
|
throw new Error("witness record authentication failed");
|
|
213
307
|
}
|
|
@@ -278,6 +372,7 @@ export function createEvolutionFileWitness({
|
|
|
278
372
|
) {
|
|
279
373
|
throw new Error("witness record state is inconsistent");
|
|
280
374
|
}
|
|
375
|
+
rememberEncoding(record, encodedMessage);
|
|
281
376
|
return record;
|
|
282
377
|
};
|
|
283
378
|
|
|
@@ -326,12 +421,7 @@ export function createEvolutionFileWitness({
|
|
|
326
421
|
"witnessDigest",
|
|
327
422
|
"evolution-ledger-witness",
|
|
328
423
|
);
|
|
329
|
-
return verifySigned(
|
|
330
|
-
record,
|
|
331
|
-
WITNESS_DOMAIN,
|
|
332
|
-
"witnessDigest",
|
|
333
|
-
"evolution-ledger-witness",
|
|
334
|
-
);
|
|
424
|
+
return verifySigned(record);
|
|
335
425
|
};
|
|
336
426
|
|
|
337
427
|
const emptyStore = () => {
|
|
@@ -389,12 +479,7 @@ export function createEvolutionFileWitness({
|
|
|
389
479
|
}
|
|
390
480
|
let discardIndex = 0;
|
|
391
481
|
for (const [index, record] of store.history.entries()) {
|
|
392
|
-
verifySigned(
|
|
393
|
-
record,
|
|
394
|
-
WITNESS_DOMAIN,
|
|
395
|
-
"witnessDigest",
|
|
396
|
-
"evolution-ledger-witness",
|
|
397
|
-
);
|
|
482
|
+
verifySigned(record);
|
|
398
483
|
if (index === 0) continue;
|
|
399
484
|
const previous = store.history[index - 1];
|
|
400
485
|
if (
|
|
@@ -427,14 +512,8 @@ export function createEvolutionFileWitness({
|
|
|
427
512
|
if (
|
|
428
513
|
discardIndex !== store.discardedAnchors.length ||
|
|
429
514
|
store.current?.witnessDigest !== store.history.at(-1).witnessDigest ||
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
store.current,
|
|
433
|
-
WITNESS_DOMAIN,
|
|
434
|
-
"witnessDigest",
|
|
435
|
-
"evolution-ledger-witness",
|
|
436
|
-
),
|
|
437
|
-
) !== canonical(store.history.at(-1))
|
|
515
|
+
encodeRecord(verifySigned(store.current)) !==
|
|
516
|
+
encodeRecord(store.history.at(-1))
|
|
438
517
|
) {
|
|
439
518
|
throw new Error("witness current state is not its durable history");
|
|
440
519
|
}
|
|
@@ -444,12 +523,53 @@ export function createEvolutionFileWitness({
|
|
|
444
523
|
const readStore = () => {
|
|
445
524
|
if (!fsImpl.existsSync(target)) return emptyStore();
|
|
446
525
|
ensurePrivateFile(target, secureOptions);
|
|
447
|
-
const stat = fsImpl.
|
|
448
|
-
if (
|
|
526
|
+
const stat = fsImpl.lstatSync(target);
|
|
527
|
+
if (
|
|
528
|
+
!stat.isFile() ||
|
|
529
|
+
stat.isSymbolicLink() ||
|
|
530
|
+
stat.nlink !== 1 ||
|
|
531
|
+
stat.size < 2 ||
|
|
532
|
+
stat.size > maximumBytes
|
|
533
|
+
) {
|
|
449
534
|
throw new Error("witness store size is invalid");
|
|
450
535
|
}
|
|
451
|
-
|
|
452
|
-
|
|
536
|
+
let descriptor;
|
|
537
|
+
const sameFile = (observed) =>
|
|
538
|
+
observed.isFile() &&
|
|
539
|
+
observed.nlink === 1 &&
|
|
540
|
+
observed.dev === stat.dev &&
|
|
541
|
+
observed.ino === stat.ino &&
|
|
542
|
+
observed.size === stat.size &&
|
|
543
|
+
observed.mtimeMs === stat.mtimeMs &&
|
|
544
|
+
observed.ctimeMs === stat.ctimeMs;
|
|
545
|
+
try {
|
|
546
|
+
descriptor = fsImpl.openSync(
|
|
547
|
+
target,
|
|
548
|
+
fsImpl.constants.O_RDONLY | (fsImpl.constants.O_NOFOLLOW || 0),
|
|
549
|
+
);
|
|
550
|
+
if (!sameFile(fsImpl.fstatSync(descriptor))) {
|
|
551
|
+
throw new Error("witness store changed while opening");
|
|
552
|
+
}
|
|
553
|
+
const bytes = readBoundedDescriptor(
|
|
554
|
+
fsImpl,
|
|
555
|
+
descriptor,
|
|
556
|
+
stat.size,
|
|
557
|
+
maximumBytes,
|
|
558
|
+
);
|
|
559
|
+
const afterPath = fsImpl.lstatSync(target);
|
|
560
|
+
if (
|
|
561
|
+
!sameFile(fsImpl.fstatSync(descriptor)) ||
|
|
562
|
+
afterPath.isSymbolicLink() ||
|
|
563
|
+
!sameFile(afterPath)
|
|
564
|
+
) {
|
|
565
|
+
throw new Error("witness store changed while reading");
|
|
566
|
+
}
|
|
567
|
+
return validateStore(
|
|
568
|
+
JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes)),
|
|
569
|
+
);
|
|
570
|
+
} finally {
|
|
571
|
+
if (descriptor !== undefined) fsImpl.closeSync(descriptor);
|
|
572
|
+
}
|
|
453
573
|
};
|
|
454
574
|
|
|
455
575
|
const syncDirectory = () => {
|
|
@@ -470,7 +590,10 @@ export function createEvolutionFileWitness({
|
|
|
470
590
|
|
|
471
591
|
const publish = (store) => {
|
|
472
592
|
const temporary = `${target}.${requiredString(random(), "random token")}.tmp`;
|
|
473
|
-
|
|
593
|
+
// Preserve the canonical on-disk format without reserializing every
|
|
594
|
+
// unchanged historical record. Uncached records take the normal path.
|
|
595
|
+
const encoded = `{"current":${encodeRecord(store.current)},"discardedAnchors":${canonical(store.discardedAnchors)},"history":[${store.history.map(encodeRecord).join(",")}],"schema":${JSON.stringify(store.schema)}}`;
|
|
596
|
+
const bytes = Buffer.from(`${encoded}\n`, "utf8");
|
|
474
597
|
if (bytes.length > maximumBytes) {
|
|
475
598
|
throw new Error("witness store exceeds its configured maximum size");
|
|
476
599
|
}
|