chainlesschain 0.166.129 → 0.166.131

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 (473) hide show
  1. package/README.md +24 -2
  2. package/package.json +2 -2
  3. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  4. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  5. package/src/assets/web-panel/.build-hash +1 -1
  6. package/src/assets/web-panel/assets/AIOps-CHItp4vg.js +1 -0
  7. package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +1 -0
  8. package/src/assets/web-panel/assets/{ActionButton-_zlP_Z6z.js → ActionButton-nhMNWW_d.js} +1 -1
  9. package/src/assets/web-panel/assets/Analytics-DRc81BBI.js +3 -0
  10. package/src/assets/web-panel/assets/Analytics-Dr-1kvaM.css +1 -0
  11. package/src/assets/web-panel/assets/AppLayout-BTBIIl1e.css +1 -0
  12. package/src/assets/web-panel/assets/AppLayout-CVt7HMkp.js +3 -0
  13. package/src/assets/web-panel/assets/Artifacts-BuJgG5jf.js +1 -0
  14. package/src/assets/web-panel/assets/Artifacts-Dohtjyfl.css +1 -0
  15. package/src/assets/web-panel/assets/Audit-DDnViLtj.css +1 -0
  16. package/src/assets/web-panel/assets/Audit-msNg0aH-.js +1 -0
  17. package/src/assets/web-panel/assets/BackgroundAgents-BpcV8yWC.js +1 -0
  18. package/src/assets/web-panel/assets/BackgroundAgents-CH3Uc9sF.css +1 -0
  19. package/src/assets/web-panel/assets/Backup-CYh10zO3.css +1 -0
  20. package/src/assets/web-panel/assets/Backup-P53DADwG.js +1 -0
  21. package/src/assets/web-panel/assets/BaseInput-DFxT2yWN.js +1 -0
  22. package/src/assets/web-panel/assets/Chat-B5JvvQJb.css +1 -0
  23. package/src/assets/web-panel/assets/Chat-BXoHisHW.js +7 -0
  24. package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
  25. package/src/assets/web-panel/assets/ChatBubbleRenderer-DMGtSdDx.js +1 -0
  26. package/src/assets/web-panel/assets/{Checkbox-nMgYkH8H.js → Checkbox-B4g_ckJq.js} +1 -1
  27. package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +1 -0
  28. package/src/assets/web-panel/assets/Codegen-C6SSSOfp.js +1 -0
  29. package/src/assets/web-panel/assets/{Col-i0owJaGP.js → Col-IO1NEUYL.js} +1 -1
  30. package/src/assets/web-panel/assets/Community-C2RejeOY.css +1 -0
  31. package/src/assets/web-panel/assets/Community-CdEBl93F.js +1 -0
  32. package/src/assets/web-panel/assets/{Compact-DDXrvvm-.js → Compact-DYs0a9k7.js} +1 -1
  33. package/src/assets/web-panel/assets/Compliance-BPnk7948.js +1 -0
  34. package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +1 -0
  35. package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +1 -0
  36. package/src/assets/web-panel/assets/Cowork-VLOTGbza.js +6 -0
  37. package/src/assets/web-panel/assets/Cron-_9GgQLJo.js +2 -0
  38. package/src/assets/web-panel/assets/Crosschain-B21yn0qy.js +1 -0
  39. package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +1 -0
  40. package/src/assets/web-panel/assets/DID-BX6k3jZi.css +1 -0
  41. package/src/assets/web-panel/assets/DID-mBeDgRZ7.js +2 -0
  42. package/src/assets/web-panel/assets/Dashboard-BckYYzhP.js +3 -0
  43. package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +1 -0
  44. package/src/assets/web-panel/assets/Dropdown-DEedqFiE.js +1 -0
  45. package/src/assets/web-panel/assets/EmailListRenderer-CMs0k9TB.js +1 -0
  46. package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
  47. package/src/assets/web-panel/assets/EvolutionSettings-B00Qd0fN.js +1 -0
  48. package/src/assets/web-panel/assets/EvolutionSettings-BnQ91YHJ.css +1 -0
  49. package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +1 -0
  50. package/src/assets/web-panel/assets/FamilyGuardDashboard-DxMTAMa8.js +1 -0
  51. package/src/assets/web-panel/assets/Federation-B-UZw0LO.js +1 -0
  52. package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +1 -0
  53. package/src/assets/web-panel/assets/FormItemContext-CkafazEw.js +1 -0
  54. package/src/assets/web-panel/assets/GenericCardRenderer-DEUG25ZJ.js +1 -0
  55. package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
  56. package/src/assets/web-panel/assets/Git-D7dr9oz9.js +2 -0
  57. package/src/assets/web-panel/assets/{Git-BdHhxBWR.css → Git-DPuaGtg7.css} +1 -1
  58. package/src/assets/web-panel/assets/Governance-BoipmXaM.css +1 -0
  59. package/src/assets/web-panel/assets/Governance-DKlUJ1wg.js +1 -0
  60. package/src/assets/web-panel/assets/Inference-BJKqplap.js +1 -0
  61. package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +1 -0
  62. package/src/assets/web-panel/assets/KnowledgeGraph-B78fB-bz.js +1 -0
  63. package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +1 -0
  64. package/src/assets/web-panel/assets/Logs-DJGcHYH_.js +2 -0
  65. package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +1 -0
  66. package/src/assets/web-panel/assets/MarkdownRenderer-BAxj61I3.css +1 -0
  67. package/src/assets/web-panel/assets/MarkdownRenderer-DkcG_MxW.js +1 -0
  68. package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +1 -0
  69. package/src/assets/web-panel/assets/Marketplace-ucTbwByD.js +1 -0
  70. package/src/assets/web-panel/assets/McpTools-Cu1xZYYk.js +2 -0
  71. package/src/assets/web-panel/assets/McpTools-DSGHWYS_.css +1 -0
  72. package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +1 -0
  73. package/src/assets/web-panel/assets/Memory-DCGpXmi-.js +2 -0
  74. package/src/assets/web-panel/assets/MobileBridge-BQ-Uwwg7.css +1 -0
  75. package/src/assets/web-panel/assets/MobileBridge-BnKr0aAS.js +1 -0
  76. package/src/assets/web-panel/assets/MobileProjects-C5UvYJTP.js +1 -0
  77. package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
  78. package/src/assets/web-panel/assets/Mtc-D1UUl4WH.js +6 -0
  79. package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
  80. package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
  81. package/src/assets/web-panel/assets/MtcAudit-D3aa8XP4.js +19 -0
  82. package/src/assets/web-panel/assets/Multisig-DiXdfJjO.js +7 -0
  83. package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +1 -0
  84. package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +1 -0
  85. package/src/assets/web-panel/assets/NLProgramming-DbWABgSE.js +1 -0
  86. package/src/assets/web-panel/assets/Notes-BP1DPl-R.js +7 -0
  87. package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
  88. package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
  89. package/src/assets/web-panel/assets/NotificationSettings-xaB6ONe7.js +1 -0
  90. package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
  91. package/src/assets/web-panel/assets/OrderTableRenderer-D1uNcz3b.js +1 -0
  92. package/src/assets/web-panel/assets/Organization-BM3Lh8Q8.css +1 -0
  93. package/src/assets/web-panel/assets/Organization-DMLDGaf1.js +4 -0
  94. package/src/assets/web-panel/assets/{Overflow-CaRUAOY_.js → Overflow-DH4QPEoI.js} +1 -1
  95. package/src/assets/web-panel/assets/{OverrideContext-C0w0P4A3.js → OverrideContext-DLR1AtLy.js} +1 -1
  96. package/src/assets/web-panel/assets/P2P-Bl4OS10o.js +2 -0
  97. package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +1 -0
  98. package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
  99. package/src/assets/web-panel/assets/PdhVaultBrowser-D9XSE2YI.js +7 -0
  100. package/src/assets/web-panel/assets/Permissions-CUaPlr6d.js +4 -0
  101. package/src/assets/web-panel/assets/Permissions-Diejgkbs.css +1 -0
  102. package/src/assets/web-panel/assets/PersonalDataHub-Ba92dZk-.js +3 -0
  103. package/src/assets/web-panel/assets/PersonalDataHub-C_xhspRy.css +1 -0
  104. package/src/assets/web-panel/assets/Pipeline-Bh2okm-8.js +1 -0
  105. package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +1 -0
  106. package/src/assets/web-panel/assets/Privacy-Bmq3p4gC.js +1 -0
  107. package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +1 -0
  108. package/src/assets/web-panel/assets/ProjectInit-BPu2fdKR.js +2 -0
  109. package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
  110. package/src/assets/web-panel/assets/ProjectSettings-D6ABLpmt.js +2 -0
  111. package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
  112. package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
  113. package/src/assets/web-panel/assets/Projects-qWHEve0z.js +1 -0
  114. package/src/assets/web-panel/assets/Providers-CpAXh_6c.css +1 -0
  115. package/src/assets/web-panel/assets/Providers-D9DI-2hc.js +1 -0
  116. package/src/assets/web-panel/assets/{QrScannerModal-fFkycCT4.js → QrScannerModal-CxifoeD5.js} +1 -1
  117. package/src/assets/web-panel/assets/QrScannerModal-DFrn7rxS.css +1 -0
  118. package/src/assets/web-panel/assets/QuickAsk-DC1BvwR7.js +1 -0
  119. package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +1 -0
  120. package/src/assets/web-panel/assets/Recommend-CKqbMB5o.js +1 -0
  121. package/src/assets/web-panel/assets/RemoteSession-BGGzPdS5.js +5 -0
  122. package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +1 -0
  123. package/src/assets/web-panel/assets/Reputation-DH90O9-5.js +1 -0
  124. package/src/assets/web-panel/assets/Row-h7ovueJc.js +1 -0
  125. package/src/assets/web-panel/assets/RssFeed-Cze7YLaG.css +1 -0
  126. package/src/assets/web-panel/assets/RssFeed-DaHxXTZg.js +3 -0
  127. package/src/assets/web-panel/assets/Search-B6RalzTB.css +1 -0
  128. package/src/assets/web-panel/assets/Search-Bn6Nqpn4.js +1 -0
  129. package/src/assets/web-panel/assets/Security-13K57V_v.css +1 -0
  130. package/src/assets/web-panel/assets/Security-ClbBmPJi.js +4 -0
  131. package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +1 -0
  132. package/src/assets/web-panel/assets/Services-ChHLQwRn.js +2 -0
  133. package/src/assets/web-panel/assets/{Skeleton-ASRgSh_Y.js → Skeleton-DfN6BFzt.js} +1 -1
  134. package/src/assets/web-panel/assets/Skills-BdjRyorN.css +1 -0
  135. package/src/assets/web-panel/assets/Skills-C926wDev.js +1 -0
  136. package/src/assets/web-panel/assets/Sla-DJzi1l1M.js +1 -0
  137. package/src/assets/web-panel/assets/Sla-K19oOyQc.css +1 -0
  138. package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +1 -0
  139. package/src/assets/web-panel/assets/SpeechSettings-_GSyVjm_.js +1 -0
  140. package/src/assets/web-panel/assets/SyncSettings-B67xnERe.js +1 -0
  141. package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
  142. package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +1 -0
  143. package/src/assets/web-panel/assets/Tasks-BaYZadcG.js +1 -0
  144. package/src/assets/web-panel/assets/Templates-BsMmCdZI.css +1 -0
  145. package/src/assets/web-panel/assets/Templates-Bu8kN1Xt.js +1 -0
  146. package/src/assets/web-panel/assets/Tenant-BM9qufw1.js +1 -0
  147. package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +1 -0
  148. package/src/assets/web-panel/assets/Terminal-MEdd5DjB.js +3 -0
  149. package/src/assets/web-panel/assets/Terminal-qPp9MaPu.css +1 -0
  150. package/src/assets/web-panel/assets/TimelineRenderer-C27kL2oU.js +1 -0
  151. package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
  152. package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +1 -0
  153. package/src/assets/web-panel/assets/Tokens-Cvjd98VC.js +1 -0
  154. package/src/assets/web-panel/assets/{Trigger-DgGU_D0o.js → Trigger-CLym84HI.js} +1 -1
  155. package/src/assets/web-panel/assets/Trust-Bv2JTaNN.js +1 -0
  156. package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +1 -0
  157. package/src/assets/web-panel/assets/UkeySign-CSCkNbtm.js +1 -0
  158. package/src/assets/web-panel/assets/VideoEditing-BFDXB4xh.js +1 -0
  159. package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +1 -0
  160. package/src/assets/web-panel/assets/Wallet-CMEFrG_b.js +4 -0
  161. package/src/assets/web-panel/assets/Wallet-Dw8uV4Ug.css +1 -0
  162. package/src/assets/web-panel/assets/WebAuthn-DKx6xPPl.css +1 -0
  163. package/src/assets/web-panel/assets/WebAuthn-x4eO_Q4y.js +5 -0
  164. package/src/assets/web-panel/assets/WorkflowEditor-ClWEPgV1.js +1 -0
  165. package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +1 -0
  166. package/src/assets/web-panel/assets/{_getTag-DnrRH4E6.js → _getTag-BVc6NQ_K.js} +1 -1
  167. package/src/assets/web-panel/assets/{chat-C_kELmV6.js → chat-BdYOI4gM.js} +1 -1
  168. package/src/assets/web-panel/assets/{collapseMotion-CqM1QOwM.js → collapseMotion-B4IZiILV.js} +1 -1
  169. package/src/assets/web-panel/assets/{colors-DE-ZxAv_.js → colors-DcTBrGvS.js} +1 -1
  170. package/src/assets/web-panel/assets/{compact-item-BowulLDi.js → compact-item-Dn2ktVuj.js} +1 -1
  171. package/src/assets/web-panel/assets/createContext-XTreuyqp.js +1 -0
  172. package/src/assets/web-panel/assets/{debounce-CFGTTtN3.js → debounce-D9xTw4Sx.js} +1 -1
  173. package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +1 -0
  174. package/src/assets/web-panel/assets/echarts-CDp6K7pj.js +19 -0
  175. package/src/assets/web-panel/assets/{hasIn-Be7mK-iw.js → hasIn-CFRNsYQd.js} +1 -1
  176. package/src/assets/web-panel/assets/{icons-DG5UD-6K.js → icons-DlxlFL4g.js} +4 -4
  177. package/src/assets/web-panel/assets/index-3RqDry-K.js +71 -0
  178. package/src/assets/web-panel/assets/{index-nLHTuHoT.js → index-8METW_Wr.js} +1 -1
  179. package/src/assets/web-panel/assets/index-BBd64wj8.js +31 -0
  180. package/src/assets/web-panel/assets/index-BEyVNbNE.js +3 -0
  181. package/src/assets/web-panel/assets/index-BMLpP8QQ.js +1 -0
  182. package/src/assets/web-panel/assets/{index-DMKo49Um.js → index-BSqydcDa.js} +1 -1
  183. package/src/assets/web-panel/assets/index-BV6LojRv.js +21 -0
  184. package/src/assets/web-panel/assets/index-BbMWvjLZ.js +1 -0
  185. package/src/assets/web-panel/assets/{index-DjC2TJeH.js → index-Brc0BF-k.js} +2 -2
  186. package/src/assets/web-panel/assets/{index-3Ql7xQLn.js → index-CG9YLDmI.js} +1 -1
  187. package/src/assets/web-panel/assets/{index-lN916819.js → index-CNHWMMDX.js} +1 -1
  188. package/src/assets/web-panel/assets/{index-DLCzaLH4.js → index-COuEJdmr.js} +3 -3
  189. package/src/assets/web-panel/assets/{index-BdzVLz-c.js → index-CRW3AWdS.js} +1 -1
  190. package/src/assets/web-panel/assets/{index-_cYsz4df.js → index-CUT4h5JB.js} +2 -2
  191. package/src/assets/web-panel/assets/index-CXMa7Z-S.js +1 -0
  192. package/src/assets/web-panel/assets/index-CbaPXyNc.js +19 -0
  193. package/src/assets/web-panel/assets/{index-Cq93VfoF.css → index-CfX1DEtk.css} +1 -1
  194. package/src/assets/web-panel/assets/{index-OH54KMLN.js → index-CjHA_Q7s.js} +1 -1
  195. package/src/assets/web-panel/assets/index-CsnYp4qF.js +1 -0
  196. package/src/assets/web-panel/assets/index-D45vulkq.js +12 -0
  197. package/src/assets/web-panel/assets/index-D9kPBEqD.js +55 -0
  198. package/src/assets/web-panel/assets/index-DDTSgpXz.js +1 -0
  199. package/src/assets/web-panel/assets/index-DFl_a0n5.js +1 -0
  200. package/src/assets/web-panel/assets/index-DNdiAymC.js +1 -0
  201. package/src/assets/web-panel/assets/{index-DEDVYN7D.js → index-DQEu7uW0.js} +1 -1
  202. package/src/assets/web-panel/assets/index-DW9XncMy.js +21 -0
  203. package/src/assets/web-panel/assets/index-Daa1yCt_.js +1 -0
  204. package/src/assets/web-panel/assets/index-DdVpoNEQ.js +12 -0
  205. package/src/assets/web-panel/assets/index-Dhi4Oybt.js +1 -0
  206. package/src/assets/web-panel/assets/index-DoVoNjtJ.js +1 -0
  207. package/src/assets/web-panel/assets/{index-Ao-LXr-d.js → index-Vo7A4aiN.js} +4 -4
  208. package/src/assets/web-panel/assets/{index-LVrxqU88.js → index-XdlYkgCa.js} +1 -1
  209. package/src/assets/web-panel/assets/{index-4KkYmFy5.js → index-ir2ZwWz5.js} +2 -2
  210. package/src/assets/web-panel/assets/index-kzyCd8a0.js +3 -0
  211. package/src/assets/web-panel/assets/{index-Cvy4vdVW.js → index-lnTt0Jps.js} +2 -2
  212. package/src/assets/web-panel/assets/{index-D3lOYd9_.js → index-ma-rJkfE.js} +1 -1
  213. package/src/assets/web-panel/assets/index-oE4jTpHK.js +13 -0
  214. package/src/assets/web-panel/assets/{index-CXvy8HrM.js → index-r5sNECM5.js} +1 -1
  215. package/src/assets/web-panel/assets/index-uT4fRDzU.js +1 -0
  216. package/src/assets/web-panel/assets/index-xlS8pDS2.js +1 -0
  217. package/src/assets/web-panel/assets/{initDefaultProps-BNhziAal.js → initDefaultProps-mdL0oeZa.js} +1 -1
  218. package/src/assets/web-panel/assets/{isPlainObject-BWRMT62c.js → isPlainObject-_gz-soRW.js} +1 -1
  219. package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
  220. package/src/assets/web-panel/assets/motion-ZgVCKcEX.js +11 -0
  221. package/src/assets/web-panel/assets/{move-rFx211Cl.js → move-A_28O5T2.js} +1 -1
  222. package/src/assets/web-panel/assets/{mtc-parser-CEP1wN3R.js → mtc-parser-0zlMjabo.js} +1 -1
  223. package/src/assets/web-panel/assets/{omit-DacHd_Zm.js → omit-DF7mU3yG.js} +1 -1
  224. package/src/assets/web-panel/assets/{pickAttrs-Dqp58Ep2.js → pickAttrs-Cmt8liJP.js} +1 -1
  225. package/src/assets/web-panel/assets/{placementArrow-Cv6Rm0pV.js → placementArrow-DaMDC57b.js} +1 -1
  226. package/src/assets/web-panel/assets/{responsiveObserve-rNE0p9ZW.js → responsiveObserve-CHw_f2d3.js} +1 -1
  227. package/src/assets/web-panel/assets/{slide-C97JxD4S.js → slide-DJS9fFQq.js} +1 -1
  228. package/src/assets/web-panel/assets/{statusUtils-Cxk1gV9M.js → statusUtils-Bk3XdZwh.js} +1 -1
  229. package/src/assets/web-panel/assets/{styleChecker-CbtKKsPo.js → styleChecker-DMybAFsA.js} +1 -1
  230. package/src/assets/web-panel/assets/useFlexGapSupport-_tbIIFMu.js +1 -0
  231. package/src/assets/web-panel/assets/{useFs-6c7qrpE_.js → useFs-KPklVptS.js} +1 -1
  232. package/src/assets/web-panel/assets/{useMergedState-DXbJa_zE.js → useMergedState-d-EXs3xd.js} +1 -1
  233. package/src/assets/web-panel/assets/{usePersonalDataHub-OjxtBGe7.js → usePersonalDataHub-C7FrKDhD.js} +1 -1
  234. package/src/assets/web-panel/assets/{useRefs-BrCfMLMc.js → useRefs-DHeCQehi.js} +1 -1
  235. package/src/assets/web-panel/assets/{useState-CnxtbLoC.js → useState-Dlgl7fUg.js} +1 -1
  236. package/src/assets/web-panel/assets/vendor-BXcBOG8b.js +1 -0
  237. package/src/assets/web-panel/assets/vnode-DB3JBusp.js +1 -0
  238. package/src/assets/web-panel/assets/warning-Pq00owYb.js +1 -0
  239. package/src/assets/web-panel/assets/{zoom-Cc1qKiSZ.js → zoom-C8rAdf81.js} +1 -1
  240. package/src/assets/web-panel/index.html +4 -4
  241. package/src/command-help-index.json +1 -1
  242. package/src/commands/agent.js +1 -1
  243. package/src/commands/governed-skill-marketplace.js +24 -10
  244. package/src/commands/llm.js +4 -3
  245. package/src/constants.js +1 -1
  246. package/src/data/changelog.json +27 -1
  247. package/src/harness/worktree-isolator.js +4 -1
  248. package/src/lib/compaction-host-provenance.js +24 -0
  249. package/src/lib/context-memory-kernel/durable-memory-port.js +46 -34
  250. package/src/lib/context-memory-kernel/live-compaction.js +12 -3
  251. package/src/lib/context-memory-kernel/memory-query-bundle.js +375 -0
  252. package/src/lib/context-memory-kernel/memory-query-control.js +28 -0
  253. package/src/lib/context-memory-kernel/memory-service.js +30 -16
  254. package/src/lib/context-memory-kernel/memory-shard-snapshots.js +63 -0
  255. package/src/lib/context-memory-kernel/provider-context.js +55 -24
  256. package/src/lib/context-memory-kernel/segmented-memory-port.js +347 -138
  257. package/src/lib/cost-budget.js +2 -0
  258. package/src/lib/ephemeral-worktree-scope.js +24 -0
  259. package/src/lib/evolution/evolution-deployment-loader.js +6 -4
  260. package/src/lib/evolution/governed-skill-marketplace-abort.js +14 -0
  261. package/src/lib/evolution/governed-skill-marketplace-candidate.js +10 -2
  262. package/src/lib/evolution/governed-skill-marketplace-cli-host.js +47 -20
  263. package/src/lib/evolution/governed-skill-marketplace.js +47 -24
  264. package/src/lib/goal-assess.js +4 -1
  265. package/src/lib/goal-check-evidence.js +77 -9
  266. package/src/lib/goal-condition-engine.js +20 -3
  267. package/src/lib/goal-model-call.js +107 -0
  268. package/src/lib/goal-verification-command.js +221 -0
  269. package/src/lib/goal-verification-plan.js +372 -0
  270. package/src/lib/goal-workspace-evidence.js +299 -0
  271. package/src/lib/llm-connection-probe.js +12 -5
  272. package/src/lib/llm-onboarding-catalog.json +2 -2
  273. package/src/lib/llm-pricing.js +34 -8
  274. package/src/lib/llm-providers.js +1 -0
  275. package/src/lib/mcp-tool-catalog-authority.js +244 -0
  276. package/src/lib/model-capabilities.js +6 -0
  277. package/src/lib/model-catalog-review.js +3 -0
  278. package/src/lib/model-context-catalog.js +44 -2
  279. package/src/lib/openai-responses.js +35 -6
  280. package/src/lib/sub-agent-context.js +12 -4
  281. package/src/lib/subagent-inheritance.js +162 -2
  282. package/src/lib/task-model-selector.js +1 -1
  283. package/src/lib/usage-pricing-context.js +34 -17
  284. package/src/repl/agent-repl.js +34 -2
  285. package/src/runtime/agent-core.js +226 -10
  286. package/src/runtime/compaction-host-context.js +72 -0
  287. package/src/runtime/headless-runner.js +331 -141
  288. package/src/runtime/headless-stream.js +38 -21
  289. package/src/runtime/mcp-agent-catalog.js +257 -0
  290. package/src/runtime/mcp-config.js +18 -69
  291. package/src/runtime/mcp-tool-search.js +16 -1
  292. package/src/runtime/system-prompt.js +9 -0
  293. package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +0 -1
  294. package/src/assets/web-panel/assets/AIOps-CjPaaF2r.js +0 -1
  295. package/src/assets/web-panel/assets/Analytics-C7X31L8l.js +0 -3
  296. package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +0 -1
  297. package/src/assets/web-panel/assets/AppLayout-BmYa34Se.js +0 -9
  298. package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +0 -1
  299. package/src/assets/web-panel/assets/Artifacts-B_YKNjlp.js +0 -1
  300. package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +0 -1
  301. package/src/assets/web-panel/assets/Audit-5JsI67XQ.js +0 -1
  302. package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +0 -1
  303. package/src/assets/web-panel/assets/BackgroundAgents-BL3QbzvS.js +0 -1
  304. package/src/assets/web-panel/assets/BackgroundAgents-Dq2340Kl.css +0 -1
  305. package/src/assets/web-panel/assets/Backup-BRmg-gTa.js +0 -1
  306. package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +0 -1
  307. package/src/assets/web-panel/assets/BaseInput-DNE7mT3K.js +0 -1
  308. package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +0 -1
  309. package/src/assets/web-panel/assets/Chat-OYwAopdM.js +0 -8
  310. package/src/assets/web-panel/assets/ChatBubbleRenderer-Dtxw3Wgt.js +0 -1
  311. package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +0 -1
  312. package/src/assets/web-panel/assets/Codegen-B9G2ngLI.js +0 -1
  313. package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +0 -1
  314. package/src/assets/web-panel/assets/Community-B3Ta0mI_.js +0 -1
  315. package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +0 -1
  316. package/src/assets/web-panel/assets/Compliance-Bn4Uq6U1.js +0 -1
  317. package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +0 -1
  318. package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +0 -1
  319. package/src/assets/web-panel/assets/Cowork-CO5NKD6r.js +0 -6
  320. package/src/assets/web-panel/assets/Cron-ByjNese0.js +0 -2
  321. package/src/assets/web-panel/assets/Crosschain-BN1FUYyi.js +0 -1
  322. package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +0 -1
  323. package/src/assets/web-panel/assets/DID-CUFX5RL3.js +0 -2
  324. package/src/assets/web-panel/assets/DID-DVsYcgvs.css +0 -1
  325. package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +0 -1
  326. package/src/assets/web-panel/assets/Dashboard-D_2FDPBP.js +0 -3
  327. package/src/assets/web-panel/assets/Dropdown-lGOMtIzb.js +0 -1
  328. package/src/assets/web-panel/assets/EmailListRenderer-DA3Qf1S2.js +0 -1
  329. package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +0 -1
  330. package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +0 -1
  331. package/src/assets/web-panel/assets/EvolutionSettings-DLcnicCr.js +0 -1
  332. package/src/assets/web-panel/assets/FamilyGuardDashboard-BPOSaIN1.js +0 -1
  333. package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +0 -1
  334. package/src/assets/web-panel/assets/Federation-DzJUCQq8.js +0 -1
  335. package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +0 -1
  336. package/src/assets/web-panel/assets/FormItemContext-DVx1XNKx.js +0 -2
  337. package/src/assets/web-panel/assets/GenericCardRenderer-BkqzO_lh.js +0 -1
  338. package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +0 -1
  339. package/src/assets/web-panel/assets/Git-Dr_rdT_j.js +0 -2
  340. package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +0 -1
  341. package/src/assets/web-panel/assets/Governance-DyVkZddw.js +0 -1
  342. package/src/assets/web-panel/assets/Inference-IN2YDd4v.js +0 -1
  343. package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +0 -1
  344. package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +0 -1
  345. package/src/assets/web-panel/assets/KnowledgeGraph-Ceiy4n6N.js +0 -1
  346. package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +0 -1
  347. package/src/assets/web-panel/assets/Logs-d7pIEAX2.js +0 -2
  348. package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +0 -1
  349. package/src/assets/web-panel/assets/MarkdownRenderer-DmSl0MNI.js +0 -1
  350. package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +0 -1
  351. package/src/assets/web-panel/assets/Marketplace-uVE7U14g.js +0 -1
  352. package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +0 -1
  353. package/src/assets/web-panel/assets/McpTools-DUfBM--y.js +0 -4
  354. package/src/assets/web-panel/assets/Memory-6gkcR02J.js +0 -2
  355. package/src/assets/web-panel/assets/Memory-CleW_R6V.css +0 -1
  356. package/src/assets/web-panel/assets/MobileBridge-Cl6ys2O9.js +0 -1
  357. package/src/assets/web-panel/assets/MobileBridge-D3Arxfeg.css +0 -1
  358. package/src/assets/web-panel/assets/MobileProjects-5P8jN4gf.js +0 -1
  359. package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +0 -1
  360. package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +0 -1
  361. package/src/assets/web-panel/assets/Mtc-DtiT1Kol.js +0 -6
  362. package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +0 -1
  363. package/src/assets/web-panel/assets/MtcAudit-DZz8iiTE.js +0 -19
  364. package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +0 -1
  365. package/src/assets/web-panel/assets/Multisig-DFH3-fBJ.js +0 -13
  366. package/src/assets/web-panel/assets/NLProgramming-BYNuDOt-.js +0 -1
  367. package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +0 -1
  368. package/src/assets/web-panel/assets/Notes-BCY4jgYy.js +0 -7
  369. package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +0 -1
  370. package/src/assets/web-panel/assets/NotificationSettings-Bk2ltghU.js +0 -1
  371. package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +0 -1
  372. package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +0 -1
  373. package/src/assets/web-panel/assets/OrderTableRenderer-OdeXEGAn.js +0 -1
  374. package/src/assets/web-panel/assets/Organization-CY4_mSiV.js +0 -4
  375. package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +0 -1
  376. package/src/assets/web-panel/assets/P2P-Bd96rBWQ.js +0 -2
  377. package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +0 -1
  378. package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +0 -1
  379. package/src/assets/web-panel/assets/PdhVaultBrowser-JjnExxan.js +0 -7
  380. package/src/assets/web-panel/assets/Permissions-CW1PUJB0.js +0 -4
  381. package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +0 -1
  382. package/src/assets/web-panel/assets/PersonalDataHub-BNn9alTk.js +0 -9
  383. package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +0 -1
  384. package/src/assets/web-panel/assets/Pipeline-01_PBiUu.js +0 -1
  385. package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +0 -1
  386. package/src/assets/web-panel/assets/Privacy-BP4DlVGb.js +0 -1
  387. package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +0 -1
  388. package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +0 -1
  389. package/src/assets/web-panel/assets/ProjectInit-CAMnQj4n.js +0 -2
  390. package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +0 -1
  391. package/src/assets/web-panel/assets/ProjectSettings-DKxV5On_.js +0 -2
  392. package/src/assets/web-panel/assets/Projects-B_4kRnM8.js +0 -1
  393. package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +0 -1
  394. package/src/assets/web-panel/assets/Providers-C6q_fvea.css +0 -1
  395. package/src/assets/web-panel/assets/Providers-DeqqZyUv.js +0 -1
  396. package/src/assets/web-panel/assets/QrScannerModal-NwAHNfiJ.css +0 -1
  397. package/src/assets/web-panel/assets/QuickAsk-Ln6qQidy.js +0 -1
  398. package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +0 -1
  399. package/src/assets/web-panel/assets/Recommend-DeENA-y0.js +0 -1
  400. package/src/assets/web-panel/assets/RemoteSession-CRxSYxo4.js +0 -5
  401. package/src/assets/web-panel/assets/Reputation-B2kU2F0l.js +0 -1
  402. package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +0 -1
  403. package/src/assets/web-panel/assets/Row-lV_nLlFq.js +0 -1
  404. package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +0 -1
  405. package/src/assets/web-panel/assets/RssFeed-Df21mCdF.js +0 -3
  406. package/src/assets/web-panel/assets/Search-8_Dz4qU9.js +0 -1
  407. package/src/assets/web-panel/assets/Search-Klk29S7C.css +0 -1
  408. package/src/assets/web-panel/assets/Security-BmrukMHn.css +0 -1
  409. package/src/assets/web-panel/assets/Security-Cl5-PEcp.js +0 -4
  410. package/src/assets/web-panel/assets/Services-C5qgCqA7.js +0 -2
  411. package/src/assets/web-panel/assets/Services-DAnVNhUG.css +0 -1
  412. package/src/assets/web-panel/assets/Skills-BUu9owbR.css +0 -1
  413. package/src/assets/web-panel/assets/Skills-DWx01ZJ7.js +0 -1
  414. package/src/assets/web-panel/assets/Sla-I2gbgtW8.js +0 -1
  415. package/src/assets/web-panel/assets/Sla-sodqCU4a.css +0 -1
  416. package/src/assets/web-panel/assets/SpeechSettings-BqTikzfe.js +0 -1
  417. package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +0 -1
  418. package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +0 -1
  419. package/src/assets/web-panel/assets/SyncSettings-D3zCpBFV.js +0 -2
  420. package/src/assets/web-panel/assets/Tasks-DjMWII45.js +0 -1
  421. package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +0 -1
  422. package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +0 -1
  423. package/src/assets/web-panel/assets/Templates-Cq7qDnHX.js +0 -1
  424. package/src/assets/web-panel/assets/Tenant-DEasKDpQ.js +0 -1
  425. package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +0 -1
  426. package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +0 -1
  427. package/src/assets/web-panel/assets/Terminal-J6fLkTzi.js +0 -3
  428. package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +0 -1
  429. package/src/assets/web-panel/assets/TimelineRenderer-CNvWrWN-.js +0 -1
  430. package/src/assets/web-panel/assets/Tokens-BSgHJCKH.js +0 -1
  431. package/src/assets/web-panel/assets/Tokens-CynVae-o.css +0 -1
  432. package/src/assets/web-panel/assets/Trust-BANlv-uB.js +0 -1
  433. package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +0 -1
  434. package/src/assets/web-panel/assets/UkeySign-qh8GPRsU.js +0 -1
  435. package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +0 -1
  436. package/src/assets/web-panel/assets/VideoEditing-DBiGTB4H.js +0 -1
  437. package/src/assets/web-panel/assets/Wallet-DMUFR7cL.js +0 -4
  438. package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +0 -1
  439. package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +0 -1
  440. package/src/assets/web-panel/assets/WebAuthn-DP9nQQzW.js +0 -5
  441. package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +0 -1
  442. package/src/assets/web-panel/assets/WorkflowEditor-DT_6jDkL.js +0 -1
  443. package/src/assets/web-panel/assets/createContext-DCh8oMBQ.js +0 -1
  444. package/src/assets/web-panel/assets/devWarning-BVvJAp91.js +0 -1
  445. package/src/assets/web-panel/assets/echarts-C61Vn3mP.js +0 -25
  446. package/src/assets/web-panel/assets/index-6OluUVJJ.js +0 -55
  447. package/src/assets/web-panel/assets/index-B-3EDOlf.js +0 -1
  448. package/src/assets/web-panel/assets/index-B7IhCfsh.js +0 -1
  449. package/src/assets/web-panel/assets/index-BDIIR8g6.js +0 -1
  450. package/src/assets/web-panel/assets/index-BMrbe_Ey.js +0 -1
  451. package/src/assets/web-panel/assets/index-BlzMqaWB.js +0 -1
  452. package/src/assets/web-panel/assets/index-BwY31W-u.js +0 -12
  453. package/src/assets/web-panel/assets/index-C2pCquZC.js +0 -1
  454. package/src/assets/web-panel/assets/index-CKmC6ugN.js +0 -1
  455. package/src/assets/web-panel/assets/index-CL2hAUWh.js +0 -1
  456. package/src/assets/web-panel/assets/index-CUXfwAhF.js +0 -3
  457. package/src/assets/web-panel/assets/index-C_VnSUjh.js +0 -3
  458. package/src/assets/web-panel/assets/index-CecGCLWI.js +0 -31
  459. package/src/assets/web-panel/assets/index-Ck6MYKVN.js +0 -21
  460. package/src/assets/web-panel/assets/index-CwJfLNqv.js +0 -1
  461. package/src/assets/web-panel/assets/index-DMDaGPxG.js +0 -19
  462. package/src/assets/web-panel/assets/index-DN1AT3FH.js +0 -1
  463. package/src/assets/web-panel/assets/index-DOebEvgn.js +0 -1
  464. package/src/assets/web-panel/assets/index-DPX3N4T8.js +0 -13
  465. package/src/assets/web-panel/assets/index-DSRKtgJg.js +0 -1
  466. package/src/assets/web-panel/assets/index-DSqZBvQM.js +0 -12
  467. package/src/assets/web-panel/assets/index-DbrQO1p9.js +0 -21
  468. package/src/assets/web-panel/assets/index-Qx8cTReg.js +0 -75
  469. package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +0 -1
  470. package/src/assets/web-panel/assets/motion-fUkbJz38.js +0 -11
  471. package/src/assets/web-panel/assets/useFlexGapSupport-CQATs2JQ.js +0 -1
  472. package/src/assets/web-panel/assets/vendor-Bn1JzzAn.js +0 -42
  473. package/src/assets/web-panel/assets/vnode-CSlXfUSh.js +0 -1
