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
|
@@ -3,22 +3,28 @@ import { types as utilTypes } from "node:util";
|
|
|
3
3
|
|
|
4
4
|
import { isGovernedKnowledgeDependencyExecutor } from "./governed-knowledge-dependency-ledger-executor.js";
|
|
5
5
|
import { isGovernedKnowledgeArtifactLifecycle } from "./governed-knowledge-artifact-lifecycle.js";
|
|
6
|
+
import {
|
|
7
|
+
captureGovernedKnowledgeDependencyInventoryPlan,
|
|
8
|
+
isGovernedKnowledgeDependencyInventoryPlanner,
|
|
9
|
+
} from "./governed-knowledge-dependency-inventory.js";
|
|
10
|
+
|
|
11
|
+
import {
|
|
12
|
+
GOVERNED_KNOWLEDGE_SCOPE,
|
|
13
|
+
verifyGovernedKnowledgeRecord,
|
|
14
|
+
normalizeGovernedKnowledgeVectorClock as vectorClock,
|
|
15
|
+
} from "./governed-knowledge-record.js";
|
|
16
|
+
export {
|
|
17
|
+
GOVERNED_KNOWLEDGE_SYNC_SCHEMA,
|
|
18
|
+
GOVERNED_KNOWLEDGE_SCOPE,
|
|
19
|
+
verifyGovernedKnowledgeRecord,
|
|
20
|
+
} from "./governed-knowledge-record.js";
|
|
6
21
|
|
|
7
|
-
export const GOVERNED_KNOWLEDGE_SYNC_SCHEMA =
|
|
8
|
-
"chainlesschain.governed-evolution-knowledge-sync/v1";
|
|
9
22
|
export const GOVERNED_KNOWLEDGE_ENVELOPE_SCHEMA =
|
|
10
23
|
"chainlesschain.governed-evolution-knowledge-envelope/v1";
|
|
11
24
|
export const GOVERNED_KNOWLEDGE_ARTIFACT_BINDING_SCHEMA =
|
|
12
25
|
"chainlesschain.governed-knowledge-artifact-binding/v2";
|
|
13
26
|
export const GOVERNED_KNOWLEDGE_ARTIFACT_BINDING_LEGACY_SCHEMA =
|
|
14
27
|
"chainlesschain.governed-knowledge-artifact-binding/v1";
|
|
15
|
-
export const GOVERNED_KNOWLEDGE_SCOPE = Object.freeze({
|
|
16
|
-
PERSONAL: "personal",
|
|
17
|
-
PROJECT: "project",
|
|
18
|
-
TEAM: "team",
|
|
19
|
-
ORG: "org",
|
|
20
|
-
});
|
|
21
|
-
|
|
22
28
|
const DIGEST = /^sha256:[a-f0-9]{64}$/u;
|
|
23
29
|
const ID = /^[A-Za-z0-9][A-Za-z0-9._:@/-]{0,255}$/u;
|
|
24
30
|
const SCOPES = new Set(Object.values(GOVERNED_KNOWLEDGE_SCOPE));
|
|
@@ -26,6 +32,7 @@ const ACTIONS = new Set(["upsert", "tombstone", "revoke"]);
|
|
|
26
32
|
const MAX_CIPHERTEXT_BYTES = 12 * 1024 * 1024;
|
|
27
33
|
const EXECUTION_RECORDS = new WeakSet();
|
|
28
34
|
const SYNCHRONIZERS = new WeakSet();
|
|
35
|
+
const PLANNED_REVOCATIONS = new WeakMap();
|
|
29
36
|
const ENVELOPE_KEYS = new Set([
|
|
30
37
|
"action",
|
|
31
38
|
"ciphertext",
|
|
@@ -97,6 +104,11 @@ function record(value, label) {
|
|
|
97
104
|
![Object.prototype, null].includes(Object.getPrototypeOf(value))
|
|
98
105
|
)
|
|
99
106
|
throw new TypeError(`${label} must be a plain object`);
|
|
107
|
+
for (const key of Reflect.ownKeys(value)) {
|
|
108
|
+
const property = Object.getOwnPropertyDescriptor(value, key);
|
|
109
|
+
if (typeof key !== "string" || !Object.hasOwn(property, "value"))
|
|
110
|
+
throw new TypeError(`${label} must contain only data properties`);
|
|
111
|
+
}
|
|
100
112
|
return value;
|
|
101
113
|
}
|
|
102
114
|
|
|
@@ -106,12 +118,6 @@ function id(value, label) {
|
|
|
106
118
|
return value;
|
|
107
119
|
}
|
|
108
120
|
|
|
109
|
-
function digest(value, label) {
|
|
110
|
-
if (typeof value !== "string" || !DIGEST.test(value))
|
|
111
|
-
throw new TypeError(`${label} must be sha256-bound`);
|
|
112
|
-
return value;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
121
|
function capture(owner, method) {
|
|
116
122
|
if (
|
|
117
123
|
!owner ||
|
|
@@ -123,23 +129,6 @@ function capture(owner, method) {
|
|
|
123
129
|
return (...args) => Reflect.apply(owner[method], owner, args);
|
|
124
130
|
}
|
|
125
131
|
|
|
126
|
-
function vectorClock(value) {
|
|
127
|
-
record(value, "vectorClock");
|
|
128
|
-
const entries = Object.entries(value);
|
|
129
|
-
if (entries.length < 1 || entries.length > 64)
|
|
130
|
-
throw new TypeError("vectorClock is empty or unbounded");
|
|
131
|
-
const result = {};
|
|
132
|
-
for (const [deviceId, revision] of entries.sort(([a], [b]) =>
|
|
133
|
-
a.localeCompare(b),
|
|
134
|
-
)) {
|
|
135
|
-
id(deviceId, "vectorClock device");
|
|
136
|
-
if (!Number.isSafeInteger(revision) || revision < 0)
|
|
137
|
-
throw new TypeError("vectorClock revision is invalid");
|
|
138
|
-
result[deviceId] = revision;
|
|
139
|
-
}
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
132
|
function relation(left, right) {
|
|
144
133
|
const devices = new Set([...Object.keys(left), ...Object.keys(right)]);
|
|
145
134
|
let before = false;
|
|
@@ -156,75 +145,14 @@ function relation(left, right) {
|
|
|
156
145
|
return "equal";
|
|
157
146
|
}
|
|
158
147
|
|
|
159
|
-
function normalizeDependencies(value, action) {
|
|
160
|
-
if (!Array.isArray(value) || value.length > 256)
|
|
161
|
-
throw new TypeError("dependency dispositions are unbounded");
|
|
162
|
-
const seen = new Set();
|
|
163
|
-
return value.map((entry) => {
|
|
164
|
-
record(entry, "dependency disposition");
|
|
165
|
-
const normalized = {
|
|
166
|
-
kind: id(entry.kind, "dependency kind"),
|
|
167
|
-
digest: digest(entry.digest, "dependency digest"),
|
|
168
|
-
disposition: id(entry.disposition, "dependency disposition"),
|
|
169
|
-
};
|
|
170
|
-
const key = `${normalized.kind}:${normalized.digest}`;
|
|
171
|
-
if (seen.has(key)) throw new TypeError("duplicate dependency disposition");
|
|
172
|
-
seen.add(key);
|
|
173
|
-
if (
|
|
174
|
-
["tombstone", "revoke"].includes(action) &&
|
|
175
|
-
![
|
|
176
|
-
"tombstone",
|
|
177
|
-
"quarantine",
|
|
178
|
-
"reject-candidate",
|
|
179
|
-
"rollback-active",
|
|
180
|
-
].includes(normalized.disposition)
|
|
181
|
-
)
|
|
182
|
-
throw new TypeError("revocation dependency disposition is unsafe");
|
|
183
|
-
return normalized;
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
|
|
187
148
|
function normalizeRecord(input, descriptor, { executionRecord = false } = {}) {
|
|
188
|
-
|
|
189
|
-
const action = ACTIONS.has(input.action) ? input.action : null;
|
|
190
|
-
const scope = SCOPES.has(input.scope) ? input.scope : null;
|
|
191
|
-
if (!action || !scope || input.tenantId !== descriptor.tenantId)
|
|
192
|
-
throw new TypeError("knowledge record boundary is invalid");
|
|
193
|
-
const dependencies = normalizeDependencies(input.dependencies || [], action);
|
|
194
|
-
if (
|
|
195
|
-
["team", "org"].includes(scope) &&
|
|
196
|
-
!DIGEST.test(input.approvalReceiptDigest || "")
|
|
197
|
-
)
|
|
198
|
-
throw new TypeError("shared knowledge requires approval");
|
|
199
|
-
if (
|
|
200
|
-
["tombstone", "revoke"].includes(action) &&
|
|
201
|
-
(!DIGEST.test(input.revocationReceiptDigest || "") ||
|
|
202
|
-
dependencies.length < 1)
|
|
203
|
-
)
|
|
204
|
-
throw new TypeError(
|
|
205
|
-
"revocation must bind its receipt and dependency graph",
|
|
206
|
-
);
|
|
207
|
-
const normalized = freeze({
|
|
208
|
-
schema: GOVERNED_KNOWLEDGE_SYNC_SCHEMA,
|
|
149
|
+
const normalized = verifyGovernedKnowledgeRecord(input, {
|
|
209
150
|
tenantId: descriptor.tenantId,
|
|
210
|
-
knowledgeId: id(input.knowledgeId, "knowledgeId"),
|
|
211
|
-
scope,
|
|
212
|
-
scopeId: id(input.scopeId, "scopeId"),
|
|
213
|
-
action,
|
|
214
|
-
contentDigest: digest(input.contentDigest, "contentDigest"),
|
|
215
|
-
vectorClock: vectorClock(input.vectorClock),
|
|
216
|
-
approvalReceiptDigest: input.approvalReceiptDigest || null,
|
|
217
|
-
revocationReceiptDigest: input.revocationReceiptDigest || null,
|
|
218
|
-
dependencies,
|
|
219
151
|
});
|
|
220
152
|
if (executionRecord) EXECUTION_RECORDS.add(normalized);
|
|
221
153
|
return normalized;
|
|
222
154
|
}
|
|
223
155
|
|
|
224
|
-
export function verifyGovernedKnowledgeRecord(input, { tenantId } = {}) {
|
|
225
|
-
return normalizeRecord(input, { tenantId: id(tenantId, "tenantId") });
|
|
226
|
-
}
|
|
227
|
-
|
|
228
156
|
export function verifyGovernedKnowledgeArtifactBinding(
|
|
229
157
|
input,
|
|
230
158
|
{ tenantId, knowledge, authorizationReceiptDigest } = {},
|
|
@@ -321,6 +249,7 @@ export class GovernedKnowledgeSync {
|
|
|
321
249
|
deviceId,
|
|
322
250
|
ports,
|
|
323
251
|
dependencyExecutor = null,
|
|
252
|
+
dependencyPlanner = null,
|
|
324
253
|
artifactLifecycle,
|
|
325
254
|
clock = () => Date.now(),
|
|
326
255
|
} = {}) {
|
|
@@ -359,9 +288,106 @@ export class GovernedKnowledgeSync {
|
|
|
359
288
|
this._executeDependencies = dependencyExecutor
|
|
360
289
|
? capture(dependencyExecutor, "execute")
|
|
361
290
|
: null;
|
|
291
|
+
if (
|
|
292
|
+
dependencyPlanner !== null &&
|
|
293
|
+
(!isGovernedKnowledgeDependencyInventoryPlanner(dependencyPlanner) ||
|
|
294
|
+
dependencyExecutor === null)
|
|
295
|
+
) {
|
|
296
|
+
throw new TypeError(
|
|
297
|
+
"dependencyPlanner requires a branded inventory planner and executor",
|
|
298
|
+
);
|
|
299
|
+
}
|
|
300
|
+
this._dependencyPlanner = dependencyPlanner;
|
|
301
|
+
this._planDependencies = dependencyPlanner
|
|
302
|
+
? capture(dependencyPlanner, "plan")
|
|
303
|
+
: null;
|
|
304
|
+
this._prepareDependencies = dependencyPlanner
|
|
305
|
+
? capture(dependencyExecutor, "prepare")
|
|
306
|
+
: null;
|
|
307
|
+
this._readPreparedDependencies = dependencyPlanner
|
|
308
|
+
? capture(dependencyExecutor, "readPrepared")
|
|
309
|
+
: null;
|
|
310
|
+
this._readPreparedDependenciesForKnowledge = dependencyPlanner
|
|
311
|
+
? capture(dependencyExecutor, "readPreparedForKnowledge")
|
|
312
|
+
: null;
|
|
362
313
|
SYNCHRONIZERS.add(this);
|
|
363
314
|
}
|
|
364
315
|
|
|
316
|
+
async planRevocation(input) {
|
|
317
|
+
if (!this._planDependencies) {
|
|
318
|
+
throw new Error("knowledge dependency inventory planner is unavailable");
|
|
319
|
+
}
|
|
320
|
+
const planned = this._planDependencies(input);
|
|
321
|
+
captureGovernedKnowledgeDependencyInventoryPlan(
|
|
322
|
+
this._dependencyPlanner,
|
|
323
|
+
planned,
|
|
324
|
+
);
|
|
325
|
+
const knowledge = normalizeRecord(planned.knowledge, this, {
|
|
326
|
+
executionRecord: true,
|
|
327
|
+
});
|
|
328
|
+
if (knowledge.scope === "personal") {
|
|
329
|
+
throw new Error("personal knowledge cannot enter a shared sync channel");
|
|
330
|
+
}
|
|
331
|
+
await this._admit("publish", knowledge);
|
|
332
|
+
const prepared = await this._prepareDependencies(knowledge);
|
|
333
|
+
if (
|
|
334
|
+
prepared?.authenticated !== true ||
|
|
335
|
+
prepared.durable !== true ||
|
|
336
|
+
!DIGEST.test(prepared.operationDigest ?? "") ||
|
|
337
|
+
canonical(prepared.knowledge) !== canonical(knowledge)
|
|
338
|
+
) {
|
|
339
|
+
throw new Error("knowledge dependency plan was not durably prepared");
|
|
340
|
+
}
|
|
341
|
+
const result = freeze({
|
|
342
|
+
inventory: planned.inventory,
|
|
343
|
+
knowledge,
|
|
344
|
+
operationDigest: prepared.operationDigest,
|
|
345
|
+
recovered: false,
|
|
346
|
+
});
|
|
347
|
+
PLANNED_REVOCATIONS.set(result, this);
|
|
348
|
+
return result;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
async recoverPlannedRevocation({ operationDigest } = {}) {
|
|
352
|
+
if (
|
|
353
|
+
!this._readPreparedDependencies ||
|
|
354
|
+
!DIGEST.test(operationDigest ?? "")
|
|
355
|
+
) {
|
|
356
|
+
throw new TypeError(
|
|
357
|
+
"planned revocation recovery is unavailable or invalid",
|
|
358
|
+
);
|
|
359
|
+
}
|
|
360
|
+
const prepared = this._readPreparedDependencies({ operationDigest });
|
|
361
|
+
if (
|
|
362
|
+
prepared?.authenticated !== true ||
|
|
363
|
+
prepared.durable !== true ||
|
|
364
|
+
prepared.operationDigest !== operationDigest
|
|
365
|
+
) {
|
|
366
|
+
throw new Error("prepared knowledge revocation was not found");
|
|
367
|
+
}
|
|
368
|
+
const knowledge = normalizeRecord(prepared.knowledge, this, {
|
|
369
|
+
executionRecord: true,
|
|
370
|
+
});
|
|
371
|
+
await this._admit("publish", knowledge);
|
|
372
|
+
const result = freeze({
|
|
373
|
+
inventory: null,
|
|
374
|
+
knowledge,
|
|
375
|
+
operationDigest,
|
|
376
|
+
recovered: true,
|
|
377
|
+
});
|
|
378
|
+
PLANNED_REVOCATIONS.set(result, this);
|
|
379
|
+
return result;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
async publishPlanned(plan, options = {}) {
|
|
383
|
+
if (PLANNED_REVOCATIONS.get(plan) !== this) {
|
|
384
|
+
throw new TypeError(
|
|
385
|
+
"a revocation plan prepared by this sync is required",
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
return this.publishWithArtifactEvidence(plan.knowledge, options);
|
|
389
|
+
}
|
|
390
|
+
|
|
365
391
|
async publish(input, options = {}) {
|
|
366
392
|
const result = await this.publishWithArtifactEvidence(input, options);
|
|
367
393
|
return result.envelope;
|
|
@@ -679,7 +705,8 @@ export class GovernedKnowledgeSync {
|
|
|
679
705
|
activate: binding.activate,
|
|
680
706
|
humanReviewed: binding.humanReviewed,
|
|
681
707
|
});
|
|
682
|
-
await this.
|
|
708
|
+
const dependencyKnowledge = await this._receivedDependencyPlan(knowledge);
|
|
709
|
+
await this._applyRevocationDependencies(dependencyKnowledge);
|
|
683
710
|
await this._persist(
|
|
684
711
|
knowledge,
|
|
685
712
|
envelope,
|
|
@@ -788,6 +815,65 @@ export class GovernedKnowledgeSync {
|
|
|
788
815
|
throw new Error("revocation dependencies were not durably applied");
|
|
789
816
|
}
|
|
790
817
|
}
|
|
818
|
+
|
|
819
|
+
async _receivedDependencyPlan(remoteKnowledge) {
|
|
820
|
+
if (
|
|
821
|
+
!["tombstone", "revoke"].includes(remoteKnowledge.action) ||
|
|
822
|
+
!this._planDependencies
|
|
823
|
+
) {
|
|
824
|
+
return remoteKnowledge;
|
|
825
|
+
}
|
|
826
|
+
const portable = (value) => {
|
|
827
|
+
const copy = clone(value);
|
|
828
|
+
delete copy.dependencies;
|
|
829
|
+
return copy;
|
|
830
|
+
};
|
|
831
|
+
const recovered =
|
|
832
|
+
this._readPreparedDependenciesForKnowledge(remoteKnowledge);
|
|
833
|
+
let localKnowledge;
|
|
834
|
+
if (recovered) {
|
|
835
|
+
if (
|
|
836
|
+
recovered.authenticated !== true ||
|
|
837
|
+
recovered.durable !== true ||
|
|
838
|
+
!DIGEST.test(recovered.operationDigest ?? "")
|
|
839
|
+
) {
|
|
840
|
+
throw new Error("received revocation local plan is unauthenticated");
|
|
841
|
+
}
|
|
842
|
+
localKnowledge = normalizeRecord(recovered.knowledge, this, {
|
|
843
|
+
executionRecord: true,
|
|
844
|
+
});
|
|
845
|
+
} else {
|
|
846
|
+
const draft = portable(remoteKnowledge);
|
|
847
|
+
delete draft.schema;
|
|
848
|
+
const planned = this._planDependencies(draft);
|
|
849
|
+
captureGovernedKnowledgeDependencyInventoryPlan(
|
|
850
|
+
this._dependencyPlanner,
|
|
851
|
+
planned,
|
|
852
|
+
);
|
|
853
|
+
localKnowledge = normalizeRecord(planned.knowledge, this, {
|
|
854
|
+
executionRecord: true,
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
if (
|
|
858
|
+
canonical(portable(localKnowledge)) !==
|
|
859
|
+
canonical(portable(remoteKnowledge))
|
|
860
|
+
) {
|
|
861
|
+
throw new Error(
|
|
862
|
+
"received revocation local plan changed signed knowledge",
|
|
863
|
+
);
|
|
864
|
+
}
|
|
865
|
+
const prepared = await this._prepareDependencies(localKnowledge);
|
|
866
|
+
if (
|
|
867
|
+
prepared?.authenticated !== true ||
|
|
868
|
+
prepared.durable !== true ||
|
|
869
|
+
canonical(prepared.knowledge) !== canonical(localKnowledge)
|
|
870
|
+
) {
|
|
871
|
+
throw new Error(
|
|
872
|
+
"received revocation local plan was not durably prepared",
|
|
873
|
+
);
|
|
874
|
+
}
|
|
875
|
+
return localKnowledge;
|
|
876
|
+
}
|
|
791
877
|
}
|
|
792
878
|
|
|
793
879
|
export function isGovernedKnowledgeSync(value) {
|