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
|
@@ -14,36 +14,37 @@ import {
|
|
|
14
14
|
GOVERNED_KNOWLEDGE_DEPENDENCY_RESULT_SCHEMA,
|
|
15
15
|
digestGovernedKnowledgeDependencyResult,
|
|
16
16
|
isGovernedKnowledgeDependencyAuthority,
|
|
17
|
+
captureGovernedKnowledgeDependencyReverifier,
|
|
17
18
|
} from "./governed-knowledge-dependency-authority.js";
|
|
18
19
|
import {
|
|
19
20
|
isGovernedKnowledgeExecutionRecord,
|
|
20
21
|
verifyGovernedKnowledgeRecord,
|
|
21
22
|
} from "./governed-knowledge-sync.js";
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
import {
|
|
25
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_SCHEMA,
|
|
26
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_EVENT_TYPE,
|
|
27
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_LEDGER_CORRUPT_CODE,
|
|
28
|
+
digestGovernedKnowledgeDependencyOperation,
|
|
29
|
+
verifyGovernedKnowledgeDependencyPrepared,
|
|
30
|
+
} from "./governed-knowledge-revocation-record.js";
|
|
31
|
+
export {
|
|
32
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_SCHEMA,
|
|
33
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_EVENT_TYPE,
|
|
34
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_LEDGER_CORRUPT_CODE,
|
|
35
|
+
digestGovernedKnowledgeDependencyOperation,
|
|
36
|
+
verifyGovernedKnowledgeDependencyPrepared,
|
|
37
|
+
} from "./governed-knowledge-revocation-record.js";
|
|
38
|
+
|
|
25
39
|
export const GOVERNED_KNOWLEDGE_DEPENDENCY_SETTLED_SCHEMA =
|
|
26
40
|
"chainlesschain.governed-knowledge-dependencies-settled/v1";
|
|
27
|
-
export const GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_EVENT_TYPE =
|
|
28
|
-
"knowledge.revocation-dependencies.prepared";
|
|
29
41
|
export const GOVERNED_KNOWLEDGE_DEPENDENCY_SETTLED_EVENT_TYPE =
|
|
30
42
|
"knowledge.revocation-dependencies.settled";
|
|
31
|
-
export const GOVERNED_KNOWLEDGE_DEPENDENCY_LEDGER_CORRUPT_CODE =
|
|
32
|
-
"CC_GOVERNED_KNOWLEDGE_DEPENDENCY_LEDGER_CORRUPT";
|
|
33
|
-
|
|
34
43
|
const EXECUTORS = new WeakSet();
|
|
44
|
+
const EXECUTION_REQUESTS = new WeakMap();
|
|
35
45
|
const ARTIFACT_TYPE = "governed-knowledge-dependency-operation";
|
|
36
46
|
const DIGEST = /^sha256:[a-f0-9]{64}$/u;
|
|
37
47
|
const ID = /^[A-Za-z0-9][A-Za-z0-9._:@/-]{0,255}$/u;
|
|
38
|
-
const PREPARED_KEYS = new Set([
|
|
39
|
-
"deviceId",
|
|
40
|
-
"knowledge",
|
|
41
|
-
"operationDigest",
|
|
42
|
-
"preparedAt",
|
|
43
|
-
"recordDigest",
|
|
44
|
-
"schema",
|
|
45
|
-
"tenantId",
|
|
46
|
-
]);
|
|
47
48
|
const SETTLED_KEYS = new Set([
|
|
48
49
|
"deviceId",
|
|
49
50
|
"operationDigest",
|
|
@@ -138,16 +139,34 @@ function identifier(value, label) {
|
|
|
138
139
|
return value;
|
|
139
140
|
}
|
|
140
141
|
|
|
142
|
+
function portableKnowledge(value, tenantId) {
|
|
143
|
+
const knowledge = verifyGovernedKnowledgeRecord(value, { tenantId });
|
|
144
|
+
const portable = clone(knowledge);
|
|
145
|
+
delete portable.dependencies;
|
|
146
|
+
return portable;
|
|
147
|
+
}
|
|
148
|
+
|
|
141
149
|
function capture(owner, method, label) {
|
|
150
|
+
if (!owner || typeof owner !== "object" || utilTypes.isProxy(owner)) {
|
|
151
|
+
throw new TypeError(`${label}.${method}() is required`);
|
|
152
|
+
}
|
|
153
|
+
const implementation = owner[method];
|
|
142
154
|
if (
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
utilTypes.isProxy(owner) ||
|
|
146
|
-
typeof owner[method] !== "function"
|
|
155
|
+
typeof implementation !== "function" ||
|
|
156
|
+
utilTypes.isProxy(implementation)
|
|
147
157
|
) {
|
|
148
|
-
throw new TypeError(`${label}.${method}()
|
|
158
|
+
throw new TypeError(`${label}.${method}() must be a non-proxy function`);
|
|
149
159
|
}
|
|
150
|
-
return (...args) => Reflect.apply(
|
|
160
|
+
return (...args) => Reflect.apply(implementation, owner, args);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
export function isGovernedKnowledgeDependencyExecutionRequest(
|
|
164
|
+
value,
|
|
165
|
+
authority,
|
|
166
|
+
) {
|
|
167
|
+
return (
|
|
168
|
+
EXECUTION_REQUESTS.has(value) && EXECUTION_REQUESTS.get(value) === authority
|
|
169
|
+
);
|
|
151
170
|
}
|
|
152
171
|
|
|
153
172
|
function descriptor(input) {
|
|
@@ -161,29 +180,6 @@ function descriptor(input) {
|
|
|
161
180
|
});
|
|
162
181
|
}
|
|
163
182
|
|
|
164
|
-
export function digestGovernedKnowledgeDependencyOperation({
|
|
165
|
-
tenantId,
|
|
166
|
-
deviceId,
|
|
167
|
-
knowledge,
|
|
168
|
-
}) {
|
|
169
|
-
return hash(GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_SCHEMA, {
|
|
170
|
-
tenantId,
|
|
171
|
-
deviceId,
|
|
172
|
-
knowledge,
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
function preparedCore(value) {
|
|
177
|
-
return {
|
|
178
|
-
schema: value.schema,
|
|
179
|
-
tenantId: value.tenantId,
|
|
180
|
-
deviceId: value.deviceId,
|
|
181
|
-
operationDigest: value.operationDigest,
|
|
182
|
-
knowledge: value.knowledge,
|
|
183
|
-
preparedAt: value.preparedAt,
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
|
|
187
183
|
function settledCore(value) {
|
|
188
184
|
return {
|
|
189
185
|
schema: value.schema,
|
|
@@ -243,31 +239,6 @@ function validateResult(
|
|
|
243
239
|
return freeze(clone(value));
|
|
244
240
|
}
|
|
245
241
|
|
|
246
|
-
function validatePrepared(value, descriptorValue) {
|
|
247
|
-
exact(value, PREPARED_KEYS, "dependency prepared record");
|
|
248
|
-
const knowledge = verifyGovernedKnowledgeRecord(value.knowledge, {
|
|
249
|
-
tenantId: descriptorValue.tenantId,
|
|
250
|
-
});
|
|
251
|
-
const operationDigest = digestGovernedKnowledgeDependencyOperation({
|
|
252
|
-
tenantId: descriptorValue.tenantId,
|
|
253
|
-
deviceId: descriptorValue.deviceId,
|
|
254
|
-
knowledge,
|
|
255
|
-
});
|
|
256
|
-
if (
|
|
257
|
-
value.schema !== GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_SCHEMA ||
|
|
258
|
-
value.tenantId !== descriptorValue.tenantId ||
|
|
259
|
-
value.deviceId !== descriptorValue.deviceId ||
|
|
260
|
-
!["tombstone", "revoke"].includes(knowledge.action) ||
|
|
261
|
-
value.operationDigest !== operationDigest ||
|
|
262
|
-
!Number.isFinite(Date.parse(value.preparedAt)) ||
|
|
263
|
-
value.recordDigest !==
|
|
264
|
-
hash(GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_SCHEMA, preparedCore(value))
|
|
265
|
-
) {
|
|
266
|
-
corrupt("dependency prepared record is invalid");
|
|
267
|
-
}
|
|
268
|
-
return freeze(clone(value));
|
|
269
|
-
}
|
|
270
|
-
|
|
271
242
|
function validateSettled(value, prepared, descriptorValue) {
|
|
272
243
|
exact(value, SETTLED_KEYS, "dependency settled record");
|
|
273
244
|
const { knowledge, operationDigest } = prepared;
|
|
@@ -305,6 +276,9 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
305
276
|
dependencyAuthority,
|
|
306
277
|
now = Date.now,
|
|
307
278
|
} = {}) {
|
|
279
|
+
if (new.target !== GovernedKnowledgeDependencyLedgerExecutor) {
|
|
280
|
+
throw new TypeError("dependency executors cannot be subclassed");
|
|
281
|
+
}
|
|
308
282
|
this.descriptor = descriptor(descriptorInput);
|
|
309
283
|
this._put = capture(artifactPorts, "putCanonical", "artifactPorts");
|
|
310
284
|
this._read = capture(ledger, "read", "ledger");
|
|
@@ -331,6 +305,9 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
331
305
|
}
|
|
332
306
|
this._resolveArtifact = ledgerArtifactResolver;
|
|
333
307
|
this._apply = capture(dependencyAuthority, "apply", "dependencyAuthority");
|
|
308
|
+
this._reverify =
|
|
309
|
+
captureGovernedKnowledgeDependencyReverifier(dependencyAuthority);
|
|
310
|
+
this._dependencyAuthority = dependencyAuthority;
|
|
334
311
|
this._now = now;
|
|
335
312
|
Object.freeze(this);
|
|
336
313
|
EXECUTORS.add(this);
|
|
@@ -401,7 +378,10 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
401
378
|
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_EVENT_TYPE,
|
|
402
379
|
);
|
|
403
380
|
if (!event) return null;
|
|
404
|
-
const record =
|
|
381
|
+
const record = verifyGovernedKnowledgeDependencyPrepared(
|
|
382
|
+
this._resolve(event),
|
|
383
|
+
this.descriptor,
|
|
384
|
+
);
|
|
405
385
|
if (
|
|
406
386
|
record.operationDigest !== operationDigest ||
|
|
407
387
|
event.decision !== "prepared" ||
|
|
@@ -528,7 +508,7 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
528
508
|
return this._prepared(operationDigest);
|
|
529
509
|
}
|
|
530
510
|
|
|
531
|
-
async _settle(prepared, results) {
|
|
511
|
+
async _settle(prepared, results, verifiedHead) {
|
|
532
512
|
const existing = this._settled(prepared);
|
|
533
513
|
if (existing) return existing;
|
|
534
514
|
const settledAt = this._timestamp();
|
|
@@ -547,6 +527,13 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
547
527
|
const preparedEntry = this._prepared(prepared.operationDigest);
|
|
548
528
|
if (!preparedEntry) corrupt("cannot settle unprepared dependencies");
|
|
549
529
|
const head = this._verifyLedger();
|
|
530
|
+
if (
|
|
531
|
+
!verifiedHead ||
|
|
532
|
+
["epoch", "ledgerId", "identityDigest", "sequence", "headDigest"].some(
|
|
533
|
+
(key) => verifiedHead[key] !== head[key],
|
|
534
|
+
)
|
|
535
|
+
)
|
|
536
|
+
corrupt("dependency effects changed before settlement authorization");
|
|
550
537
|
const ref = this._publishArtifact(record);
|
|
551
538
|
const eventId = `${GOVERNED_KNOWLEDGE_DEPENDENCY_SETTLED_EVENT_TYPE}.${prepared.operationDigest.slice(7)}`;
|
|
552
539
|
try {
|
|
@@ -585,6 +572,9 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
585
572
|
}
|
|
586
573
|
|
|
587
574
|
async execute(knowledgeInput) {
|
|
575
|
+
if (!EXECUTORS.has(this)) {
|
|
576
|
+
throw new TypeError("dependency execution requires its branded executor");
|
|
577
|
+
}
|
|
588
578
|
const knowledge = verifyGovernedKnowledgeRecord(knowledgeInput, {
|
|
589
579
|
tenantId: this.descriptor.tenantId,
|
|
590
580
|
});
|
|
@@ -599,24 +589,167 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
599
589
|
const prepared = this._prepared(operationDigest);
|
|
600
590
|
const completed = prepared ? this._settled(prepared.record) : null;
|
|
601
591
|
if (completed) return this._result(completed.record, knowledge, true);
|
|
602
|
-
await this._prepare(
|
|
592
|
+
const durablePrepare = await this._prepare(
|
|
593
|
+
knowledgeInput,
|
|
594
|
+
knowledge,
|
|
595
|
+
operationDigest,
|
|
596
|
+
);
|
|
597
|
+
if (
|
|
598
|
+
!durablePrepare ||
|
|
599
|
+
durablePrepare.record.operationDigest !== operationDigest ||
|
|
600
|
+
canonical(durablePrepare.record.knowledge) !== canonical(knowledge)
|
|
601
|
+
) {
|
|
602
|
+
corrupt("dependency prepare was not durably read back");
|
|
603
|
+
}
|
|
603
604
|
const results = [];
|
|
605
|
+
const requests = [];
|
|
604
606
|
for (const dependency of knowledge.dependencies) {
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
607
|
+
const request = freeze({
|
|
608
|
+
tenantId: this.descriptor.tenantId,
|
|
609
|
+
deviceId: this.descriptor.deviceId,
|
|
610
|
+
operationDigest,
|
|
611
|
+
knowledge,
|
|
612
|
+
dependency,
|
|
613
|
+
});
|
|
614
|
+
EXECUTION_REQUESTS.set(request, this._dependencyAuthority);
|
|
615
|
+
requests.push(request);
|
|
616
|
+
results.push(await this._apply(request));
|
|
617
|
+
}
|
|
618
|
+
// All effects must still hold together at one authenticated head. Earlier
|
|
619
|
+
// per-effect checks may predate later dependencies or a concurrent writer.
|
|
620
|
+
// This path only rereads/verifies; it never repeats provider side effects.
|
|
621
|
+
const verifiedHead = this._verifyLedger();
|
|
622
|
+
const verifiedResults = [];
|
|
623
|
+
for (const [index, request] of requests.entries())
|
|
624
|
+
verifiedResults.push(await this._reverify(request, results[index]));
|
|
625
|
+
const settled = await this._settle(
|
|
626
|
+
{ operationDigest, knowledge },
|
|
627
|
+
verifiedResults,
|
|
628
|
+
verifiedHead,
|
|
629
|
+
);
|
|
630
|
+
return this._result(settled.record, knowledge, prepared !== null);
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
async prepare(knowledgeInput) {
|
|
634
|
+
if (!EXECUTORS.has(this)) {
|
|
635
|
+
throw new TypeError(
|
|
636
|
+
"dependency preparation requires its branded executor",
|
|
637
|
+
);
|
|
638
|
+
}
|
|
639
|
+
const knowledge = verifyGovernedKnowledgeRecord(knowledgeInput, {
|
|
640
|
+
tenantId: this.descriptor.tenantId,
|
|
641
|
+
});
|
|
642
|
+
if (
|
|
643
|
+
!["tombstone", "revoke"].includes(knowledge.action) ||
|
|
644
|
+
!isGovernedKnowledgeExecutionRecord(knowledgeInput)
|
|
645
|
+
) {
|
|
646
|
+
throw new TypeError(
|
|
647
|
+
"dependency preparation requires a governed revocation record",
|
|
648
|
+
);
|
|
649
|
+
}
|
|
650
|
+
const operationDigest = digestGovernedKnowledgeDependencyOperation({
|
|
651
|
+
tenantId: this.descriptor.tenantId,
|
|
652
|
+
deviceId: this.descriptor.deviceId,
|
|
653
|
+
knowledge,
|
|
654
|
+
});
|
|
655
|
+
const prepared = await this._prepare(
|
|
656
|
+
knowledgeInput,
|
|
657
|
+
knowledge,
|
|
658
|
+
operationDigest,
|
|
659
|
+
);
|
|
660
|
+
if (
|
|
661
|
+
!prepared ||
|
|
662
|
+
canonical(prepared.record.knowledge) !== canonical(knowledge)
|
|
663
|
+
) {
|
|
664
|
+
corrupt("dependency prepare was not durably read back");
|
|
665
|
+
}
|
|
666
|
+
return freeze({
|
|
667
|
+
authenticated: true,
|
|
668
|
+
durable: true,
|
|
669
|
+
operationDigest,
|
|
670
|
+
knowledge: clone(prepared.record.knowledge),
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
readPrepared({ operationDigest } = {}) {
|
|
675
|
+
if (!EXECUTORS.has(this) || !DIGEST.test(operationDigest ?? "")) {
|
|
676
|
+
throw new TypeError("prepared dependency operation identity is invalid");
|
|
677
|
+
}
|
|
678
|
+
const prepared = this._prepared(operationDigest);
|
|
679
|
+
return prepared === null
|
|
680
|
+
? null
|
|
681
|
+
: freeze({
|
|
682
|
+
authenticated: true,
|
|
683
|
+
durable: true,
|
|
609
684
|
operationDigest,
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
})
|
|
685
|
+
preparedRecordDigest: prepared.record.recordDigest,
|
|
686
|
+
knowledge: clone(prepared.record.knowledge),
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
readPreparedForKnowledge(knowledgeInput) {
|
|
691
|
+
if (!EXECUTORS.has(this)) {
|
|
692
|
+
throw new TypeError(
|
|
693
|
+
"prepared dependency lookup requires its branded executor",
|
|
613
694
|
);
|
|
614
695
|
}
|
|
615
|
-
const
|
|
616
|
-
|
|
696
|
+
const target = portableKnowledge(knowledgeInput, this.descriptor.tenantId);
|
|
697
|
+
const matches = [];
|
|
698
|
+
for (const event of this._events(
|
|
699
|
+
GOVERNED_KNOWLEDGE_DEPENDENCY_PREPARED_EVENT_TYPE,
|
|
700
|
+
)) {
|
|
701
|
+
const record = verifyGovernedKnowledgeDependencyPrepared(
|
|
702
|
+
this._resolve(event),
|
|
703
|
+
this.descriptor,
|
|
704
|
+
);
|
|
705
|
+
if (
|
|
706
|
+
canonical(
|
|
707
|
+
portableKnowledge(record.knowledge, this.descriptor.tenantId),
|
|
708
|
+
) !== canonical(target)
|
|
709
|
+
) {
|
|
710
|
+
continue;
|
|
711
|
+
}
|
|
712
|
+
const prepared = this._prepared(record.operationDigest);
|
|
713
|
+
if (!prepared || prepared.event.eventDigest !== event.eventDigest) {
|
|
714
|
+
corrupt("prepared dependency lookup event binding differs");
|
|
715
|
+
}
|
|
716
|
+
matches.push(prepared.record);
|
|
717
|
+
}
|
|
718
|
+
if (matches.length > 1) {
|
|
719
|
+
corrupt("prepared dependency lookup is ambiguous");
|
|
720
|
+
}
|
|
721
|
+
return matches.length === 0
|
|
722
|
+
? null
|
|
723
|
+
: freeze({
|
|
724
|
+
authenticated: true,
|
|
725
|
+
durable: true,
|
|
726
|
+
operationDigest: matches[0].operationDigest,
|
|
727
|
+
preparedRecordDigest: matches[0].recordDigest,
|
|
728
|
+
knowledge: clone(matches[0].knowledge),
|
|
729
|
+
});
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
readSettlement({ operationDigest } = {}) {
|
|
733
|
+
if (!EXECUTORS.has(this) || !DIGEST.test(operationDigest ?? "")) {
|
|
734
|
+
throw new TypeError("dependency settlement identity is invalid");
|
|
735
|
+
}
|
|
736
|
+
const prepared = this._prepared(operationDigest);
|
|
737
|
+
if (!prepared) return null;
|
|
738
|
+
const settled = this._settled(prepared.record);
|
|
739
|
+
return settled === null
|
|
740
|
+
? null
|
|
741
|
+
: freeze({
|
|
742
|
+
authenticated: true,
|
|
743
|
+
durable: true,
|
|
744
|
+
operationDigest,
|
|
745
|
+
record: clone(settled.record),
|
|
746
|
+
});
|
|
617
747
|
}
|
|
618
748
|
|
|
619
749
|
async resume({ operationDigest } = {}) {
|
|
750
|
+
if (!EXECUTORS.has(this)) {
|
|
751
|
+
throw new TypeError("dependency recovery requires its branded executor");
|
|
752
|
+
}
|
|
620
753
|
if (!DIGEST.test(operationDigest ?? "")) {
|
|
621
754
|
throw new TypeError("operationDigest is invalid");
|
|
622
755
|
}
|
|
@@ -641,6 +774,8 @@ export class GovernedKnowledgeDependencyLedgerExecutor {
|
|
|
641
774
|
}
|
|
642
775
|
}
|
|
643
776
|
|
|
777
|
+
Object.freeze(GovernedKnowledgeDependencyLedgerExecutor.prototype);
|
|
778
|
+
|
|
644
779
|
export function isGovernedKnowledgeDependencyExecutor(value) {
|
|
645
780
|
return EXECUTORS.has(value);
|
|
646
781
|
}
|