chainlesschain 0.166.22 → 0.166.25
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 +46 -3
- package/package.json +4 -3
- package/src/assets/web-panel/assets/{AIOps-oJ7USzMC.js → AIOps-RaxL_QQD.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-BlgnZe_C.js → ActionButton-DD3ieFO-.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-D2rRbTLu.js → Analytics-CATDJukS.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-FwS3f0B2.js → AppLayout-BHGsnRDS.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-iF-_08Hi.js → Artifacts-BL6NunjN.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-D24p0zQw.js → Audit-D0nEWfbA.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-Cg3mRVi9.js → BackgroundAgents-BAP1MUol.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-EOqht3H-.js → Backup-R4y2OeSi.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-9XWYq2hj.js → BaseInput-ByQZ2z6S.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-Dq5yardA.js → Chat-32uV--xF.js} +4 -4
- package/src/assets/web-panel/assets/ChatBubbleRenderer-t1enanwz.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-CuyCBoBf.js → Checkbox-D1CB-7bq.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DjWtYHNe.js → Codegen-BPx3dQ2q.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CrVr_iuG.js → Col-DkPTQ2Gl.js} +1 -1
- package/src/assets/web-panel/assets/{Community-C6QxpfGc.js → Community-ZriaxRlr.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-B-v5r6Pa.js → Compact-C_qJ0P7F.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-zNiLiFgD.js → Compliance-Bgoy-saS.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-D9K7lMOu.js → Cowork-B5i9y6XK.js} +2 -2
- package/src/assets/web-panel/assets/{Cron-DAjO36z4.js → Cron-D7vBJ5-J.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-Bxqn0aqB.js → Crosschain-D4kvoGI_.js} +1 -1
- package/src/assets/web-panel/assets/{DID-DfRmLUe-.js → DID-BLOeBd-r.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-Cz8KF3fr.js → Dashboard-mecJaonC.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-C4oVfkP0.js → Dropdown-GPKwaFer.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-ivyZKN8k.js → EmailListRenderer-BML9m7Dd.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DoxY1CPW.js → FamilyGuardDashboard-DN5bAtJC.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-C93gZxnb.js → Federation-DmD6Gecd.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-D_lEjYJE.js → FormItemContext-6wwplN_K.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BNFN9YjN.js → GenericCardRenderer-DUhpLkDL.js} +1 -1
- package/src/assets/web-panel/assets/{Git-mUu2HcLI.js → Git-eJfyXkwf.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CNuosrge.js → Governance-swAUW59x.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-DwY5pbCB.js → Inference-CbdwJPDJ.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-aRUxhACD.js → KnowledgeGraph-UuYpg1nm.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-DFfsWYy_.js → Logs-CS0G057y.js} +2 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-BxIIB4k3.js +1 -0
- package/src/assets/web-panel/assets/{Marketplace-COI-ciM-.js → Marketplace-CZRjuvvI.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BJJwaIpe.js → McpTools-BOJ9A_Rf.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CDO6SGDZ.js → Memory-BnkrR-Ok.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BlZ5tFf4.js → MobileBridge-Do4mPi13.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-DuoxbgWz.js → MobileProjects-2JxWa6-p.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-6ec9j70b.js → Mtc-CS_mnpGd.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-BuL7HkC7.js → MtcAudit-DZ4J_351.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CJxR85lk.js → Multisig-Jh74zKXu.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-B71O1S4l.js → NLProgramming-_4n2BfnS.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-Bsw5zbpV.js → Notes-CtENcKHv.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-BnAhXuK_.js → NotificationSettings-dgDCvpK9.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-BJ0R5GGz.js → OrderTableRenderer-D5VxCrmG.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-B7wwNxoP.js → Organization-CpIF8Xkd.js} +2 -2
- package/src/assets/web-panel/assets/{Overflow-CfAGr0gM.js → Overflow-aHnBZaez.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-KhMg22Fz.js → P2P-8ppzog2V.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser-NdAXI9ft.js → PdhVaultBrowser-D3p1BXkp.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-CIYjqyT7.js → Permissions-D7vflD5q.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-D2ht3P_R.js → PersonalDataHub-D2hY-Ek2.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-i6flZW1m.js → Pipeline-qK2VqhJC.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DE0lhYVc.js → Privacy-DHJr4uu0.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-BL3YbyxS.js → ProjectInit-DMBS6trm.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CEtdg7ni.js → ProjectSettings-D3Ng74BT.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-CvtU5peJ.js → Projects-BfJFZiIW.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-DKt_Cg-j.js → Providers-DlNA95G0.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-DA61jNSx.js → QrScannerModal-CMOIYxIm.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-fS9ryUmq.js → QuickAsk-D6MyGp5I.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CR9dZU5Y.js → Recommend-W6WcShtf.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BV0BR2Dz.js → RemoteSession-Dm_MjlV_.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-BIeGUvYD.js → Reputation-Ctvij6eX.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DHDT1aro.js → Row-DivbeDE-.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-Cq6YKb1h.js → RssFeed-D4famoAw.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DEF6vsy6.js → Search-6gOAh3zG.js} +1 -1
- package/src/assets/web-panel/assets/{Security-CHtYiKY9.js → Security-DApb9kK8.js} +4 -4
- package/src/assets/web-panel/assets/{Services-u16lvBJN.js → Services-B8OomyE2.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-CGbizyDj.js → Skeleton-BTJ2g2E3.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-BZMQcAa7.js → Skills-NIRr4DD1.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Bm-CycVi.js → Sla-BQHP_6px.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-BudpA5kr.js → SpeechSettings-BVQTDSVS.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-B8q1C1eC.js → SyncSettings-BOD4Mar6.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-SU1pBWc-.js → Tasks-Ciu7H2-y.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-CyOfJzmt.js → Templates-CtlwavRU.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-xqWSm2GP.js → Tenant-QLWYJdL6.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-D1Ttgjsi.js → Terminal-B3q10mjm.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-Da2lYs5D.js → TimelineRenderer-CqltBA_8.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-B34-SduO.js → Tokens-CJOKrj4y.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-C8zyYm4R.js → Trigger-CPMGgfdM.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-D1Pvqems.js → Trust-DiJms7Bl.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-Do3VVnAy.js → UkeySign-rakR8eel.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Dz7egVIA.js → VideoEditing-DAWZUM5o.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-Dcuw-OxR.js → Wallet-DqUPnl7K.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-DPlw-QsB.js → WebAuthn-BnVUwvMm.js} +3 -3
- package/src/assets/web-panel/assets/{WorkflowEditor-h4OsnU5q.js → WorkflowEditor-B1CAwxgs.js} +1 -1
- package/src/assets/web-panel/assets/{chat-eO9wEwrW.js → chat-k2-0Jzfy.js} +1 -1
- package/src/assets/web-panel/assets/{colors-34lSmOXw.js → colors-BAu8xBmW.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-CK4kEWJ4.js → compact-item-DMlqcdfI.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-E0A57xed.js → createContext-BU9kfiSw.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DuGrUMAS.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-BD9ZMGAl.js → hasIn-2vacgdcl.js} +1 -1
- package/src/assets/web-panel/assets/{index--N0u6kTG.js → index-B-C-Ruft.js} +1 -1
- package/src/assets/web-panel/assets/{index-DzXjP44T.js → index-B7wDjYUd.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZBaqe3d.js → index-BMq0frKK.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrOalGut.js → index-BUX4W-2v.js} +1 -1
- package/src/assets/web-panel/assets/{index-CT1_eRL-.js → index-BZz2eB33.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrsDA_md.js → index-BblNQlaA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DP-UZAQN.js → index-BdfKoqsK.js} +1 -1
- package/src/assets/web-panel/assets/{index-DiT_REby.js → index-Bf8YofPE.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cx3Jn1r0.js → index-Bn8tARil.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0rkHxKK.js → index-Bpe2CJd-.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_G_ElKO.js → index-BxctzdYQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-MIg5Z8qe.js → index-C24NoPpy.js} +1 -1
- package/src/assets/web-panel/assets/{index-BmNbU2Z6.js → index-C5C4kSi8.js} +1 -1
- package/src/assets/web-panel/assets/{index-BsGmo6v1.js → index-C6ICn9Y6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CsrKJJcX.js → index-C8ldqZi6.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbX_Dted.js → index-C9WsM29I.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ch175NUw.js → index-CONPVaxw.js} +1 -1
- package/src/assets/web-panel/assets/{index-DONOUtlz.js → index-CPyYXKFB.js} +1 -1
- package/src/assets/web-panel/assets/{index-DFLE2qO9.js → index-CSvSf9px.js} +1 -1
- package/src/assets/web-panel/assets/{index-o8pYehRq.js → index-CXmpR6N3.js} +3 -3
- package/src/assets/web-panel/assets/{index-Cz3unNfL.js → index-Chybe7Ge.js} +1 -1
- package/src/assets/web-panel/assets/{index-yAGBu2E0.js → index-CyXmP3PW.js} +1 -1
- package/src/assets/web-panel/assets/{index-CuSau5ya.js → index-DCusBOqR.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcE1BspQ.js → index-DH01oIaj.js} +1 -1
- package/src/assets/web-panel/assets/{index-DrSAAuJj.js → index-DHg3LMNP.js} +1 -1
- package/src/assets/web-panel/assets/{index-CZkFMeWL.js → index-DWLTSIka.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvKcroix.js → index-DaUGdvtU.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bjs90Eh9.js → index-DcA-tEQd.js} +1 -1
- package/src/assets/web-panel/assets/{index-DGRxt5wj.js → index-DfWvcu4p.js} +1 -1
- package/src/assets/web-panel/assets/{index-DCn-ECvK.js → index-DmZNnZz7.js} +1 -1
- package/src/assets/web-panel/assets/index-DvFfMAux.js +1 -0
- package/src/assets/web-panel/assets/{index-8qMA1DWQ.js → index-JsyGqKmD.js} +1 -1
- package/src/assets/web-panel/assets/{index-D4bB_x_v.js → index-TtrpHmYx.js} +1 -1
- package/src/assets/web-panel/assets/{index-Brqc9Emx.js → index-Ygh0wmKz.js} +1 -1
- package/src/assets/web-panel/assets/{index-Da5fmOHB.js → index-dIYqw3f0.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpfisY1g.js → index-hDHHJYno.js} +1 -1
- package/src/assets/web-panel/assets/index-n6p-1A77.js +1 -0
- package/src/assets/web-panel/assets/{index-DeXNCyQJ.js → index-oElehY4F.js} +1 -1
- package/src/assets/web-panel/assets/{index-DcbgVLOH.js → index-z4_YwZDW.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-DMTkAomF.js → initDefaultProps-B9OXWu2e.js} +1 -1
- package/src/assets/web-panel/assets/{motion-Cnti1F5g.js → motion-IQ47MCDQ.js} +1 -1
- package/src/assets/web-panel/assets/{move-CGxmHUga.js → move-CLCU4kjV.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-CuwwLoq7.js → mtc-parser-CXnVlSPq.js} +1 -1
- package/src/assets/web-panel/assets/{omit-BpdlTkPM.js → omit-BJjLXB0f.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-D7nWrThp.js → pickAttrs-BHdtvdy6.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Bhx0TV8F.js → placementArrow-oq8X_Bwc.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-CZ1KesZh.js → responsiveObserve-DTD02LAO.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CnldF8J6.js → slide-DbEeq8to.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CZfo_GOA.js → statusUtils-Do2fy1CJ.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-B2QCcAv5.js → styleChecker-CFWD63T-.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DzzjIS4J.js → useFlexGapSupport-BeozAWOo.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-B_atg9M0.js → useFs-0-rIgnBL.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DhZs3QYN.js → usePersonalDataHub-CeiNoI31.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DcePTYAm.js → vnode-Dj0ReRNg.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BYmlnjRk.js → zoom-DD7MC4Dy.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-knowledge.js +40 -1
- 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 +21 -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/generated/cc-agent-protocol.schema.json +3 -1
- 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 +20 -2
- package/src/lazy-dispatch.js +6 -0
- 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 +94 -1
- package/src/lib/app-server/websocket-transport.js +15 -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 +437 -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 +32 -10
- package/src/lib/evolution/evidence-json-text.js +236 -0
- package/src/lib/evolution/evolution-artifact-ports.js +196 -21
- package/src/lib/evolution/evolution-deployment-loader.js +240 -2
- 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 +271 -37
- package/src/lib/evolution/evolution-file-witness.js +153 -30
- package/src/lib/evolution/evolution-ledger-ports.js +1219 -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-stage-output-ledger-adapter.js +333 -0
- package/src/lib/evolution/evolution-release-train.js +54 -6
- 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 +134 -26
- 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 +48 -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-inventory.js +392 -0
- package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +217 -82
- package/src/lib/evolution/governed-knowledge-quarantine-release.js +1013 -0
- package/src/lib/evolution/governed-knowledge-record.js +148 -0
- package/src/lib/evolution/governed-knowledge-revocation-host.js +59 -0
- package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
- package/src/lib/evolution/governed-knowledge-skill-rollback.js +510 -0
- package/src/lib/evolution/governed-knowledge-sync.js +181 -95
- package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +516 -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 +283 -0
- package/src/lib/evolution/knowledge-wiki-source-provenance.js +360 -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 +43 -3
- 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 +168 -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 +8 -6
- package/src/lib/evolution/statistical-progressive-canary.js +165 -3
- 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 +822 -101
- 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 +109 -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 +80 -16
- 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-loop-guard.js +113 -0
- package/src/lib/read-file-page.js +191 -0
- package/src/lib/runnable-provider.js +2 -1
- package/src/lib/skill-retrieval-router.js +22 -1
- package/src/repl/agent-repl.js +133 -34
- package/src/runtime/agent-core.js +196 -74
- 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 +50 -6
- package/src/runtime/runtime-factory.js +41 -2
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Ds3pA-ET.js +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-DqTx7_u1.js +0 -1
- package/src/assets/web-panel/assets/devWarning-CF3xafX2.js +0 -1
- package/src/assets/web-panel/assets/index-C907rPwd.js +0 -1
- package/src/assets/web-panel/assets/index-wueRSK2d.js +0 -1
|
@@ -268,6 +268,8 @@ export class RemoteSessionRegistry {
|
|
|
268
268
|
// explicitly require this authority and trigger its lazy construction.
|
|
269
269
|
this._membershipAuthority = options.membershipAuthority ?? null;
|
|
270
270
|
this._membershipCoordinator = options.membershipCoordinator ?? null;
|
|
271
|
+
this._refreshCoordinatorOnEnumeration =
|
|
272
|
+
options.refreshCoordinatorOnEnumeration === true;
|
|
271
273
|
this.sessions = new Map();
|
|
272
274
|
this.tokens = new Map();
|
|
273
275
|
this._transportBindings = new Map();
|
|
@@ -1175,11 +1177,21 @@ export class RemoteSessionRegistry {
|
|
|
1175
1177
|
}
|
|
1176
1178
|
|
|
1177
1179
|
findHosted(agentSessionId, hostClientId) {
|
|
1178
|
-
|
|
1180
|
+
const hasDurableSession = [...this.sessions.values()].some((session) =>
|
|
1181
|
+
Boolean(session.hostPrincipalId),
|
|
1182
|
+
);
|
|
1183
|
+
if (
|
|
1184
|
+
this._membershipCoordinator &&
|
|
1185
|
+
(this._refreshCoordinatorOnEnumeration ||
|
|
1186
|
+
this._coordinatorHydrated ||
|
|
1187
|
+
hasDurableSession)
|
|
1188
|
+
) {
|
|
1179
1189
|
// Enumeration cannot rely on the one-time startup hydration: another
|
|
1180
1190
|
// server may have created, closed, or re-enabled a durable session since
|
|
1181
|
-
// this process started.
|
|
1182
|
-
//
|
|
1191
|
+
// this process started. Explicit coordinator deployments and processes
|
|
1192
|
+
// already serving durable sessions refresh before matching local
|
|
1193
|
+
// transport attachments. A lazy default coordinator must stay unopened
|
|
1194
|
+
// for purely in-memory sessions.
|
|
1183
1195
|
this._hydrateCoordinatorSessions(this._resolveMembershipCoordinator());
|
|
1184
1196
|
}
|
|
1185
1197
|
const matches = [];
|
package/src/index.js
CHANGED
|
@@ -26,16 +26,22 @@ const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
26
26
|
const commandModules = [];
|
|
27
27
|
|
|
28
28
|
for (const entry of manifest.commands) {
|
|
29
|
+
let deploymentStarted = false;
|
|
29
30
|
try {
|
|
30
31
|
const modulePath = join(__dirname, entry.module.replace("./", ""));
|
|
31
32
|
const moduleUrl = pathToFileURL(modulePath).href;
|
|
32
33
|
const mod = await import(moduleUrl);
|
|
34
|
+
deploymentStarted = true;
|
|
33
35
|
const deploymentDependencies =
|
|
34
36
|
await loadEvolutionDeploymentCommandDependencies(entry.name);
|
|
35
37
|
commandModules.push({ entry, mod, deploymentDependencies });
|
|
36
38
|
} catch (err) {
|
|
37
39
|
// Store error for later reporting
|
|
38
|
-
commandModules.push({
|
|
40
|
+
commandModules.push({
|
|
41
|
+
entry,
|
|
42
|
+
error: err,
|
|
43
|
+
deploymentError: deploymentStarted,
|
|
44
|
+
});
|
|
39
45
|
}
|
|
40
46
|
}
|
|
41
47
|
|
|
@@ -82,9 +88,16 @@ export function createProgram(options = {}) {
|
|
|
82
88
|
});
|
|
83
89
|
|
|
84
90
|
// Register all preloaded commands
|
|
85
|
-
for (const {
|
|
91
|
+
for (const {
|
|
92
|
+
entry,
|
|
93
|
+
mod,
|
|
94
|
+
error,
|
|
95
|
+
deploymentError,
|
|
96
|
+
deploymentDependencies,
|
|
97
|
+
} of commandModules) {
|
|
86
98
|
if (shouldFilter && !allowedCommands.has(entry.name)) continue;
|
|
87
99
|
if (error) {
|
|
100
|
+
if (deploymentError) throw error;
|
|
88
101
|
if (process.env.DEBUG) {
|
|
89
102
|
console.warn(
|
|
90
103
|
chalk.yellow(
|
|
@@ -109,6 +122,11 @@ export function createProgram(options = {}) {
|
|
|
109
122
|
undefined,
|
|
110
123
|
);
|
|
111
124
|
} catch (err) {
|
|
125
|
+
if (
|
|
126
|
+
options.commandDependencies?.[entry.name] != null ||
|
|
127
|
+
deploymentDependencies != null
|
|
128
|
+
)
|
|
129
|
+
throw err;
|
|
112
130
|
if (process.env.DEBUG) {
|
|
113
131
|
console.warn(
|
|
114
132
|
chalk.yellow(
|
package/src/lazy-dispatch.js
CHANGED
|
@@ -706,6 +706,7 @@ export async function dispatchManifestEntry(
|
|
|
706
706
|
} = {},
|
|
707
707
|
) {
|
|
708
708
|
let program;
|
|
709
|
+
let allowCompatibilityFallback = true;
|
|
709
710
|
try {
|
|
710
711
|
program = await createBaseProgram();
|
|
711
712
|
const mod = await loadCommandModule(entry);
|
|
@@ -715,9 +716,14 @@ export async function dispatchManifestEntry(
|
|
|
715
716
|
`Register function '${entry.register}' not found in ${entry.module}`,
|
|
716
717
|
);
|
|
717
718
|
}
|
|
719
|
+
// Governed deployment loading may reconcile durable state. Do not hide a
|
|
720
|
+
// failed trust check or retry that assembly through the eager program.
|
|
721
|
+
allowCompatibilityFallback = false;
|
|
718
722
|
const dependencies = await loadCommandDependencies(entry.name);
|
|
723
|
+
allowCompatibilityFallback = dependencies == null;
|
|
719
724
|
registerFn(program, dependencies ?? undefined);
|
|
720
725
|
} catch (error) {
|
|
726
|
+
if (!allowCompatibilityFallback) throw error;
|
|
721
727
|
if (env.DEBUG || env.CC_DEBUG) {
|
|
722
728
|
stderr.write(
|
|
723
729
|
`Lazy command registration failed; loading compatibility program: ${error.message}\n`,
|
|
@@ -12,6 +12,7 @@ import { CostBudget } from "./cost-budget.js";
|
|
|
12
12
|
import { FREE_PROVIDERS, mergePricing } from "./llm-pricing.js";
|
|
13
13
|
import { redactSecrets } from "./secret-scan.js";
|
|
14
14
|
import { firstBalancedJson } from "./json-schema-output.js";
|
|
15
|
+
import { captureAgentEvolutionIngress } from "./evolution/agent-evolution-ingress.js";
|
|
15
16
|
|
|
16
17
|
export const ADVISOR_TRIGGERS = Object.freeze({
|
|
17
18
|
MANUAL: "manual",
|
|
@@ -609,7 +610,12 @@ export async function invokeToolFreeAdvisor({
|
|
|
609
610
|
apiKey,
|
|
610
611
|
maxTokens = DEFAULT_ADVISOR_MAX_TOKENS,
|
|
611
612
|
signal,
|
|
613
|
+
evolutionIngress = null,
|
|
612
614
|
} = {}) {
|
|
615
|
+
const ingress =
|
|
616
|
+
evolutionIngress == null
|
|
617
|
+
? null
|
|
618
|
+
: captureAgentEvolutionIngress(evolutionIngress);
|
|
613
619
|
const { chatWithTools } = await import("../runtime/agent-core.js");
|
|
614
620
|
let resolvedBaseUrl = baseUrl;
|
|
615
621
|
if (!resolvedBaseUrl) {
|
|
@@ -625,6 +631,7 @@ export async function invokeToolFreeAdvisor({
|
|
|
625
631
|
resolvedBaseUrl = "http://localhost:11434";
|
|
626
632
|
}
|
|
627
633
|
return chatWithTools(messages, {
|
|
634
|
+
...(ingress === null ? {} : { evolutionIngress: ingress }),
|
|
628
635
|
provider,
|
|
629
636
|
model,
|
|
630
637
|
baseUrl: resolvedBaseUrl,
|
|
@@ -640,6 +647,9 @@ export async function invokeToolFreeAdvisor({
|
|
|
640
647
|
}
|
|
641
648
|
|
|
642
649
|
export class AdvisorRuntime {
|
|
650
|
+
#evolutionIngress;
|
|
651
|
+
#callWrapper;
|
|
652
|
+
|
|
643
653
|
constructor({
|
|
644
654
|
config,
|
|
645
655
|
managed,
|
|
@@ -649,11 +659,28 @@ export class AdvisorRuntime {
|
|
|
649
659
|
baseUrl = null,
|
|
650
660
|
apiKey = null,
|
|
651
661
|
invoke = invokeToolFreeAdvisor,
|
|
662
|
+
evolutionIngress = null,
|
|
663
|
+
callWrapper = null,
|
|
652
664
|
onEvent = null,
|
|
653
665
|
priceTable = null,
|
|
654
666
|
now = () => Date.now(),
|
|
655
667
|
id = () => randomUUID(),
|
|
656
668
|
} = {}) {
|
|
669
|
+
this.#evolutionIngress =
|
|
670
|
+
evolutionIngress == null
|
|
671
|
+
? null
|
|
672
|
+
: captureAgentEvolutionIngress(evolutionIngress);
|
|
673
|
+
if (this.#evolutionIngress !== null && invoke !== invokeToolFreeAdvisor) {
|
|
674
|
+
throw Object.assign(
|
|
675
|
+
new TypeError(
|
|
676
|
+
"Evolution Advisor requires the canonical model transport",
|
|
677
|
+
),
|
|
678
|
+
{ code: "CC_AGENT_EVOLUTION_INGRESS_FAILED" },
|
|
679
|
+
);
|
|
680
|
+
}
|
|
681
|
+
if (callWrapper !== null && typeof callWrapper !== "function")
|
|
682
|
+
throw new TypeError("Advisor callWrapper must be a function");
|
|
683
|
+
this.#callWrapper = callWrapper;
|
|
657
684
|
this.config = resolveAdvisorConfig({
|
|
658
685
|
config,
|
|
659
686
|
managed,
|
|
@@ -837,7 +864,7 @@ export class AdvisorRuntime {
|
|
|
837
864
|
toolCount: 0,
|
|
838
865
|
});
|
|
839
866
|
try {
|
|
840
|
-
const
|
|
867
|
+
const request = {
|
|
841
868
|
messages: requestMessages,
|
|
842
869
|
provider: this.config.provider,
|
|
843
870
|
model: this.config.model,
|
|
@@ -846,7 +873,28 @@ export class AdvisorRuntime {
|
|
|
846
873
|
maxTokens: this.config.maxTokens,
|
|
847
874
|
signal,
|
|
848
875
|
enabledToolNames: [],
|
|
849
|
-
|
|
876
|
+
...(this.#evolutionIngress === null
|
|
877
|
+
? {}
|
|
878
|
+
: { evolutionIngress: this.#evolutionIngress }),
|
|
879
|
+
};
|
|
880
|
+
const invoke =
|
|
881
|
+
this.#evolutionIngress === null ? this.invoke : invokeToolFreeAdvisor;
|
|
882
|
+
const invokeCall = ({ signal: hostSignal = signal } = {}) =>
|
|
883
|
+
invoke({
|
|
884
|
+
...request,
|
|
885
|
+
signal:
|
|
886
|
+
hostSignal && signal && hostSignal !== signal
|
|
887
|
+
? AbortSignal.any([signal, hostSignal])
|
|
888
|
+
: hostSignal || signal,
|
|
889
|
+
});
|
|
890
|
+
const rawResult =
|
|
891
|
+
this.#callWrapper === null
|
|
892
|
+
? await invokeCall()
|
|
893
|
+
: await this.#callWrapper({
|
|
894
|
+
call: invokeCall,
|
|
895
|
+
provider: request.provider,
|
|
896
|
+
model: request.model,
|
|
897
|
+
});
|
|
850
898
|
const rawText = resultText(rawResult);
|
|
851
899
|
const advice = parseAdvisorAdvice(rawText);
|
|
852
900
|
const usage = usageFrom(rawResult, requestMessages, rawText);
|
|
@@ -889,6 +937,7 @@ export class AdvisorRuntime {
|
|
|
889
937
|
};
|
|
890
938
|
} catch (error) {
|
|
891
939
|
if (error?.runtimeLedgerPersistence === true) throw error;
|
|
940
|
+
if (error?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED") throw error;
|
|
892
941
|
const failure = {
|
|
893
942
|
callId,
|
|
894
943
|
trigger,
|
|
@@ -1019,6 +1068,8 @@ export async function createConfiguredAdvisorRuntime({
|
|
|
1019
1068
|
overrides = {},
|
|
1020
1069
|
onEvent = null,
|
|
1021
1070
|
invoke = invokeToolFreeAdvisor,
|
|
1071
|
+
evolutionIngress = null,
|
|
1072
|
+
callWrapper = null,
|
|
1022
1073
|
now,
|
|
1023
1074
|
id,
|
|
1024
1075
|
} = {}) {
|
|
@@ -1037,6 +1088,8 @@ export async function createConfiguredAdvisorRuntime({
|
|
|
1037
1088
|
baseUrl,
|
|
1038
1089
|
apiKey,
|
|
1039
1090
|
invoke,
|
|
1091
|
+
evolutionIngress,
|
|
1092
|
+
callWrapper,
|
|
1040
1093
|
onEvent,
|
|
1041
1094
|
priceTable: mergePricing(config?.llm?.pricing),
|
|
1042
1095
|
now,
|
|
@@ -208,6 +208,10 @@ export class CliAgentKernelAdapter {
|
|
|
208
208
|
turnOptions.skillVectorAuthority ??
|
|
209
209
|
this.sessionOptions.skillVectorAuthority ??
|
|
210
210
|
null,
|
|
211
|
+
skillRetrievalRevocationReader:
|
|
212
|
+
turnOptions.skillRetrievalRevocationReader ??
|
|
213
|
+
this.sessionOptions.skillRetrievalRevocationReader ??
|
|
214
|
+
null,
|
|
211
215
|
},
|
|
212
216
|
{
|
|
213
217
|
...this.dependencies,
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
captureAgentSkillOutcomeIndex,
|
|
12
12
|
} from "../evolution/agent-evolution-runtime-composition-brand.js";
|
|
13
13
|
import { captureSkillVectorAuthority } from "../skill-vector-authority.js";
|
|
14
|
+
import { captureSkillRetrievalRevocationReader } from "../evolution/skill-retrieval-revocation-authority.js";
|
|
14
15
|
import {
|
|
15
16
|
diffGraphTrace,
|
|
16
17
|
locateBlockedRoot,
|
|
@@ -151,6 +152,7 @@ export class AppServerGraphRuntime {
|
|
|
151
152
|
evolutionCompositionFactory = null,
|
|
152
153
|
skillOutcomeIndex = null,
|
|
153
154
|
skillVectorAuthority = null,
|
|
155
|
+
skillRetrievalRevocationReader = null,
|
|
154
156
|
writerLeaseTtlMs = 24 * 60 * 60 * 1000,
|
|
155
157
|
} = {}) {
|
|
156
158
|
if (typeof executeNode !== "function") {
|
|
@@ -179,6 +181,10 @@ export class AppServerGraphRuntime {
|
|
|
179
181
|
skillVectorAuthority === null
|
|
180
182
|
? null
|
|
181
183
|
: captureSkillVectorAuthority(skillVectorAuthority);
|
|
184
|
+
this.skillRetrievalRevocationReader =
|
|
185
|
+
skillRetrievalRevocationReader === null
|
|
186
|
+
? null
|
|
187
|
+
: captureSkillRetrievalRevocationReader(skillRetrievalRevocationReader);
|
|
182
188
|
if (
|
|
183
189
|
this.skillOutcomeIndex !== null &&
|
|
184
190
|
this.skillVectorAuthority !== null &&
|
|
@@ -186,6 +192,22 @@ export class AppServerGraphRuntime {
|
|
|
186
192
|
) {
|
|
187
193
|
throw new TypeError("Graph retrieval authorities must share one tenant");
|
|
188
194
|
}
|
|
195
|
+
if (
|
|
196
|
+
this.skillVectorAuthority !== null &&
|
|
197
|
+
this.skillRetrievalRevocationReader !== null &&
|
|
198
|
+
this.skillVectorAuthority.tenantId !==
|
|
199
|
+
this.skillRetrievalRevocationReader.tenantId
|
|
200
|
+
) {
|
|
201
|
+
throw new TypeError("Graph retrieval authorities must share one tenant");
|
|
202
|
+
}
|
|
203
|
+
if (
|
|
204
|
+
this.skillOutcomeIndex !== null &&
|
|
205
|
+
this.skillRetrievalRevocationReader !== null &&
|
|
206
|
+
this.skillOutcomeIndex.tenantId !==
|
|
207
|
+
this.skillRetrievalRevocationReader.tenantId
|
|
208
|
+
) {
|
|
209
|
+
throw new TypeError("Graph retrieval authorities must share one tenant");
|
|
210
|
+
}
|
|
189
211
|
this.writerLeaseTtlMs = writerLeaseTtlMs;
|
|
190
212
|
this.runs = new Map();
|
|
191
213
|
this.drives = new Map();
|
|
@@ -227,6 +249,15 @@ export class AppServerGraphRuntime {
|
|
|
227
249
|
"Graph evolution composition and Skill vector authority must share one tenant",
|
|
228
250
|
);
|
|
229
251
|
}
|
|
252
|
+
if (
|
|
253
|
+
this.skillRetrievalRevocationReader !== null &&
|
|
254
|
+
composition.tenantId !==
|
|
255
|
+
this.skillRetrievalRevocationReader.tenantId
|
|
256
|
+
) {
|
|
257
|
+
throw new TypeError(
|
|
258
|
+
"Graph evolution composition and Skill revocation authority must share one tenant",
|
|
259
|
+
);
|
|
260
|
+
}
|
|
230
261
|
if (
|
|
231
262
|
typeof composition.evolutionIngress?.start !== "function" ||
|
|
232
263
|
typeof composition.evolutionIngress?.complete !== "function"
|
|
@@ -732,6 +763,7 @@ export class AppServerGraphRuntime {
|
|
|
732
763
|
evolutionIngress: evolutionComposition?.evolutionIngress || null,
|
|
733
764
|
skillOutcomeIndex: this.skillOutcomeIndex,
|
|
734
765
|
skillVectorAuthority: this.skillVectorAuthority,
|
|
766
|
+
skillRetrievalRevocationReader: this.skillRetrievalRevocationReader,
|
|
735
767
|
});
|
|
736
768
|
if (!result || !["succeeded", "completed"].includes(result.status)) {
|
|
737
769
|
const error = runtimeError(
|
|
@@ -9,10 +9,12 @@ import {
|
|
|
9
9
|
import { AppServerGraphRuntime } from "./graph-runtime.js";
|
|
10
10
|
import { captureAgentSkillOutcomeIndex } from "../evolution/agent-evolution-runtime-composition-brand.js";
|
|
11
11
|
import { captureSkillVectorAuthority } from "../skill-vector-authority.js";
|
|
12
|
+
import { captureSkillRetrievalRevocationReader } from "../evolution/skill-retrieval-revocation-authority.js";
|
|
12
13
|
import { compileGraphDefinition } from "../graph-kernel/compiler.js";
|
|
13
14
|
import { createCliContextMemoryRuntime } from "../context-memory-kernel/runtime.js";
|
|
14
15
|
import { isEvolutionWorkbenchCliHost } from "../evolution/evolution-workbench-cli-host.js";
|
|
15
16
|
import { isGovernedKnowledgeReviewHost } from "../evolution/governed-knowledge-review-host.js";
|
|
17
|
+
import { isGovernedKnowledgeRevocationHost } from "../evolution/governed-knowledge-revocation-host.js";
|
|
16
18
|
import {
|
|
17
19
|
contextPlanCreatedNotification,
|
|
18
20
|
memoryDeletionNotification,
|
|
@@ -151,8 +153,10 @@ export class CcAppServer {
|
|
|
151
153
|
evolutionCompositionFactory = null,
|
|
152
154
|
skillOutcomeIndex = null,
|
|
153
155
|
skillVectorAuthority = null,
|
|
156
|
+
skillRetrievalRevocationReader = null,
|
|
154
157
|
evolutionWorkbenchHost = null,
|
|
155
158
|
governedKnowledgeReviewHost = null,
|
|
159
|
+
governedKnowledgeRevocationHost = null,
|
|
156
160
|
contextMemoryRuntimeFactory = createCliContextMemoryRuntime,
|
|
157
161
|
} = {}) {
|
|
158
162
|
if (typeof send !== "function") {
|
|
@@ -192,6 +196,15 @@ export class CcAppServer {
|
|
|
192
196
|
);
|
|
193
197
|
}
|
|
194
198
|
this.governedKnowledgeReviewHost = governedKnowledgeReviewHost;
|
|
199
|
+
if (
|
|
200
|
+
governedKnowledgeRevocationHost !== null &&
|
|
201
|
+
!isGovernedKnowledgeRevocationHost(governedKnowledgeRevocationHost)
|
|
202
|
+
) {
|
|
203
|
+
throw new TypeError(
|
|
204
|
+
"CcAppServer governedKnowledgeRevocationHost must be a branded revocation host",
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
this.governedKnowledgeRevocationHost = governedKnowledgeRevocationHost;
|
|
195
208
|
this.skillOutcomeIndex =
|
|
196
209
|
skillOutcomeIndex === null
|
|
197
210
|
? null
|
|
@@ -200,6 +213,10 @@ export class CcAppServer {
|
|
|
200
213
|
skillVectorAuthority === null
|
|
201
214
|
? null
|
|
202
215
|
: captureSkillVectorAuthority(skillVectorAuthority);
|
|
216
|
+
this.skillRetrievalRevocationReader =
|
|
217
|
+
skillRetrievalRevocationReader === null
|
|
218
|
+
? null
|
|
219
|
+
: captureSkillRetrievalRevocationReader(skillRetrievalRevocationReader);
|
|
203
220
|
if (
|
|
204
221
|
this.skillOutcomeIndex !== null &&
|
|
205
222
|
this.skillVectorAuthority !== null &&
|
|
@@ -209,9 +226,32 @@ export class CcAppServer {
|
|
|
209
226
|
"App Server retrieval authorities must share one tenant",
|
|
210
227
|
);
|
|
211
228
|
}
|
|
229
|
+
if (
|
|
230
|
+
this.skillVectorAuthority !== null &&
|
|
231
|
+
this.skillRetrievalRevocationReader !== null &&
|
|
232
|
+
this.skillVectorAuthority.tenantId !==
|
|
233
|
+
this.skillRetrievalRevocationReader.tenantId
|
|
234
|
+
) {
|
|
235
|
+
throw new TypeError(
|
|
236
|
+
"App Server retrieval authorities must share one tenant",
|
|
237
|
+
);
|
|
238
|
+
}
|
|
239
|
+
if (
|
|
240
|
+
this.skillOutcomeIndex !== null &&
|
|
241
|
+
this.skillRetrievalRevocationReader !== null &&
|
|
242
|
+
this.skillOutcomeIndex.tenantId !==
|
|
243
|
+
this.skillRetrievalRevocationReader.tenantId
|
|
244
|
+
) {
|
|
245
|
+
throw new TypeError(
|
|
246
|
+
"App Server retrieval authorities must share one tenant",
|
|
247
|
+
);
|
|
248
|
+
}
|
|
212
249
|
if (
|
|
213
250
|
graphRuntime &&
|
|
214
|
-
(evolutionCompositionFactory ||
|
|
251
|
+
(evolutionCompositionFactory ||
|
|
252
|
+
skillOutcomeIndex ||
|
|
253
|
+
skillVectorAuthority ||
|
|
254
|
+
skillRetrievalRevocationReader)
|
|
215
255
|
) {
|
|
216
256
|
throw new TypeError(
|
|
217
257
|
"graphRuntime and host-owned Graph authorities cannot both be provided",
|
|
@@ -226,6 +266,7 @@ export class CcAppServer {
|
|
|
226
266
|
evolutionCompositionFactory,
|
|
227
267
|
skillOutcomeIndex: this.skillOutcomeIndex,
|
|
228
268
|
skillVectorAuthority: this.skillVectorAuthority,
|
|
269
|
+
skillRetrievalRevocationReader: this.skillRetrievalRevocationReader,
|
|
229
270
|
executeNode: (context) => this._executeGraphNode(context),
|
|
230
271
|
requestHumanTask: (context) => this._requestHumanTask(context),
|
|
231
272
|
onEvent: (event) => {
|
|
@@ -413,6 +454,10 @@ export class CcAppServer {
|
|
|
413
454
|
this._governedKnowledgeConflicts(message.params),
|
|
414
455
|
"evolution/knowledge/merge": () =>
|
|
415
456
|
this._governedKnowledgeMerge(message.params),
|
|
457
|
+
"evolution/knowledge/revocation/prepare": () =>
|
|
458
|
+
this._governedKnowledgeRevocationPrepare(message.params),
|
|
459
|
+
"evolution/knowledge/revocation/publish": () =>
|
|
460
|
+
this._governedKnowledgeRevocationPublish(message.params),
|
|
416
461
|
};
|
|
417
462
|
const handler = handlers[method];
|
|
418
463
|
if (!handler) {
|
|
@@ -474,6 +519,13 @@ export class CcAppServer {
|
|
|
474
519
|
? []
|
|
475
520
|
: ["conflicts", "merge"],
|
|
476
521
|
},
|
|
522
|
+
governedKnowledgeRevocation: {
|
|
523
|
+
available: this.governedKnowledgeRevocationHost !== null,
|
|
524
|
+
methods:
|
|
525
|
+
this.governedKnowledgeRevocationHost === null
|
|
526
|
+
? []
|
|
527
|
+
: ["prepare", "publish"],
|
|
528
|
+
},
|
|
477
529
|
schema: {
|
|
478
530
|
id: APP_SERVER_SCHEMA.$id,
|
|
479
531
|
version: APP_SERVER_PROTOCOL_VERSION,
|
|
@@ -574,6 +626,33 @@ export class CcAppServer {
|
|
|
574
626
|
});
|
|
575
627
|
}
|
|
576
628
|
|
|
629
|
+
_requireGovernedKnowledgeRevocationHost() {
|
|
630
|
+
if (this.governedKnowledgeRevocationHost === null) {
|
|
631
|
+
throw new JsonRpcError(
|
|
632
|
+
JSON_RPC_ERROR.NOT_FOUND,
|
|
633
|
+
"Governed knowledge revocation is not configured for this App Server",
|
|
634
|
+
);
|
|
635
|
+
}
|
|
636
|
+
return this.governedKnowledgeRevocationHost;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
_governedKnowledgeRevocationPrepare(rawParams) {
|
|
640
|
+
const params = requireObject(rawParams);
|
|
641
|
+
return this._requireGovernedKnowledgeRevocationHost().prepare(
|
|
642
|
+
requireObject(params.record, "record"),
|
|
643
|
+
);
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
_governedKnowledgeRevocationPublish(rawParams) {
|
|
647
|
+
const params = requireObject(rawParams);
|
|
648
|
+
return this._requireGovernedKnowledgeRevocationHost().publish({
|
|
649
|
+
operationDigest: requiredString(
|
|
650
|
+
params.operationDigest,
|
|
651
|
+
"operationDigest",
|
|
652
|
+
),
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
|
|
577
656
|
async _contextPlan(rawParams) {
|
|
578
657
|
const params = requireObject(rawParams);
|
|
579
658
|
const runtime = this._contextMemoryRuntime({
|
|
@@ -773,6 +852,7 @@ export class CcAppServer {
|
|
|
773
852
|
evolutionIngress,
|
|
774
853
|
skillOutcomeIndex,
|
|
775
854
|
skillVectorAuthority,
|
|
855
|
+
skillRetrievalRevocationReader,
|
|
776
856
|
}) {
|
|
777
857
|
const threadId = `graph-agent:${runId}:${nodeId}`;
|
|
778
858
|
const turn = { id: attempt.id, threadId };
|
|
@@ -785,6 +865,7 @@ export class CcAppServer {
|
|
|
785
865
|
delete turnOptions.evolutionIngress;
|
|
786
866
|
delete turnOptions.skillOutcomeIndex;
|
|
787
867
|
delete turnOptions.skillVectorAuthority;
|
|
868
|
+
delete turnOptions.skillRetrievalRevocationReader;
|
|
788
869
|
if (evolutionIngress !== null && evolutionIngress !== undefined) {
|
|
789
870
|
turnOptions.evolutionIngress = evolutionIngress;
|
|
790
871
|
}
|
|
@@ -794,6 +875,13 @@ export class CcAppServer {
|
|
|
794
875
|
if (skillVectorAuthority !== null && skillVectorAuthority !== undefined) {
|
|
795
876
|
turnOptions.skillVectorAuthority = skillVectorAuthority;
|
|
796
877
|
}
|
|
878
|
+
if (
|
|
879
|
+
skillRetrievalRevocationReader !== null &&
|
|
880
|
+
skillRetrievalRevocationReader !== undefined
|
|
881
|
+
) {
|
|
882
|
+
turnOptions.skillRetrievalRevocationReader =
|
|
883
|
+
skillRetrievalRevocationReader;
|
|
884
|
+
}
|
|
797
885
|
const result = await this.kernel.startTurn({
|
|
798
886
|
threadId,
|
|
799
887
|
turnId: attempt.id,
|
|
@@ -1038,12 +1126,17 @@ export class CcAppServer {
|
|
|
1038
1126
|
const turnOptions = { ...options };
|
|
1039
1127
|
delete turnOptions.skillOutcomeIndex;
|
|
1040
1128
|
delete turnOptions.skillVectorAuthority;
|
|
1129
|
+
delete turnOptions.skillRetrievalRevocationReader;
|
|
1041
1130
|
if (this.skillOutcomeIndex !== null) {
|
|
1042
1131
|
turnOptions.skillOutcomeIndex = this.skillOutcomeIndex;
|
|
1043
1132
|
}
|
|
1044
1133
|
if (this.skillVectorAuthority !== null) {
|
|
1045
1134
|
turnOptions.skillVectorAuthority = this.skillVectorAuthority;
|
|
1046
1135
|
}
|
|
1136
|
+
if (this.skillRetrievalRevocationReader !== null) {
|
|
1137
|
+
turnOptions.skillRetrievalRevocationReader =
|
|
1138
|
+
this.skillRetrievalRevocationReader;
|
|
1139
|
+
}
|
|
1047
1140
|
const result = await this.kernel.startTurn({
|
|
1048
1141
|
threadId: turn.threadId,
|
|
1049
1142
|
turnId: turn.id,
|
|
@@ -12,6 +12,7 @@ import { CcAppServer } from "./server.js";
|
|
|
12
12
|
import { JSON_RPC_ERROR, JsonRpcError, rpcError } from "./protocol.js";
|
|
13
13
|
import { isEvolutionWorkbenchCliHost } from "../evolution/evolution-workbench-cli-host.js";
|
|
14
14
|
import { isGovernedKnowledgeReviewHost } from "../evolution/governed-knowledge-review-host.js";
|
|
15
|
+
import { isGovernedKnowledgeRevocationHost } from "../evolution/governed-knowledge-revocation-host.js";
|
|
15
16
|
|
|
16
17
|
export const APP_SERVER_WEBSOCKET_PROTOCOL =
|
|
17
18
|
"chainlesschain.app-server.experimental.v1";
|
|
@@ -268,6 +269,16 @@ export class WebSocketAppServerHost extends EventEmitter {
|
|
|
268
269
|
"WebSocket App Server governedKnowledgeReviewHost must be a branded review host",
|
|
269
270
|
);
|
|
270
271
|
}
|
|
272
|
+
if (
|
|
273
|
+
options.governedKnowledgeRevocationHost != null &&
|
|
274
|
+
!isGovernedKnowledgeRevocationHost(
|
|
275
|
+
options.governedKnowledgeRevocationHost,
|
|
276
|
+
)
|
|
277
|
+
) {
|
|
278
|
+
throw new TypeError(
|
|
279
|
+
"WebSocket App Server governedKnowledgeRevocationHost must be a branded revocation host",
|
|
280
|
+
);
|
|
281
|
+
}
|
|
271
282
|
this.options = options;
|
|
272
283
|
this.binding = validateWebSocketAppServerOptions(options);
|
|
273
284
|
this.port = boundedInteger(options.port, 18800, 0, 65_535);
|
|
@@ -418,9 +429,13 @@ export class WebSocketAppServerHost extends EventEmitter {
|
|
|
418
429
|
this.options.evolutionCompositionFactory ?? null,
|
|
419
430
|
skillOutcomeIndex: this.options.skillOutcomeIndex ?? null,
|
|
420
431
|
skillVectorAuthority: this.options.skillVectorAuthority ?? null,
|
|
432
|
+
skillRetrievalRevocationReader:
|
|
433
|
+
this.options.skillRetrievalRevocationReader ?? null,
|
|
421
434
|
evolutionWorkbenchHost: this.options.evolutionWorkbenchHost ?? null,
|
|
422
435
|
governedKnowledgeReviewHost:
|
|
423
436
|
this.options.governedKnowledgeReviewHost ?? null,
|
|
437
|
+
governedKnowledgeRevocationHost:
|
|
438
|
+
this.options.governedKnowledgeRevocationHost ?? null,
|
|
424
439
|
transport: "websocket",
|
|
425
440
|
maxQueuedRequests: this.options.maxQueuedRequests,
|
|
426
441
|
maxQueuedRequestBytes: this.options.maxQueuedRequestBytes,
|