chainlesschain 0.166.99 → 0.166.101

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 (176) hide show
  1. package/README.md +7 -8
  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/assets/{AIOps-BUgaCgVU.js → AIOps-BjBS_29I.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-b0MpUSSZ.js → ActionButton-CUnnQUaj.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-hbXTvHqO.js → Analytics-BqYZxgnY.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-CLQoAVu4.js → AppLayout-m8B886ka.js} +4 -4
  9. package/src/assets/web-panel/assets/{Artifacts-ytHzl2L2.js → Artifacts-JEOxU3Ug.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-BuhkLm0C.js → Audit-DAXS5c9J.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-CS81hxZV.js → BackgroundAgents-e3a9XHw3.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-DzR-_Qvi.js → Backup-D3Qmp68h.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-r8Ku_lYw.js → BaseInput-C7CXyiUl.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-C3Uxtoaa.js → Chat-2AHlAGi8.js} +6 -6
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-D3KsyCUV.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-BnG2P5yc.js → Checkbox-YfBuQlBH.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-BdgU6HZy.js → Codegen-DCCQDfTL.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-DT8t9wmf.js → Col-03i2WfrV.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-ChkxR5oe.js → Community-CJQIpng6.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-DIwLeTk3.js → Compact-CCtcQ2pq.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-CAqzGLvW.js → Compliance-Vxl7ZszJ.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-Bb3jejMG.js → Cowork-DN-BwA8I.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-BYRkZLta.js → Cron-Dc2Q46X7.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-BD6z227t.js → Crosschain-CQCblsl-.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-DA3G5Wgo.js → DID-YYvqUR8C.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-yaZePHOu.js → Dashboard-Cafy3DZT.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-BqY5MBx2.js → Dropdown-BOyYpIpv.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-cIWwOgHm.js → EmailListRenderer-B7NYjc1j.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-zvV6ymca.js → EvolutionSettings-C5wfxztf.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-CAmh1U2b.js → FamilyGuardDashboard-aA7KnDGK.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-5qd2LCg8.js → Federation-DlgXUu1L.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-Bdkj1sRJ.js → FormItemContext-B5YsrLDg.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-B-gWN2P3.js → GenericCardRenderer-DaWojPFw.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-BEMh_NGd.js → Git-dkhh6Fx2.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-qLGvA2Hw.js → Governance-Cz6vmkjc.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-DblBwYuW.js → Inference-DWt0hbh8.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-BISegVD_.js → KnowledgeGraph-BZJ0Z-nL.js} +1 -1
  38. package/src/assets/web-panel/assets/Logs-BaBBmL1A.js +2 -0
  39. package/src/assets/web-panel/assets/MarkdownRenderer-C1yByobo.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-CHKXMOkH.js → Marketplace-ct8sgQ0s.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-B5G1elqd.js → McpTools-CXKCRGYQ.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-O5Ib0uTR.js → Memory-O7ZwlS6a.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-BaGYL7rT.js → MobileBridge-By12C-eC.js} +1 -1
  44. package/src/assets/web-panel/assets/MobileProjects-Ba-EVdex.js +1 -0
  45. package/src/assets/web-panel/assets/{Mtc-CNjJ97jg.js → Mtc-g-932zV2.js} +2 -2
  46. package/src/assets/web-panel/assets/{MtcAudit-DjBN-Wqz.js → MtcAudit-BW8hB0ly.js} +4 -4
  47. package/src/assets/web-panel/assets/{Multisig-B850R9lO.js → Multisig-zspLaMbT.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-Bn8sbFfV.js → NLProgramming-dJeUPDoq.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-BpLmMp3Q.js → Notes-C4msiRQL.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-Dbk97rjb.js → NotificationSettings-MOCHM-qg.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-BOBX_I72.js → OrderTableRenderer-CX0T66NM.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-B45DpOuE.js → Organization-DOZurBfk.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-DmKH7eer.js → Overflow-qOT9BhUp.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-CC4FaXTl.js → P2P-BMoy7Eo4.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-C2SgP4PI.js → PdhVaultBrowser-ByyV1q-D.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-BQB4QFj_.js → Permissions-6Qyro4ye.js} +4 -4
  57. package/src/assets/web-panel/assets/{PersonalDataHub-Dy6GGpn4.js → PersonalDataHub-DR3DRNSX.js} +4 -4
  58. package/src/assets/web-panel/assets/{Pipeline-B9HB5pRc.js → Pipeline-Cr6TTdud.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-D7pOmg-p.js → Privacy-B70otG0l.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-DglBqvec.js → ProjectInit-BHCqxoSk.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-Bho22znM.js → ProjectSettings-B80GZpZk.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-C0bSuM8U.js → Projects-cq-b9-fQ.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-BgAgo1Yr.js → Providers-dsVTimHa.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-C2fBjCC8.js → QrScannerModal-DRJ8YepZ.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-C8MiF-rk.js → QuickAsk-BSXdEjIB.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-D_TzHdQf.js → Recommend-CQLJGyKC.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-BHO7b6xE.js → RemoteSession-BF9WUFVZ.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-BPxNmNhD.js → Reputation-Cy9o5tvW.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-fwhot5Bk.js → Row-BP346_3b.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-CZbD1B-5.js → RssFeed-BKulxXf3.js} +3 -3
  71. package/src/assets/web-panel/assets/{Search-BRs6YpAE.js → Search-EemQj2Dv.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-CB344tKC.js → Security-DcWPAwwk.js} +4 -4
  73. package/src/assets/web-panel/assets/{Services-Beo-7fEl.js → Services-Bltqciay.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-CDXx96vD.js → Skeleton-BwRyOGY8.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-b-mQTJK4.js → Skills-D98qlvpJ.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-BvjP-IS9.js → Sla-BUTtBMY0.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-C6wsV-cO.js → SpeechSettings-C7kcY_98.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BQZoko-e.js → SyncSettings-Bsk6lKvT.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-6Z0rJJVO.js → Tasks-DvSrtz0P.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-Cc9IXtEQ.js → Templates-BUM6LwPs.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-BLc7AjOI.js → Tenant-D9TkOm7z.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-CUN49v85.js → Terminal-CP8ZVErN.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-CX-SksHN.js → TimelineRenderer-V3SoKZ1T.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-Btrm0-rK.js → Tokens-CCRlUTOA.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CIboUvKe.js → Trigger-CznUcPme.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-Rv9jEs5v.js → Trust-D1GIk_NF.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-B_xomdD5.js → UkeySign-DHtvtyC-.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-CrvWeMow.js → VideoEditing-CVxdaJIq.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-BjvWgk_7.js → Wallet-D221OjyE.js} +4 -4
  90. package/src/assets/web-panel/assets/{WebAuthn-CwfpFw92.js → WebAuthn-Cw0-ESsq.js} +5 -5
  91. package/src/assets/web-panel/assets/{WorkflowEditor-Dkk2QsOe.js → WorkflowEditor-ZYScrBx3.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-Dah1DVes.js → chat-BU0e1obR.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-JEpgQ10k.js → colors-gzYweuha.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item--DuG_cxf.js → compact-item-ChAXal_k.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-BJ_GZvon.js → createContext-of3FolD7.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-Pa13TVrO.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-yZRLDmWK.js → hasIn-4PsK_Kx8.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-DQ4Fch3e.js → index-1dzYRBbg.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-L9CFyRIi.js → index-B5L7zddz.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DxnkldGo.js → index-BOeX7BzS.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-D6Le2m3d.js → index-BdxRVNPY.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-DaDLWIWo.js → index-BfI4dXbi.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-o2qO_dYf.js → index-Bftq5rJR.js} +1 -1
  104. package/src/assets/web-panel/assets/index-BhQg-v6V.js +1 -0
  105. package/src/assets/web-panel/assets/{index-DhX48E81.js → index-By-pper5.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-Bdg_nWD1.js → index-CCLsbul3.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-cHx5KzUt.js → index-CGFL59q4.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-DemMuw7n.js → index-CHv_63Cp.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-DZBesaCN.js → index-CO2owKe0.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CxB49Mow.js → index-CeEE_SGZ.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-BKl40wrO.js → index-Cn1clrxx.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-VIgVth92.js → index-Cx4Z6nUl.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-kZE-K3ZO.js → index-CxzBcXOa.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-rkvSOceQ.js → index-CyDQNprx.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Cmr0AzcK.js → index-D-Zss5KL.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DddwZCT9.js → index-D1PGrfHE.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-BUjyj7qR.js → index-DDYj14Q4.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-CjuD8smQ.js → index-DEB5fQqG.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-asia_JPc.js → index-DEXBckNR.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-DFJbJ8rs.js → index-DEzjUgkl.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CFj7ylAJ.js → index-DJVrzXtk.js} +1 -1
  122. package/src/assets/web-panel/assets/index-DUD5o-vW.js +1 -0
  123. package/src/assets/web-panel/assets/{index-DroaQypF.js → index-DZ0oKtBg.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DbMGGcpZ.js → index-D_5LTPMH.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-IjOa5lYn.js → index-D_9k680X.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-vdTrEOj7.js → index-D_ialOHx.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-9L3Pg2tc.js → index-DjRAIRX7.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-Dq-8PFhL.js → index-Djfgsjfy.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-CJLz3SpM.js → index-DsoV9rzn.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BWkKE8Oj.js → index-Dy0ojH6G.js} +3 -3
  131. package/src/assets/web-panel/assets/{index-C8nXkCMf.js → index-E8oDMSAo.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-C56b8e9s.js → index-Ef5YkVAn.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-C6ohEAEV.js → index-Wr91cnWr.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-1QZASeW1.js → index-cFkMIx1x.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-BM7xJKGD.js → index-wo0De0iG.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-CQedFuDw.js → index-yMf7zmWv.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-anKyyjGc.js → initDefaultProps-D0Bx6pgr.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-Cqp0nx5A.js → motion-BnLuJqJ5.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-Ca3mgkM2.js → move-Bxpq9xgR.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-BmwuhJ3z.js → mtc-parser-BdmrNhOs.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-C9Mf05WJ.js → omit-tjJD34BZ.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-2PbxB9Ds.js → pickAttrs-CMFzLt7b.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-CTVbOFHt.js → placementArrow-BZf6O3cd.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-Nrm8Vbmr.js → responsiveObserve-DFDLazsV.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-Dh4r1zqR.js → slide-CMbTvp4Y.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-vzNoQL-r.js → statusUtils-FOan8MI7.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-BXpGfNkI.js → styleChecker-DTABspd4.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-CVWBRdhs.js → useFlexGapSupport-CNHXWBpY.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-BJWMLffI.js → useFs-5K-c_RoL.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-CWCe5VHG.js → usePersonalDataHub-Di0hL4G-.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-D-NBEb8m.js → vnode-DTyDv4ja.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-C0mnhfGf.js → zoom-ontRt8ft.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/commands/eval.js +11 -8
  155. package/src/data/changelog.json +26 -0
  156. package/src/harness/provider-backed-compaction.js +13 -5
  157. package/src/harness/worktree-isolator.js +20 -8
  158. package/src/lib/chat-core.js +57 -25
  159. package/src/lib/context-memory-kernel/live-compaction.js +142 -61
  160. package/src/lib/eval/verify01-execution-window.js +70 -0
  161. package/src/lib/eval/verify01-execution.js +9 -1
  162. package/src/lib/eval/verify01-host-capture.js +6 -2
  163. package/src/lib/formal-budget-authority.js +533 -0
  164. package/src/lib/formal-budget-contract.js +609 -0
  165. package/src/lib/formal-budget-transport.js +345 -0
  166. package/src/lib/provider-http-error.js +16 -0
  167. package/src/lib/stream-retry.js +195 -1
  168. package/src/runtime/agent-core.js +272 -32
  169. package/src/runtime/headless-stream.js +136 -4
  170. package/src/assets/web-panel/assets/ChatBubbleRenderer-RvblDu77.js +0 -1
  171. package/src/assets/web-panel/assets/Logs-BD2UR7kE.js +0 -2
  172. package/src/assets/web-panel/assets/MarkdownRenderer-B-TlDCmr.js +0 -1
  173. package/src/assets/web-panel/assets/MobileProjects-Dsctbob8.js +0 -1
  174. package/src/assets/web-panel/assets/devWarning-B6kQEceX.js +0 -1
  175. package/src/assets/web-panel/assets/index-CSeiH6HA.js +0 -1
  176. package/src/assets/web-panel/assets/index-CayGTz6d.js +0 -1
@@ -1 +1 @@
1
- import{N as i,h as a,w as l}from"./index-BWkKE8Oj.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
1
+ import{N as i,h as a,w as l}from"./index-Dy0ojH6G.js";import{a7 as o,k as g,C as d,F as f,A as p}from"./vendor-Bn1JzzAn.js";function c(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,u=e;if(Array.isArray(e)&&(u=i(e)[0]),!u)return null;const n=o(u,r,s);return n.props=t?a(a({},n.props),r):n.props,l(typeof n.props.class!="object","class must be string"),n}function V(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return e.map(s=>c(s,r,t))}function v(e,r,t){p(o(e,a({},r)),t)}const m=e=>(e||[]).some(r=>g(r)?!(r.type===d||r.type===f&&!m(r.children)):!0)?e:null;function h(e,r,t,s){var u;const n=(u=e[r])===null||u===void 0?void 0:u.call(e,t);return m(n)?n:s?.()}export{h as a,V as b,c,v as t};
@@ -1,4 +1,4 @@
1
- import{K as o}from"./index-BWkKE8Oj.js";import{i as f}from"./motion-Cqp0nx5A.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
1
+ import{K as o}from"./index-Dy0ojH6G.js";import{i as f}from"./motion-BnLuJqJ5.js";const c=new o("antZoomIn",{"0%":{transform:"scale(0.2)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),y=new o("antZoomOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.2)",opacity:0}}),a=new o("antZoomBigIn",{"0%":{transform:"scale(0.8)",opacity:0},"100%":{transform:"scale(1)",opacity:1}}),s=new o("antZoomBigOut",{"0%":{transform:"scale(1)"},"100%":{transform:"scale(0.8)",opacity:0}}),g=new o("antZoomUpIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 0%"}}),O=new o("antZoomUpOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 0%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 0%",opacity:0}}),l=new o("antZoomLeftIn",{"0%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"0% 50%"}}),u=new o("antZoomLeftOut",{"0%":{transform:"scale(1)",transformOrigin:"0% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"0% 50%",opacity:0}}),p=new o("antZoomRightIn",{"0%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"100% 50%"}}),z=new o("antZoomRightOut",{"0%":{transform:"scale(1)",transformOrigin:"100% 50%"},"100%":{transform:"scale(0.8)",transformOrigin:"100% 50%",opacity:0}}),K=new o("antZoomDownIn",{"0%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0},"100%":{transform:"scale(1)",transformOrigin:"50% 100%"}}),w=new o("antZoomDownOut",{"0%":{transform:"scale(1)",transformOrigin:"50% 100%"},"100%":{transform:"scale(0.8)",transformOrigin:"50% 100%",opacity:0}}),I={zoom:{inKeyframes:c,outKeyframes:y},"zoom-big":{inKeyframes:a,outKeyframes:s},"zoom-big-fast":{inKeyframes:a,outKeyframes:s},"zoom-left":{inKeyframes:l,outKeyframes:u},"zoom-right":{inKeyframes:p,outKeyframes:z},"zoom-up":{inKeyframes:g,outKeyframes:O},"zoom-down":{inKeyframes:K,outKeyframes:w}},h=(n,r)=>{const{antCls:m}=n,t=`${m}-${r}`,{inKeyframes:i,outKeyframes:e}=I[r];return[f(t,i,e,r==="zoom-big-fast"?n.motionDurationFast:n.motionDurationMid),{[`
2
2
  ${t}-enter,
3
3
  ${t}-appear
4
4
  `]:{transform:"scale(0)",opacity:0,animationTimingFunction:n.motionEaseOutCirc,"&-prepare":{transform:"none"}},[`${t}-leave`]:{animationTimingFunction:n.motionEaseInOutCirc}}]};export{h as i,c as z};
@@ -8,7 +8,7 @@
8
8
  // Injected by web-ui-server.js at serve time
9
9
  window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
10
10
  </script>
11
- <script type="module" crossorigin src="./assets/index-BWkKE8Oj.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-Dy0ojH6G.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-Bn1JzzAn.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/icons-DG5UD-6K.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-Cq93VfoF.css">
@@ -20,7 +20,7 @@ import {
20
20
  persistVerify01Receipts,
21
21
  } from "../lib/eval/verify01-execution.js";
22
22
  import executionBroker from "../lib/process-execution-broker/index.js";
23
- import { BUILT_IN_PROVIDERS } from "../lib/llm-providers.js";
23
+ import { requireFormalBudgetRuntime } from "../lib/formal-budget-transport.js";
24
24
  import {
25
25
  TelemetryRecorder,
26
26
  formatTelemetry,
@@ -117,6 +117,9 @@ function makeHeadlessRunAgent(opts = {}) {
117
117
  throw new Error(
118
118
  "VERIFY01 provider/model binding differs from the launcher",
119
119
  );
120
+ // A valid task binding is not paid execution admission. Until every paid
121
+ // route and credential boundary is covered, refuse before spawning a child.
122
+ if (binding) requireFormalBudgetRuntime();
120
123
  const inherited = { ...process.env, ...(opts.env || {}) };
121
124
  const environmentValue = (name) => {
122
125
  if (process.platform !== "win32") return inherited[name];
@@ -127,11 +130,10 @@ function makeHeadlessRunAgent(opts = {}) {
127
130
  .find((candidate) => candidate.toLowerCase() === name.toLowerCase());
128
131
  return key === undefined ? undefined : inherited[key];
129
132
  };
130
- const providerKey = BUILT_IN_PROVIDERS[binding?.provider]?.apiKeyEnv;
131
- // Formal children retain platform plumbing and only the selected provider's
132
- // credential (or the explicitly selected generic CC_API_KEY). Hooks,
133
- // fallback configuration, NODE_OPTIONS and unrelated account tokens are
134
- // excluded. Normal, non-formal Eval retains its existing environment.
133
+ // Formal children retain platform plumbing and the isolated task binding.
134
+ // Provider credentials belong to the trusted budget host. Hooks, fallback
135
+ // configuration, NODE_OPTIONS and account tokens are excluded. This alone
136
+ // does not enforce OS egress; paid launch remains refused above.
135
137
  const childEnvironment = binding
136
138
  ? {
137
139
  ...Object.fromEntries(
@@ -147,8 +149,6 @@ function makeHeadlessRunAgent(opts = {}) {
147
149
  "LANG",
148
150
  "LC_ALL",
149
151
  "LC_CTYPE",
150
- "CC_API_KEY",
151
- ...(providerKey ? [providerKey] : []),
152
152
  ]
153
153
  .map((key) => [key, environmentValue(key)])
154
154
  .filter(([, value]) => value !== undefined),
@@ -462,6 +462,9 @@ export function registerEvalCommand(program, { logger } = {}) {
462
462
  throw new Error(
463
463
  "frozen suite comparison is bound by its plan; --comparison-context cannot override it",
464
464
  );
465
+ // Refuse before task setup, workspace creation or raw receipt writes.
466
+ // Dry runs remain offline harness diagnostics, never observations.
467
+ if (tasks.verification && !options.dryRun) requireFormalBudgetRuntime();
465
468
  comparison =
466
469
  tasks.verification?.comparison ||
467
470
  createEvalComparison({
@@ -1,6 +1,32 @@
1
1
  {
2
2
  "source": "CHANGELOG.md",
3
3
  "releases": [
4
+ {
5
+ "productVersion": null,
6
+ "cliVersion": "0.166.101",
7
+ "cliVersions": ["0.166.101"],
8
+ "date": null,
9
+ "title": "",
10
+ "sections": [
11
+ {
12
+ "heading": "Fixed - cc CLI 0.166.101: preserve context, usage and task outcomes during compaction",
13
+ "body": "- Restore VS Code composer drafts after reset, session resume and closing the\n last tab, with retry controls for failed loads. Align LLM connection tests\n with the chat CLI and distinguish missing dependencies from provider errors.\n- Upgrade Context Memory Kernel to 0.1.10. Abort compaction with\n `context_over_budget` when planning would empty a nonempty context or discard\n a newly derived summary, including when summarizer fallback is enabled.\n- Preserve the original session context and head on rejection while retaining\n settled provider usage. Keep summary trust and selection budgets unchanged.\n- Propagate validated provider receipts before accounting. Mark rejected\n workflow compaction as failed, uncertain commits as requiring reconciliation,\n and interrupted ordinary tasks as incomplete.\n- Account for completed compaction usage once when canonical planning rejects\n its summary; stop on unknown usage or failed settlement without a paid retry.\n- Pair VS Code 0.37.145 and JetBrains 0.4.163 with CLI 0.166.101 after child\n package publication, public CLI verification and the final commit's complete\n Actions release gates. Formal evaluation and native/durable acceptance retain\n their separate evidence and unfinished status."
14
+ }
15
+ ]
16
+ },
17
+ {
18
+ "productVersion": null,
19
+ "cliVersion": "0.166.100",
20
+ "cliVersions": ["0.166.100"],
21
+ "date": null,
22
+ "title": "",
23
+ "sections": [
24
+ {
25
+ "heading": "Fixed - cc CLI 0.166.100: bound stream retries and revalidate evaluation evidence",
26
+ "body": "- Honor Retry-After within a cancellable 60-second bound, preserve terminal\n provider errors and prevent replay after visible stream output.\n- Pass chat token callbacks and request options through the streaming wrapper.\n- Recheck formal evaluation windows and saved bindings before execution, and\n validate documentation baselines again after acceptance-checker changes.\n- Pair VS Code 0.37.144 and JetBrains 0.4.162 with public CLI 0.166.100 only\n after the final source commit passes every required Actions release gate.\n- Reuse unchanged child versions after source-tree, registry-byte and provenance\n checks. Formal evaluation, native/durable authority and long-term acceptance\n retain their separate evidence and unfinished status."
27
+ }
28
+ ]
29
+ },
4
30
  {
5
31
  "productVersion": null,
6
32
  "cliVersion": "0.166.99",
@@ -151,10 +151,16 @@ export async function compactConversationWithProvider(messages, options = {}) {
151
151
  }
152
152
  chatFn = chatWithTools;
153
153
  }
154
- const invokeProviderCall = async (call) => {
155
- const callId = safeUsageCallId(await options.onProviderCallStart?.());
154
+ const invokeProviderCall = async (call, deferUntilAdmission = false) => {
155
+ let callId = null;
156
+ const start = async () => {
157
+ callId = safeUsageCallId(await options.onProviderCallStart?.());
158
+ };
159
+ // Only the captured canonical transport can attest that request admission
160
+ // completed. Custom adapters keep the conservative pre-call boundary.
161
+ if (!deferUntilAdmission) await start();
156
162
  try {
157
- return attachProviderCallId(await call(), callId);
163
+ return attachProviderCallId(await call(start), callId);
158
164
  } catch (error) {
159
165
  attachProviderCallIdToError(error, callId);
160
166
  throw error;
@@ -167,7 +173,7 @@ export async function compactConversationWithProvider(messages, options = {}) {
167
173
  if (typeof chatFn !== "function") {
168
174
  throw new Error("provider adapter unavailable");
169
175
  }
170
- return invokeProviderCall(async () => {
176
+ return invokeProviderCall(async (start) => {
171
177
  const response = await chatFn([{ role: "user", content: prompt }], {
172
178
  ...(options.chatOptions || {}),
173
179
  ...(evolutionIngress === null ? {} : { evolutionIngress }),
@@ -184,6 +190,8 @@ export async function compactConversationWithProvider(messages, options = {}) {
184
190
  onToken: undefined,
185
191
  onStall: undefined,
186
192
  onStreamRetry: undefined,
193
+ onProviderCallStart:
194
+ evolutionIngress === null ? undefined : start,
187
195
  maxOutputTokens,
188
196
  });
189
197
  return {
@@ -198,7 +206,7 @@ export async function compactConversationWithProvider(messages, options = {}) {
198
206
  ? { usageLedgerSettled: true }
199
207
  : {}),
200
208
  };
201
- });
209
+ }, evolutionIngress !== null);
202
210
  };
203
211
 
204
212
  const compressor =
@@ -172,9 +172,25 @@ function parseRegisteredWorktrees(output) {
172
172
  }
173
173
 
174
174
  function readRegisteredWorktrees(repoDir) {
175
- return parseRegisteredWorktrees(
176
- gitExecArgs(["worktree", "list", "--porcelain"], repoDir),
177
- );
175
+ for (let attempt = 1; ; attempt += 1) {
176
+ try {
177
+ return parseRegisteredWorktrees(
178
+ gitExecArgs(["worktree", "list", "--porcelain"], repoDir),
179
+ );
180
+ } catch (error) {
181
+ // A concurrent `worktree add` can remove its temporary lock marker
182
+ // between Git's existence check and read. Retry only this read-only
183
+ // registry snapshot; never replay mutations or accept partial output.
184
+ if (
185
+ attempt >= 3 ||
186
+ !/^fatal: failed to read '[^'\r\n]*[\\/]worktrees[\\/][^'\\/\r\n]+[\\/]locked': No such file or directory$/u.test(
187
+ error?.message || "",
188
+ )
189
+ ) {
190
+ throw error;
191
+ }
192
+ }
193
+ }
178
194
  }
179
195
 
180
196
  function repositoryManagementContext(repoDir) {
@@ -341,11 +357,7 @@ function assertManagedWorktreePathWithContext(
341
357
  return candidatePath;
342
358
  }
343
359
 
344
- export function assertManagedWorktreePath(
345
- repoDir,
346
- worktreePath,
347
- options = {},
348
- ) {
360
+ export function assertManagedWorktreePath(repoDir, worktreePath, options = {}) {
349
361
  return assertManagedWorktreePathWithContext(
350
362
  repoDir,
351
363
  worktreePath,
@@ -15,7 +15,12 @@ import {
15
15
  isRetryableStreamError,
16
16
  STREAM_RETRY_BASE_MS,
17
17
  resolveStreamRetryMax,
18
+ captureStreamRetryMetadata,
19
+ attachStreamRetryMetadata,
20
+ resolveStreamRetryDelay,
21
+ waitForStreamRetry,
18
22
  } from "./stream-retry.js";
23
+ import { throwIfAborted } from "./abort-utils.js";
19
24
 
20
25
  // A streaming chat call must not hang forever if the API accepts the connection
21
26
  // but then goes silent (TCP up, no bytes). Abort the request if no data arrives
@@ -90,7 +95,7 @@ function _cachedPromptTokens(usage) {
90
95
  return 0;
91
96
  }
92
97
 
93
- async function _deliverToken(onToken, token, guard) {
98
+ async function _deliverToken(onToken, token, guard, options = {}) {
94
99
  if (typeof onToken !== "function") return;
95
100
  // Terminal backpressure is not provider silence. Suspend the network stall
96
101
  // timer while the UI sink drains, then re-arm it before reading more bytes.
@@ -150,9 +155,14 @@ export async function streamOllama(
150
155
 
151
156
  if (!response.ok) {
152
157
  guard.stop();
153
- throw new Error(`Ollama error: ${response.status} ${response.statusText}`);
158
+ throw attachStreamRetryMetadata(
159
+ new Error(`Ollama error: ${response.status} ${response.statusText}`),
160
+ captureStreamRetryMetadata(response),
161
+ );
154
162
  }
155
163
 
164
+ const retryMetadata = captureStreamRetryMetadata(response);
165
+
156
166
  const reader = response.body.getReader();
157
167
  const decoder = new TextDecoder();
158
168
  let fullResponse = "";
@@ -182,7 +192,7 @@ export async function streamOllama(
182
192
  if (json.done === true) completed = true;
183
193
  if (json.message?.content) {
184
194
  fullResponse += json.message.content;
185
- await _deliverToken(onToken, json.message.content, guard);
195
+ await _deliverToken(onToken, json.message.content, guard, options);
186
196
  }
187
197
  if (json.done && onUsage) {
188
198
  const inputTokens = Number(json.prompt_eval_count) || 0;
@@ -202,11 +212,14 @@ export async function streamOllama(
202
212
  }
203
213
  }
204
214
  } catch (e) {
205
- throw guard.stalled()
206
- ? new Error(
207
- `Ollama stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`,
208
- )
209
- : e;
215
+ throw attachStreamRetryMetadata(
216
+ guard.stalled()
217
+ ? new Error(
218
+ `Ollama stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`,
219
+ )
220
+ : e,
221
+ retryMetadata,
222
+ );
210
223
  } finally {
211
224
  guard.stop();
212
225
  }
@@ -263,9 +276,14 @@ export async function streamOpenAI(
263
276
 
264
277
  if (!response.ok) {
265
278
  guard.stop();
266
- throw new Error(`API error: ${response.status} ${response.statusText}`);
279
+ throw attachStreamRetryMetadata(
280
+ new Error(`API error: ${response.status} ${response.statusText}`),
281
+ captureStreamRetryMetadata(response),
282
+ );
267
283
  }
268
284
 
285
+ const retryMetadata = captureStreamRetryMetadata(response);
286
+
269
287
  const reader = response.body.getReader();
270
288
  const decoder = new TextDecoder();
271
289
  let fullResponse = "";
@@ -300,7 +318,7 @@ export async function streamOpenAI(
300
318
  const content = json.choices?.[0]?.delta?.content;
301
319
  if (content) {
302
320
  fullResponse += content;
303
- await _deliverToken(onToken, content, guard);
321
+ await _deliverToken(onToken, content, guard, options);
304
322
  }
305
323
  if (json.usage && onUsage) {
306
324
  // Split cached prompt tokens out of prompt_tokens so cc cost
@@ -325,9 +343,14 @@ export async function streamOpenAI(
325
343
  }
326
344
  }
327
345
  } catch (e) {
328
- throw guard.stalled()
329
- ? new Error(`API stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`)
330
- : e;
346
+ throw attachStreamRetryMetadata(
347
+ guard.stalled()
348
+ ? new Error(
349
+ `API stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`,
350
+ )
351
+ : e,
352
+ retryMetadata,
353
+ );
331
354
  } finally {
332
355
  guard.stop();
333
356
  }
@@ -398,11 +421,14 @@ export async function streamAnthropic(
398
421
 
399
422
  if (!response.ok) {
400
423
  guard.stop();
401
- throw new Error(
402
- `Anthropic error: ${response.status} ${response.statusText}`,
424
+ throw attachStreamRetryMetadata(
425
+ new Error(`Anthropic error: ${response.status} ${response.statusText}`),
426
+ captureStreamRetryMetadata(response),
403
427
  );
404
428
  }
405
429
 
430
+ const retryMetadata = captureStreamRetryMetadata(response);
431
+
406
432
  const reader = response.body.getReader();
407
433
  const decoder = new TextDecoder();
408
434
  let fullResponse = "";
@@ -435,7 +461,7 @@ export async function streamAnthropic(
435
461
  const delta = obj.delta?.text;
436
462
  if (delta) {
437
463
  fullResponse += delta;
438
- await _deliverToken(onToken, delta, guard);
464
+ await _deliverToken(onToken, delta, guard, options);
439
465
  }
440
466
  } else if (obj.type === "message_start") {
441
467
  const u = obj.message?.usage || {};
@@ -459,11 +485,14 @@ export async function streamAnthropic(
459
485
  }
460
486
  }
461
487
  } catch (e) {
462
- throw guard.stalled()
463
- ? new Error(
464
- `Anthropic stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`,
465
- )
466
- : e;
488
+ throw attachStreamRetryMetadata(
489
+ guard.stalled()
490
+ ? new Error(
491
+ `Anthropic stream stalled (no data in ${STREAM_STALL_MS / 1000}s)`,
492
+ )
493
+ : e,
494
+ retryMetadata,
495
+ );
467
496
  } finally {
468
497
  guard.stop();
469
498
  }
@@ -607,6 +636,7 @@ export async function* chatStream(messages, options) {
607
636
  const maxRetries = resolveStreamRetryMax();
608
637
  let attempt = 0;
609
638
  for (;;) {
639
+ throwIfAborted(options.signal);
610
640
  try {
611
641
  return await providerCall();
612
642
  } catch (err) {
@@ -618,10 +648,14 @@ export async function* chatStream(messages, options) {
618
648
  if (
619
649
  attempt >= maxRetries ||
620
650
  tokensEmitted > 0 ||
621
- !isRetryableStreamError(err)
651
+ !isRetryableStreamError(err, options.signal)
622
652
  ) {
623
653
  throw err;
624
654
  }
655
+ const delayMs = resolveStreamRetryDelay(err, attempt + 1, {
656
+ baseDelayMs: STREAM_RETRY_BASE_MS,
657
+ });
658
+ if (delayMs === null) throw err;
625
659
  attempt++;
626
660
  if (typeof options.onStreamRetry === "function") {
627
661
  try {
@@ -630,9 +664,7 @@ export async function* chatStream(messages, options) {
630
664
  /* retry notice is best-effort */
631
665
  }
632
666
  }
633
- await new Promise((r) =>
634
- setTimeout(r, STREAM_RETRY_BASE_MS * 2 ** (attempt - 1)),
635
- );
667
+ await waitForStreamRetry(delayMs, options.signal);
636
668
  }
637
669
  }
638
670
  } finally {