chainlesschain 0.166.46 → 0.166.48
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 +6 -4
- package/package.json +4 -2
- package/src/assets/web-panel/assets/{AIOps-Cp8KiMmv.js → AIOps-BLGEffkh.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-B4d9BGsm.js → ActionButton-Cz1z2VGD.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Cf9yXTkv.js → Analytics-C3j9cf6q.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-40UkmxtP.js → AppLayout-BR9ERuCA.js} +4 -4
- package/src/assets/web-panel/assets/{Artifacts-Ckkb4oOA.js → Artifacts-CozJCm4y.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-Dnf569k5.js → Audit-DC5g9Ra2.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-CA6bLem4.js → BackgroundAgents-B1zrQ0dW.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-ChQU0I_Q.js → Backup-ChVnfjpm.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-BHeZXnNN.js → BaseInput-8_vLQsLf.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DcFVYB2E.js → Chat-Dct9bm6L.js} +5 -5
- package/src/assets/web-panel/assets/ChatBubbleRenderer-BvoSsCKh.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-2PDbejv2.js → Checkbox-DZQIsCIC.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DJBn1RAu.js → Codegen-CdzHxmnq.js} +1 -1
- package/src/assets/web-panel/assets/{Col-CPRq7n6y.js → Col-DdAN8LeW.js} +1 -1
- package/src/assets/web-panel/assets/{Community-axvINFMi.js → Community-CNgjT9MA.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-_OX4Qbe0.js → Compact-BtQiX6G-.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-DWAkvzRL.js → Compliance-OGX5ma3j.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-CUIJ25oj.js → Cowork-CgugQnGM.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-nR0m7H3_.js → Cron-Bpg7cPFD.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-CgTLXzh_.js → Crosschain-D1hsuswf.js} +1 -1
- package/src/assets/web-panel/assets/{DID-BllzRB6Q.js → DID-miDRsMBw.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-C9f0IIBN.js → Dashboard-CGcl8htP.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-BkahetiO.js → Dropdown-BFaxTdVE.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-rartVC-k.js → EmailListRenderer-BQdGLZIO.js} +1 -1
- package/src/assets/web-panel/assets/{EvolutionSettings-BqpG3XHV.js → EvolutionSettings-bMvgBk6r.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-DgUdFvw1.js → FamilyGuardDashboard-c1WVC_--.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-oFpIQU6g.js → Federation-DyAcFrQY.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-BUH5xlyP.js → FormItemContext-CfwpfD2B.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-ilRa-ueg.js → GenericCardRenderer-DkJcbBpS.js} +1 -1
- package/src/assets/web-panel/assets/{Git-DlHHSF8j.js → Git-DgYIrPJh.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-yQiiXIWe.js → Governance-BF1tYPJ6.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-BUDRVGOP.js → Inference-BFkwRIrU.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-BaGyIoN1.js → KnowledgeGraph-DpCoqhBa.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-C1cO6zE0.js → Logs-DU2qAJmD.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-_z_Iaoes.js → MarkdownRenderer-QWv7UJLq.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-CM8cGL0K.js → Marketplace-Dz9NUrfo.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-CDqAMU0U.js → McpTools-B67I3d5v.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-CfB0-Ofv.js → Memory-crkElJSy.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-BL18ytvB.js → MobileBridge-BO20VbdX.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-PIyyxbuJ.js → MobileProjects-Ba-3gZZd.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-BTTrFCol.js → Mtc-BAHZM084.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-JHZn037c.js → MtcAudit-CL3DzajL.js} +4 -4
- package/src/assets/web-panel/assets/{Multisig-CMf9NEdB.js → Multisig-BSWWzvWH.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-Dhk3qaus.js → NLProgramming-fnxqXM_3.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-6F8EarNN.js → Notes-qUZPIQXT.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-gxdaVEit.js → NotificationSettings-x9Xrixqu.js} +1 -1
- package/src/assets/web-panel/assets/{OrderTableRenderer-gVgXQWdc.js → OrderTableRenderer-BtMtQUt7.js} +1 -1
- package/src/assets/web-panel/assets/{Organization-CzvHcDNO.js → Organization-C946Hzna.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Dclx30Vv.js → Overflow-BYf8KIts.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CM0Wm9vZ.js → P2P-Cbqf5dnv.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-rmxp0cuF.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-B_oATenG.js → Permissions-CZBw45EW.js} +3 -3
- package/src/assets/web-panel/assets/{PersonalDataHub-CptiVBh5.js → PersonalDataHub-BKwUAt43.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-DkHzgyyI.js → Pipeline-DmFD2QW4.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DzZvwcKh.js → Privacy-KpuwWvt5.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-CzkCs-5G.js → ProjectInit-Bt8UheX6.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-BB8dcxRD.js → ProjectSettings-2ZeAn9CP.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-B7PW9CFY.js → Projects-zBuet8Zs.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-Tfx-ti1V.js → Providers-DcEAnw6L.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-EvWlNhfX.js → QrScannerModal-qF7liYG9.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CUspgbNC.js → QuickAsk-qiESlVBJ.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-COY2g77J.js → Recommend-Bk-cQyi9.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-BzMBU6E6.js → RemoteSession-CwrekErS.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-RtYRF4YP.js → Reputation-Bmw_UQtW.js} +1 -1
- package/src/assets/web-panel/assets/{Row-Bva3l9Lc.js → Row-CPdqZIUX.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-BhjzLvW3.js → RssFeed-D_W-xxvS.js} +2 -2
- package/src/assets/web-panel/assets/{Search-BYzT2PTR.js → Search-Hu0oDFj_.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Bcl4-KTv.js → Security-DeRxUwmq.js} +3 -3
- package/src/assets/web-panel/assets/{Services-BRRa4A0f.js → Services-CsNmHFkf.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DYQ016qy.js → Skeleton-gv_Vz0tN.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-CAUKL9JA.js → Skills-Dgg-_rCB.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-BTyUqfuD.js → Sla-Bpu-bsEJ.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-CUjMihrs.js → SpeechSettings-CrhleHuF.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-CvfOSupr.js → SyncSettings-JHjUN6I9.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-EvjNXrWH.js → Tasks-DKRWKkl9.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-wPAp0EoM.js → Templates-leiWntLq.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-CP0D-q9Q.js → Tenant--1bYulvn.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-CQ0f2iFg.js → Terminal-C0y6FvSS.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-D3JrGSPb.js → TimelineRenderer-CQK4PVv4.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-yXf2PPp9.js → Tokens-DbIvF-DV.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DfmMOoZ2.js → Trigger-CkXJ2vuq.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-BTCyMgf1.js → Trust-B02WXJPw.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-DKCwIBHi.js → UkeySign-VPMkfzmw.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-CQpDSzLO.js → VideoEditing-C5ezUnah.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-CyFrzC3K.js → Wallet-CYfvYRrY.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-D6Nr_1kd.js → WebAuthn-DtKl-kpr.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-CgR9tNrB.js → WorkflowEditor-DACITF-u.js} +1 -1
- package/src/assets/web-panel/assets/{chat-CRG_IeyP.js → chat-qnygfnLi.js} +1 -1
- package/src/assets/web-panel/assets/{colors-MdE3TStI.js → colors-D4mISLBD.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-B0LRuiNV.js → compact-item-BBPfxYGL.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-B_V5fjcX.js → createContext-Byx4ndHp.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-DBy6gsuI.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-DSL-c_hr.js → hasIn-CGjLkkn3.js} +1 -1
- package/src/assets/web-panel/assets/{index-DE7bSYmW.js → index-B8UpadHC.js} +1 -1
- package/src/assets/web-panel/assets/{index-BD0w-888.js → index-B9jH-h4X.js} +1 -1
- package/src/assets/web-panel/assets/{index-BbZZ7P_c.js → index-BN7_TSgU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BIDCNwy6.js → index-BNe2lCk6.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkN53KiJ.js → index-B_fHPZ8E.js} +1 -1
- package/src/assets/web-panel/assets/index-BfEDXk_E.js +1 -0
- package/src/assets/web-panel/assets/{index-BsAEd-Do.js → index-BklGH3YI.js} +1 -1
- package/src/assets/web-panel/assets/{index-CS3bOhV7.js → index-BmKYaaGP.js} +1 -1
- package/src/assets/web-panel/assets/{index-B3iW-mhn.js → index-BxQF1wCU.js} +1 -1
- package/src/assets/web-panel/assets/{index-SmQfEHjp.js → index-ByA1NyFP.js} +1 -1
- package/src/assets/web-panel/assets/{index-0200QxC4.js → index-BzeBBAl5.js} +1 -1
- package/src/assets/web-panel/assets/{index-c8OqO3rq.js → index-C3abGsSW.js} +1 -1
- package/src/assets/web-panel/assets/{index-C-aKWR2v.js → index-C9tcHs46.js} +1 -1
- package/src/assets/web-panel/assets/{index-BNhWoD6d.js → index-CD5Btq6p.js} +1 -1
- package/src/assets/web-panel/assets/{index-CVDi4rS9.js → index-CFMWjuav.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEOAZm5j.js → index-CMj8qmpX.js} +1 -1
- package/src/assets/web-panel/assets/{index-C67dPW0L.js → index-CVUJjQAT.js} +1 -1
- package/src/assets/web-panel/assets/{index-D3pJBTvo.js → index-CWhI8G14.js} +1 -1
- package/src/assets/web-panel/assets/{index-DtOTppk8.js → index-CZjNamSU.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRRY44XP.js → index-CmHE-lY_.js} +1 -1
- package/src/assets/web-panel/assets/{index-Tg3yl8wc.js → index-CoA8WsVr.js} +1 -1
- package/src/assets/web-panel/assets/{index-CXMeisJK.js → index-Cpg3AWRy.js} +1 -1
- package/src/assets/web-panel/assets/index-CrxUwNM8.js +1 -0
- package/src/assets/web-panel/assets/{index-Bq8-2Ibv.js → index-CsVuQsY1.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHp1nSur.js → index-CydHMjwc.js} +1 -1
- package/src/assets/web-panel/assets/{index-CPYshcic.js → index-DH6iC5b2.js} +1 -1
- package/src/assets/web-panel/assets/{index-DBwBZwio.js → index-DZXhKAk9.js} +1 -1
- package/src/assets/web-panel/assets/{index-Didyuq2Z.js → index-D_g9mA1N.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdHMc9LQ.js → index-DboTeuPF.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5dqieYX.js → index-DfgpKd64.js} +1 -1
- package/src/assets/web-panel/assets/{index-CdplnAS9.js → index-Dmfe0L2Z.js} +1 -1
- package/src/assets/web-panel/assets/{index-KaSejHjf.js → index-Dzni_5Qw.js} +1 -1
- package/src/assets/web-panel/assets/{index-BpwGsAA-.js → index-J5JkStvY.js} +1 -1
- package/src/assets/web-panel/assets/{index-OBhlHSMN.js → index-Ne8UGllV.js} +3 -3
- package/src/assets/web-panel/assets/{index-CZICtYJ0.js → index-O09jXbir.js} +1 -1
- package/src/assets/web-panel/assets/{index-DVgTf7CZ.js → index-Y7el_3WS.js} +1 -1
- package/src/assets/web-panel/assets/{index-BQAsL19t.js → index-c_tBkIlU.js} +1 -1
- package/src/assets/web-panel/assets/{index-BMm8tO2X.js → index-lKJWAmd4.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNytQuFq.js → index-xzRKTy0R.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-P8SBN6Di.js → initDefaultProps-XuhfEIhB.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BubbjUT_.js → motion-Cbxh6AxO.js} +1 -1
- package/src/assets/web-panel/assets/{move-Chcykv0I.js → move-C7IEnFly.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-DyiYuGDu.js → mtc-parser-lLADx4LL.js} +1 -1
- package/src/assets/web-panel/assets/{omit-Rdwb_Neb.js → omit-mIbic_k-.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CCr0MYHl.js → pickAttrs-_xIYEqu3.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-B1ZXz3bb.js → placementArrow-ClB-E0ny.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BGEdwej6.js → responsiveObserve-D36Bg2ut.js} +1 -1
- package/src/assets/web-panel/assets/{slide-CpnsUMaT.js → slide-CUuO08Bl.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-C7x-TVp_.js → statusUtils-BKahwLbv.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CC5k_791.js → styleChecker-2pT-T8vy.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-BpZFKsJW.js → useFlexGapSupport-DyH5g7Rg.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-CVq5HySy.js → useFs-CTOauB3X.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-BGkdLryu.js → usePersonalDataHub-B02JYIMe.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-uLtOUEK-.js → vnode-Do22wQrc.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-BfVC9iUs.js → zoom-BfnL7rit.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 +8 -0
- package/src/commands/background-session.js +31 -3
- package/src/commands/chat.js +5 -1
- package/src/commands/eval.js +86 -28
- package/src/commands/llm.js +104 -1
- package/src/commands/plugin.js +161 -1
- package/src/commands/sandbox.js +121 -2
- package/src/commands/serve.js +11 -2
- package/src/commands/skill.js +29 -0
- package/src/data/changelog.json +26 -0
- package/src/gateways/ws/session-protocol.js +13 -0
- package/src/gateways/ws/ws-agent-handler.js +17 -0
- package/src/gateways/ws/ws-server.js +3 -0
- package/src/gateways/ws/ws-session-state.js +131 -0
- package/src/generated/cc-agent-protocol.schema.json +48 -1
- package/src/lazy-dispatch.js +8 -1
- package/src/lib/agent-sandbox.js +337 -53
- package/src/lib/app-server/cli-agent-kernel-adapter.js +28 -0
- package/src/lib/app-server/server.js +93 -0
- package/src/lib/background-agent-keeper-client.js +2 -0
- package/src/lib/background-agent-keeper-protocol.js +7 -0
- package/src/lib/background-agent-list-index.js +222 -0
- package/src/lib/background-agent-supervisor.js +232 -47
- package/src/lib/codex-app-server-adapter.js +82 -27
- package/src/lib/context-memory-kernel/durable-memory-port.js +31 -8
- package/src/lib/context-memory-kernel/provider-context.js +118 -19
- package/src/lib/deferred-question-context.js +278 -0
- package/src/lib/eval/evidence.js +202 -64
- package/src/lib/eval/plugin-suite.js +1181 -0
- package/src/lib/eval/runner.js +10 -3
- package/src/lib/evolution/agent-evolution-runtime-composition.js +236 -1
- package/src/lib/evolution/agent-model-projection.js +97 -1
- package/src/lib/evolution/evidence-backed-wiki-maintainer.js +154 -1
- package/src/lib/evolution/evolution-artifact-ports.js +6 -0
- package/src/lib/evolution/evolution-deployment-loader.js +87 -3
- package/src/lib/evolution/evolution-eval-gate.js +8 -0
- package/src/lib/evolution/evolution-eval-runtime-composition.js +255 -0
- package/src/lib/evolution/evolution-evidence-artifact-adapter.js +58 -2
- package/src/lib/evolution/evolution-ledger-file-backend.js +23 -2
- package/src/lib/evolution/evolution-ledger-manifest-chain.js +223 -7
- package/src/lib/evolution/evolution-ledger-v2-journal.js +525 -0
- package/src/lib/evolution/evolution-ledger-v2-manifest-backend.js +46 -2
- package/src/lib/evolution/evolution-ledger.js +57 -1
- package/src/lib/evolution/evolution-run-ledger-adapter.js +93 -0
- package/src/lib/evolution/evolution-run-wiki-evidence-resolver.js +259 -0
- package/src/lib/evolution/governed-hub-llm.js +238 -5
- package/src/lib/evolution/governed-hub-resolver.js +82 -4
- package/src/lib/evolution/governed-hub-skill.js +11 -5
- package/src/lib/evolution/governed-skill-synthesis-provider-chat.js +10 -1
- package/src/lib/evolution/skill-runtime-revalidation-ledger-adapter.js +254 -0
- package/src/lib/evolution/skill-runtime-revalidation.js +530 -0
- package/src/lib/evolution/skill-target-matrix-eval.js +4 -4
- package/src/lib/evolution/wiki-evidence-commit-guard.js +366 -0
- package/src/lib/evolution/wiki-informed-skill-proposer.js +13 -1
- package/src/lib/goal-context.js +14 -5
- package/src/lib/interaction-adapter.js +166 -1
- package/src/lib/model-capabilities.js +271 -0
- package/src/lib/model-context-catalog.js +105 -0
- package/src/lib/model-context-window.js +4 -49
- package/src/lib/openai-responses.js +428 -0
- package/src/lib/plugin-runtime/scopes.js +7 -1
- package/src/lib/remote-read-loop-guard.js +2 -2
- package/src/lib/runtime-usage-ledger.js +16 -0
- package/src/lib/session-host-snapshot.js +16 -0
- package/src/lib/skill-loader.js +12 -0
- package/src/lib/with-file-lock.js +3 -1
- package/src/repl/agent-repl.js +5 -1
- package/src/runtime/agent-core.js +348 -23
- package/src/runtime/agent-runtime.js +7 -0
- package/src/runtime/coding-agent-contract-shared.cjs +13 -1
- package/src/runtime/headless-runner.js +4 -1
- package/src/runtime/headless-stream.js +283 -45
- package/src/runtime/runtime-factory.js +26 -2
- package/src/workers/background-agent-keeper.js +23 -13
- package/src/workers/background-agent-worker.js +27 -13
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Bi2SY9E_.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-fYmQzmTA.js +0 -7
- package/src/assets/web-panel/assets/devWarning-BtFLt3qI.js +0 -1
- package/src/assets/web-panel/assets/index-BhuWQHeG.js +0 -1
- package/src/assets/web-panel/assets/index-D-4tFek3.js +0 -1
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
import { sessionBudgetAdmissionError } from "../../lib/session-budget-production-root.js";
|
|
77
77
|
import { captureAgentSkillOutcomeIndex } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
|
|
78
78
|
import { captureSkillVectorAuthority } from "../../lib/skill-vector-authority.js";
|
|
79
|
+
import { captureSkillRuntimeDependencies } from "../../lib/evolution/skill-runtime-revalidation.js";
|
|
79
80
|
import {
|
|
80
81
|
beginSessionBudgetUsage,
|
|
81
82
|
markSessionBudgetUsageUnknown,
|
|
@@ -84,6 +85,7 @@ import {
|
|
|
84
85
|
} from "../../lib/session-budget-usage.js";
|
|
85
86
|
import { HostResourceBudget } from "../../lib/host-resource-budget.js";
|
|
86
87
|
import { captureAgentEvolutionRuntimeComposition } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
|
|
88
|
+
import { composePrepareCall } from "../../lib/goal-context.js";
|
|
87
89
|
|
|
88
90
|
const CANONICAL_WS_TURN_QUEUES = new Map();
|
|
89
91
|
const CANONICAL_WS_CLAIM_CAS_ATTEMPTS = 4;
|
|
@@ -182,8 +184,14 @@ export class WSAgentHandler {
|
|
|
182
184
|
evolutionCompositionFactory = null,
|
|
183
185
|
skillOutcomeIndex = null,
|
|
184
186
|
skillVectorAuthority = null,
|
|
187
|
+
skillRuntimeAdmission = null,
|
|
188
|
+
skillRuntimeAdmissionRequired = false,
|
|
185
189
|
}) {
|
|
186
190
|
this.session = session;
|
|
191
|
+
this._runtimeAdmissionDependencies = captureSkillRuntimeDependencies({
|
|
192
|
+
skillRuntimeAdmission,
|
|
193
|
+
skillRuntimeAdmissionRequired,
|
|
194
|
+
});
|
|
187
195
|
this.interaction = interaction;
|
|
188
196
|
this.db = db || null;
|
|
189
197
|
this._processing = false;
|
|
@@ -371,6 +379,10 @@ export class WSAgentHandler {
|
|
|
371
379
|
"WebSocket evolution composition and Skill vector authority must share one tenant",
|
|
372
380
|
);
|
|
373
381
|
}
|
|
382
|
+
captureSkillRuntimeDependencies(
|
|
383
|
+
this._runtimeAdmissionDependencies,
|
|
384
|
+
composition.tenantId,
|
|
385
|
+
);
|
|
374
386
|
await composition.evolutionIngress.start();
|
|
375
387
|
return composition;
|
|
376
388
|
} catch (cause) {
|
|
@@ -1373,6 +1385,7 @@ export class WSAgentHandler {
|
|
|
1373
1385
|
}
|
|
1374
1386
|
|
|
1375
1387
|
this._processing = true;
|
|
1388
|
+
this.interaction.beginContextRevision?.();
|
|
1376
1389
|
const abortController = new AbortController();
|
|
1377
1390
|
const turnSignal = this._turnSignal(abortController.signal);
|
|
1378
1391
|
this._abortController = abortController;
|
|
@@ -1539,9 +1552,13 @@ export class WSAgentHandler {
|
|
|
1539
1552
|
shellPolicyOverrides: session.shellPolicyOverrides || null,
|
|
1540
1553
|
slotFiller,
|
|
1541
1554
|
interaction: this.interaction,
|
|
1555
|
+
prepareCall: composePrepareCall([
|
|
1556
|
+
this.interaction.createDeferredPrepareCall?.(),
|
|
1557
|
+
]),
|
|
1542
1558
|
...(this._skillOutcomeIndex === null
|
|
1543
1559
|
? {}
|
|
1544
1560
|
: { skillOutcomeIndex: this._skillOutcomeIndex }),
|
|
1561
|
+
...this._runtimeAdmissionDependencies,
|
|
1545
1562
|
...(this._skillVectorAuthority === null
|
|
1546
1563
|
? {}
|
|
1547
1564
|
: { skillVectorAuthority: this._skillVectorAuthority }),
|
|
@@ -17,6 +17,7 @@ import { dirname, join } from "node:path";
|
|
|
17
17
|
import { WebSocketServer } from "ws";
|
|
18
18
|
import { captureAgentSkillOutcomeIndex } from "../../lib/evolution/agent-evolution-runtime-composition-brand.js";
|
|
19
19
|
import { captureSkillVectorAuthority } from "../../lib/skill-vector-authority.js";
|
|
20
|
+
import { captureSkillRuntimeDependencies } from "../../lib/evolution/skill-runtime-revalidation.js";
|
|
20
21
|
import {
|
|
21
22
|
createEnvelope,
|
|
22
23
|
envelopeFromStreamEvent,
|
|
@@ -332,6 +333,8 @@ export class ChainlessChainWSServer extends EventEmitter {
|
|
|
332
333
|
}
|
|
333
334
|
this.evolutionCompositionFactory =
|
|
334
335
|
options.evolutionCompositionFactory || null;
|
|
336
|
+
this.runtimeAdmissionDependencies =
|
|
337
|
+
captureSkillRuntimeDependencies(options);
|
|
335
338
|
this.skillOutcomeIndex =
|
|
336
339
|
options.skillOutcomeIndex == null
|
|
337
340
|
? null
|
|
@@ -16,6 +16,7 @@ export const DEFAULT_WS_SESSION_STATE_MAX_EVENTS = 64;
|
|
|
16
16
|
|
|
17
17
|
const RUN_STATUSES = new Set(["idle", "running", "interrupted"]);
|
|
18
18
|
const APPROVAL_STATUSES = new Set(["pending", "interrupted"]);
|
|
19
|
+
const MAX_DEFERRED_QUESTIONS = 32;
|
|
19
20
|
|
|
20
21
|
function own(object, key) {
|
|
21
22
|
return Object.prototype.hasOwnProperty.call(object || {}, key);
|
|
@@ -112,12 +113,87 @@ function normalizeRun(value) {
|
|
|
112
113
|
};
|
|
113
114
|
}
|
|
114
115
|
|
|
116
|
+
function normalizeDeferredRecord(value, resolved = false) {
|
|
117
|
+
if (!value || typeof value !== "object") return null;
|
|
118
|
+
const requestId =
|
|
119
|
+
typeof value.requestId === "string" && value.requestId.length > 0
|
|
120
|
+
? value.requestId
|
|
121
|
+
: null;
|
|
122
|
+
if (!requestId || !value.binding || typeof value.binding !== "object") {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const binding = cloneJson(value.binding);
|
|
126
|
+
if (
|
|
127
|
+
binding.sessionId == null ||
|
|
128
|
+
!Number.isSafeInteger(binding.sequence) ||
|
|
129
|
+
binding.sequence <= 0
|
|
130
|
+
) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
let answer = "";
|
|
134
|
+
if (resolved) {
|
|
135
|
+
if (typeof value.answer === "string") answer = value.answer;
|
|
136
|
+
else {
|
|
137
|
+
try {
|
|
138
|
+
answer = JSON.stringify(value.answer);
|
|
139
|
+
} catch {
|
|
140
|
+
answer = String(value.answer ?? "");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (typeof answer !== "string") answer = String(value.answer ?? "");
|
|
144
|
+
answer = answer.slice(0, 16384);
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
requestId,
|
|
148
|
+
question:
|
|
149
|
+
typeof value.question === "string" ? value.question.slice(0, 2048) : "",
|
|
150
|
+
binding,
|
|
151
|
+
requestedRevision: nonNegativeRevision(
|
|
152
|
+
value.requestedRevision ?? value.contextRevision,
|
|
153
|
+
),
|
|
154
|
+
...(resolved
|
|
155
|
+
? {
|
|
156
|
+
answer,
|
|
157
|
+
resolvedRevision: nonNegativeRevision(value.resolvedRevision),
|
|
158
|
+
}
|
|
159
|
+
: {
|
|
160
|
+
options: Array.isArray(value.options)
|
|
161
|
+
? cloneJson(value.options.slice(0, 32), [])
|
|
162
|
+
: null,
|
|
163
|
+
multiSelect: value.multiSelect === true,
|
|
164
|
+
purpose:
|
|
165
|
+
value.purpose === "preference" ? "preference" : "information",
|
|
166
|
+
contextRevision: nonNegativeRevision(value.contextRevision),
|
|
167
|
+
}),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
function upsertBounded(list, record) {
|
|
172
|
+
if (!record) return list;
|
|
173
|
+
const next = list.filter((item) => item.requestId !== record.requestId);
|
|
174
|
+
next.push(record);
|
|
175
|
+
return next.slice(-MAX_DEFERRED_QUESTIONS);
|
|
176
|
+
}
|
|
177
|
+
|
|
115
178
|
function normalizeSnapshot(value = {}, options = {}) {
|
|
116
179
|
const source = value && typeof value === "object" ? value : {};
|
|
117
180
|
const snapshot = {
|
|
118
181
|
revision: nonNegativeRevision(source.revision),
|
|
119
182
|
todo: normalizeTodoSnapshot(source.todo),
|
|
120
183
|
pendingApproval: normalizePendingApproval(source.pendingApproval),
|
|
184
|
+
contextRevision: nonNegativeRevision(source.contextRevision),
|
|
185
|
+
deferredQuestions: Array.isArray(source.deferredQuestions)
|
|
186
|
+
? source.deferredQuestions
|
|
187
|
+
.map((value) => normalizeDeferredRecord(value, false))
|
|
188
|
+
.filter(Boolean)
|
|
189
|
+
.slice(-MAX_DEFERRED_QUESTIONS)
|
|
190
|
+
: [],
|
|
191
|
+
deferredAnswers: Array.isArray(source.deferredAnswers)
|
|
192
|
+
? source.deferredAnswers
|
|
193
|
+
.map((value) => normalizeDeferredRecord(value, true))
|
|
194
|
+
.filter(Boolean)
|
|
195
|
+
.slice(-MAX_DEFERRED_QUESTIONS)
|
|
196
|
+
: [],
|
|
121
197
|
run: normalizeRun(source.run),
|
|
122
198
|
};
|
|
123
199
|
|
|
@@ -183,6 +259,58 @@ function applyEvent(snapshot, event) {
|
|
|
183
259
|
}
|
|
184
260
|
break;
|
|
185
261
|
|
|
262
|
+
case "question.context.revision":
|
|
263
|
+
next.contextRevision = Math.max(
|
|
264
|
+
next.contextRevision,
|
|
265
|
+
nonNegativeRevision(payload.contextRevision),
|
|
266
|
+
);
|
|
267
|
+
break;
|
|
268
|
+
|
|
269
|
+
case "question.deferred.requested": {
|
|
270
|
+
const question = normalizeDeferredRecord(payload, false);
|
|
271
|
+
if (
|
|
272
|
+
question &&
|
|
273
|
+
question.binding.sessionId === payload.binding?.sessionId
|
|
274
|
+
) {
|
|
275
|
+
next.deferredQuestions = upsertBounded(
|
|
276
|
+
next.deferredQuestions,
|
|
277
|
+
question,
|
|
278
|
+
);
|
|
279
|
+
}
|
|
280
|
+
break;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
case "question.deferred.resolved": {
|
|
284
|
+
const answer = normalizeDeferredRecord(payload, true);
|
|
285
|
+
if (answer) {
|
|
286
|
+
const pending = next.deferredQuestions.find(
|
|
287
|
+
(item) => item.requestId === answer.requestId,
|
|
288
|
+
);
|
|
289
|
+
if (
|
|
290
|
+
pending &&
|
|
291
|
+
JSON.stringify(pending.binding) === JSON.stringify(answer.binding)
|
|
292
|
+
) {
|
|
293
|
+
next.deferredQuestions = next.deferredQuestions.filter(
|
|
294
|
+
(item) => item.requestId !== answer.requestId,
|
|
295
|
+
);
|
|
296
|
+
next.deferredAnswers = upsertBounded(next.deferredAnswers, answer);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
case "question.deferred.consumed": {
|
|
303
|
+
const ids = new Set(
|
|
304
|
+
Array.isArray(payload.questionIds)
|
|
305
|
+
? payload.questionIds.filter((id) => typeof id === "string")
|
|
306
|
+
: [],
|
|
307
|
+
);
|
|
308
|
+
next.deferredAnswers = next.deferredAnswers.filter(
|
|
309
|
+
(item) => !ids.has(item.requestId),
|
|
310
|
+
);
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
|
|
186
314
|
case "run.started":
|
|
187
315
|
next.run = normalizeRun({
|
|
188
316
|
status: "running",
|
|
@@ -302,6 +430,9 @@ export function createWsSessionState(options = {}) {
|
|
|
302
430
|
revision: 0,
|
|
303
431
|
todo: normalizeTodoSnapshot(options.todo),
|
|
304
432
|
pendingApproval: null,
|
|
433
|
+
contextRevision: 0,
|
|
434
|
+
deferredQuestions: [],
|
|
435
|
+
deferredAnswers: [],
|
|
305
436
|
run: normalizeRun(),
|
|
306
437
|
...(hasPlanSnapshot
|
|
307
438
|
? { planSnapshot: cloneJson(options.planSnapshot) }
|
|
@@ -18,12 +18,13 @@
|
|
|
18
18
|
"agent_stream_events",
|
|
19
19
|
"agent_stream_payloads",
|
|
20
20
|
"unified_policy_decision",
|
|
21
|
+
"deferred_questions",
|
|
21
22
|
"context_memory_kernel"
|
|
22
23
|
],
|
|
23
24
|
"contextMemory": {
|
|
24
25
|
"schemaId": "https://chainlesschain.com/schemas/context-memory-kernel/v1",
|
|
25
26
|
"schemaVersion": 1,
|
|
26
|
-
"sourceDigest": "sha256:
|
|
27
|
+
"sourceDigest": "sha256:6599168b8fa9ace2d1697c44c2ac10141aa20bd7e9be29e9ea814ff032f87d68",
|
|
27
28
|
"methods": {
|
|
28
29
|
"context/plan": {
|
|
29
30
|
"request": "ContextPlanRequest",
|
|
@@ -3832,6 +3833,7 @@
|
|
|
3832
3833
|
"method": {
|
|
3833
3834
|
"enum": [
|
|
3834
3835
|
"approval/decide",
|
|
3836
|
+
"question/answer",
|
|
3835
3837
|
"humanTask/decide"
|
|
3836
3838
|
]
|
|
3837
3839
|
},
|
|
@@ -3862,6 +3864,8 @@
|
|
|
3862
3864
|
"item/completed",
|
|
3863
3865
|
"approval/requested",
|
|
3864
3866
|
"approval/resolved",
|
|
3867
|
+
"question/requested",
|
|
3868
|
+
"question/resolved",
|
|
3865
3869
|
"tool/requested",
|
|
3866
3870
|
"tool/result",
|
|
3867
3871
|
"subagent/started",
|
|
@@ -4804,6 +4808,13 @@
|
|
|
4804
4808
|
"$ref": "#/$defs/ContextScopeAdmission"
|
|
4805
4809
|
}
|
|
4806
4810
|
},
|
|
4811
|
+
"semanticCandidates": {
|
|
4812
|
+
"type": "array",
|
|
4813
|
+
"maxItems": 1000,
|
|
4814
|
+
"items": {
|
|
4815
|
+
"$ref": "#/$defs/MemorySemanticCandidate"
|
|
4816
|
+
}
|
|
4817
|
+
},
|
|
4807
4818
|
"limit": {
|
|
4808
4819
|
"type": "integer",
|
|
4809
4820
|
"minimum": 1,
|
|
@@ -4850,6 +4861,15 @@
|
|
|
4850
4861
|
"type": "integer",
|
|
4851
4862
|
"minimum": 0
|
|
4852
4863
|
},
|
|
4864
|
+
"retrievalMode": {
|
|
4865
|
+
"enum": [
|
|
4866
|
+
"governed_hybrid"
|
|
4867
|
+
]
|
|
4868
|
+
},
|
|
4869
|
+
"semanticEvidenceCount": {
|
|
4870
|
+
"type": "integer",
|
|
4871
|
+
"minimum": 0
|
|
4872
|
+
},
|
|
4853
4873
|
"results": {
|
|
4854
4874
|
"type": "array",
|
|
4855
4875
|
"maxItems": 1000,
|
|
@@ -5764,6 +5784,33 @@
|
|
|
5764
5784
|
"$ref": "#/$defs/MemoryRecallResult"
|
|
5765
5785
|
}
|
|
5766
5786
|
}
|
|
5787
|
+
},
|
|
5788
|
+
"MemorySemanticCandidate": {
|
|
5789
|
+
"type": "object",
|
|
5790
|
+
"additionalProperties": false,
|
|
5791
|
+
"required": [
|
|
5792
|
+
"memoryId",
|
|
5793
|
+
"revision",
|
|
5794
|
+
"recordDigest",
|
|
5795
|
+
"score"
|
|
5796
|
+
],
|
|
5797
|
+
"properties": {
|
|
5798
|
+
"memoryId": {
|
|
5799
|
+
"$ref": "#/$defs/ContextMemoryIdentifier"
|
|
5800
|
+
},
|
|
5801
|
+
"revision": {
|
|
5802
|
+
"type": "integer",
|
|
5803
|
+
"minimum": 1
|
|
5804
|
+
},
|
|
5805
|
+
"recordDigest": {
|
|
5806
|
+
"$ref": "#/$defs/ContextMemoryDigest"
|
|
5807
|
+
},
|
|
5808
|
+
"score": {
|
|
5809
|
+
"type": "number",
|
|
5810
|
+
"minimum": 0,
|
|
5811
|
+
"maximum": 1
|
|
5812
|
+
}
|
|
5813
|
+
}
|
|
5767
5814
|
}
|
|
5768
5815
|
}
|
|
5769
5816
|
}
|
package/src/lazy-dispatch.js
CHANGED
|
@@ -814,7 +814,14 @@ export function isFastReadOnlyInvocation(argv, env = process.env) {
|
|
|
814
814
|
commandLocation?.token === "session" &&
|
|
815
815
|
argv[commandLocation.index + 1] === "show" &&
|
|
816
816
|
!explicitOtlp;
|
|
817
|
-
|
|
817
|
+
// Capability inspection is a deliberately static, read-only diagnostic.
|
|
818
|
+
// Keep it ahead of observability initialization even when an OTLP endpoint
|
|
819
|
+
// is configured; otherwise merely inspecting a profile creates a queue and
|
|
820
|
+
// contradicts the command's no-network/no-write contract.
|
|
821
|
+
const llmCapabilities =
|
|
822
|
+
commandLocation?.token === "llm" &&
|
|
823
|
+
argv[commandLocation.index + 1] === "capabilities";
|
|
824
|
+
return quickStatus || sessionShow || llmCapabilities;
|
|
818
825
|
}
|
|
819
826
|
|
|
820
827
|
let processHandlersInstalled = false;
|