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.
Files changed (301) hide show
  1. package/README.md +67 -9
  2. package/package.json +4 -3
  3. package/src/assets/web-panel/assets/{AIOps-BjMnsUci.js → AIOps-DR-MWcZc.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-DdYFP03A.js → ActionButton-DT8B7sEb.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-Bb8TuuK_.js → Analytics-asjh3dQJ.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-Kn3TIOtk.js → AppLayout-DivQ491i.js} +5 -5
  7. package/src/assets/web-panel/assets/{Artifacts-4IxpqI_b.js → Artifacts-DPH2uUmy.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-BOV2caqU.js → Audit-Bp2nLyc-.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-B86k-ay4.js → BackgroundAgents-CHS28khl.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-C5_ie1e3.js → Backup-CKeaFSfz.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-xpwg6QCW.js → BaseInput-CxwM9BAH.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-CVZOcZau.js → Chat-DYLDwaCv.js} +4 -4
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-D8fPYhUu.js → ChatBubbleRenderer-DdBJDBP0.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-MKTq3zdP.js → Checkbox-uYTWOB8j.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-JUk3wzep.js → Codegen-CvYa_dwT.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-JPvTA0kC.js → Col-CanMAX4m.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-Tqgl87NQ.js → Community-B4WaDtHw.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-BuAFYBmN.js → Compact-K93Uof_3.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-CXS9WIPZ.js → Compliance-CKeDLgUW.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-Ds2bFHrr.js → Cowork-P93grAeB.js} +3 -3
  21. package/src/assets/web-panel/assets/{Cron-C_dV_OeW.js → Cron-BSHnMtDn.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-BsO6tIRo.js → Crosschain-epAOpUVJ.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-rNOFqBac.js → DID-ByjXfP7t.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-C2fcKKVY.js → Dashboard-QztTU8tb.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-Y7Ndr0X_.js → Dropdown-DhUc9yhN.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DcP_uPmL.js → EmailListRenderer-C2sLhJJN.js} +1 -1
  27. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Cwn3gDzk.js → FamilyGuardDashboard-CdfbWNDn.js} +1 -1
  28. package/src/assets/web-panel/assets/{Federation-ClQuOsqb.js → Federation-CcF_R7NW.js} +1 -1
  29. package/src/assets/web-panel/assets/{FormItemContext-DfwtmlcK.js → FormItemContext-Cm_X2IBk.js} +1 -1
  30. package/src/assets/web-panel/assets/{GenericCardRenderer-zNZhtbC5.js → GenericCardRenderer-DUi4NWlb.js} +1 -1
  31. package/src/assets/web-panel/assets/{Git-BZmdW-G5.js → Git-4Sq5FjBt.js} +2 -2
  32. package/src/assets/web-panel/assets/{Governance-CqBk4lEn.js → Governance-Dx2_v4V6.js} +1 -1
  33. package/src/assets/web-panel/assets/{Inference-Dbmt3ZXk.js → Inference-7Vr1xekR.js} +1 -1
  34. package/src/assets/web-panel/assets/{KnowledgeGraph-hMTH6qf3.js → KnowledgeGraph-Cnd2XOzf.js} +1 -1
  35. package/src/assets/web-panel/assets/{Logs-CkiYgiW2.js → Logs-B66QPVf-.js} +2 -2
  36. package/src/assets/web-panel/assets/{MarkdownRenderer-BL1FElXg.js → MarkdownRenderer-PLsEvhly.js} +1 -1
  37. package/src/assets/web-panel/assets/{Marketplace-CbB6wfin.js → Marketplace-BMIK9BmC.js} +1 -1
  38. package/src/assets/web-panel/assets/{McpTools-BSwiFtte.js → McpTools-BDbyp3J_.js} +3 -3
  39. package/src/assets/web-panel/assets/{Memory-B03PeHrz.js → Memory-CJdzfZGi.js} +2 -2
  40. package/src/assets/web-panel/assets/{MobileBridge-CRGrnd-X.js → MobileBridge-C2TH5Y3-.js} +1 -1
  41. package/src/assets/web-panel/assets/{MobileProjects-CE_5v2kO.js → MobileProjects-D1dYXkvV.js} +1 -1
  42. package/src/assets/web-panel/assets/{Mtc-Dp11QVx1.js → Mtc-B-4A1I1j.js} +4 -4
  43. package/src/assets/web-panel/assets/{MtcAudit-CYu-3JBu.js → MtcAudit-Bgcc9UOl.js} +5 -5
  44. package/src/assets/web-panel/assets/{Multisig-CGyJ0Xl3.js → Multisig-DqOe-etP.js} +3 -3
  45. package/src/assets/web-panel/assets/{NLProgramming-CoWi_ov1.js → NLProgramming-7VnhzE_6.js} +1 -1
  46. package/src/assets/web-panel/assets/Notes-BxawpeUQ.js +7 -0
  47. package/src/assets/web-panel/assets/{NotificationSettings-DX4I2b4W.js → NotificationSettings-Cr08G2aE.js} +1 -1
  48. package/src/assets/web-panel/assets/OrderTableRenderer-Ce8bEGlK.js +1 -0
  49. package/src/assets/web-panel/assets/{Organization-oopLO_tk.js → Organization-BC7lveGv.js} +4 -4
  50. package/src/assets/web-panel/assets/{Overflow-BFVvjMyf.js → Overflow-CakOW-G0.js} +1 -1
  51. package/src/assets/web-panel/assets/{P2P-CBy5t-Tk.js → P2P-Cf8CaOBZ.js} +2 -2
  52. package/src/assets/web-panel/assets/{PdhVaultBrowser--YWJNsu6.js → PdhVaultBrowser-Dc7b98W9.js} +3 -3
  53. package/src/assets/web-panel/assets/{Permissions-C2dZ8scb.js → Permissions-DGJyMEfS.js} +4 -4
  54. package/src/assets/web-panel/assets/{PersonalDataHub-Bs3l7Hlx.js → PersonalDataHub-DNIwSdwu.js} +6 -6
  55. package/src/assets/web-panel/assets/{Pipeline-DEBWbZuD.js → Pipeline-5B1S12wa.js} +1 -1
  56. package/src/assets/web-panel/assets/{Privacy-CjHBb6NU.js → Privacy-CMB6Ke5t.js} +1 -1
  57. package/src/assets/web-panel/assets/{ProjectInit-D2WipUz5.js → ProjectInit-D5PqTFiT.js} +2 -2
  58. package/src/assets/web-panel/assets/{ProjectSettings-B6WfnrGB.js → ProjectSettings-CbKNdSjV.js} +2 -2
  59. package/src/assets/web-panel/assets/Projects-ccXaHzYL.js +1 -0
  60. package/src/assets/web-panel/assets/{Providers-CCv5M_Dv.js → Providers-CJF5_-Gs.js} +1 -1
  61. package/src/assets/web-panel/assets/{QrScannerModal-CGthxU54.js → QrScannerModal-CT6iEAdi.js} +1 -1
  62. package/src/assets/web-panel/assets/{QuickAsk-CnPmXPFb.js → QuickAsk-Ci0h9mJ_.js} +1 -1
  63. package/src/assets/web-panel/assets/{Recommend-Df_tGEa9.js → Recommend-Da5mobZu.js} +1 -1
  64. package/src/assets/web-panel/assets/{RemoteSession-Z58N0Loe.js → RemoteSession-BaCY8eey.js} +2 -2
  65. package/src/assets/web-panel/assets/{Reputation-CZTBQ2Vt.js → Reputation-CaITfTsI.js} +1 -1
  66. package/src/assets/web-panel/assets/{Row-CdK3YpCQ.js → Row-DtUDamyP.js} +1 -1
  67. package/src/assets/web-panel/assets/{RssFeed-CFMVT5sb.js → RssFeed-DX27gFpg.js} +3 -3
  68. package/src/assets/web-panel/assets/{Search-DrF8RIvD.js → Search-DFL69osN.js} +1 -1
  69. package/src/assets/web-panel/assets/{Security-Ddk2f2DM.js → Security-BqGeoWv-.js} +3 -3
  70. package/src/assets/web-panel/assets/{Services-CCuK-VOo.js → Services-3z1WnEAc.js} +2 -2
  71. package/src/assets/web-panel/assets/{Skeleton-DxCpHzeM.js → Skeleton-C_OJQQ9Z.js} +1 -1
  72. package/src/assets/web-panel/assets/{Skills-t2oTDgcv.js → Skills-BY7aT6Mo.js} +1 -1
  73. package/src/assets/web-panel/assets/{Sla-Df63M9_R.js → Sla-BZv7DSaD.js} +1 -1
  74. package/src/assets/web-panel/assets/SpeechSettings-6lJKLhCn.js +1 -0
  75. package/src/assets/web-panel/assets/{SyncSettings-COd_tgPp.js → SyncSettings-B6D7STlI.js} +2 -2
  76. package/src/assets/web-panel/assets/{Tasks-CzDCcrik.js → Tasks-Co_FCZAO.js} +1 -1
  77. package/src/assets/web-panel/assets/{Templates-D-vfxTGA.js → Templates-CnY-9fgz.js} +1 -1
  78. package/src/assets/web-panel/assets/{Tenant-BlpT_Gxc.js → Tenant-B71yXfZ8.js} +1 -1
  79. package/src/assets/web-panel/assets/{Terminal-D5rq52Hg.js → Terminal-Dd_P7awo.js} +2 -2
  80. package/src/assets/web-panel/assets/{TimelineRenderer-DdoMndkK.js → TimelineRenderer-CvIEMyli.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tokens-BhgBsI6g.js → Tokens-DknFBGOi.js} +1 -1
  82. package/src/assets/web-panel/assets/{Trigger-DwwzoikZ.js → Trigger-D_4nJONB.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trust-HkTpzXFb.js → Trust-BNl21fa7.js} +1 -1
  84. package/src/assets/web-panel/assets/{UkeySign-D9nk6Ehe.js → UkeySign-CFrCI7uK.js} +1 -1
  85. package/src/assets/web-panel/assets/{VideoEditing-BKk0rfoy.js → VideoEditing-BVfY6JLg.js} +1 -1
  86. package/src/assets/web-panel/assets/{Wallet-IVWIU_Lq.js → Wallet-Cj9CAK0J.js} +4 -4
  87. package/src/assets/web-panel/assets/{WebAuthn-CFTCpfsG.js → WebAuthn-DcqZlzA3.js} +4 -4
  88. package/src/assets/web-panel/assets/{WorkflowEditor-Dnf4Obif.js → WorkflowEditor-Dfr_dMld.js} +1 -1
  89. package/src/assets/web-panel/assets/{chat-D2snERdj.js → chat-Yv6UF0AD.js} +1 -1
  90. package/src/assets/web-panel/assets/{colors-DKEjK1N1.js → colors-CDW_-1fs.js} +1 -1
  91. package/src/assets/web-panel/assets/{compact-item-BEDLwQdt.js → compact-item-BYOQvd-6.js} +1 -1
  92. package/src/assets/web-panel/assets/{createContext-DA9iW1a0.js → createContext-BCGO0BiP.js} +1 -1
  93. package/src/assets/web-panel/assets/devWarning-H-kXSuf-.js +1 -0
  94. package/src/assets/web-panel/assets/{hasIn-5l2xEcY9.js → hasIn-DY-70cfQ.js} +1 -1
  95. package/src/assets/web-panel/assets/{index-B7_W_rYd.js → index-366wfQBU.js} +1 -1
  96. package/src/assets/web-panel/assets/index-B0o4MeNK.js +1 -0
  97. package/src/assets/web-panel/assets/{index-CxEtQYdi.js → index-B9ZogJJM.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B00GeekA.js → index-B9m5QAMg.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-C7sKbM5s.js → index-BBs2mv5M.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-CX1x4AFn.js → index-BFv1hzF6.js} +1 -1
  101. package/src/assets/web-panel/assets/index-BVafOL_I.js +1 -0
  102. package/src/assets/web-panel/assets/{index-DU2TXJu-.js → index-BXlEx4UH.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-e-e40id6.js → index-BayRTE5w.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-DXet1xol.js → index-Bb9nyts1.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-D7z4zB_a.js → index-Bf_Va0S-.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-fccZmC_h.js → index-Br3wQLVY.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-Bqc8tdIF.js → index-BvK4fjkk.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BO9dQjpt.js → index-C40UdtlS.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Csfb-7hw.js → index-C4UJA2ju.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-Td8ZwyoC.js → index-CB_Iw73G.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BZ5lY2zx.js → index-CCwWp3mT.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-DpqtbXdE.js → index-CFa2fPCk.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-NJieh3T1.js → index-CIyHxV4u.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Dbkghqn_.js → index-CUP-A2_h.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-DqwPFbOb.js → index-CUo27q9J.js} +3 -3
  116. package/src/assets/web-panel/assets/{index-B4QYBliR.js → index-CaT8trvf.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BgfImyZI.js → index-CnZNbcux.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Dbd7eEex.js → index-Cy2NE6AO.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CbTPvp2_.js → index-CzeEEazr.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-5pW4t1iD.js → index-D--TEyDj.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-Dg2a9owQ.js → index-DCtsjhhT.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-B_eCoZgW.js → index-DLOf7BSz.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-7P1b8HZo.js → index-DM5c4pc-.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CRPrHE7h.js → index-DRFC2Qt0.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-Bq5P3piS.js → index-DT_qVaaV.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-CjWltbi_.js → index-DUDoRk9r.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-CkMKuqUs.js → index-Dg-AQYDf.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-DLoalqRX.js → index-DuIPq5MX.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CGlotREA.js → index-NYVBUAVN.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-yYEQXYaU.js → index-NaCESahy.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CmruhzFi.js → index-RjIMPG0u.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-fgYk0QXO.js → index-Y9akzgFO.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-DvV03Ayk.js → index-hZ0Eyrrw.js} +1 -1
  134. package/src/assets/web-panel/assets/{initDefaultProps-CPrcB1TC.js → initDefaultProps-CG99CcR4.js} +1 -1
  135. package/src/assets/web-panel/assets/{motion-BQ7mWRh_.js → motion-Z7MH0_0G.js} +1 -1
  136. package/src/assets/web-panel/assets/{move-CzOEq99p.js → move-BX67lOdq.js} +1 -1
  137. package/src/assets/web-panel/assets/{mtc-parser-BlQI5jrw.js → mtc-parser-CmAbG1fE.js} +1 -1
  138. package/src/assets/web-panel/assets/{omit-DlW4gxmv.js → omit-DiU5tI1_.js} +1 -1
  139. package/src/assets/web-panel/assets/{pickAttrs-BBYms5nP.js → pickAttrs-BGfvLrYL.js} +1 -1
  140. package/src/assets/web-panel/assets/{placementArrow-az2MPJ_7.js → placementArrow-CggLEgaJ.js} +1 -1
  141. package/src/assets/web-panel/assets/{responsiveObserve-D1-ibEol.js → responsiveObserve-t3nlghPZ.js} +1 -1
  142. package/src/assets/web-panel/assets/{slide-DHGqa4GA.js → slide-BkV4dL9s.js} +1 -1
  143. package/src/assets/web-panel/assets/{statusUtils-CYGDo6lD.js → statusUtils-qec1PUoC.js} +1 -1
  144. package/src/assets/web-panel/assets/{styleChecker-Cl2EM9K6.js → styleChecker-ChjX6T8D.js} +1 -1
  145. package/src/assets/web-panel/assets/{useFlexGapSupport-DdYhzuv1.js → useFlexGapSupport-B1jLoZcM.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFs-DWumPuBW.js → useFs-C3X53s4E.js} +1 -1
  147. package/src/assets/web-panel/assets/{usePersonalDataHub-DxAO-Aqi.js → usePersonalDataHub-DOvbbnkZ.js} +1 -1
  148. package/src/assets/web-panel/assets/{vnode-CplsQf_N.js → vnode-Ie0TEVFT.js} +1 -1
  149. package/src/assets/web-panel/assets/{zoom-Cw5HXNSG.js → zoom-CRUMVS8l.js} +1 -1
  150. package/src/assets/web-panel/index.html +1 -1
  151. package/src/command-help-index.json +3 -3
  152. package/src/commands/agent.js +18 -1
  153. package/src/commands/evolution-benchmark.js +72 -0
  154. package/src/commands/evolution.js +2 -0
  155. package/src/commands/governed-skill-marketplace.js +142 -0
  156. package/src/commands/marketplace.js +4 -1
  157. package/src/commands/serve.js +41 -0
  158. package/src/commands/skill.js +3 -0
  159. package/src/data/changelog.json +39 -0
  160. package/src/gateways/ws/ws-agent-handler.js +59 -2
  161. package/src/gateways/ws/ws-server.js +2 -0
  162. package/src/harness/golden-transcript.js +1 -0
  163. package/src/harness/prompt-compressor.js +51 -5
  164. package/src/harness/provider-backed-compaction.js +28 -1
  165. package/src/harness/remote-session-registry.js +15 -3
  166. package/src/index.js +30 -4
  167. package/src/lazy-dispatch.js +15 -1
  168. package/src/lib/advisor-runtime.js +55 -2
  169. package/src/lib/app-server/cli-agent-kernel-adapter.js +4 -0
  170. package/src/lib/app-server/graph-runtime.js +32 -0
  171. package/src/lib/app-server/server.js +45 -1
  172. package/src/lib/app-server/websocket-transport.js +23 -0
  173. package/src/lib/autonomous-agent.js +63 -13
  174. package/src/lib/cowork/ab-comparator-cli.js +4 -3
  175. package/src/lib/cowork/debate-review-cli.js +4 -3
  176. package/src/lib/cowork/decision-kb-cli.js +5 -0
  177. package/src/lib/cowork-adapter.js +38 -16
  178. package/src/lib/evolution/agent-evolution-ingress.js +95 -15
  179. package/src/lib/evolution/agent-evolution-runtime-composition.js +82 -0
  180. package/src/lib/evolution/agent-evolution-session-lifecycle.js +46 -0
  181. package/src/lib/evolution/agent-model-projection.js +217 -0
  182. package/src/lib/evolution/bounded-descriptor-read.js +29 -0
  183. package/src/lib/evolution/controlled-skill-pilot-ledger-adapter.js +551 -0
  184. package/src/lib/evolution/controlled-skill-production-pilot.js +308 -18
  185. package/src/lib/evolution/evidence-backed-wiki-maintainer.js +10 -1
  186. package/src/lib/evolution/evidence-json-text.js +236 -0
  187. package/src/lib/evolution/evolution-artifact-ports.js +202 -21
  188. package/src/lib/evolution/evolution-deployment-loader.js +369 -0
  189. package/src/lib/evolution/evolution-eval-child-evidence-ledger-adapter.js +373 -0
  190. package/src/lib/evolution/evolution-eval-gate.js +14 -1
  191. package/src/lib/evolution/evolution-eval-process-supervisor-worker.mjs +14 -0
  192. package/src/lib/evolution/evolution-eval-process-supervisor.js +607 -0
  193. package/src/lib/evolution/evolution-evidence-artifact-adapter.js +14 -1
  194. package/src/lib/evolution/evolution-evidence-projector.js +240 -37
  195. package/src/lib/evolution/evolution-file-witness.js +153 -30
  196. package/src/lib/evolution/evolution-ledger-ports.js +1027 -66
  197. package/src/lib/evolution/evolution-ledger.js +66 -2
  198. package/src/lib/evolution/evolution-raw-crypto-shred.js +29 -15
  199. package/src/lib/evolution/evolution-raw-deletion-ledger-adapter.js +865 -0
  200. package/src/lib/evolution/evolution-release-train-domain-stages.js +769 -0
  201. package/src/lib/evolution/evolution-release-train-ledger-adapter.js +335 -0
  202. package/src/lib/evolution/evolution-release-train-stage-output-ledger-adapter.js +333 -0
  203. package/src/lib/evolution/evolution-release-train.js +586 -0
  204. package/src/lib/evolution/evolution-workbench-batch-executor.js +101 -144
  205. package/src/lib/evolution/evolution-workbench-control-ports.js +203 -0
  206. package/src/lib/evolution/evolution-workbench-file-resources.js +403 -0
  207. package/src/lib/evolution/evolution-workbench-projection.js +152 -25
  208. package/src/lib/evolution/evolution-workbench-registry-source.js +482 -0
  209. package/src/lib/evolution/evolution-workbench-review-ledger-adapter.js +823 -0
  210. package/src/lib/evolution/evolution-workbench-review-protocol.js +157 -0
  211. package/src/lib/evolution/evolution-workbench-rollback-authorization.js +57 -0
  212. package/src/lib/evolution/evolution-workbench-rollback-ledger-adapter.js +1016 -0
  213. package/src/lib/evolution/evolution-workbench-runtime.js +133 -0
  214. package/src/lib/evolution/evolution-workbench-version-control.js +70 -36
  215. package/src/lib/evolution/evolvable-artifact-ledger-adapter.js +736 -0
  216. package/src/lib/evolution/governed-knowledge-artifact-lifecycle.js +364 -0
  217. package/src/lib/evolution/governed-knowledge-candidate-rejection.js +343 -0
  218. package/src/lib/evolution/governed-knowledge-dependency-authority.js +227 -44
  219. package/src/lib/evolution/governed-knowledge-dependency-ledger-executor.js +95 -83
  220. package/src/lib/evolution/governed-knowledge-merge-ledger-executor.js +29 -2
  221. package/src/lib/evolution/governed-knowledge-merge-publisher-authority.js +31 -3
  222. package/src/lib/evolution/governed-knowledge-record.js +148 -0
  223. package/src/lib/evolution/governed-knowledge-revocation-record.js +135 -0
  224. package/src/lib/evolution/governed-knowledge-skill-rollback.js +475 -0
  225. package/src/lib/evolution/governed-knowledge-sync-ledger-adapter.js +92 -6
  226. package/src/lib/evolution/governed-knowledge-sync-merge-publisher.js +57 -4
  227. package/src/lib/evolution/governed-knowledge-sync.js +332 -99
  228. package/src/lib/evolution/governed-knowledge-wiki-tombstone.js +462 -0
  229. package/src/lib/evolution/governed-skill-marketplace-badge.js +208 -0
  230. package/src/lib/evolution/governed-skill-marketplace-candidate.js +330 -0
  231. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +308 -0
  232. package/src/lib/evolution/governed-skill-marketplace-ledger-adapter.js +420 -0
  233. package/src/lib/evolution/governed-skill-marketplace.js +288 -5
  234. package/src/lib/evolution/governed-wiki-pruning-journal.js +302 -0
  235. package/src/lib/evolution/governed-wiki-pruning-ledger-adapter.js +459 -0
  236. package/src/lib/evolution/governed-wiki-pruning-maintenance.js +576 -0
  237. package/src/lib/evolution/governed-wiki-pruning-plan-authority.js +169 -0
  238. package/src/lib/evolution/governed-wiki-pruning-raw-shred.js +207 -0
  239. package/src/lib/evolution/governed-wiki-pruning-retrieval.js +587 -0
  240. package/src/lib/evolution/governed-wiki-pruning-runtime.js +153 -0
  241. package/src/lib/evolution/governed-wiki-pruning-skill-rollback.js +360 -0
  242. package/src/lib/evolution/governed-wiki-pruning.js +322 -143
  243. package/src/lib/evolution/independent-skill-revocation-source.js +231 -0
  244. package/src/lib/evolution/knowledge-wiki-source-admission.js +124 -0
  245. package/src/lib/evolution/knowledge-wiki-source-provenance.js +359 -0
  246. package/src/lib/evolution/progressive-canary-external-watchdog.js +578 -0
  247. package/src/lib/evolution/progressive-canary-traffic-worker.js +628 -0
  248. package/src/lib/evolution/progressive-canary-watchdog-file-store.js +285 -0
  249. package/src/lib/evolution/progressive-canary-watchdog-node-pki.js +265 -0
  250. package/src/lib/evolution/skill-candidate-registry.js +22 -0
  251. package/src/lib/evolution/skill-promotion-controller.js +25 -0
  252. package/src/lib/evolution/skill-promotion-review-ledger-adapter.js +100 -0
  253. package/src/lib/evolution/skill-registry-transition-ledger-adapter.js +131 -2
  254. package/src/lib/evolution/skill-release-registry.js +25 -4
  255. package/src/lib/evolution/skill-retrieval-revocation-authority.js +361 -0
  256. package/src/lib/evolution/skill-retrieval-revocation-ledger-adapter.js +346 -0
  257. package/src/lib/evolution/skill-revocation-propagation.js +467 -0
  258. package/src/lib/evolution/skill-target-matrix-eval.js +162 -11
  259. package/src/lib/evolution/skill-wiki-reconciliation.js +985 -0
  260. package/src/lib/evolution/skill-writer-inventory-manifest.js +15 -12
  261. package/src/lib/evolution/statistical-progressive-canary.js +845 -0
  262. package/src/lib/evolution/structured-memory-agent-control-plane.js +120 -0
  263. package/src/lib/evolution/structured-memory-authority-ledger-adapter.js +5 -1
  264. package/src/lib/evolution/structured-memory-promotion-receipt-writer.js +126 -0
  265. package/src/lib/evolution/wiki-informed-skill-proposer.js +127 -21
  266. package/src/lib/evolution/wiki-maintainer-ledger-adapter.js +760 -100
  267. package/src/lib/evolution/wiki-revision-protocol.js +120 -0
  268. package/src/lib/evolution/wiki-skill-proposal-ledger-adapter.js +307 -0
  269. package/src/lib/evolution/wiki-target-tombstone-revision.js +101 -0
  270. package/src/lib/evolution/wikiskill-benchmark-cli-host.js +178 -0
  271. package/src/lib/evolution/wikiskill-benchmark-execution-host.js +702 -0
  272. package/src/lib/evolution/wikiskill-benchmark-ledger-adapter.js +613 -0
  273. package/src/lib/evolution/wikiskill-benchmark.js +574 -0
  274. package/src/lib/goal-assess.js +17 -10
  275. package/src/lib/interactive-planner.js +9 -1
  276. package/src/lib/iteration-budget.js +16 -2
  277. package/src/lib/micro-compact.js +4 -1
  278. package/src/lib/model-failure-policy.js +21 -0
  279. package/src/lib/process-execution-broker/index.js +1 -0
  280. package/src/lib/process-execution-broker/windows-sandbox-helper.dll +0 -0
  281. package/src/lib/process-execution-broker/windows-sandbox-helper.exe +0 -0
  282. package/src/lib/process-execution-broker/windows-sandbox.cs +33 -15
  283. package/src/lib/read-file-page.js +191 -0
  284. package/src/lib/runnable-provider.js +2 -1
  285. package/src/lib/session-host-lease.js +11 -16
  286. package/src/lib/skill-retrieval-router.js +22 -1
  287. package/src/repl/agent-repl.js +127 -33
  288. package/src/runtime/agent-core.js +224 -80
  289. package/src/runtime/agent-runtime.js +43 -0
  290. package/src/runtime/coding-agent-contract-shared.cjs +7 -1
  291. package/src/runtime/fallback-model.js +143 -62
  292. package/src/runtime/headless-runner.js +54 -10
  293. package/src/runtime/headless-stream.js +53 -6
  294. package/src/runtime/runtime-factory.js +41 -2
  295. package/src/assets/web-panel/assets/Notes-CgU9DDo9.js +0 -7
  296. package/src/assets/web-panel/assets/OrderTableRenderer-CwHc15Zs.js +0 -1
  297. package/src/assets/web-panel/assets/Projects-FF_thRi6.js +0 -1
  298. package/src/assets/web-panel/assets/SpeechSettings-l7ox6KuX.js +0 -1
  299. package/src/assets/web-panel/assets/devWarning-DyhgpXPf.js +0 -1
  300. package/src/assets/web-panel/assets/index-Ck1jhFE0.js +0 -1
  301. package/src/assets/web-panel/assets/index-c8jJEHVs.js +0 -1
@@ -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 || null,
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, invokeToolFreeAdvisor } =
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
- invoke: (request) =>
4845
- _runReplMeteredModelCall({
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 <topic>")} Architecture decision tracking`,
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 { analyzeCodeKnowledgeGraph } =
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 analyzeCodeKnowledgeGraph({
8106
- target: coworkInput,
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.source} ${chalk.gray(`—${rel.type}→`)} ${rel.target}\n`,
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 { analyzeDecisions } =
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 analyzeDecisions({
8145
- target: coworkInput,
8146
- llmOptions: { provider, model, baseUrl, apiKey },
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 <topic>",
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: _runReplDirectTool,
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
- void runBtwSideQuestion(concurrentBtw, { concurrent: true });
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 (_pendingLines.length && !_runtimeLedgerTerminalLatch.isTripped()) {
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
- await fireSessionHook(_hookDb, HookEvents.SessionEnd, {
10198
- sessionId,
10199
- messageCount: messages.length,
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
  }