chainlesschain 0.166.21 → 0.166.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -9
- package/package.json +4 -3
- package/src/assets/web-panel/assets/{AIOps-BjMnsUci.js → AIOps-DR-MWcZc.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-DdYFP03A.js → ActionButton-DT8B7sEb.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Bb8TuuK_.js → Analytics-asjh3dQJ.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-Kn3TIOtk.js → AppLayout-DivQ491i.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-4IxpqI_b.js → Artifacts-DPH2uUmy.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-BOV2caqU.js → Audit-Bp2nLyc-.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-B86k-ay4.js → BackgroundAgents-CHS28khl.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-C5_ie1e3.js → Backup-CKeaFSfz.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-xpwg6QCW.js → BaseInput-CxwM9BAH.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CVZOcZau.js → Chat-DYLDwaCv.js} +4 -4
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-D8fPYhUu.js → ChatBubbleRenderer-DdBJDBP0.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-MKTq3zdP.js → Checkbox-uYTWOB8j.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-JUk3wzep.js → Codegen-CvYa_dwT.js} +1 -1
- package/src/assets/web-panel/assets/{Col-JPvTA0kC.js → Col-CanMAX4m.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Tqgl87NQ.js → Community-B4WaDtHw.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-BuAFYBmN.js → Compact-K93Uof_3.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-CXS9WIPZ.js → Compliance-CKeDLgUW.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-Ds2bFHrr.js → Cowork-P93grAeB.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-C_dV_OeW.js → Cron-BSHnMtDn.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-BsO6tIRo.js → Crosschain-epAOpUVJ.js} +1 -1
- package/src/assets/web-panel/assets/{DID-rNOFqBac.js → DID-ByjXfP7t.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-C2fcKKVY.js → Dashboard-QztTU8tb.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-Y7Ndr0X_.js → Dropdown-DhUc9yhN.js} +1 -1
- package/src/assets/web-panel/assets/{EmailListRenderer-DcP_uPmL.js → EmailListRenderer-C2sLhJJN.js} +1 -1
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-Cwn3gDzk.js → FamilyGuardDashboard-CdfbWNDn.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-ClQuOsqb.js → Federation-CcF_R7NW.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-DfwtmlcK.js → FormItemContext-Cm_X2IBk.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-zNZhtbC5.js → GenericCardRenderer-DUi4NWlb.js} +1 -1
- package/src/assets/web-panel/assets/{Git-BZmdW-G5.js → Git-4Sq5FjBt.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-CqBk4lEn.js → Governance-Dx2_v4V6.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-Dbmt3ZXk.js → Inference-7Vr1xekR.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-hMTH6qf3.js → KnowledgeGraph-Cnd2XOzf.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-CkiYgiW2.js → Logs-B66QPVf-.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-BL1FElXg.js → MarkdownRenderer-PLsEvhly.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-CbB6wfin.js → Marketplace-BMIK9BmC.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BSwiFtte.js → McpTools-BDbyp3J_.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-B03PeHrz.js → Memory-CJdzfZGi.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CRGrnd-X.js → MobileBridge-C2TH5Y3-.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-CE_5v2kO.js → MobileProjects-D1dYXkvV.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-Dp11QVx1.js → Mtc-B-4A1I1j.js} +4 -4
- package/src/assets/web-panel/assets/{MtcAudit-CYu-3JBu.js → MtcAudit-Bgcc9UOl.js} +5 -5
- package/src/assets/web-panel/assets/{Multisig-CGyJ0Xl3.js → Multisig-DqOe-etP.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-CoWi_ov1.js → NLProgramming-7VnhzE_6.js} +1 -1
- package/src/assets/web-panel/assets/Notes-BxawpeUQ.js +7 -0
- package/src/assets/web-panel/assets/{NotificationSettings-DX4I2b4W.js → NotificationSettings-Cr08G2aE.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Ce8bEGlK.js +1 -0
- package/src/assets/web-panel/assets/{Organization-oopLO_tk.js → Organization-BC7lveGv.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-BFVvjMyf.js → Overflow-CakOW-G0.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-CBy5t-Tk.js → P2P-Cf8CaOBZ.js} +2 -2
- package/src/assets/web-panel/assets/{PdhVaultBrowser--YWJNsu6.js → PdhVaultBrowser-Dc7b98W9.js} +3 -3
- package/src/assets/web-panel/assets/{Permissions-C2dZ8scb.js → Permissions-DGJyMEfS.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-Bs3l7Hlx.js → PersonalDataHub-DNIwSdwu.js} +6 -6
- package/src/assets/web-panel/assets/{Pipeline-DEBWbZuD.js → Pipeline-5B1S12wa.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-CjHBb6NU.js → Privacy-CMB6Ke5t.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-D2WipUz5.js → ProjectInit-D5PqTFiT.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-B6WfnrGB.js → ProjectSettings-CbKNdSjV.js} +2 -2
- package/src/assets/web-panel/assets/Projects-ccXaHzYL.js +1 -0
- package/src/assets/web-panel/assets/{Providers-CCv5M_Dv.js → Providers-CJF5_-Gs.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-CGthxU54.js → QrScannerModal-CT6iEAdi.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-CnPmXPFb.js → QuickAsk-Ci0h9mJ_.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-Df_tGEa9.js → Recommend-Da5mobZu.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-Z58N0Loe.js → RemoteSession-BaCY8eey.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-CZTBQ2Vt.js → Reputation-CaITfTsI.js} +1 -1
- package/src/assets/web-panel/assets/{Row-CdK3YpCQ.js → Row-DtUDamyP.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CFMVT5sb.js → RssFeed-DX27gFpg.js} +3 -3
- package/src/assets/web-panel/assets/{Search-DrF8RIvD.js → Search-DFL69osN.js} +1 -1
- package/src/assets/web-panel/assets/{Security-Ddk2f2DM.js → Security-BqGeoWv-.js} +3 -3
- package/src/assets/web-panel/assets/{Services-CCuK-VOo.js → Services-3z1WnEAc.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DxCpHzeM.js → Skeleton-C_OJQQ9Z.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-t2oTDgcv.js → Skills-BY7aT6Mo.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-Df63M9_R.js → Sla-BZv7DSaD.js} +1 -1
- package/src/assets/web-panel/assets/SpeechSettings-6lJKLhCn.js +1 -0
- package/src/assets/web-panel/assets/{SyncSettings-COd_tgPp.js → SyncSettings-B6D7STlI.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-CzDCcrik.js → Tasks-Co_FCZAO.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-D-vfxTGA.js → Templates-CnY-9fgz.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-BlpT_Gxc.js → Tenant-B71yXfZ8.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-D5rq52Hg.js → Terminal-Dd_P7awo.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-DdoMndkK.js → TimelineRenderer-CvIEMyli.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-BhgBsI6g.js → Tokens-DknFBGOi.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-DwwzoikZ.js → Trigger-D_4nJONB.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-HkTpzXFb.js → Trust-BNl21fa7.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-D9nk6Ehe.js → UkeySign-CFrCI7uK.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-BKk0rfoy.js → VideoEditing-BVfY6JLg.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-IVWIU_Lq.js → Wallet-Cj9CAK0J.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CFTCpfsG.js → WebAuthn-DcqZlzA3.js} +4 -4
- package/src/assets/web-panel/assets/{WorkflowEditor-Dnf4Obif.js → WorkflowEditor-Dfr_dMld.js} +1 -1
- package/src/assets/web-panel/assets/{chat-D2snERdj.js → chat-Yv6UF0AD.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DKEjK1N1.js → colors-CDW_-1fs.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BEDLwQdt.js → compact-item-BYOQvd-6.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-DA9iW1a0.js → createContext-BCGO0BiP.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-H-kXSuf-.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-5l2xEcY9.js → hasIn-DY-70cfQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-B7_W_rYd.js → index-366wfQBU.js} +1 -1
- package/src/assets/web-panel/assets/index-B0o4MeNK.js +1 -0
- package/src/assets/web-panel/assets/{index-CxEtQYdi.js → index-B9ZogJJM.js} +1 -1
- package/src/assets/web-panel/assets/{index-B00GeekA.js → index-B9m5QAMg.js} +1 -1
- package/src/assets/web-panel/assets/{index-C7sKbM5s.js → index-BBs2mv5M.js} +1 -1
- package/src/assets/web-panel/assets/{index-CX1x4AFn.js → index-BFv1hzF6.js} +1 -1
- package/src/assets/web-panel/assets/index-BVafOL_I.js +1 -0
- package/src/assets/web-panel/assets/{index-DU2TXJu-.js → index-BXlEx4UH.js} +1 -1
- package/src/assets/web-panel/assets/{index-e-e40id6.js → index-BayRTE5w.js} +1 -1
- package/src/assets/web-panel/assets/{index-DXet1xol.js → index-Bb9nyts1.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7z4zB_a.js → index-Bf_Va0S-.js} +1 -1
- package/src/assets/web-panel/assets/{index-fccZmC_h.js → index-Br3wQLVY.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bqc8tdIF.js → index-BvK4fjkk.js} +1 -1
- package/src/assets/web-panel/assets/{index-BO9dQjpt.js → index-C40UdtlS.js} +1 -1
- package/src/assets/web-panel/assets/{index-Csfb-7hw.js → index-C4UJA2ju.js} +1 -1
- package/src/assets/web-panel/assets/{index-Td8ZwyoC.js → index-CB_Iw73G.js} +1 -1
- package/src/assets/web-panel/assets/{index-BZ5lY2zx.js → index-CCwWp3mT.js} +1 -1
- package/src/assets/web-panel/assets/{index-DpqtbXdE.js → index-CFa2fPCk.js} +1 -1
- package/src/assets/web-panel/assets/{index-NJieh3T1.js → index-CIyHxV4u.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbkghqn_.js → index-CUP-A2_h.js} +1 -1
- package/src/assets/web-panel/assets/{index-DqwPFbOb.js → index-CUo27q9J.js} +3 -3
- package/src/assets/web-panel/assets/{index-B4QYBliR.js → index-CaT8trvf.js} +1 -1
- package/src/assets/web-panel/assets/{index-BgfImyZI.js → index-CnZNbcux.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dbd7eEex.js → index-Cy2NE6AO.js} +1 -1
- package/src/assets/web-panel/assets/{index-CbTPvp2_.js → index-CzeEEazr.js} +1 -1
- package/src/assets/web-panel/assets/{index-5pW4t1iD.js → index-D--TEyDj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dg2a9owQ.js → index-DCtsjhhT.js} +1 -1
- package/src/assets/web-panel/assets/{index-B_eCoZgW.js → index-DLOf7BSz.js} +1 -1
- package/src/assets/web-panel/assets/{index-7P1b8HZo.js → index-DM5c4pc-.js} +1 -1
- package/src/assets/web-panel/assets/{index-CRPrHE7h.js → index-DRFC2Qt0.js} +1 -1
- package/src/assets/web-panel/assets/{index-Bq5P3piS.js → index-DT_qVaaV.js} +1 -1
- package/src/assets/web-panel/assets/{index-CjWltbi_.js → index-DUDoRk9r.js} +1 -1
- package/src/assets/web-panel/assets/{index-CkMKuqUs.js → index-Dg-AQYDf.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLoalqRX.js → index-DuIPq5MX.js} +1 -1
- package/src/assets/web-panel/assets/{index-CGlotREA.js → index-NYVBUAVN.js} +1 -1
- package/src/assets/web-panel/assets/{index-yYEQXYaU.js → index-NaCESahy.js} +1 -1
- package/src/assets/web-panel/assets/{index-CmruhzFi.js → index-RjIMPG0u.js} +1 -1
- package/src/assets/web-panel/assets/{index-fgYk0QXO.js → index-Y9akzgFO.js} +1 -1
- package/src/assets/web-panel/assets/{index-DvV03Ayk.js → index-hZ0Eyrrw.js} +1 -1
- package/src/assets/web-panel/assets/{initDefaultProps-CPrcB1TC.js → initDefaultProps-CG99CcR4.js} +1 -1
- package/src/assets/web-panel/assets/{motion-BQ7mWRh_.js → motion-Z7MH0_0G.js} +1 -1
- package/src/assets/web-panel/assets/{move-CzOEq99p.js → move-BX67lOdq.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-BlQI5jrw.js → mtc-parser-CmAbG1fE.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DlW4gxmv.js → omit-DiU5tI1_.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-BBYms5nP.js → pickAttrs-BGfvLrYL.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-az2MPJ_7.js → placementArrow-CggLEgaJ.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-D1-ibEol.js → responsiveObserve-t3nlghPZ.js} +1 -1
- package/src/assets/web-panel/assets/{slide-DHGqa4GA.js → slide-BkV4dL9s.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-CYGDo6lD.js → statusUtils-qec1PUoC.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-Cl2EM9K6.js → styleChecker-ChjX6T8D.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-DdYhzuv1.js → useFlexGapSupport-B1jLoZcM.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-DWumPuBW.js → useFs-C3X53s4E.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-DxAO-Aqi.js → usePersonalDataHub-DOvbbnkZ.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-CplsQf_N.js → vnode-Ie0TEVFT.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-Cw5HXNSG.js → zoom-CRUMVS8l.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +3 -3
- package/src/commands/agent.js +18 -1
- package/src/commands/evolution-benchmark.js +72 -0
- package/src/commands/evolution.js +2 -0
- package/src/commands/governed-skill-marketplace.js +142 -0
- package/src/commands/marketplace.js +4 -1
- package/src/commands/serve.js +41 -0
- package/src/commands/skill.js +3 -0
- package/src/data/changelog.json +39 -0
- package/src/gateways/ws/ws-agent-handler.js +59 -2
- package/src/gateways/ws/ws-server.js +2 -0
- package/src/harness/golden-transcript.js +1 -0
- package/src/harness/prompt-compressor.js +51 -5
- package/src/harness/provider-backed-compaction.js +28 -1
- package/src/harness/remote-session-registry.js +15 -3
- package/src/index.js +30 -4
- package/src/lazy-dispatch.js +15 -1
- package/src/lib/advisor-runtime.js +55 -2
- package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
- package/src/lib/app-server/graph-runtime.js +32 -0
- package/src/lib/app-server/server.js +45 -1
- package/src/lib/app-server/websocket-transport.js +23 -0
- package/src/lib/autonomous-agent.js +63 -13
- package/src/lib/cowork/ab-comparator-cli.js +4 -3
- package/src/lib/cowork/debate-review-cli.js +4 -3
- package/src/lib/cowork/decision-kb-cli.js +5 -0
- package/src/lib/cowork-adapter.js +38 -16
- package/src/lib/evolution/agent-evolution-ingress.js +95 -15
- package/src/lib/evolution/agent-evolution-runtime-composition.js +82 -0
- package/src/lib/evolution/agent-evolution-session-lifecycle.js +46 -0
- package/src/lib/evolution/agent-model-projection.js +217 -0
- package/src/lib/evolution/bounded-descriptor-read.js +29 -0
- package/src/lib/evolution/controlled-skill-pilot-ledger-adapter.js +551 -0
- package/src/lib/evolution/controlled-skill-production-pilot.js +308 -18
- package/src/lib/evolution/evidence-backed-wiki-maintainer.js +10 -1
- package/src/lib/evolution/evidence-json-text.js +236 -0
- package/src/lib/evolution/evolution-artifact-ports.js +202 -21
- package/src/lib/evolution/evolution-deployment-loader.js +369 -0
- package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +373 -0
- package/src/lib/evolution/evolution-eval-gate.js +14 -1
- package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +14 -0
- package/src/lib/evolution/evolution-eval-process-supervisor.js +607 -0
- package/src/lib/evolution/evolution-evidence-artifact-adapter.js +14 -1
- package/src/lib/evolution/evolution-evidence-projector.js +240 -37
- package/src/lib/evolution/evolution-file-witness.js +153 -30
- package/src/lib/evolution/evolution-ledger-ports.js +1027 -66
- package/src/lib/evolution/evolution-ledger.js +66 -2
- package/src/lib/evolution/evolution-raw-crypto-shred.js +29 -15
- package/src/lib/evolution/evolution-raw-deletion-ledger-adapter.js +865 -0
- package/src/lib/evolution/evolution-release-train-domain-stages.js +769 -0
- package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
- package/src/lib/evolution/evolution-release-train-stage-output-ledger-adapter.js +333 -0
- package/src/lib/evolution/evolution-release-train.js +586 -0
- package/src/lib/evolution/evolution-workbench-batch-executor.js +101 -144
- package/src/lib/evolution/evolution-workbench-control-ports.js +203 -0
- package/src/lib/evolution/evolution-workbench-file-resources.js +403 -0
- package/src/lib/evolution/evolution-workbench-projection.js +152 -25
- package/src/lib/evolution/evolution-workbench-registry-source.js +482 -0
- package/src/lib/evolution/evolution-workbench-review-ledger-adapter.js +823 -0
- package/src/lib/evolution/evolution-workbench-review-protocol.js +157 -0
- package/src/lib/evolution/evolution-workbench-rollback-authorization.js +57 -0
- package/src/lib/evolution/evolution-workbench-rollback-ledger-adapter.js +1016 -0
- package/src/lib/evolution/evolution-workbench-runtime.js +133 -0
- package/src/lib/evolution/evolution-workbench-version-control.js +70 -36
- package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +736 -0
- package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
- package/src/lib/evolution/governed-knowledge-candidate-rejection.js +343 -0
- package/src/lib/evolution/governed-knowledge-dependency-authority.js +227 -44
- package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +95 -83
- package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +29 -2
- package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +31 -3
- package/src/lib/evolution/governed-knowledge-record.js +148 -0
- package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
- package/src/lib/evolution/governed-knowledge-skill-rollback.js +475 -0
- package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +92 -6
- package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +57 -4
- package/src/lib/evolution/governed-knowledge-sync.js +332 -99
- package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +462 -0
- package/src/lib/evolution/governed-skill-marketplace-badge.js +208 -0
- package/src/lib/evolution/governed-skill-marketplace-candidate.js +330 -0
- package/src/lib/evolution/governed-skill-marketplace-cli-host.js +308 -0
- package/src/lib/evolution/governed-skill-marketplace-ledger-adapter.js +420 -0
- package/src/lib/evolution/governed-skill-marketplace.js +288 -5
- package/src/lib/evolution/governed-wiki-pruning-journal.js +302 -0
- package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +459 -0
- package/src/lib/evolution/governed-wiki-pruning-maintenance.js +576 -0
- package/src/lib/evolution/governed-wiki-pruning-plan-authority.js +169 -0
- package/src/lib/evolution/governed-wiki-pruning-raw-shred.js +207 -0
- package/src/lib/evolution/governed-wiki-pruning-retrieval.js +587 -0
- package/src/lib/evolution/governed-wiki-pruning-runtime.js +153 -0
- package/src/lib/evolution/governed-wiki-pruning-skill-rollback.js +360 -0
- package/src/lib/evolution/governed-wiki-pruning.js +322 -143
- package/src/lib/evolution/independent-skill-revocation-source.js +231 -0
- package/src/lib/evolution/knowledge-wiki-source-admission.js +124 -0
- package/src/lib/evolution/knowledge-wiki-source-provenance.js +359 -0
- package/src/lib/evolution/progressive-canary-external-watchdog.js +578 -0
- package/src/lib/evolution/progressive-canary-traffic-worker.js +628 -0
- package/src/lib/evolution/progressive-canary-watchdog-file-store.js +285 -0
- package/src/lib/evolution/progressive-canary-watchdog-node-pki.js +265 -0
- package/src/lib/evolution/skill-candidate-registry.js +22 -0
- package/src/lib/evolution/skill-promotion-controller.js +25 -0
- package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +100 -0
- package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +131 -2
- package/src/lib/evolution/skill-release-registry.js +25 -4
- package/src/lib/evolution/skill-retrieval-revocation-authority.js +361 -0
- package/src/lib/evolution/skill-retrieval-revocation-ledger-adapter.js +346 -0
- package/src/lib/evolution/skill-revocation-propagation.js +467 -0
- package/src/lib/evolution/skill-target-matrix-eval.js +162 -11
- package/src/lib/evolution/skill-wiki-reconciliation.js +985 -0
- package/src/lib/evolution/skill-writer-inventory-manifest.js +15 -12
- package/src/lib/evolution/statistical-progressive-canary.js +845 -0
- package/src/lib/evolution/structured-memory-agent-control-plane.js +120 -0
- package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +5 -1
- package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +126 -0
- package/src/lib/evolution/wiki-informed-skill-proposer.js +127 -21
- package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +760 -100
- package/src/lib/evolution/wiki-revision-protocol.js +120 -0
- package/src/lib/evolution/wiki-skill-proposal-ledger-adapter.js +307 -0
- package/src/lib/evolution/wiki-target-tombstone-revision.js +101 -0
- package/src/lib/evolution/wikiskill-benchmark-cli-host.js +178 -0
- package/src/lib/evolution/wikiskill-benchmark-execution-host.js +702 -0
- package/src/lib/evolution/wikiskill-benchmark-ledger-adapter.js +613 -0
- package/src/lib/evolution/wikiskill-benchmark.js +574 -0
- package/src/lib/goal-assess.js +17 -10
- package/src/lib/interactive-planner.js +9 -1
- package/src/lib/iteration-budget.js +16 -2
- package/src/lib/micro-compact.js +4 -1
- package/src/lib/model-failure-policy.js +21 -0
- package/src/lib/process-execution-broker/index.js +1 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
- package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
- package/src/lib/process-execution-broker/windows-sandbox.cs +33 -15
- package/src/lib/read-file-page.js +191 -0
- package/src/lib/runnable-provider.js +2 -1
- package/src/lib/session-host-lease.js +11 -16
- package/src/lib/skill-retrieval-router.js +22 -1
- package/src/repl/agent-repl.js +127 -33
- package/src/runtime/agent-core.js +224 -80
- package/src/runtime/agent-runtime.js +43 -0
- package/src/runtime/coding-agent-contract-shared.cjs +7 -1
- package/src/runtime/fallback-model.js +143 -62
- package/src/runtime/headless-runner.js +54 -10
- package/src/runtime/headless-stream.js +53 -6
- package/src/runtime/runtime-factory.js +41 -2
- package/src/assets/web-panel/assets/Notes-CgU9DDo9.js +0 -7
- package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +0 -1
- package/src/assets/web-panel/assets/Projects-FF_thRi6.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-l7ox6KuX.js +0 -1
- package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +0 -1
- package/src/assets/web-panel/assets/index-Ck1jhFE0.js +0 -1
- package/src/assets/web-panel/assets/index-c8jJEHVs.js +0 -1
package/src/repl/agent-repl.js
CHANGED
|
@@ -173,6 +173,7 @@ import { newCostStore, addUsage } from "./session-cost.js";
|
|
|
173
173
|
import { extractPluginUsageAttribution } from "../lib/plugin-usage-attribution.js";
|
|
174
174
|
import { captureStructuredMemoryAgentControlPlane } from "../lib/evolution/structured-memory-agent-control-plane.js";
|
|
175
175
|
import { captureAgentEvolutionIngress } from "../lib/evolution/agent-evolution-ingress.js";
|
|
176
|
+
import { createAgentEvolutionSessionLifecycle } from "../lib/evolution/agent-evolution-session-lifecycle.js";
|
|
176
177
|
import { formatManagedCheckpointEvent } from "../lib/managed-checkpoint-render.js";
|
|
177
178
|
import { parseThinkCommand, parseEffortCommand } from "./think-command.js";
|
|
178
179
|
import {
|
|
@@ -451,7 +452,6 @@ export async function runReplDirectToolWithLedger({
|
|
|
451
452
|
* Reference to the runtime DB for hook execution (set during startAgentRepl)
|
|
452
453
|
*/
|
|
453
454
|
let _hookDb = null;
|
|
454
|
-
let _compressor = null;
|
|
455
455
|
let _approvalGate = null;
|
|
456
456
|
// Static + CLI-owned scoped permission rules (deny > ask > allow) and an
|
|
457
457
|
// interactive confirmer for `ask` matches. Scoped rules are refreshed at each
|
|
@@ -3044,6 +3044,13 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3044
3044
|
startupAdmission,
|
|
3045
3045
|
outputScope,
|
|
3046
3046
|
) {
|
|
3047
|
+
// The compressor captures this session's ingress and metering callbacks.
|
|
3048
|
+
// A later REPL instance must not replace another session's authority.
|
|
3049
|
+
let _compressor = null;
|
|
3050
|
+
const evolutionIngress =
|
|
3051
|
+
options.evolutionIngress == null
|
|
3052
|
+
? null
|
|
3053
|
+
: captureAgentEvolutionIngress(options.evolutionIngress);
|
|
3047
3054
|
// EPIPE guard: if the REPL's stdout is piped and the consumer closes (e.g.
|
|
3048
3055
|
// `cc agent | head`), the async stream `error` would otherwise crash the
|
|
3049
3056
|
// process. Route a broken pipe into the REPL's own graceful shutdown (the
|
|
@@ -3052,6 +3059,10 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3052
3059
|
// a cleanup write that also EPIPEs can't loop. An early EPIPE remains pending
|
|
3053
3060
|
// until the close handler is attached; it never skips directly to exit.
|
|
3054
3061
|
let _replRl = null;
|
|
3062
|
+
const _evolutionSession =
|
|
3063
|
+
evolutionIngress === null
|
|
3064
|
+
? null
|
|
3065
|
+
: createAgentEvolutionSessionLifecycle(evolutionIngress);
|
|
3055
3066
|
let _replClosing = false;
|
|
3056
3067
|
let _replCloseReady = false;
|
|
3057
3068
|
let _replCleanupStarted = false;
|
|
@@ -3165,6 +3176,8 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3165
3176
|
// above every direct-model surface (Advisor, /btw, /auto, /plan, /goal), and
|
|
3166
3177
|
// clear steering immediately so queued work cannot start another paid call.
|
|
3167
3178
|
let _processingLine = false;
|
|
3179
|
+
let _lineSettled = null;
|
|
3180
|
+
const _activeBtwCalls = new Set();
|
|
3168
3181
|
const _pendingLines = [];
|
|
3169
3182
|
const _runtimeLedgerTerminalLatch = createReplRuntimeLedgerTerminalLatch({
|
|
3170
3183
|
onTrip: (terminalError) => {
|
|
@@ -3223,7 +3236,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3223
3236
|
callModel,
|
|
3224
3237
|
source: "model",
|
|
3225
3238
|
});
|
|
3226
|
-
const _runReplDirectTool = async (tool, args) => {
|
|
3239
|
+
const _runReplDirectTool = async (tool, args, { signal = null } = {}) => {
|
|
3227
3240
|
_runtimeLedgerTerminalLatch.assertOpen();
|
|
3228
3241
|
try {
|
|
3229
3242
|
const durableSessionId = resolveReplMeteredSessionId(useJsonl, sessionId);
|
|
@@ -3235,7 +3248,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3235
3248
|
executeTool(name, toolArgs, {
|
|
3236
3249
|
sessionId: durableSessionId,
|
|
3237
3250
|
sessionBudget: _sessionBudget,
|
|
3238
|
-
signal: options.signal
|
|
3251
|
+
signal: combineReplSignals(signal, options.signal),
|
|
3239
3252
|
}),
|
|
3240
3253
|
now: options.now || Date.now,
|
|
3241
3254
|
terminalLatch: _runtimeLedgerTerminalLatch,
|
|
@@ -3427,6 +3440,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
3427
3440
|
includeLedgerMetadata: true,
|
|
3428
3441
|
call: ({ signal }) =>
|
|
3429
3442
|
chatWithTools([{ role: "user", content: prompt }], {
|
|
3443
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
3430
3444
|
provider,
|
|
3431
3445
|
model,
|
|
3432
3446
|
baseUrl,
|
|
@@ -4826,7 +4840,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4826
4840
|
// transcript snapshot and ZERO tools. Compact call/outcome metadata shares
|
|
4827
4841
|
// the session hash chain, while advice text itself is never persisted.
|
|
4828
4842
|
try {
|
|
4829
|
-
const { createConfiguredAdvisorRuntime
|
|
4843
|
+
const { createConfiguredAdvisorRuntime } =
|
|
4830
4844
|
await import("../lib/advisor-runtime.js");
|
|
4831
4845
|
const advisorOverrides = {};
|
|
4832
4846
|
if (options.advisorEnabled !== undefined) {
|
|
@@ -4841,17 +4855,8 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
4841
4855
|
baseUrl,
|
|
4842
4856
|
apiKey,
|
|
4843
4857
|
overrides: advisorOverrides,
|
|
4844
|
-
|
|
4845
|
-
|
|
4846
|
-
callProvider: request?.provider,
|
|
4847
|
-
callModel: request?.model,
|
|
4848
|
-
source: "model",
|
|
4849
|
-
call: ({ signal }) =>
|
|
4850
|
-
invokeToolFreeAdvisor({
|
|
4851
|
-
...request,
|
|
4852
|
-
signal: combineReplSignals(request?.signal, signal),
|
|
4853
|
-
}),
|
|
4854
|
-
}),
|
|
4858
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
4859
|
+
callWrapper: _directChatCallWrapper,
|
|
4855
4860
|
onEvent: (event) => {
|
|
4856
4861
|
if (!useJsonl || !sessionId) return;
|
|
4857
4862
|
try {
|
|
@@ -5639,6 +5644,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
5639
5644
|
}
|
|
5640
5645
|
try {
|
|
5641
5646
|
const chatFn = createChatFn({
|
|
5647
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
5642
5648
|
provider,
|
|
5643
5649
|
model,
|
|
5644
5650
|
baseUrl,
|
|
@@ -8012,7 +8018,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8012
8018
|
` ${chalk.cyan("/cowork graph <path>")} Code knowledge graph (ASCII)`,
|
|
8013
8019
|
);
|
|
8014
8020
|
logger.log(
|
|
8015
|
-
` ${chalk.cyan("/cowork decision <
|
|
8021
|
+
` ${chalk.cyan("/cowork decision <path>")} Extract architecture decisions`,
|
|
8016
8022
|
);
|
|
8017
8023
|
logger.log("");
|
|
8018
8024
|
} else if (subCmd === "debate" && coworkInput) {
|
|
@@ -8034,6 +8040,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8034
8040
|
target: targetLabel,
|
|
8035
8041
|
code,
|
|
8036
8042
|
llmOptions: {
|
|
8043
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
8037
8044
|
provider,
|
|
8038
8045
|
model,
|
|
8039
8046
|
baseUrl,
|
|
@@ -8073,6 +8080,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8073
8080
|
const result = await compare({
|
|
8074
8081
|
prompt: coworkInput,
|
|
8075
8082
|
llmOptions: {
|
|
8083
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
8076
8084
|
provider,
|
|
8077
8085
|
model,
|
|
8078
8086
|
baseUrl,
|
|
@@ -8099,12 +8107,11 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8099
8107
|
}
|
|
8100
8108
|
} else if (subCmd === "graph" && coworkInput) {
|
|
8101
8109
|
try {
|
|
8102
|
-
const {
|
|
8110
|
+
const { buildKnowledgeGraph } =
|
|
8103
8111
|
await import("../lib/cowork/code-knowledge-graph-cli.js");
|
|
8104
8112
|
process.stdout.write(chalk.gray("\n Analyzing code graph...\n"));
|
|
8105
|
-
const result = await
|
|
8106
|
-
|
|
8107
|
-
llmOptions: { provider, model, baseUrl, apiKey },
|
|
8113
|
+
const result = await buildKnowledgeGraph({
|
|
8114
|
+
targetPath: path.resolve(coworkInput),
|
|
8108
8115
|
});
|
|
8109
8116
|
// ASCII dependency graph
|
|
8110
8117
|
if (result.entities && result.entities.length > 0) {
|
|
@@ -8119,7 +8126,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8119
8126
|
process.stdout.write(chalk.bold("\n Relationships:\n"));
|
|
8120
8127
|
for (const rel of result.relationships.slice(0, 10)) {
|
|
8121
8128
|
process.stdout.write(
|
|
8122
|
-
` ${rel.
|
|
8129
|
+
` ${rel.from} ${chalk.gray(`—${rel.type}→`)} ${rel.to}\n`,
|
|
8123
8130
|
);
|
|
8124
8131
|
}
|
|
8125
8132
|
}
|
|
@@ -8138,12 +8145,19 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8138
8145
|
}
|
|
8139
8146
|
} else if (subCmd === "decision" && coworkInput) {
|
|
8140
8147
|
try {
|
|
8141
|
-
const {
|
|
8148
|
+
const { extractDecisions } =
|
|
8142
8149
|
await import("../lib/cowork/decision-kb-cli.js");
|
|
8143
8150
|
process.stdout.write(chalk.gray("\n Analyzing decisions...\n"));
|
|
8144
|
-
const result = await
|
|
8145
|
-
|
|
8146
|
-
llmOptions: {
|
|
8151
|
+
const result = await extractDecisions({
|
|
8152
|
+
targetPath: path.resolve(coworkInput),
|
|
8153
|
+
llmOptions: {
|
|
8154
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
8155
|
+
provider,
|
|
8156
|
+
model,
|
|
8157
|
+
baseUrl,
|
|
8158
|
+
apiKey,
|
|
8159
|
+
callWrapper: _directChatCallWrapper,
|
|
8160
|
+
},
|
|
8147
8161
|
});
|
|
8148
8162
|
if (result.decisions && result.decisions.length > 0) {
|
|
8149
8163
|
process.stdout.write(chalk.bold(" Architecture Decisions:\n"));
|
|
@@ -8178,7 +8192,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8178
8192
|
}
|
|
8179
8193
|
} else {
|
|
8180
8194
|
logger.info(
|
|
8181
|
-
"Usage: /cowork debate <file> | compare <prompt> | graph <path> | decision <
|
|
8195
|
+
"Usage: /cowork debate <file> | compare <prompt> | graph <path> | decision <path>",
|
|
8182
8196
|
);
|
|
8183
8197
|
}
|
|
8184
8198
|
|
|
@@ -8281,6 +8295,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8281
8295
|
// Lazy-init autonomous agent with LLM chat function
|
|
8282
8296
|
if (!autonomousAgent._initialized) {
|
|
8283
8297
|
const chatFn = createChatFn({
|
|
8298
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
8284
8299
|
provider,
|
|
8285
8300
|
model,
|
|
8286
8301
|
baseUrl,
|
|
@@ -8289,7 +8304,10 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8289
8304
|
});
|
|
8290
8305
|
autonomousAgent.initialize({
|
|
8291
8306
|
llmChat: chatFn,
|
|
8292
|
-
toolExecutor:
|
|
8307
|
+
toolExecutor: (tool, args) =>
|
|
8308
|
+
_runReplDirectTool(tool, args, {
|
|
8309
|
+
signal: autonomousAgent.signal,
|
|
8310
|
+
}),
|
|
8293
8311
|
});
|
|
8294
8312
|
}
|
|
8295
8313
|
|
|
@@ -8401,6 +8419,16 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8401
8419
|
logger.warn(result.error);
|
|
8402
8420
|
}
|
|
8403
8421
|
} catch (error) {
|
|
8422
|
+
if (
|
|
8423
|
+
error?.runtimeLedgerPersistence === true ||
|
|
8424
|
+
error?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED"
|
|
8425
|
+
) {
|
|
8426
|
+
logger.error(
|
|
8427
|
+
"Plan approval stopped because Advisor admission or settlement failed.",
|
|
8428
|
+
);
|
|
8429
|
+
prompt();
|
|
8430
|
+
return;
|
|
8431
|
+
}
|
|
8404
8432
|
logger.warn(`Advisor plan review skipped: ${error.message}`);
|
|
8405
8433
|
}
|
|
8406
8434
|
}
|
|
@@ -8492,6 +8520,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
8492
8520
|
const { TerminalInteractionAdapter } =
|
|
8493
8521
|
await import("../lib/interaction-adapter.js");
|
|
8494
8522
|
const chatFn = createChatFn({
|
|
8523
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
8495
8524
|
provider,
|
|
8496
8525
|
model,
|
|
8497
8526
|
baseUrl,
|
|
@@ -9748,6 +9777,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9748
9777
|
source: "model",
|
|
9749
9778
|
call: ({ signal }) =>
|
|
9750
9779
|
chatWithTools([{ role: "user", content: p }], {
|
|
9780
|
+
...(evolutionIngress === null ? {} : { evolutionIngress }),
|
|
9751
9781
|
model: activeModel,
|
|
9752
9782
|
provider,
|
|
9753
9783
|
baseUrl,
|
|
@@ -9789,6 +9819,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9789
9819
|
logger.log(chalk.cyan(l));
|
|
9790
9820
|
if (done) _sessionGoal = null; // completed or exhausted → drop
|
|
9791
9821
|
} catch (err) {
|
|
9822
|
+
if (err?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED") throw err;
|
|
9792
9823
|
const terminalError = _runtimeLedgerTerminalLatch.trip(err);
|
|
9793
9824
|
if (terminalError) _reportRuntimeLedgerTerminal();
|
|
9794
9825
|
else logger.verbose(`/goal eval skipped: ${err.message}`);
|
|
@@ -9973,6 +10004,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
9973
10004
|
throw error;
|
|
9974
10005
|
}
|
|
9975
10006
|
if (error?.runtimeLedgerPersistence === true) throw error;
|
|
10007
|
+
if (error?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED") throw error;
|
|
9976
10008
|
logger.warn(`Auto-compaction failed: ${error.message}`);
|
|
9977
10009
|
}
|
|
9978
10010
|
}
|
|
@@ -10060,6 +10092,7 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10060
10092
|
|
|
10061
10093
|
rl.on("line", async (input) => {
|
|
10062
10094
|
if (!(await _waitForReplOutput())) return;
|
|
10095
|
+
if (_replClosing) return;
|
|
10063
10096
|
if (_runtimeLedgerTerminalLatch.isTripped()) {
|
|
10064
10097
|
const terminalInput = input.trim();
|
|
10065
10098
|
if (terminalInput === "/exit" || terminalInput === "/quit") {
|
|
@@ -10077,7 +10110,14 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10077
10110
|
if (concurrentBtw) {
|
|
10078
10111
|
// Intentionally do not await: the main turn keeps streaming while this
|
|
10079
10112
|
// independent, tool-free snapshot call runs alongside it.
|
|
10080
|
-
|
|
10113
|
+
const sideCall = runBtwSideQuestion(concurrentBtw, {
|
|
10114
|
+
concurrent: true,
|
|
10115
|
+
});
|
|
10116
|
+
_activeBtwCalls.add(sideCall);
|
|
10117
|
+
void sideCall.then(
|
|
10118
|
+
() => _activeBtwCalls.delete(sideCall),
|
|
10119
|
+
() => _activeBtwCalls.delete(sideCall),
|
|
10120
|
+
);
|
|
10081
10121
|
return;
|
|
10082
10122
|
}
|
|
10083
10123
|
if (input.trim()) {
|
|
@@ -10091,10 +10131,18 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10091
10131
|
return;
|
|
10092
10132
|
}
|
|
10093
10133
|
_processingLine = true;
|
|
10134
|
+
let settleLine;
|
|
10135
|
+
_lineSettled = new Promise((resolve) => {
|
|
10136
|
+
settleLine = resolve;
|
|
10137
|
+
});
|
|
10094
10138
|
try {
|
|
10095
10139
|
await handleLine(input);
|
|
10096
10140
|
if (!(await _waitForReplOutput())) return;
|
|
10097
|
-
while (
|
|
10141
|
+
while (
|
|
10142
|
+
_pendingLines.length &&
|
|
10143
|
+
!_replClosing &&
|
|
10144
|
+
!_runtimeLedgerTerminalLatch.isTripped()
|
|
10145
|
+
) {
|
|
10098
10146
|
const next = _pendingLines.shift();
|
|
10099
10147
|
logger.log(chalk.cyan(`▶ running queued input: ${next}`));
|
|
10100
10148
|
await handleLine(next);
|
|
@@ -10102,6 +10150,8 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10102
10150
|
}
|
|
10103
10151
|
} finally {
|
|
10104
10152
|
_processingLine = false;
|
|
10153
|
+
settleLine();
|
|
10154
|
+
_lineSettled = null;
|
|
10105
10155
|
}
|
|
10106
10156
|
});
|
|
10107
10157
|
|
|
@@ -10109,7 +10159,37 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10109
10159
|
if (_replCleanupStarted) return;
|
|
10110
10160
|
_replCleanupStarted = true;
|
|
10111
10161
|
_replClosing = true;
|
|
10162
|
+
_pendingLines.length = 0;
|
|
10163
|
+
// Do not certify a Run while its model/tool or auxiliary usage settlement
|
|
10164
|
+
// is still in flight. EOF during a main turn cancels and leaves it incomplete.
|
|
10165
|
+
if (_turnAbort !== null) {
|
|
10166
|
+
const error = Object.assign(
|
|
10167
|
+
new Error("REPL closed during an active turn"),
|
|
10168
|
+
{
|
|
10169
|
+
code: "CC_AGENT_EVOLUTION_SESSION_INTERRUPTED",
|
|
10170
|
+
},
|
|
10171
|
+
);
|
|
10172
|
+
if (_evolutionSession !== null) _replOutputFailure ||= error;
|
|
10173
|
+
_turnAbort.abort(error);
|
|
10174
|
+
}
|
|
10112
10175
|
_promptInteractions.dispose();
|
|
10176
|
+
// Autonomous goals outlive the input line that submitted them. Cancel
|
|
10177
|
+
// their next-step execution and wait for any current call to settle too.
|
|
10178
|
+
const autonomousShutdown = autonomousAgent.shutdown();
|
|
10179
|
+
void autonomousShutdown.catch(() => {});
|
|
10180
|
+
await _lineSettled;
|
|
10181
|
+
await Promise.allSettled([..._activeBtwCalls]);
|
|
10182
|
+
try {
|
|
10183
|
+
const { interrupted } = await autonomousShutdown;
|
|
10184
|
+
if (interrupted > 0 && _evolutionSession !== null) {
|
|
10185
|
+
_replOutputFailure ||= Object.assign(
|
|
10186
|
+
new Error("REPL closed during an autonomous goal"),
|
|
10187
|
+
{ code: "CC_AGENT_EVOLUTION_SESSION_INTERRUPTED" },
|
|
10188
|
+
);
|
|
10189
|
+
}
|
|
10190
|
+
} catch (error) {
|
|
10191
|
+
_replOutputFailure ||= error;
|
|
10192
|
+
}
|
|
10113
10193
|
if (process.stdin.isTTY) {
|
|
10114
10194
|
if (_replKeypressHandler) {
|
|
10115
10195
|
process.stdin.removeListener("keypress", _replKeypressHandler);
|
|
@@ -10194,10 +10274,14 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10194
10274
|
}
|
|
10195
10275
|
}
|
|
10196
10276
|
// Fire SessionEnd hook before shutdown (fire-and-forget)
|
|
10197
|
-
|
|
10198
|
-
|
|
10199
|
-
|
|
10200
|
-
|
|
10277
|
+
try {
|
|
10278
|
+
await fireSessionHook(_hookDb, HookEvents.SessionEnd, {
|
|
10279
|
+
sessionId,
|
|
10280
|
+
messageCount: messages.length,
|
|
10281
|
+
});
|
|
10282
|
+
} catch (error) {
|
|
10283
|
+
_replOutputFailure ||= error;
|
|
10284
|
+
}
|
|
10201
10285
|
|
|
10202
10286
|
// Phase H — park the SessionManager handle on clean exit so the session
|
|
10203
10287
|
// can be resumed later via `cc session unpark <id>`. `--no-park-on-exit`
|
|
@@ -10323,6 +10407,15 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10323
10407
|
_replOutputFailure ||= error;
|
|
10324
10408
|
}
|
|
10325
10409
|
}
|
|
10410
|
+
if (_evolutionSession !== null) {
|
|
10411
|
+
try {
|
|
10412
|
+
await _evolutionSession.close(
|
|
10413
|
+
_replOutputFailure || _runtimeLedgerTerminalLatch.error() || null,
|
|
10414
|
+
);
|
|
10415
|
+
} catch (error) {
|
|
10416
|
+
_replOutputFailure ||= error;
|
|
10417
|
+
}
|
|
10418
|
+
}
|
|
10326
10419
|
const outputExitCode = _replOutputFailure
|
|
10327
10420
|
? _replOutputFailure.code === "EPIPE"
|
|
10328
10421
|
? 0
|
|
@@ -10343,4 +10436,5 @@ async function startAgentReplInWorkspaceOwned(
|
|
|
10343
10436
|
}
|
|
10344
10437
|
});
|
|
10345
10438
|
}
|
|
10439
|
+
return _evolutionSession?.handle;
|
|
10346
10440
|
}
|