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.
- package/README.md +24 -2
- package/package.json +2 -2
- package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
- package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/AIOps-CHItp4vg.js +1 -0
- package/src/assets/web-panel/assets/AIOps-Cchx1iXI.css +1 -0
- package/src/assets/web-panel/assets/{ActionButton-_zlP_Z6z.js → ActionButton-nhMNWW_d.js} +1 -1
- package/src/assets/web-panel/assets/Analytics-DRc81BBI.js +3 -0
- package/src/assets/web-panel/assets/Analytics-Dr-1kvaM.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-BTBIIl1e.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-CVt7HMkp.js +3 -0
- package/src/assets/web-panel/assets/Artifacts-BuJgG5jf.js +1 -0
- package/src/assets/web-panel/assets/Artifacts-Dohtjyfl.css +1 -0
- package/src/assets/web-panel/assets/Audit-DDnViLtj.css +1 -0
- package/src/assets/web-panel/assets/Audit-msNg0aH-.js +1 -0
- package/src/assets/web-panel/assets/BackgroundAgents-BpcV8yWC.js +1 -0
- package/src/assets/web-panel/assets/BackgroundAgents-CH3Uc9sF.css +1 -0
- package/src/assets/web-panel/assets/Backup-CYh10zO3.css +1 -0
- package/src/assets/web-panel/assets/Backup-P53DADwG.js +1 -0
- package/src/assets/web-panel/assets/BaseInput-DFxT2yWN.js +1 -0
- package/src/assets/web-panel/assets/Chat-B5JvvQJb.css +1 -0
- package/src/assets/web-panel/assets/Chat-BXoHisHW.js +7 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-CO908iBt.css +1 -0
- package/src/assets/web-panel/assets/ChatBubbleRenderer-DMGtSdDx.js +1 -0
- package/src/assets/web-panel/assets/{Checkbox-nMgYkH8H.js → Checkbox-B4g_ckJq.js} +1 -1
- package/src/assets/web-panel/assets/Codegen-BLP7id2a.css +1 -0
- package/src/assets/web-panel/assets/Codegen-C6SSSOfp.js +1 -0
- package/src/assets/web-panel/assets/{Col-i0owJaGP.js → Col-IO1NEUYL.js} +1 -1
- package/src/assets/web-panel/assets/Community-C2RejeOY.css +1 -0
- package/src/assets/web-panel/assets/Community-CdEBl93F.js +1 -0
- package/src/assets/web-panel/assets/{Compact-DDXrvvm-.js → Compact-DYs0a9k7.js} +1 -1
- package/src/assets/web-panel/assets/Compliance-BPnk7948.js +1 -0
- package/src/assets/web-panel/assets/Compliance-DOys4Ov1.css +1 -0
- package/src/assets/web-panel/assets/Cowork-DsOst4XK.css +1 -0
- package/src/assets/web-panel/assets/Cowork-VLOTGbza.js +6 -0
- package/src/assets/web-panel/assets/Cron-_9GgQLJo.js +2 -0
- package/src/assets/web-panel/assets/Crosschain-B21yn0qy.js +1 -0
- package/src/assets/web-panel/assets/Crosschain-C7Le4Pte.css +1 -0
- package/src/assets/web-panel/assets/DID-BX6k3jZi.css +1 -0
- package/src/assets/web-panel/assets/DID-mBeDgRZ7.js +2 -0
- package/src/assets/web-panel/assets/Dashboard-BckYYzhP.js +3 -0
- package/src/assets/web-panel/assets/Dashboard-MFDcsVcM.css +1 -0
- package/src/assets/web-panel/assets/Dropdown-DEedqFiE.js +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-CMs0k9TB.js +1 -0
- package/src/assets/web-panel/assets/EmailListRenderer-CVJ1j3Ll.css +1 -0
- package/src/assets/web-panel/assets/EvolutionSettings-B00Qd0fN.js +1 -0
- package/src/assets/web-panel/assets/EvolutionSettings-BnQ91YHJ.css +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-Df-D09Q4.css +1 -0
- package/src/assets/web-panel/assets/FamilyGuardDashboard-DxMTAMa8.js +1 -0
- package/src/assets/web-panel/assets/Federation-B-UZw0LO.js +1 -0
- package/src/assets/web-panel/assets/Federation-CgmfLbx1.css +1 -0
- package/src/assets/web-panel/assets/FormItemContext-CkafazEw.js +1 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-DEUG25ZJ.js +1 -0
- package/src/assets/web-panel/assets/GenericCardRenderer-DtJFcJYl.css +1 -0
- package/src/assets/web-panel/assets/Git-D7dr9oz9.js +2 -0
- package/src/assets/web-panel/assets/{Git-BdHhxBWR.css → Git-DPuaGtg7.css} +1 -1
- package/src/assets/web-panel/assets/Governance-BoipmXaM.css +1 -0
- package/src/assets/web-panel/assets/Governance-DKlUJ1wg.js +1 -0
- package/src/assets/web-panel/assets/Inference-BJKqplap.js +1 -0
- package/src/assets/web-panel/assets/Inference-BWxYJF9-.css +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-B78fB-bz.js +1 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-CztPDA96.css +1 -0
- package/src/assets/web-panel/assets/Logs-DJGcHYH_.js +2 -0
- package/src/assets/web-panel/assets/Logs-Gf_Mv9Nx.css +1 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-BAxj61I3.css +1 -0
- package/src/assets/web-panel/assets/MarkdownRenderer-DkcG_MxW.js +1 -0
- package/src/assets/web-panel/assets/Marketplace-Djp5q9dS.css +1 -0
- package/src/assets/web-panel/assets/Marketplace-ucTbwByD.js +1 -0
- package/src/assets/web-panel/assets/McpTools-Cu1xZYYk.js +2 -0
- package/src/assets/web-panel/assets/McpTools-DSGHWYS_.css +1 -0
- package/src/assets/web-panel/assets/Memory-Bcc2hxOA.css +1 -0
- package/src/assets/web-panel/assets/Memory-DCGpXmi-.js +2 -0
- package/src/assets/web-panel/assets/MobileBridge-BQ-Uwwg7.css +1 -0
- package/src/assets/web-panel/assets/MobileBridge-BnKr0aAS.js +1 -0
- package/src/assets/web-panel/assets/MobileProjects-C5UvYJTP.js +1 -0
- package/src/assets/web-panel/assets/MobileProjects-Ceaxrqzc.css +1 -0
- package/src/assets/web-panel/assets/Mtc-D1UUl4WH.js +6 -0
- package/src/assets/web-panel/assets/Mtc-DHwbdUqA.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-B0x8gahq.css +1 -0
- package/src/assets/web-panel/assets/MtcAudit-D3aa8XP4.js +19 -0
- package/src/assets/web-panel/assets/Multisig-DiXdfJjO.js +7 -0
- package/src/assets/web-panel/assets/Multisig-kwPDnXnl.css +1 -0
- package/src/assets/web-panel/assets/NLProgramming-CLOvy-35.css +1 -0
- package/src/assets/web-panel/assets/NLProgramming-DbWABgSE.js +1 -0
- package/src/assets/web-panel/assets/Notes-BP1DPl-R.js +7 -0
- package/src/assets/web-panel/assets/Notes-COE2q2gD.css +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-Co0e0uEO.css +1 -0
- package/src/assets/web-panel/assets/NotificationSettings-xaB6ONe7.js +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-BnOISpKI.css +1 -0
- package/src/assets/web-panel/assets/OrderTableRenderer-D1uNcz3b.js +1 -0
- package/src/assets/web-panel/assets/Organization-BM3Lh8Q8.css +1 -0
- package/src/assets/web-panel/assets/Organization-DMLDGaf1.js +4 -0
- package/src/assets/web-panel/assets/{Overflow-CaRUAOY_.js → Overflow-DH4QPEoI.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-C0w0P4A3.js → OverrideContext-DLR1AtLy.js} +1 -1
- package/src/assets/web-panel/assets/P2P-Bl4OS10o.js +2 -0
- package/src/assets/web-panel/assets/P2P-Cx88UaiD.css +1 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-B9ZGFpn4.css +1 -0
- package/src/assets/web-panel/assets/PdhVaultBrowser-D9XSE2YI.js +7 -0
- package/src/assets/web-panel/assets/Permissions-CUaPlr6d.js +4 -0
- package/src/assets/web-panel/assets/Permissions-Diejgkbs.css +1 -0
- package/src/assets/web-panel/assets/PersonalDataHub-Ba92dZk-.js +3 -0
- package/src/assets/web-panel/assets/PersonalDataHub-C_xhspRy.css +1 -0
- package/src/assets/web-panel/assets/Pipeline-Bh2okm-8.js +1 -0
- package/src/assets/web-panel/assets/Pipeline-DxkXqrH2.css +1 -0
- package/src/assets/web-panel/assets/Privacy-Bmq3p4gC.js +1 -0
- package/src/assets/web-panel/assets/Privacy-CrsfSFKd.css +1 -0
- package/src/assets/web-panel/assets/ProjectInit-BPu2fdKR.js +2 -0
- package/src/assets/web-panel/assets/ProjectInit-CteEo-wF.css +1 -0
- package/src/assets/web-panel/assets/ProjectSettings-D6ABLpmt.js +2 -0
- package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
- package/src/assets/web-panel/assets/Projects-BX-SG9R4.css +1 -0
- package/src/assets/web-panel/assets/Projects-qWHEve0z.js +1 -0
- package/src/assets/web-panel/assets/Providers-CpAXh_6c.css +1 -0
- package/src/assets/web-panel/assets/Providers-D9DI-2hc.js +1 -0
- package/src/assets/web-panel/assets/{QrScannerModal-fFkycCT4.js → QrScannerModal-CxifoeD5.js} +1 -1
- package/src/assets/web-panel/assets/QrScannerModal-DFrn7rxS.css +1 -0
- package/src/assets/web-panel/assets/QuickAsk-DC1BvwR7.js +1 -0
- package/src/assets/web-panel/assets/Recommend-CH6wKzGo.css +1 -0
- package/src/assets/web-panel/assets/Recommend-CKqbMB5o.js +1 -0
- package/src/assets/web-panel/assets/RemoteSession-BGGzPdS5.js +5 -0
- package/src/assets/web-panel/assets/Reputation-D6VPNEd0.css +1 -0
- package/src/assets/web-panel/assets/Reputation-DH90O9-5.js +1 -0
- package/src/assets/web-panel/assets/Row-h7ovueJc.js +1 -0
- package/src/assets/web-panel/assets/RssFeed-Cze7YLaG.css +1 -0
- package/src/assets/web-panel/assets/RssFeed-DaHxXTZg.js +3 -0
- package/src/assets/web-panel/assets/Search-B6RalzTB.css +1 -0
- package/src/assets/web-panel/assets/Search-Bn6Nqpn4.js +1 -0
- package/src/assets/web-panel/assets/Security-13K57V_v.css +1 -0
- package/src/assets/web-panel/assets/Security-ClbBmPJi.js +4 -0
- package/src/assets/web-panel/assets/Services-C8Qs6KXv.css +1 -0
- package/src/assets/web-panel/assets/Services-ChHLQwRn.js +2 -0
- package/src/assets/web-panel/assets/{Skeleton-ASRgSh_Y.js → Skeleton-DfN6BFzt.js} +1 -1
- package/src/assets/web-panel/assets/Skills-BdjRyorN.css +1 -0
- package/src/assets/web-panel/assets/Skills-C926wDev.js +1 -0
- package/src/assets/web-panel/assets/Sla-DJzi1l1M.js +1 -0
- package/src/assets/web-panel/assets/Sla-K19oOyQc.css +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-DYPJTDKz.css +1 -0
- package/src/assets/web-panel/assets/SpeechSettings-_GSyVjm_.js +1 -0
- package/src/assets/web-panel/assets/SyncSettings-B67xnERe.js +1 -0
- package/src/assets/web-panel/assets/SyncSettings-C6cDrwDR.css +1 -0
- package/src/assets/web-panel/assets/Tasks-BJjN_YEm.css +1 -0
- package/src/assets/web-panel/assets/Tasks-BaYZadcG.js +1 -0
- package/src/assets/web-panel/assets/Templates-BsMmCdZI.css +1 -0
- package/src/assets/web-panel/assets/Templates-Bu8kN1Xt.js +1 -0
- package/src/assets/web-panel/assets/Tenant-BM9qufw1.js +1 -0
- package/src/assets/web-panel/assets/Tenant-D3zkSAV0.css +1 -0
- package/src/assets/web-panel/assets/Terminal-MEdd5DjB.js +3 -0
- package/src/assets/web-panel/assets/Terminal-qPp9MaPu.css +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-C27kL2oU.js +1 -0
- package/src/assets/web-panel/assets/TimelineRenderer-DmztdsbF.css +1 -0
- package/src/assets/web-panel/assets/Tokens-BBOdNRHQ.css +1 -0
- package/src/assets/web-panel/assets/Tokens-Cvjd98VC.js +1 -0
- package/src/assets/web-panel/assets/{Trigger-DgGU_D0o.js → Trigger-CLym84HI.js} +1 -1
- package/src/assets/web-panel/assets/Trust-Bv2JTaNN.js +1 -0
- package/src/assets/web-panel/assets/Trust-DeOo0xAh.css +1 -0
- package/src/assets/web-panel/assets/UkeySign-CSCkNbtm.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-BFDXB4xh.js +1 -0
- package/src/assets/web-panel/assets/VideoEditing-DksiizfS.css +1 -0
- package/src/assets/web-panel/assets/Wallet-CMEFrG_b.js +4 -0
- package/src/assets/web-panel/assets/Wallet-Dw8uV4Ug.css +1 -0
- package/src/assets/web-panel/assets/WebAuthn-DKx6xPPl.css +1 -0
- package/src/assets/web-panel/assets/WebAuthn-x4eO_Q4y.js +5 -0
- package/src/assets/web-panel/assets/WorkflowEditor-ClWEPgV1.js +1 -0
- package/src/assets/web-panel/assets/WorkflowEditor-IiwsD8Kh.css +1 -0
- package/src/assets/web-panel/assets/{_getTag-DnrRH4E6.js → _getTag-BVc6NQ_K.js} +1 -1
- package/src/assets/web-panel/assets/{chat-C_kELmV6.js → chat-BdYOI4gM.js} +1 -1
- package/src/assets/web-panel/assets/{collapseMotion-CqM1QOwM.js → collapseMotion-B4IZiILV.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DE-ZxAv_.js → colors-DcTBrGvS.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BowulLDi.js → compact-item-Dn2ktVuj.js} +1 -1
- package/src/assets/web-panel/assets/createContext-XTreuyqp.js +1 -0
- package/src/assets/web-panel/assets/{debounce-CFGTTtN3.js → debounce-D9xTw4Sx.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-CNIS3FrJ.js +1 -0
- package/src/assets/web-panel/assets/echarts-CDp6K7pj.js +19 -0
- package/src/assets/web-panel/assets/{hasIn-Be7mK-iw.js → hasIn-CFRNsYQd.js} +1 -1
- package/src/assets/web-panel/assets/{icons-DG5UD-6K.js → icons-DlxlFL4g.js} +4 -4
- package/src/assets/web-panel/assets/index-3RqDry-K.js +71 -0
- package/src/assets/web-panel/assets/{index-nLHTuHoT.js → index-8METW_Wr.js} +1 -1
- package/src/assets/web-panel/assets/index-BBd64wj8.js +31 -0
- package/src/assets/web-panel/assets/index-BEyVNbNE.js +3 -0
- package/src/assets/web-panel/assets/index-BMLpP8QQ.js +1 -0
- package/src/assets/web-panel/assets/{index-DMKo49Um.js → index-BSqydcDa.js} +1 -1
- package/src/assets/web-panel/assets/index-BV6LojRv.js +21 -0
- package/src/assets/web-panel/assets/index-BbMWvjLZ.js +1 -0
- package/src/assets/web-panel/assets/{index-DjC2TJeH.js → index-Brc0BF-k.js} +2 -2
- package/src/assets/web-panel/assets/{index-3Ql7xQLn.js → index-CG9YLDmI.js} +1 -1
- package/src/assets/web-panel/assets/{index-lN916819.js → index-CNHWMMDX.js} +1 -1
- package/src/assets/web-panel/assets/{index-DLCzaLH4.js → index-COuEJdmr.js} +3 -3
- package/src/assets/web-panel/assets/{index-BdzVLz-c.js → index-CRW3AWdS.js} +1 -1
- package/src/assets/web-panel/assets/{index-_cYsz4df.js → index-CUT4h5JB.js} +2 -2
- package/src/assets/web-panel/assets/index-CXMa7Z-S.js +1 -0
- package/src/assets/web-panel/assets/index-CbaPXyNc.js +19 -0
- package/src/assets/web-panel/assets/{index-Cq93VfoF.css → index-CfX1DEtk.css} +1 -1
- package/src/assets/web-panel/assets/{index-OH54KMLN.js → index-CjHA_Q7s.js} +1 -1
- package/src/assets/web-panel/assets/index-CsnYp4qF.js +1 -0
- package/src/assets/web-panel/assets/index-D45vulkq.js +12 -0
- package/src/assets/web-panel/assets/index-D9kPBEqD.js +55 -0
- package/src/assets/web-panel/assets/index-DDTSgpXz.js +1 -0
- package/src/assets/web-panel/assets/index-DFl_a0n5.js +1 -0
- package/src/assets/web-panel/assets/index-DNdiAymC.js +1 -0
- package/src/assets/web-panel/assets/{index-DEDVYN7D.js → index-DQEu7uW0.js} +1 -1
- package/src/assets/web-panel/assets/index-DW9XncMy.js +21 -0
- package/src/assets/web-panel/assets/index-Daa1yCt_.js +1 -0
- package/src/assets/web-panel/assets/index-DdVpoNEQ.js +12 -0
- package/src/assets/web-panel/assets/index-Dhi4Oybt.js +1 -0
- package/src/assets/web-panel/assets/index-DoVoNjtJ.js +1 -0
- package/src/assets/web-panel/assets/{index-Ao-LXr-d.js → index-Vo7A4aiN.js} +4 -4
- package/src/assets/web-panel/assets/{index-LVrxqU88.js → index-XdlYkgCa.js} +1 -1
- package/src/assets/web-panel/assets/{index-4KkYmFy5.js → index-ir2ZwWz5.js} +2 -2
- package/src/assets/web-panel/assets/index-kzyCd8a0.js +3 -0
- package/src/assets/web-panel/assets/{index-Cvy4vdVW.js → index-lnTt0Jps.js} +2 -2
- package/src/assets/web-panel/assets/{index-D3lOYd9_.js → index-ma-rJkfE.js} +1 -1
- package/src/assets/web-panel/assets/index-oE4jTpHK.js +13 -0
- package/src/assets/web-panel/assets/{index-CXvy8HrM.js → index-r5sNECM5.js} +1 -1
- package/src/assets/web-panel/assets/index-uT4fRDzU.js +1 -0
- package/src/assets/web-panel/assets/index-xlS8pDS2.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-BNhziAal.js → initDefaultProps-mdL0oeZa.js} +1 -1
- package/src/assets/web-panel/assets/{isPlainObject-BWRMT62c.js → isPlainObject-_gz-soRW.js} +1 -1
- package/src/assets/web-panel/assets/isSymbol-DAy2hlR5.js +1 -0
- package/src/assets/web-panel/assets/motion-ZgVCKcEX.js +11 -0
- package/src/assets/web-panel/assets/{move-rFx211Cl.js → move-A_28O5T2.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-CEP1wN3R.js → mtc-parser-0zlMjabo.js} +1 -1
- package/src/assets/web-panel/assets/{omit-DacHd_Zm.js → omit-DF7mU3yG.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-Dqp58Ep2.js → pickAttrs-Cmt8liJP.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-Cv6Rm0pV.js → placementArrow-DaMDC57b.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-rNE0p9ZW.js → responsiveObserve-CHw_f2d3.js} +1 -1
- package/src/assets/web-panel/assets/{slide-C97JxD4S.js → slide-DJS9fFQq.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-Cxk1gV9M.js → statusUtils-Bk3XdZwh.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-CbtKKsPo.js → styleChecker-DMybAFsA.js} +1 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-_tbIIFMu.js +1 -0
- package/src/assets/web-panel/assets/{useFs-6c7qrpE_.js → useFs-KPklVptS.js} +1 -1
- package/src/assets/web-panel/assets/{useMergedState-DXbJa_zE.js → useMergedState-d-EXs3xd.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-OjxtBGe7.js → usePersonalDataHub-C7FrKDhD.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-BrCfMLMc.js → useRefs-DHeCQehi.js} +1 -1
- package/src/assets/web-panel/assets/{useState-CnxtbLoC.js → useState-Dlgl7fUg.js} +1 -1
- package/src/assets/web-panel/assets/vendor-BXcBOG8b.js +1 -0
- package/src/assets/web-panel/assets/vnode-DB3JBusp.js +1 -0
- package/src/assets/web-panel/assets/warning-Pq00owYb.js +1 -0
- package/src/assets/web-panel/assets/{zoom-Cc1qKiSZ.js → zoom-C8rAdf81.js} +1 -1
- package/src/assets/web-panel/index.html +4 -4
- package/src/command-help-index.json +1 -1
- package/src/commands/agent.js +1 -1
- package/src/commands/governed-skill-marketplace.js +24 -10
- package/src/commands/llm.js +4 -3
- package/src/constants.js +1 -1
- package/src/data/changelog.json +27 -1
- package/src/harness/worktree-isolator.js +4 -1
- package/src/lib/compaction-host-provenance.js +24 -0
- package/src/lib/context-memory-kernel/durable-memory-port.js +46 -34
- package/src/lib/context-memory-kernel/live-compaction.js +12 -3
- package/src/lib/context-memory-kernel/memory-query-bundle.js +375 -0
- package/src/lib/context-memory-kernel/memory-query-control.js +28 -0
- package/src/lib/context-memory-kernel/memory-service.js +30 -16
- package/src/lib/context-memory-kernel/memory-shard-snapshots.js +63 -0
- package/src/lib/context-memory-kernel/provider-context.js +55 -24
- package/src/lib/context-memory-kernel/segmented-memory-port.js +347 -138
- package/src/lib/cost-budget.js +2 -0
- package/src/lib/ephemeral-worktree-scope.js +24 -0
- package/src/lib/evolution/evolution-deployment-loader.js +6 -4
- package/src/lib/evolution/governed-skill-marketplace-abort.js +14 -0
- package/src/lib/evolution/governed-skill-marketplace-candidate.js +10 -2
- package/src/lib/evolution/governed-skill-marketplace-cli-host.js +47 -20
- package/src/lib/evolution/governed-skill-marketplace.js +47 -24
- package/src/lib/goal-assess.js +4 -1
- package/src/lib/goal-check-evidence.js +77 -9
- package/src/lib/goal-condition-engine.js +20 -3
- package/src/lib/goal-model-call.js +107 -0
- package/src/lib/goal-verification-command.js +221 -0
- package/src/lib/goal-verification-plan.js +372 -0
- package/src/lib/goal-workspace-evidence.js +299 -0
- package/src/lib/llm-connection-probe.js +12 -5
- package/src/lib/llm-onboarding-catalog.json +2 -2
- package/src/lib/llm-pricing.js +34 -8
- package/src/lib/llm-providers.js +1 -0
- package/src/lib/mcp-tool-catalog-authority.js +244 -0
- package/src/lib/model-capabilities.js +6 -0
- package/src/lib/model-catalog-review.js +3 -0
- package/src/lib/model-context-catalog.js +44 -2
- package/src/lib/openai-responses.js +35 -6
- package/src/lib/sub-agent-context.js +12 -4
- package/src/lib/subagent-inheritance.js +162 -2
- package/src/lib/task-model-selector.js +1 -1
- package/src/lib/usage-pricing-context.js +34 -17
- package/src/repl/agent-repl.js +34 -2
- package/src/runtime/agent-core.js +226 -10
- package/src/runtime/compaction-host-context.js +72 -0
- package/src/runtime/headless-runner.js +331 -141
- package/src/runtime/headless-stream.js +38 -21
- package/src/runtime/mcp-agent-catalog.js +257 -0
- package/src/runtime/mcp-config.js +18 -69
- package/src/runtime/mcp-tool-search.js +16 -1
- package/src/runtime/system-prompt.js +9 -0
- package/src/assets/web-panel/assets/AIOps-CSpp7iGY.css +0 -1
- package/src/assets/web-panel/assets/AIOps-CjPaaF2r.js +0 -1
- package/src/assets/web-panel/assets/Analytics-C7X31L8l.js +0 -3
- package/src/assets/web-panel/assets/Analytics-DJcHjy5J.css +0 -1
- package/src/assets/web-panel/assets/AppLayout-BmYa34Se.js +0 -9
- package/src/assets/web-panel/assets/AppLayout-VlanTjPw.css +0 -1
- package/src/assets/web-panel/assets/Artifacts-B_YKNjlp.js +0 -1
- package/src/assets/web-panel/assets/Artifacts-CTVt96zW.css +0 -1
- package/src/assets/web-panel/assets/Audit-5JsI67XQ.js +0 -1
- package/src/assets/web-panel/assets/Audit-D8oxP0wr.css +0 -1
- package/src/assets/web-panel/assets/BackgroundAgents-BL3QbzvS.js +0 -1
- package/src/assets/web-panel/assets/BackgroundAgents-Dq2340Kl.css +0 -1
- package/src/assets/web-panel/assets/Backup-BRmg-gTa.js +0 -1
- package/src/assets/web-panel/assets/Backup-Wi9CaP3d.css +0 -1
- package/src/assets/web-panel/assets/BaseInput-DNE7mT3K.js +0 -1
- package/src/assets/web-panel/assets/Chat-KSGPtU0L.css +0 -1
- package/src/assets/web-panel/assets/Chat-OYwAopdM.js +0 -8
- package/src/assets/web-panel/assets/ChatBubbleRenderer-Dtxw3Wgt.js +0 -1
- package/src/assets/web-panel/assets/ChatBubbleRenderer-gy5SDGw2.css +0 -1
- package/src/assets/web-panel/assets/Codegen-B9G2ngLI.js +0 -1
- package/src/assets/web-panel/assets/Codegen-BB08p1fn.css +0 -1
- package/src/assets/web-panel/assets/Community-B3Ta0mI_.js +0 -1
- package/src/assets/web-panel/assets/Community-Cbq1nrpo.css +0 -1
- package/src/assets/web-panel/assets/Compliance-Bn4Uq6U1.js +0 -1
- package/src/assets/web-panel/assets/Compliance-NoXr2Vof.css +0 -1
- package/src/assets/web-panel/assets/Cowork-BlXJRu6L.css +0 -1
- package/src/assets/web-panel/assets/Cowork-CO5NKD6r.js +0 -6
- package/src/assets/web-panel/assets/Cron-ByjNese0.js +0 -2
- package/src/assets/web-panel/assets/Crosschain-BN1FUYyi.js +0 -1
- package/src/assets/web-panel/assets/Crosschain-CgRAecoR.css +0 -1
- package/src/assets/web-panel/assets/DID-CUFX5RL3.js +0 -2
- package/src/assets/web-panel/assets/DID-DVsYcgvs.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-CAPSdFR4.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-D_2FDPBP.js +0 -3
- package/src/assets/web-panel/assets/Dropdown-lGOMtIzb.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-DA3Qf1S2.js +0 -1
- package/src/assets/web-panel/assets/EmailListRenderer-DTPZPx_S.css +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-Bdw8ApoT.css +0 -1
- package/src/assets/web-panel/assets/EvolutionSettings-DLcnicCr.js +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-BPOSaIN1.js +0 -1
- package/src/assets/web-panel/assets/FamilyGuardDashboard-nd3idUVb.css +0 -1
- package/src/assets/web-panel/assets/Federation-DzJUCQq8.js +0 -1
- package/src/assets/web-panel/assets/Federation-fGN6iMX_.css +0 -1
- package/src/assets/web-panel/assets/FormItemContext-DVx1XNKx.js +0 -2
- package/src/assets/web-panel/assets/GenericCardRenderer-BkqzO_lh.js +0 -1
- package/src/assets/web-panel/assets/GenericCardRenderer-o85VDYQS.css +0 -1
- package/src/assets/web-panel/assets/Git-Dr_rdT_j.js +0 -2
- package/src/assets/web-panel/assets/Governance-DtCS4NDm.css +0 -1
- package/src/assets/web-panel/assets/Governance-DyVkZddw.js +0 -1
- package/src/assets/web-panel/assets/Inference-IN2YDd4v.js +0 -1
- package/src/assets/web-panel/assets/Inference-t-w0NgIS.css +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-4NU1S2Xm.css +0 -1
- package/src/assets/web-panel/assets/KnowledgeGraph-Ceiy4n6N.js +0 -1
- package/src/assets/web-panel/assets/Logs-DQbCaYhL.css +0 -1
- package/src/assets/web-panel/assets/Logs-d7pIEAX2.js +0 -2
- package/src/assets/web-panel/assets/MarkdownRenderer-DbzhFwvz.css +0 -1
- package/src/assets/web-panel/assets/MarkdownRenderer-DmSl0MNI.js +0 -1
- package/src/assets/web-panel/assets/Marketplace-Bvo5cuGa.css +0 -1
- package/src/assets/web-panel/assets/Marketplace-uVE7U14g.js +0 -1
- package/src/assets/web-panel/assets/McpTools-534Q95Mx.css +0 -1
- package/src/assets/web-panel/assets/McpTools-DUfBM--y.js +0 -4
- package/src/assets/web-panel/assets/Memory-6gkcR02J.js +0 -2
- package/src/assets/web-panel/assets/Memory-CleW_R6V.css +0 -1
- package/src/assets/web-panel/assets/MobileBridge-Cl6ys2O9.js +0 -1
- package/src/assets/web-panel/assets/MobileBridge-D3Arxfeg.css +0 -1
- package/src/assets/web-panel/assets/MobileProjects-5P8jN4gf.js +0 -1
- package/src/assets/web-panel/assets/MobileProjects-BD4alw6-.css +0 -1
- package/src/assets/web-panel/assets/Mtc-CXZGO9Sh.css +0 -1
- package/src/assets/web-panel/assets/Mtc-DtiT1Kol.js +0 -6
- package/src/assets/web-panel/assets/MtcAudit-C1JM8esp.css +0 -1
- package/src/assets/web-panel/assets/MtcAudit-DZz8iiTE.js +0 -19
- package/src/assets/web-panel/assets/Multisig-BryR2Jpr.css +0 -1
- package/src/assets/web-panel/assets/Multisig-DFH3-fBJ.js +0 -13
- package/src/assets/web-panel/assets/NLProgramming-BYNuDOt-.js +0 -1
- package/src/assets/web-panel/assets/NLProgramming-DGDHq6Z9.css +0 -1
- package/src/assets/web-panel/assets/Notes-BCY4jgYy.js +0 -7
- package/src/assets/web-panel/assets/Notes-BKKmMtqV.css +0 -1
- package/src/assets/web-panel/assets/NotificationSettings-Bk2ltghU.js +0 -1
- package/src/assets/web-panel/assets/NotificationSettings-CG3Kfuef.css +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-CfrDjSHT.css +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-OdeXEGAn.js +0 -1
- package/src/assets/web-panel/assets/Organization-CY4_mSiV.js +0 -4
- package/src/assets/web-panel/assets/Organization-LVvqwG0D.css +0 -1
- package/src/assets/web-panel/assets/P2P-Bd96rBWQ.js +0 -2
- package/src/assets/web-panel/assets/P2P-DcFvP7F-.css +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-DZZrUOr1.css +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-JjnExxan.js +0 -7
- package/src/assets/web-panel/assets/Permissions-CW1PUJB0.js +0 -4
- package/src/assets/web-panel/assets/Permissions-DsPE_IQy.css +0 -1
- package/src/assets/web-panel/assets/PersonalDataHub-BNn9alTk.js +0 -9
- package/src/assets/web-panel/assets/PersonalDataHub-BhpRlh9D.css +0 -1
- package/src/assets/web-panel/assets/Pipeline-01_PBiUu.js +0 -1
- package/src/assets/web-panel/assets/Pipeline-BItr5CyP.css +0 -1
- package/src/assets/web-panel/assets/Privacy-BP4DlVGb.js +0 -1
- package/src/assets/web-panel/assets/Privacy-F_ENsxZk.css +0 -1
- package/src/assets/web-panel/assets/ProjectInit-B86LEzDL.css +0 -1
- package/src/assets/web-panel/assets/ProjectInit-CAMnQj4n.js +0 -2
- package/src/assets/web-panel/assets/ProjectSettings-DK7KA_iX.css +0 -1
- package/src/assets/web-panel/assets/ProjectSettings-DKxV5On_.js +0 -2
- package/src/assets/web-panel/assets/Projects-B_4kRnM8.js +0 -1
- package/src/assets/web-panel/assets/Projects-CmJeUDBW.css +0 -1
- package/src/assets/web-panel/assets/Providers-C6q_fvea.css +0 -1
- package/src/assets/web-panel/assets/Providers-DeqqZyUv.js +0 -1
- package/src/assets/web-panel/assets/QrScannerModal-NwAHNfiJ.css +0 -1
- package/src/assets/web-panel/assets/QuickAsk-Ln6qQidy.js +0 -1
- package/src/assets/web-panel/assets/Recommend-D_bf91K6.css +0 -1
- package/src/assets/web-panel/assets/Recommend-DeENA-y0.js +0 -1
- package/src/assets/web-panel/assets/RemoteSession-CRxSYxo4.js +0 -5
- package/src/assets/web-panel/assets/Reputation-B2kU2F0l.js +0 -1
- package/src/assets/web-panel/assets/Reputation-DiOsOleI.css +0 -1
- package/src/assets/web-panel/assets/Row-lV_nLlFq.js +0 -1
- package/src/assets/web-panel/assets/RssFeed-CjcbkyUb.css +0 -1
- package/src/assets/web-panel/assets/RssFeed-Df21mCdF.js +0 -3
- package/src/assets/web-panel/assets/Search-8_Dz4qU9.js +0 -1
- package/src/assets/web-panel/assets/Search-Klk29S7C.css +0 -1
- package/src/assets/web-panel/assets/Security-BmrukMHn.css +0 -1
- package/src/assets/web-panel/assets/Security-Cl5-PEcp.js +0 -4
- package/src/assets/web-panel/assets/Services-C5qgCqA7.js +0 -2
- package/src/assets/web-panel/assets/Services-DAnVNhUG.css +0 -1
- package/src/assets/web-panel/assets/Skills-BUu9owbR.css +0 -1
- package/src/assets/web-panel/assets/Skills-DWx01ZJ7.js +0 -1
- package/src/assets/web-panel/assets/Sla-I2gbgtW8.js +0 -1
- package/src/assets/web-panel/assets/Sla-sodqCU4a.css +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-BqTikzfe.js +0 -1
- package/src/assets/web-panel/assets/SpeechSettings-CgB9nFyq.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-B3hJqmBP.css +0 -1
- package/src/assets/web-panel/assets/SyncSettings-D3zCpBFV.js +0 -2
- package/src/assets/web-panel/assets/Tasks-DjMWII45.js +0 -1
- package/src/assets/web-panel/assets/Tasks-nbTUVXvt.css +0 -1
- package/src/assets/web-panel/assets/Templates-CpFsKk_l.css +0 -1
- package/src/assets/web-panel/assets/Templates-Cq7qDnHX.js +0 -1
- package/src/assets/web-panel/assets/Tenant-DEasKDpQ.js +0 -1
- package/src/assets/web-panel/assets/Tenant-MuPJnOjk.css +0 -1
- package/src/assets/web-panel/assets/Terminal-DHoveJwj.css +0 -1
- package/src/assets/web-panel/assets/Terminal-J6fLkTzi.js +0 -3
- package/src/assets/web-panel/assets/TimelineRenderer-BlTAtkOc.css +0 -1
- package/src/assets/web-panel/assets/TimelineRenderer-CNvWrWN-.js +0 -1
- package/src/assets/web-panel/assets/Tokens-BSgHJCKH.js +0 -1
- package/src/assets/web-panel/assets/Tokens-CynVae-o.css +0 -1
- package/src/assets/web-panel/assets/Trust-BANlv-uB.js +0 -1
- package/src/assets/web-panel/assets/Trust-C-WrW0Fj.css +0 -1
- package/src/assets/web-panel/assets/UkeySign-qh8GPRsU.js +0 -1
- package/src/assets/web-panel/assets/VideoEditing-BDFghpzP.css +0 -1
- package/src/assets/web-panel/assets/VideoEditing-DBiGTB4H.js +0 -1
- package/src/assets/web-panel/assets/Wallet-DMUFR7cL.js +0 -4
- package/src/assets/web-panel/assets/Wallet-DUbpTRcg.css +0 -1
- package/src/assets/web-panel/assets/WebAuthn-CVAFRfCQ.css +0 -1
- package/src/assets/web-panel/assets/WebAuthn-DP9nQQzW.js +0 -5
- package/src/assets/web-panel/assets/WorkflowEditor-429lPWYk.css +0 -1
- package/src/assets/web-panel/assets/WorkflowEditor-DT_6jDkL.js +0 -1
- package/src/assets/web-panel/assets/createContext-DCh8oMBQ.js +0 -1
- package/src/assets/web-panel/assets/devWarning-BVvJAp91.js +0 -1
- package/src/assets/web-panel/assets/echarts-C61Vn3mP.js +0 -25
- package/src/assets/web-panel/assets/index-6OluUVJJ.js +0 -55
- package/src/assets/web-panel/assets/index-B-3EDOlf.js +0 -1
- package/src/assets/web-panel/assets/index-B7IhCfsh.js +0 -1
- package/src/assets/web-panel/assets/index-BDIIR8g6.js +0 -1
- package/src/assets/web-panel/assets/index-BMrbe_Ey.js +0 -1
- package/src/assets/web-panel/assets/index-BlzMqaWB.js +0 -1
- package/src/assets/web-panel/assets/index-BwY31W-u.js +0 -12
- package/src/assets/web-panel/assets/index-C2pCquZC.js +0 -1
- package/src/assets/web-panel/assets/index-CKmC6ugN.js +0 -1
- package/src/assets/web-panel/assets/index-CL2hAUWh.js +0 -1
- package/src/assets/web-panel/assets/index-CUXfwAhF.js +0 -3
- package/src/assets/web-panel/assets/index-C_VnSUjh.js +0 -3
- package/src/assets/web-panel/assets/index-CecGCLWI.js +0 -31
- package/src/assets/web-panel/assets/index-Ck6MYKVN.js +0 -21
- package/src/assets/web-panel/assets/index-CwJfLNqv.js +0 -1
- package/src/assets/web-panel/assets/index-DMDaGPxG.js +0 -19
- package/src/assets/web-panel/assets/index-DN1AT3FH.js +0 -1
- package/src/assets/web-panel/assets/index-DOebEvgn.js +0 -1
- package/src/assets/web-panel/assets/index-DPX3N4T8.js +0 -13
- package/src/assets/web-panel/assets/index-DSRKtgJg.js +0 -1
- package/src/assets/web-panel/assets/index-DSqZBvQM.js +0 -12
- package/src/assets/web-panel/assets/index-DbrQO1p9.js +0 -21
- package/src/assets/web-panel/assets/index-Qx8cTReg.js +0 -75
- package/src/assets/web-panel/assets/isSymbol-S5WZT7lS.js +0 -1
- package/src/assets/web-panel/assets/motion-fUkbJz38.js +0 -11
- package/src/assets/web-panel/assets/useFlexGapSupport-CQATs2JQ.js +0 -1
- package/src/assets/web-panel/assets/vendor-Bn1JzzAn.js +0 -42
- 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 {
|
|
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
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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 = (
|
|
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
|
|
3550
|
-
//
|
|
3551
|
-
|
|
3552
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
-
:
|
|
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
|
|
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
|
|
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
|
|
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";
|