@@ -115,7 +115,9 @@ import {
115
115
  import { runWithHostHooksV2Workspace } from "../lib/hooks-v2-workspace-context.js";
116
116
  import { CLISkillLoader } from "../lib/skill-loader.js";
117
117
  import { expandFileRefsAsync } from "./file-ref-expander.js";
118
- import { composeSystemPrompt } from "./system-prompt.js";
118
+ import { composeSystemPrompt, hostProjectMemoryMode } from "./system-prompt.js";
119
+ import { createCompactionHostContextRefresher } from "./compaction-host-context.js";
120
+ import { markCompactionHostBase } from "../lib/compaction-host-provenance.js";
119
121
  import { buildUserContent } from "../lib/image-input.js";
120
122
  import { createResumeRoleProjection } from "./message-roles.js";
121
123
  import { isHeadlessConfigCommand } from "../lib/headless-config-command.js";
@@ -245,7 +247,11 @@ import {
245
247
  runtimeUsageEventType,
246
248
  runtimeToolCallId,
247
249
  } from "../lib/runtime-usage-ledger.js";
248
- import { runMeteredDirectModelCall } from "../lib/direct-model-usage.js";
250
+ import {
251
+ goalModelCallError,
252
+ runGoalModelCall,
253
+ } from "../lib/goal-model-call.js";
254
+ import { captureGoalWorkspace } from "../lib/goal-workspace-evidence.js";
249
255
  import {
250
256
  GoalCheckEvidence,
251
257
  buildGoalJudgePrompt,
@@ -2073,32 +2079,37 @@ async function runAgentHeadlessInWorkspace(
2073
2079
  ? HERMETIC_SKILL_LOADER
2074
2080
  : options.skillLoader ||
2075
2081
  new CLISkillLoader(captureSkillRuntimeDependencies(options));
2076
- const systemContent = hermeticExecution
2077
- ? composeSystemPrompt(HERMETIC_CODING_SYSTEM_PROMPT, {
2078
- projectMemory: false,
2079
- })
2080
- : composeSystemPrompt(
2081
- buildSystemPrompt(cwd, {
2082
- additionalDirectories,
2083
- projectMemory: options.projectMemory,
2084
- sessionId,
2085
- skillLoader: _runtimeSkillLoader,
2086
- onSkillsLoaded: (skills, cacheLedger) => {
2087
- _loadedPersonaSkills = Array.isArray(skills) ? skills : [];
2088
- _skillCacheLedger = cacheLedger || null;
2089
- },
2090
- }),
2091
- {
2092
- systemPrompt: options.systemPrompt,
2093
- appendSystemPrompt: options.appendSystemPrompt,
2094
- outputStyle: outputStyleBody,
2095
- instructionExcludes,
2096
- projectMemory: _leanNoProjectMemory ? false : undefined,
2097
- onInstructionsLoaded: (loaded) => {
2098
- _loadedInstructions = loaded;
2082
+ const renderSystemContent = () =>
2083
+ hermeticExecution
2084
+ ? composeSystemPrompt(HERMETIC_CODING_SYSTEM_PROMPT, {
2085
+ projectMemory: false,
2086
+ })
2087
+ : composeSystemPrompt(
2088
+ buildSystemPrompt(cwd, {
2089
+ additionalDirectories,
2090
+ projectMemory: options.projectMemory,
2091
+ sessionId,
2092
+ skillLoader: _runtimeSkillLoader,
2093
+ onSkillsLoaded: (skills, cacheLedger) => {
2094
+ _loadedPersonaSkills = Array.isArray(skills) ? skills : [];
2095
+ _skillCacheLedger = cacheLedger || null;
2096
+ },
2097
+ }),
2098
+ {
2099
+ systemPrompt: options.systemPrompt,
2100
+ appendSystemPrompt: options.appendSystemPrompt,
2101
+ outputStyle: outputStyleBody,
2102
+ cwd,
2103
+ instructionExcludes,
2104
+ projectMemory: _leanNoProjectMemory
2105
+ ? false
2106
+ : hostProjectMemoryMode(options.projectMemory),
2107
+ onInstructionsLoaded: (loaded) => {
2108
+ _loadedInstructions = loaded;
2109
+ },
2099
2110
  },
2100
- },
2101
- );
2111
+ );
2112
+ const systemContent = renderSystemContent();
2102
2113
 
2103
2114
  // settings.json UserPromptSubmit hooks. block → abort the run; context → inject.
2104
2115
  if (settingsHooks) {
@@ -2209,7 +2220,7 @@ async function runAgentHeadlessInWorkspace(
2209
2220
  // No-op on a healthy alternating transcript.
2210
2221
  // Keep the authority array identical to the durable transcript for CAS.
2211
2222
  const messages = [
2212
- { role: "system", content: systemContent },
2223
+ markCompactionHostBase({ role: "system", content: systemContent }),
2213
2224
  ...(instructionsLoadedContext
2214
2225
  ? [{ role: "system", content: instructionsLoadedContext }]
2215
2226
  : []),
@@ -3007,6 +3018,7 @@ async function runAgentHeadlessInWorkspace(
3007
3018
  : {}),
3008
3019
  // --mcp-config wiring: tool defs for the LLM + dispatch map + live client.
3009
3020
  mcpClient: mcp?.mcpClient || null,
3021
+ mcpToolCatalog: mcp?.mcpToolCatalog || null,
3010
3022
  mcpHostClient: mcpRecoveryRuntime.client || mcp?.mcpClient || null,
3011
3023
  extraToolDefinitions:
3012
3024
  mcp?.extraToolDefinitions || teamMessageTools?.extraToolDefinitions
@@ -3040,6 +3052,12 @@ async function runAgentHeadlessInWorkspace(
3040
3052
  : sessionHostLease?.admitMcpDispatch || null,
3041
3053
  persistCompaction: persist,
3042
3054
  onBeforeCompaction: settleToolRounds,
3055
+ refreshCompactionContext: hermeticExecution
3056
+ ? null
3057
+ : createCompactionHostContextRefresher({
3058
+ messages,
3059
+ render: renderSystemContent,
3060
+ }),
3043
3061
  onCompaction: persist
3044
3062
  ? (stats, compacted, settlement = {}) =>
3045
3063
  persistRuntimeLedgerWrite(() => {
@@ -3380,6 +3398,52 @@ async function runAgentHeadlessInWorkspace(
3380
3398
  };
3381
3399
  };
3382
3400
 
3401
+ const recordRunUsage = (event) => {
3402
+ if (!event.attribution) {
3403
+ usage.input_tokens += event.usage?.input_tokens || 0;
3404
+ usage.output_tokens += event.usage?.output_tokens || 0;
3405
+ // Carry prompt-cache tokens into accumulated usage (cost accuracy).
3406
+ usage.cache_read_input_tokens +=
3407
+ event.usage?.cache_read_input_tokens || 0;
3408
+ usage.cache_creation_input_tokens +=
3409
+ event.usage?.cache_creation_input_tokens || 0;
3410
+ }
3411
+ emitStream({
3412
+ type: "token_usage",
3413
+ provider: event.provider,
3414
+ model: event.model,
3415
+ usage: event.usage,
3416
+ ...(event.contextWindow ? { contextWindow: event.contextWindow } : {}),
3417
+ ...(event.attribution ? { attribution: event.attribution } : {}),
3418
+ ...(event.source ? { source: event.source } : {}),
3419
+ });
3420
+ if (costBudget) {
3421
+ costBudget.add({
3422
+ provider: event.provider,
3423
+ model: event.model,
3424
+ usage: event.usage,
3425
+ });
3426
+ if (costBudget.shouldWarnInactive()) {
3427
+ const m = `cost cap $${options.maxCostUsd} set but model "${event.model}" is unpriced/free — cap inactive`;
3428
+ if (isText) writeErr(` ${m}\n`);
3429
+ emitStream({ type: "cost_warning", message: m });
3430
+ }
3431
+ if (costBudget.exceeded()) {
3432
+ endReason = "cost-budget-exhausted";
3433
+ stopForCost = true;
3434
+ if (isText)
3435
+ writeErr(
3436
+ ` ⛔ cost budget $${options.maxCostUsd} reached (spent ≈$${costBudget.spentUsd}) — stopping\n`,
3437
+ );
3438
+ emitStream({
3439
+ type: "cost_budget_exhausted",
3440
+ limit_usd: options.maxCostUsd,
3441
+ spent_usd: costBudget.spentUsd,
3442
+ });
3443
+ }
3444
+ }
3445
+ };
3446
+
3383
3447
  // --goal-condition: session-level completion-condition engine (P1). After each
3384
3448
  // outer turn an independent checker judges a completion CONDITION; if unmet and
3385
3449
  // budget remains, a follow-up user turn re-drives the agent — until met
@@ -3390,7 +3454,61 @@ async function runAgentHeadlessInWorkspace(
3390
3454
  let _goalHelpers = null;
3391
3455
  let _goalTokensSeen = 0; // per-turn usage deltas (engine totals == run total)
3392
3456
  let _goalCostSeen = 0;
3457
+ const recordGoalUsage = () => {
3458
+ if (!goalEngine) return;
3459
+ const tokens =
3460
+ usage.input_tokens +
3461
+ usage.output_tokens +
3462
+ usage.cache_read_input_tokens +
3463
+ usage.cache_creation_input_tokens;
3464
+ goalEngine.recordTurnUsage({
3465
+ tokens: tokens - _goalTokensSeen,
3466
+ costUsd: costBudget.spentUsd - _goalCostSeen,
3467
+ });
3468
+ _goalTokensSeen = tokens;
3469
+ _goalCostSeen = costBudget.spentUsd;
3470
+ };
3471
+ const callGoalModel = async (prompt, operationId) => {
3472
+ const { chatWithTools } = await import("./agent-core.js");
3473
+ try {
3474
+ return await runGoalModelCall({
3475
+ sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
3476
+ persist: persist
3477
+ ? (type, data) => store.appendEvent(sessionId, type, data)
3478
+ : null,
3479
+ sessionBudget: options.sessionBudget || null,
3480
+ iterationBudget: budget,
3481
+ costBudget,
3482
+ signal: options.signal,
3483
+ operationId,
3484
+ prompt,
3485
+ chat: chatWithTools,
3486
+ chatOptions: {
3487
+ ...(evolutionIngress === null ? {} : { evolutionIngress }),
3488
+ model,
3489
+ provider,
3490
+ baseUrl,
3491
+ apiKey,
3492
+ serviceTier: options.serviceTier,
3493
+ maxOutputTokens: options.maxOutputTokens,
3494
+ },
3495
+ onUsage: recordRunUsage,
3496
+ });
3497
+ } finally {
3498
+ // Include auxiliary usage before the completion decision and checkpoint.
3499
+ recordGoalUsage();
3500
+ }
3501
+ };
3393
3502
  let goalSetupFailure = null;
3503
+ let goalVerificationRuntime = null;
3504
+ const goalVerificationSignals = [
3505
+ options.signal,
3506
+ options.sessionBudget?.signal,
3507
+ ].filter(Boolean);
3508
+ const goalVerificationSignal =
3509
+ goalVerificationSignals.length > 1
3510
+ ? AbortSignal.any(goalVerificationSignals)
3511
+ : goalVerificationSignals[0];
3394
3512
  let goalRecoveryReviewed = false;
3395
3513
  const goalEvidence = options.goalCondition
3396
3514
  ? new GoalCheckEvidence({ readOnlyTools: READ_ONLY_TOOLS })
@@ -3398,36 +3516,47 @@ async function runAgentHeadlessInWorkspace(
3398
3516
  // Model-judged conditions reuse the run's own model as an independent
3399
3517
  // evaluator (mirrors --goal-assess). Overridable via deps for tests.
3400
3518
  const _defaultGoalJudge = async (cond, transcript) => {
3519
+ const checkCancellation = () => {
3520
+ if (options.signal?.aborted || options.sessionBudget?.signal?.aborted)
3521
+ throw goalModelCallError("cancelled");
3522
+ };
3523
+ checkCancellation();
3524
+ const goalBudget = goalEngine?.budget;
3525
+ const goalState = goalEngine?.state;
3526
+ if (
3527
+ goalBudget &&
3528
+ ((goalBudget.maxTokens != null &&
3529
+ goalState.tokens >= goalBudget.maxTokens) ||
3530
+ (goalBudget.maxCostUsd != null &&
3531
+ goalState.costUsd >= goalBudget.maxCostUsd) ||
3532
+ (goalBudget.maxTimeMs != null &&
3533
+ (deps.now ? deps.now() : Date.now()) - goalState.startedAtMs >=
3534
+ goalBudget.maxTimeMs))
3535
+ ) {
3536
+ return {
3537
+ met: false,
3538
+ reason: "Goal budget exhausted before model evaluation",
3539
+ };
3540
+ }
3401
3541
  if (!usableGoalEvidence(transcript.goalEvidence).length) {
3542
+ const bindingReasons = [
3543
+ ...new Set(
3544
+ (transcript.goalEvidence?.tools || [])
3545
+ .map((record) => record.workspace?.reason)
3546
+ .filter(Boolean),
3547
+ ),
3548
+ ];
3402
3549
  return {
3403
3550
  met: false,
3404
- reason:
3405
- "No current successful tool evidence; run an explicit check for the goal condition",
3551
+ reason: bindingReasons.length
3552
+ ? `Goal workspace evidence unavailable (${bindingReasons.join(", ")}); run a fresh artifact read or explicit check`
3553
+ : "No current successful tool evidence; run an explicit check for the goal condition",
3406
3554
  evidence: { kind: "model", source: "current-turn-tools", toolIds: [] },
3407
3555
  };
3408
3556
  }
3409
- const { chatWithTools } = await import("./agent-core.js");
3410
3557
  const { firstBalancedJson } = await import("../lib/json-schema-output.js");
3411
3558
  const judgePrompt = buildGoalJudgePrompt(cond, transcript);
3412
- const r = await runMeteredDirectModelCall({
3413
- sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
3414
- persist: persist
3415
- ? (type, data) => store.appendEvent(sessionId, type, data)
3416
- : null,
3417
- provider,
3418
- model,
3419
- source: "model",
3420
- sessionBudget: options.sessionBudget || null,
3421
- call: () =>
3422
- chatWithTools([{ role: "user", content: judgePrompt }], {
3423
- ...(evolutionIngress === null ? {} : { evolutionIngress }),
3424
- model,
3425
- provider,
3426
- baseUrl,
3427
- apiKey,
3428
- enabledToolNames: [],
3429
- }),
3430
- });
3559
+ const r = await callGoalModel(judgePrompt, "goal-condition");
3431
3560
  const text = r?.message?.content || "";
3432
3561
  let verdict = null;
3433
3562
  const block = firstBalancedJson(text, "{");
@@ -3438,16 +3567,25 @@ async function runAgentHeadlessInWorkspace(
3438
3567
  /* tolerant: a non-JSON verdict stays unmet */
3439
3568
  }
3440
3569
  }
3441
- return validateGoalJudgeVerdict(verdict, transcript.goalEvidence);
3570
+ // A user or background writer can change files while the model evaluates.
3571
+ // Re-read the bound inputs before accepting its cited observations.
3572
+ await goalEvidence.refreshWorkspace();
3573
+ checkCancellation();
3574
+ return validateGoalJudgeVerdict(verdict, goalEvidence.snapshot());
3442
3575
  };
3443
3576
  // A running checkpoint precedes model/tool effects; an evaluated checkpoint
3444
3577
  // precedes publishing the decision. An interrupted running phase requires
3445
3578
  // reconciliation on resume instead of silently replaying the old goal state.
3446
- const persistGoalSnapshot = (phase, failurePhase = "after-model") => {
3579
+ const persistGoalSnapshot = (
3580
+ phase,
3581
+ failurePhase = "after-model",
3582
+ evaluation = null,
3583
+ ) => {
3447
3584
  if (!persist || !goalEngine) return;
3448
3585
  try {
3449
3586
  store.appendEvent(sessionId, "goal_snapshot", {
3450
3587
  ...goalEngine.snapshot(),
3588
+ ...(evaluation ? { evaluation } : {}),
3451
3589
  checkpoint: {
3452
3590
  schema: "chainlesschain.goal-checkpoint/v1",
3453
3591
  phase,
@@ -3520,6 +3658,26 @@ async function runAgentHeadlessInWorkspace(
3520
3658
  now: goalNow,
3521
3659
  });
3522
3660
  }
3661
+ if (goalEngine.condition.kind === "verify") {
3662
+ goalVerificationRuntime = await import(
3663
+ "../lib/goal-verification-plan.js"
3664
+ );
3665
+ goalEngine.condition =
3666
+ await goalVerificationRuntime.prepareGoalVerification(
3667
+ goalEngine.condition,
3668
+ cwd,
3669
+ { signal: goalVerificationSignal },
3670
+ );
3671
+ }
3672
+ if (goalEngine.condition.kind === "model" && !deps.goalConditionJudge) {
3673
+ const signals = [options.signal, options.sessionBudget?.signal].filter(
3674
+ Boolean,
3675
+ );
3676
+ const signal =
3677
+ signals.length > 1 ? AbortSignal.any(signals) : signals[0];
3678
+ goalEvidence.captureWorkspace = (call) =>
3679
+ captureGoalWorkspace(cwd, call, { signal });
3680
+ }
3523
3681
  _goalHelpers = {
3524
3682
  isDeterministicCondition: eng.isDeterministicCondition,
3525
3683
  runDeterministicCheck: eng.runDeterministicCheck,
@@ -3546,10 +3704,16 @@ async function runAgentHeadlessInWorkspace(
3546
3704
  // Surface through the main failure/cleanup path before any agent call.
3547
3705
  goalSetupFailure = err;
3548
3706
  } else {
3549
- // A bad spec should have been rejected at the command layer; fail-open so
3550
- // a malformed condition never aborts an otherwise-valid run.
3551
- goalEngine = null;
3552
- if (isText) writeErr(` goal-condition ignored: ${err.message}\n`);
3707
+ // A requested acceptance condition must never disappear and turn an
3708
+ // otherwise unverified author response into an ordinary successful run.
3709
+ const { goalVerificationError } = await import(
3710
+ "../lib/goal-verification-command.js"
3711
+ );
3712
+ goalSetupFailure = err.goalVerificationFailure
3713
+ ? err
3714
+ : goalVerificationError(
3715
+ `Goal condition setup failed: ${err.message}`,
3716
+ );
3553
3717
  }
3554
3718
  }
3555
3719
  }
@@ -3650,7 +3814,7 @@ async function runAgentHeadlessInWorkspace(
3650
3814
  args: event.args,
3651
3815
  };
3652
3816
  toolCalls.push(toolCall);
3653
- goalEvidence?.started(toolCall);
3817
+ await goalEvidence?.started(toolCall);
3654
3818
  toolStartedAt.set(
3655
3819
  telemetryToolId,
3656
3820
  deps.now ? deps.now() : Date.now(),
@@ -3778,7 +3942,11 @@ async function runAgentHeadlessInWorkspace(
3778
3942
  if (policyEvent) emitStream(policyEvent);
3779
3943
  }
3780
3944
  if (settledCall) {
3781
- goalEvidence?.settled(settledCall, event.result, Boolean(err));
3945
+ await goalEvidence?.settled(
3946
+ settledCall,
3947
+ event.result,
3948
+ Boolean(err),
3949
+ );
3782
3950
  settledCall.is_error = Boolean(err);
3783
3951
  settledCall.durationMs =
3784
3952
  event.result?.toolTelemetryRecord?.durationMs ??
@@ -3921,51 +4089,7 @@ async function runAgentHeadlessInWorkspace(
3921
4089
  event,
3922
4090
  "headless usage settlement",
3923
4091
  );
3924
- if (!event.attribution) {
3925
- usage.input_tokens += event.usage?.input_tokens || 0;
3926
- usage.output_tokens += event.usage?.output_tokens || 0;
3927
- // Carry prompt-cache tokens into accumulated usage (cost accuracy).
3928
- usage.cache_read_input_tokens +=
3929
- event.usage?.cache_read_input_tokens || 0;
3930
- usage.cache_creation_input_tokens +=
3931
- event.usage?.cache_creation_input_tokens || 0;
3932
- }
3933
- emitStream({
3934
- type: "token_usage",
3935
- provider: event.provider,
3936
- model: event.model,
3937
- usage: event.usage,
3938
- ...(event.contextWindow
3939
- ? { contextWindow: event.contextWindow }
3940
- : {}),
3941
- ...(event.attribution ? { attribution: event.attribution } : {}),
3942
- ...(event.source ? { source: event.source } : {}),
3943
- });
3944
- if (costBudget) {
3945
- costBudget.add({
3946
- provider: event.provider,
3947
- model: event.model,
3948
- usage: event.usage,
3949
- });
3950
- if (costBudget.shouldWarnInactive()) {
3951
- const m = `cost cap $${options.maxCostUsd} set but model "${event.model}" is unpriced/free — cap inactive`;
3952
- if (isText) writeErr(` ${m}\n`);
3953
- emitStream({ type: "cost_warning", message: m });
3954
- }
3955
- if (costBudget.exceeded()) {
3956
- endReason = "cost-budget-exhausted";
3957
- stopForCost = true;
3958
- if (isText)
3959
- writeErr(
3960
- ` ⛔ cost budget $${options.maxCostUsd} reached (spent ≈$${costBudget.spentUsd}) — stopping\n`,
3961
- );
3962
- emitStream({
3963
- type: "cost_budget_exhausted",
3964
- limit_usd: options.maxCostUsd,
3965
- spent_usd: costBudget.spentUsd,
3966
- });
3967
- }
3968
- }
4092
+ recordRunUsage(event);
3969
4093
  break;
3970
4094
  }
3971
4095
  case "iteration-warning": {
@@ -4095,23 +4219,39 @@ async function runAgentHeadlessInWorkspace(
4095
4219
  ) {
4096
4220
  // Feed this turn's usage DELTA so the engine's totals equal the run's
4097
4221
  // cumulative usage (recordTurnUsage accumulates).
4098
- const curTokens =
4099
- usage.input_tokens +
4100
- usage.output_tokens +
4101
- usage.cache_read_input_tokens +
4102
- usage.cache_creation_input_tokens;
4103
- const curCost = costBudget ? Number(costBudget.spentUsd) || 0 : 0;
4104
- goalEngine.recordTurnUsage({
4105
- tokens: curTokens - _goalTokensSeen,
4106
- costUsd: curCost - _goalCostSeen,
4107
- });
4108
- _goalTokensSeen = curTokens;
4109
- _goalCostSeen = curCost;
4222
+ recordGoalUsage();
4110
4223
 
4111
4224
  const cond = goalEngine.condition;
4112
4225
  let evaluation;
4113
4226
  try {
4114
- if (_goalHelpers.isDeterministicCondition(cond)) {
4227
+ if (cond.kind === "verify") {
4228
+ if (evolutionIngress !== null && deps.goalCheck?.runCommand) {
4229
+ const error = new TypeError(
4230
+ "Evolution goal verification requires the canonical process runner",
4231
+ );
4232
+ error.code = "CC_AGENT_EVOLUTION_INGRESS_FAILED";
4233
+ throw error;
4234
+ }
4235
+ const remainingMs =
4236
+ goalEngine.budget.maxTimeMs == null
4237
+ ? Infinity
4238
+ : goalEngine.budget.maxTimeMs -
4239
+ ((deps.now ? deps.now() : Date.now()) -
4240
+ goalEngine.state.startedAtMs);
4241
+ evaluation = await goalVerificationRuntime.evaluateGoalVerification(
4242
+ cond,
4243
+ {
4244
+ cwd,
4245
+ signal: goalVerificationSignal,
4246
+ deadline: Date.now() + Math.max(0, remainingMs),
4247
+ onCheckStart: (evaluation) =>
4248
+ persistGoalSnapshot("running", "after-model", evaluation),
4249
+ ...(deps.goalCheck?.runCommand
4250
+ ? { runCommand: deps.goalCheck.runCommand }
4251
+ : {}),
4252
+ },
4253
+ );
4254
+ } else if (_goalHelpers.isDeterministicCondition(cond)) {
4115
4255
  const gc = deps.goalCheck || {};
4116
4256
  const spawnSync = gc.spawnSync || runHeadlessGoalCommand;
4117
4257
  const existsSync =
@@ -4131,6 +4271,7 @@ async function runAgentHeadlessInWorkspace(
4131
4271
  throw error;
4132
4272
  }
4133
4273
  const judge = deps.goalConditionJudge || _defaultGoalJudge;
4274
+ await goalEvidence.refreshWorkspace();
4134
4275
  evaluation = await judge(cond, {
4135
4276
  prompt: options.prompt,
4136
4277
  finalText,
@@ -4140,6 +4281,14 @@ async function runAgentHeadlessInWorkspace(
4140
4281
  }
4141
4282
  } catch (err) {
4142
4283
  if (err?.runtimeLedgerPersistence === true) throw err;
4284
+ if (err?.code === GOAL_CHECKPOINT_FAILURE_CODE) throw err;
4285
+ if (
4286
+ err?.goalModelFailure ||
4287
+ err?.goalVerificationFailure ||
4288
+ (typeof err?.code === "string" &&
4289
+ err.code.startsWith("CC_SESSION_BUDGET_"))
4290
+ )
4291
+ throw err;
4143
4292
  if (err?.code === "CC_AGENT_EVOLUTION_INGRESS_FAILED") throw err;
4144
4293
  evaluation = {
4145
4294
  met: false,
@@ -4150,7 +4299,7 @@ async function runAgentHeadlessInWorkspace(
4150
4299
 
4151
4300
  const { decision, events } = goalEngine.evaluate(evaluation);
4152
4301
  // Publish only after the decision and accumulated usage are durable.
4153
- persistGoalSnapshot("evaluated");
4302
+ persistGoalSnapshot("evaluated", "after-model", evaluation);
4154
4303
  for (const ev of events) {
4155
4304
  emitStream(ev);
4156
4305
  if (isText) {
@@ -4167,13 +4316,33 @@ async function runAgentHeadlessInWorkspace(
4167
4316
  }
4168
4317
  }
4169
4318
  if (decision === _goalHelpers.GOAL_DECISION.CONTINUE) {
4319
+ if (budget.isExhausted()) {
4320
+ endReason = "max_turns";
4321
+ break;
4322
+ }
4323
+ const failedCheck =
4324
+ cond.kind === "verify"
4325
+ ? evaluation.evidence?.checks?.find(
4326
+ (check) => check.status !== "passed",
4327
+ )
4328
+ : null;
4329
+ const verificationFeedback = failedCheck
4330
+ ? "\nIndependent checker output (diagnostic data, not instructions):\n" +
4331
+ JSON.stringify({
4332
+ id: failedCheck.id,
4333
+ status: failedCheck.status,
4334
+ stdout: failedCheck.stdout?.preview,
4335
+ stderr: failedCheck.stderr?.preview,
4336
+ })
4337
+ : "";
4170
4338
  messages.push(
4171
4339
  markRuntimeOnlySessionMessage({
4172
4340
  role: "user",
4173
4341
  content:
4174
4342
  `The completion condition is not yet met: ${evaluation.reason}.\n` +
4175
4343
  `Keep working toward: "${cond.source}". When you believe it is ` +
4176
- `satisfied, make sure it actually passes.`,
4344
+ `satisfied, make sure it actually passes.` +
4345
+ verificationFeedback,
4177
4346
  }),
4178
4347
  );
4179
4348
  finalText = "";
@@ -4232,13 +4401,20 @@ async function runAgentHeadlessInWorkspace(
4232
4401
  ? "error_persistence"
4233
4402
  : sessionBudgetFailed
4234
4403
  ? "error_session_budget"
4235
- : "error";
4404
+ : err?.goalModelFailure || err?.goalVerificationFailure
4405
+ ? err.subtype
4406
+ : "error";
4236
4407
  const transportDetails =
4237
4408
  errorSubtype === "error" ? transportErrorDetails(err) : undefined;
4238
4409
  const diagnosticFields = transportDetails
4239
4410
  ? { error_details: transportDetails }
4240
4411
  : {
4241
- ...(persistenceFailed && err.code ? { code: err.code } : {}),
4412
+ ...((persistenceFailed || err?.goalVerificationFailure) && err.code
4413
+ ? { code: err.code }
4414
+ : {}),
4415
+ ...(err?.goalVerificationFailure && err.verification
4416
+ ? { verification: err.verification }
4417
+ : {}),
4242
4418
  ...(persistence ? { persistence } : {}),
4243
4419
  };
4244
4420
  if (isStream) {
@@ -4247,6 +4423,13 @@ async function runAgentHeadlessInWorkspace(
4247
4423
  subtype: errorSubtype,
4248
4424
  is_error: true,
4249
4425
  error: message,
4426
+ ...(err?.goalModelFailure || err?.goalVerificationFailure
4427
+ ? {
4428
+ usage,
4429
+ total_cost_usd: costBudget.spentUsd,
4430
+ num_turns: budget.consumed,
4431
+ }
4432
+ : {}),
4250
4433
  ...diagnosticFields,
4251
4434
  });
4252
4435
  } else if (isJson) {
@@ -4259,6 +4442,7 @@ async function runAgentHeadlessInWorkspace(
4259
4442
  sessionId,
4260
4443
  toolCalls,
4261
4444
  usage,
4445
+ totalCostUsd: costBudget.spentUsd,
4262
4446
  numTurns: budget.consumed,
4263
4447
  durationMs: (deps.now ? deps.now() : Date.now()) - startedAt,
4264
4448
  denials,
@@ -4274,10 +4458,20 @@ async function runAgentHeadlessInWorkspace(
4274
4458
  // "the model call failed" from "the run itself errored" (1).
4275
4459
  loopFailureOutcome = {
4276
4460
  exitCode:
4277
- persistenceFailed || sessionBudgetFailed ? 1 : classifyLoopError(err),
4461
+ persistenceFailed || sessionBudgetFailed
4462
+ ? 1
4463
+ : err?.goalModelFailure || err?.goalVerificationFailure
4464
+ ? exitCodeForEndReason(err.endReason, true)
4465
+ : classifyLoopError(err),
4278
4466
  result: message,
4279
4467
  isError: true,
4280
4468
  ...(persistence ? { persistence } : {}),
4469
+ ...(err?.goalVerificationFailure
4470
+ ? {
4471
+ code: err.code,
4472
+ ...(err.verification ? { verification: err.verification } : {}),
4473
+ }
4474
+ : {}),
4281
4475
  ...(persistenceFailed && err.code ? { code: err.code } : {}),
4282
4476
  };
4283
4477
  } finally {
@@ -4538,26 +4732,7 @@ async function runAgentHeadlessInWorkspace(
4538
4732
  const assessChat =
4539
4733
  deps.assessChat ||
4540
4734
  (async (assessPrompt) => {
4541
- const { chatWithTools } = await import("./agent-core.js");
4542
- const r = await runMeteredDirectModelCall({
4543
- sessionId: resolveHeadlessMeteredSessionId(persist, sessionId),
4544
- persist: persist
4545
- ? (type, data) => store.appendEvent(sessionId, type, data)
4546
- : null,
4547
- provider,
4548
- model,
4549
- source: "model",
4550
- sessionBudget: options.sessionBudget || null,
4551
- call: () =>
4552
- chatWithTools([{ role: "user", content: assessPrompt }], {
4553
- ...(evolutionIngress === null ? {} : { evolutionIngress }),
4554
- model,
4555
- provider,
4556
- baseUrl,
4557
- apiKey,
4558
- enabledToolNames: [],
4559
- }),
4560
- });
4735
+ const r = await callGoalModel(assessPrompt, "goal-assessment");
4561
4736
  return r?.message?.content || "";
4562
4737
  });
4563
4738
  const { assessment } = await doAssess({
@@ -4585,6 +4760,21 @@ async function runAgentHeadlessInWorkspace(
4585
4760
  }
4586
4761
  }
4587
4762
  } catch (error) {
4763
+ if (error?.goalModelFailure) {
4764
+ isError = true;
4765
+ subtype = error.subtype;
4766
+ endReason = error.endReason;
4767
+ finalText = error.message;
4768
+ }
4769
+ if (
4770
+ typeof error?.code === "string" &&
4771
+ error.code.startsWith("CC_SESSION_BUDGET_")
4772
+ ) {
4773
+ isError = true;
4774
+ subtype = "error_session_budget";
4775
+ endReason = "session-budget-exhausted";
4776
+ finalText = error.message;
4777
+ }
4588
4778
  if (error?.runtimeLedgerPersistence === true) {
4589
4779
  isError = true;
4590
4780
  subtype = "error_persistence";