chainlesschain 0.166.100 → 0.166.102

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 (187) hide show
  1. package/package.json +3 -3
  2. package/src/assets/linux-subreaper/linux-arm64/manifest.json +1 -1
  3. package/src/assets/linux-subreaper/linux-x64/manifest.json +1 -1
  4. package/src/assets/web-panel/assets/{AIOps-Cd4iUOPt.js → AIOps-CyHIMEd8.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton--ucr-zko.js → ActionButton-vuNxDpHm.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-DbejYMWk.js → Analytics-D0quEM0q.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-CLgKxeGw.js → AppLayout-xRSVpbCs.js} +5 -5
  8. package/src/assets/web-panel/assets/{Artifacts-CTT5BIL5.js → Artifacts-ktfVAZBC.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-DP-WBWe9.js → Audit-UJW6maH4.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-B6VqheJk.js → BackgroundAgents-BYrfdCoT.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-VWJK5zim.js → Backup-IBgsJ7BK.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-YGFO9RHd.js → BaseInput-BmP8_zxy.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-CVfydnCd.js → Chat-urkw8_BF.js} +5 -5
  14. package/src/assets/web-panel/assets/{ChatBubbleRenderer-BICpB-qU.js → ChatBubbleRenderer-Cw44zZbh.js} +1 -1
  15. package/src/assets/web-panel/assets/{Checkbox-Bd5vKRMk.js → Checkbox-CYboo-__.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-DHNgPHvg.js → Codegen-DaqR_Ay8.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-CA2BYQ8T.js → Col-04BSIj_z.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-DnKJ-qpI.js → Community-DxFk7Trv.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-C9BZ8t4r.js → Compact-mjgWlMCB.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-ByyQ2FOl.js → Compliance-CC5ee7QV.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-rXTwXE_c.js → Cowork-BK4BhHZd.js} +2 -2
  22. package/src/assets/web-panel/assets/{Cron-BuW-HODy.js → Cron-CP6jAxq0.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-OudNtbYW.js → Crosschain-DJPaViZS.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-BQ6BxYNN.js → DID-BTLxkuOj.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-Cz5HG8tz.js → Dashboard-Djkiqh3d.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-BzclHOVv.js → Dropdown-t_eUhqom.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-CbJETFdy.js → EmailListRenderer-7w6USx_J.js} +1 -1
  28. package/src/assets/web-panel/assets/{EvolutionSettings-Dx_pJG3d.js → EvolutionSettings-mU5IHEk5.js} +1 -1
  29. package/src/assets/web-panel/assets/{FamilyGuardDashboard-6JCS1MNg.js → FamilyGuardDashboard-BCh-VBBC.js} +1 -1
  30. package/src/assets/web-panel/assets/{Federation-BrPkMYaf.js → Federation-Be_VpjI2.js} +1 -1
  31. package/src/assets/web-panel/assets/{FormItemContext-Bhc9pobs.js → FormItemContext-D_lzQ7PI.js} +1 -1
  32. package/src/assets/web-panel/assets/{GenericCardRenderer-BxOh07uQ.js → GenericCardRenderer-LYu3KapV.js} +1 -1
  33. package/src/assets/web-panel/assets/{Git-D_idoujr.js → Git-BBeF-PP4.js} +2 -2
  34. package/src/assets/web-panel/assets/{Governance-ZGfIRE-x.js → Governance-CoF8Kzg7.js} +1 -1
  35. package/src/assets/web-panel/assets/{Inference-DpAmcwbw.js → Inference-C4DLMnXS.js} +1 -1
  36. package/src/assets/web-panel/assets/{KnowledgeGraph-D1S1UTgP.js → KnowledgeGraph-B2mlNewk.js} +1 -1
  37. package/src/assets/web-panel/assets/{Logs-2sc8V5XV.js → Logs-DMZ_44Ya.js} +2 -2
  38. package/src/assets/web-panel/assets/MarkdownRenderer-Ck7Iv_9e.js +1 -0
  39. package/src/assets/web-panel/assets/{Marketplace-0xlFUKbe.js → Marketplace-BqDzTew_.js} +1 -1
  40. package/src/assets/web-panel/assets/{McpTools-D25eJLGm.js → McpTools-BbwSbDN9.js} +3 -3
  41. package/src/assets/web-panel/assets/{Memory-BLRGd9hM.js → Memory-DAaTWgrm.js} +2 -2
  42. package/src/assets/web-panel/assets/{MobileBridge-zpFINGzn.js → MobileBridge-BjbTGxoR.js} +1 -1
  43. package/src/assets/web-panel/assets/{MobileProjects-Cbyd-8kx.js → MobileProjects-DMODOBr-.js} +1 -1
  44. package/src/assets/web-panel/assets/{Mtc-DgXgUlHc.js → Mtc-DT9N2rCs.js} +2 -2
  45. package/src/assets/web-panel/assets/{MtcAudit-DzcL-dKH.js → MtcAudit-DagMfUVv.js} +2 -2
  46. package/src/assets/web-panel/assets/{Multisig-C3OrZ6VN.js → Multisig-C1BKP6nM.js} +3 -3
  47. package/src/assets/web-panel/assets/{NLProgramming-Bqp_vWA7.js → NLProgramming-B5LFh72i.js} +1 -1
  48. package/src/assets/web-panel/assets/{Notes-Dyn45-Ht.js → Notes-Q77V3ltW.js} +3 -3
  49. package/src/assets/web-panel/assets/{NotificationSettings-CLjafGZr.js → NotificationSettings-HxdpNIBs.js} +1 -1
  50. package/src/assets/web-panel/assets/OrderTableRenderer-Dc0DpvBH.js +1 -0
  51. package/src/assets/web-panel/assets/{Organization-5gr9hyLm.js → Organization-QL3NZ7uW.js} +4 -4
  52. package/src/assets/web-panel/assets/{Overflow-BRdU02hT.js → Overflow-B_gqOKho.js} +1 -1
  53. package/src/assets/web-panel/assets/{P2P-DIi7fzh6.js → P2P-BBJubU8Z.js} +2 -2
  54. package/src/assets/web-panel/assets/{PdhVaultBrowser-BCbS1KpA.js → PdhVaultBrowser-CFnGd-2E.js} +3 -3
  55. package/src/assets/web-panel/assets/{Permissions-BjeP9VtA.js → Permissions-BKkznIUM.js} +4 -4
  56. package/src/assets/web-panel/assets/{PersonalDataHub-y8PXOQUc.js → PersonalDataHub-DYK7ZAcd.js} +4 -4
  57. package/src/assets/web-panel/assets/{Pipeline-B0fL5uxY.js → Pipeline-CoeKpjoN.js} +1 -1
  58. package/src/assets/web-panel/assets/{Privacy-C8jCDn8Z.js → Privacy-Diw4G-92.js} +1 -1
  59. package/src/assets/web-panel/assets/{ProjectInit-B_L6Dc6V.js → ProjectInit-CHBOFkma.js} +2 -2
  60. package/src/assets/web-panel/assets/{ProjectSettings-Bb1CYbZh.js → ProjectSettings-BJIsgdOf.js} +2 -2
  61. package/src/assets/web-panel/assets/{Projects-CUSV10Cn.js → Projects-GJjItXIk.js} +1 -1
  62. package/src/assets/web-panel/assets/{Providers-mBSTDJ0E.js → Providers-o8QCimor.js} +1 -1
  63. package/src/assets/web-panel/assets/{QrScannerModal-CHxgalvt.js → QrScannerModal-z2W-zvhW.js} +1 -1
  64. package/src/assets/web-panel/assets/{QuickAsk-DI9KIMEV.js → QuickAsk-_yubhsna.js} +1 -1
  65. package/src/assets/web-panel/assets/{Recommend-B5_zW1JH.js → Recommend-CucgJwih.js} +1 -1
  66. package/src/assets/web-panel/assets/{RemoteSession-BkH4bmM5.js → RemoteSession-EzfIIRg1.js} +2 -2
  67. package/src/assets/web-panel/assets/{Reputation-DJrAqwAq.js → Reputation-_shttE67.js} +1 -1
  68. package/src/assets/web-panel/assets/{Row-xZ3MAM34.js → Row-DQA_S8-9.js} +1 -1
  69. package/src/assets/web-panel/assets/{RssFeed-CCsrLLiu.js → RssFeed-BOqWawXT.js} +3 -3
  70. package/src/assets/web-panel/assets/{Search-CTCRKvaP.js → Search-Dx1v2xOq.js} +1 -1
  71. package/src/assets/web-panel/assets/{Security-D7joyfp2.js → Security-Bt4HHsT4.js} +4 -4
  72. package/src/assets/web-panel/assets/{Services-oqHPmTG4.js → Services-sruHiQ-r.js} +2 -2
  73. package/src/assets/web-panel/assets/{Skeleton-BR_32bTG.js → Skeleton-CiBxvmOJ.js} +1 -1
  74. package/src/assets/web-panel/assets/{Skills-BoRz9mln.js → Skills-De9qKODU.js} +1 -1
  75. package/src/assets/web-panel/assets/{Sla-UAGUHZ9b.js → Sla-B_6yn8Wp.js} +1 -1
  76. package/src/assets/web-panel/assets/{SpeechSettings-DeP_rMgv.js → SpeechSettings-C2CafExS.js} +1 -1
  77. package/src/assets/web-panel/assets/{SyncSettings-CSzzMmeA.js → SyncSettings-Dhh3Qmb0.js} +2 -2
  78. package/src/assets/web-panel/assets/{Tasks-CcqOLsLB.js → Tasks-Mvo5mTWm.js} +1 -1
  79. package/src/assets/web-panel/assets/{Templates-cDbkGSDG.js → Templates-D7WVTQQy.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tenant-DmOy58cq.js → Tenant-7ur9Yfxd.js} +1 -1
  81. package/src/assets/web-panel/assets/{Terminal-CsRZH5vr.js → Terminal-BgzrOA6k.js} +2 -2
  82. package/src/assets/web-panel/assets/{TimelineRenderer-BgJrk6HG.js → TimelineRenderer-Dco20pT1.js} +1 -1
  83. package/src/assets/web-panel/assets/{Tokens-CCQglKDE.js → Tokens-hN6qBPag.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trigger-t-Gt3oBY.js → Trigger-C4f_twAM.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trust-DQgu2kI0.js → Trust-Wf1SMypp.js} +1 -1
  86. package/src/assets/web-panel/assets/{UkeySign-Cod2WUGj.js → UkeySign-DUXSyg3N.js} +1 -1
  87. package/src/assets/web-panel/assets/{VideoEditing-SGN5zaVK.js → VideoEditing-BvqsJaL0.js} +1 -1
  88. package/src/assets/web-panel/assets/{Wallet-CnLEL-LD.js → Wallet-CgAbcjKl.js} +3 -3
  89. package/src/assets/web-panel/assets/{WebAuthn-C2keUpD6.js → WebAuthn-DaLT0W3s.js} +2 -2
  90. package/src/assets/web-panel/assets/{WorkflowEditor-B1GvrwWJ.js → WorkflowEditor-CQqAXoaS.js} +1 -1
  91. package/src/assets/web-panel/assets/{chat-1E9_P_qY.js → chat-BhlohFTB.js} +1 -1
  92. package/src/assets/web-panel/assets/{colors-DuU6Os4q.js → colors-D7HqXIL8.js} +1 -1
  93. package/src/assets/web-panel/assets/{compact-item-C5NfOAcM.js → compact-item-Bqk4FCLY.js} +1 -1
  94. package/src/assets/web-panel/assets/{createContext-D4Fxz9qQ.js → createContext-CEmWrWf0.js} +1 -1
  95. package/src/assets/web-panel/assets/devWarning-YPX_TU7w.js +1 -0
  96. package/src/assets/web-panel/assets/{hasIn-C6C49iFk.js → hasIn-CDY0pFi2.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DP2DCKD-.js → index-1HBam9t1.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-B-bb-R99.js → index-6f6n0KFR.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-BmvU4Tp_.js → index-B8L3_-sG.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-BsH8mFp4.js → index-BHGOdvOQ.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-BVE2wCeb.js → index-BNrvBWDS.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CJS6GTpv.js → index-BPmRkxeX.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-C7mh6xlu.js → index-BXRooi-O.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-BZKRZYTX.js → index-BiLu-ImR.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-jFg3CPlQ.js → index-BuKGuH_y.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-BULggEX6.js → index-BxXFRLTZ.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DPzunJER.js → index-BxYO6nde.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-AO6iDCSL.js → index-C02yDu4f.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BU5mPkNX.js → index-C3opQg47.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-DSypQU1h.js → index-C9mvnSii.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-DZgT7pH-.js → index-CVrwozwH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-CpiOzt7U.js → index-CYcjOnDX.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-BlHkc48f.js → index-Cf1ha8l0.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CXb8gEWh.js → index-Chxt0t-A.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-HQXFl8fh.js → index-CkjgSHVz.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-DpaGe-dr.js → index-CkqBoCiu.js} +3 -3
  117. package/src/assets/web-panel/assets/{index-C2nO02uW.js → index-CqK0J4Sj.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-Bu6qMjf4.js → index-CrsM-oiD.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-Bk-paNL3.js → index-Cur88hoN.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-CXn-e3ki.js → index-D0nfNmbq.js} +1 -1
  121. package/src/assets/web-panel/assets/index-D53szVZQ.js +1 -0
  122. package/src/assets/web-panel/assets/{index-CDVwN9Sv.js → index-DEzL7s7P.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-B_ON9La1.js → index-DGKRAO61.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-CQJoh5rw.js → index-DPBoWNwq.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-cnDfwWU5.js → index-DRcDWMwP.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-BBVqlelF.js → index-DmKdCWq1.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-BYg1dtne.js → index-DpI1LqJX.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-B5lzRoHp.js → index-DuMt3ewl.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-gh11zJ9h.js → index-Dwob5XoD.js} +1 -1
  130. package/src/assets/web-panel/assets/index-Ub2nJbV2.js +1 -0
  131. package/src/assets/web-panel/assets/{index-D1TXgNPA.js → index-XErJQ1yF.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-DFK6PTGJ.js → index-aBHlgMrq.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-Dh-vezHe.js → index-e9oCy7_4.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-bW6vfpLH.js → index-lBAbMOzg.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-lNmDaf3J.js → index-o_lc3eww.js} +1 -1
  136. package/src/assets/web-panel/assets/{initDefaultProps-3DSfnIpD.js → initDefaultProps-CIeEUxIN.js} +1 -1
  137. package/src/assets/web-panel/assets/{motion-DxGLmgA0.js → motion-IPIj1ZtP.js} +1 -1
  138. package/src/assets/web-panel/assets/{move-DrlLG6m5.js → move-BfSeXZ-f.js} +1 -1
  139. package/src/assets/web-panel/assets/{mtc-parser-BITbrJSb.js → mtc-parser-DX03-Xp4.js} +1 -1
  140. package/src/assets/web-panel/assets/{omit-D7k5vIbk.js → omit-z9EannfX.js} +1 -1
  141. package/src/assets/web-panel/assets/{pickAttrs-BJSvYFWo.js → pickAttrs-DXKmRkqZ.js} +1 -1
  142. package/src/assets/web-panel/assets/{placementArrow-Bf4to1jA.js → placementArrow-k2HV7cIU.js} +1 -1
  143. package/src/assets/web-panel/assets/{responsiveObserve-BXzeyzTa.js → responsiveObserve-bX7CsyWy.js} +1 -1
  144. package/src/assets/web-panel/assets/{slide-DLzNUNdj.js → slide-NskjQLbJ.js} +1 -1
  145. package/src/assets/web-panel/assets/{statusUtils-wBBnrRm_.js → statusUtils-B3IoG-Er.js} +1 -1
  146. package/src/assets/web-panel/assets/{styleChecker-BnmJzXNr.js → styleChecker-DHv_UilX.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFlexGapSupport-DrN8MrJb.js → useFlexGapSupport-DEqGB5Ng.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFs-dnkYGkjY.js → useFs-Bl9CbrqZ.js} +1 -1
  149. package/src/assets/web-panel/assets/{usePersonalDataHub-k_xkv7-k.js → usePersonalDataHub-O-Ukv93M.js} +1 -1
  150. package/src/assets/web-panel/assets/{vnode-B-v8PXpK.js → vnode-hGCHTaZt.js} +1 -1
  151. package/src/assets/web-panel/assets/{zoom-Coue8wAK.js → zoom-BWhIVeKQ.js} +1 -1
  152. package/src/assets/web-panel/index.html +1 -1
  153. package/src/command-help-index.json +1 -1
  154. package/src/commands/agent.js +64 -40
  155. package/src/commands/eval.js +11 -8
  156. package/src/data/changelog.json +26 -0
  157. package/src/harness/provider-backed-compaction.js +13 -5
  158. package/src/lib/config-schema.js +18 -5
  159. package/src/lib/context-memory-kernel/live-compaction.js +142 -61
  160. package/src/lib/context-memory-kernel/memory-query-index.js +5 -2
  161. package/src/lib/context-memory-kernel/runtime.js +4 -0
  162. package/src/lib/context-memory-kernel/segmented-memory-port.js +28 -3
  163. package/src/lib/context-source-ledger.js +52 -9
  164. package/src/lib/formal-budget-authority.js +533 -0
  165. package/src/lib/formal-budget-contract.js +609 -0
  166. package/src/lib/formal-budget-transport.js +345 -0
  167. package/src/lib/goal-condition-engine.js +25 -2
  168. package/src/lib/llm-config-defaults.js +10 -4
  169. package/src/lib/llm-pricing.js +16 -4
  170. package/src/lib/model-capabilities.js +26 -0
  171. package/src/lib/model-catalog-review.js +18 -1
  172. package/src/lib/model-context-catalog.js +41 -1
  173. package/src/lib/openai-responses.js +8 -0
  174. package/src/lib/skill-retrieval-router.js +1 -0
  175. package/src/lib/usage-pricing-context.js +33 -2
  176. package/src/repl/agent-repl.js +247 -153
  177. package/src/runtime/agent-core.js +371 -97
  178. package/src/runtime/coding-agent-contract-shared.cjs +14 -1
  179. package/src/runtime/headless-runner.js +1 -0
  180. package/src/runtime/headless-stream.js +137 -4
  181. package/src/runtime/mcp-tool-search.js +0 -0
  182. package/src/runtime/provider-stream-state.js +14 -1
  183. package/src/assets/web-panel/assets/MarkdownRenderer-575jjYE6.js +0 -1
  184. package/src/assets/web-panel/assets/OrderTableRenderer-Bx8wMauC.js +0 -1
  185. package/src/assets/web-panel/assets/devWarning-zDWbYMr7.js +0 -1
  186. package/src/assets/web-panel/assets/index-BPBsZZnT.js +0 -1
  187. package/src/assets/web-panel/assets/index-CtGQDg7m.js +0 -1
@@ -583,7 +583,7 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
583
583
  kind: "skill",
584
584
  tier: "extension",
585
585
  description:
586
- "List available built-in skills, optionally filtered by category or keyword",
586
+ "Search available skills by query/category. Returns up to 20 descriptors by default (maximum 64); use nextOffset for more. Skill bodies are loaded only when selected.",
587
587
  inputSchema: {
588
588
  type: "object",
589
589
  properties: {
@@ -596,6 +596,19 @@ const CODING_AGENT_TOOL_CONTRACTS = Object.freeze([
596
596
  type: "string",
597
597
  description: "Search keyword to filter skills",
598
598
  },
599
+ limit: {
600
+ type: "integer",
601
+ minimum: 1,
602
+ maximum: 64,
603
+ description: "Descriptors per page; default 20",
604
+ },
605
+ offset: {
606
+ type: "integer",
607
+ minimum: 0,
608
+ maximum: 10000,
609
+ description:
610
+ "Use nextOffset from the previous page; default 0. Query results are bounded to the top 64 matches.",
611
+ },
599
612
  },
600
613
  },
601
614
  ...TOOL_POLICY_METADATA.list_skills,
@@ -2623,6 +2623,7 @@ async function runAgentHeadlessInWorkspace(
2623
2623
  apiKey,
2624
2624
  cwd,
2625
2625
  skillLoader: _runtimeSkillLoader,
2626
+ serviceTier: options.serviceTier,
2626
2627
  ...(skillDecisionRuntime === null ? {} : { skillDecisionRuntime }),
2627
2628
  ...captureSkillRuntimeDependencies(options, evolutionIngress?.tenantId),
2628
2629
  ...(skillOutcomeIndex === null ? {} : { skillOutcomeIndex }),
@@ -3632,6 +3632,7 @@ async function runAgentHeadlessStreamInWorkspace(
3632
3632
  apiKey,
3633
3633
  cwd,
3634
3634
  additionalDirectories,
3635
+ serviceTier: options.serviceTier,
3635
3636
  sandbox: options.sandbox,
3636
3637
  shellPolicyOverrides: options.shellPolicyOverrides,
3637
3638
  ...(skillOutcomeIndex === null ? {} : { skillOutcomeIndex }),
@@ -3782,7 +3783,13 @@ async function runAgentHeadlessStreamInWorkspace(
3782
3783
  ? (event) => {
3783
3784
  try {
3784
3785
  if (event.type === "token-usage") {
3785
- store.appendTokenUsage(sessionId, projectRuntimeTokenUsage(event));
3786
+ requireSynchronousRecoveryResult(
3787
+ store.appendTokenUsage(
3788
+ sessionId,
3789
+ projectRuntimeTokenUsage(event),
3790
+ ),
3791
+ "appendTokenUsage",
3792
+ );
3786
3793
  return;
3787
3794
  }
3788
3795
  const outcome =
@@ -4294,6 +4301,44 @@ async function runAgentHeadlessStreamInWorkspace(
4294
4301
  let usageUnknownEvent;
4295
4302
  const compactionCallId = `compact-${++slashRequestSeq}`;
4296
4303
  let compactionProviderStarted = false;
4304
+ let compatibilityResult = null;
4305
+ let settledCompactionUsage = null;
4306
+ let costExceeded = false;
4307
+ const settleCompactionUsage = (event) => {
4308
+ if (settledCompactionUsage) return;
4309
+ if (!compactionProviderStarted || event?.callId !== compactionCallId) {
4310
+ throw new Error("compaction usage does not match its provider call");
4311
+ }
4312
+ const projected = projectRuntimeTokenUsage({
4313
+ ...event,
4314
+ source: "semantic-compaction",
4315
+ });
4316
+ try {
4317
+ persistUsageEvent?.({ type: "token-usage", ...projected });
4318
+ requireSynchronousRecoveryResult(
4319
+ recordSessionBudgetUsage(
4320
+ options.sessionBudget,
4321
+ projected,
4322
+ "headless semantic compaction usage settlement",
4323
+ ),
4324
+ "recordUsage",
4325
+ );
4326
+ } catch (error) {
4327
+ // A completed provider call must not be reclassified or replayed
4328
+ // when its accounting write fails.
4329
+ throw markRuntimeLedgerPersistenceError(error);
4330
+ }
4331
+ settledCompactionUsage = Object.freeze({
4332
+ ...projected,
4333
+ usage: Object.freeze(projected.usage),
4334
+ ledgerSettled: typeof persistUsageEvent === "function",
4335
+ });
4336
+ emit({ type: "token_usage", ...projected });
4337
+ if (costBudget) {
4338
+ costBudget.add(projected);
4339
+ costExceeded = costBudget.exceeded();
4340
+ }
4341
+ };
4297
4342
  try {
4298
4343
  const providerCompactionOptions = {
4299
4344
  ...(evolutionIngress === null ? {} : { evolutionIngress }),
@@ -4340,7 +4385,6 @@ async function runAgentHeadlessStreamInWorkspace(
4340
4385
  if (cutover.canonical) {
4341
4386
  const { compactLiveMessagesCanonical } =
4342
4387
  await import("../lib/context-memory-kernel/live-compaction.js");
4343
- let compatibilityResult = null;
4344
4388
  const canonical = await compactLiveMessagesCanonical(messages, {
4345
4389
  compressor: {
4346
4390
  maxTokens: Math.max(
@@ -4352,6 +4396,23 @@ async function runAgentHeadlessStreamInWorkspace(
4352
4396
  dropped,
4353
4397
  providerCompactionOptions,
4354
4398
  );
4399
+ if (
4400
+ compatibilityResult.usageEvent &&
4401
+ !compatibilityResult.usageUnknownEvent
4402
+ ) {
4403
+ settleCompactionUsage(compatibilityResult.usageEvent);
4404
+ const settledStats = { ...compatibilityResult.stats };
4405
+ if (settledCompactionUsage.ledgerSettled) {
4406
+ settledStats.summaryCallId = compactionCallId;
4407
+ settledStats.summaryUsageLedgerSettled = true;
4408
+ } else {
4409
+ // Ordinary nonpersistent runs have no durable ledger to
4410
+ // attest. Keep their known usage without inventing one.
4411
+ delete settledStats.summaryCallId;
4412
+ delete settledStats.summaryUsageLedgerSettled;
4413
+ }
4414
+ return { ...compatibilityResult, stats: settledStats };
4415
+ }
4355
4416
  return compatibilityResult;
4356
4417
  },
4357
4418
  },
@@ -4411,6 +4472,63 @@ async function runAgentHeadlessStreamInWorkspace(
4411
4472
  } catch (error) {
4412
4473
  if (isAbortError(error) || options.signal?.aborted) throw error;
4413
4474
  if (error?.runtimeLedgerPersistence === true) throw error;
4475
+ const { getRejectedCompactionUsage } =
4476
+ await import("../lib/context-memory-kernel/live-compaction.js");
4477
+ const rejectedUsage = getRejectedCompactionUsage(error);
4478
+ if (
4479
+ rejectedUsage &&
4480
+ settledCompactionUsage &&
4481
+ settledCompactionUsage.callId === compactionCallId &&
4482
+ (!rejectedUsage.callId ||
4483
+ rejectedUsage.callId === compactionCallId) &&
4484
+ (!rejectedUsage.receipt.callId ||
4485
+ rejectedUsage.receipt.callId === compactionCallId) &&
4486
+ rejectedUsage.provider === settledCompactionUsage.provider &&
4487
+ rejectedUsage.model === settledCompactionUsage.model &&
4488
+ JSON.stringify(rejectedUsage.usage) ===
4489
+ JSON.stringify(settledCompactionUsage.usage)
4490
+ ) {
4491
+ emit({
4492
+ type: "compaction-degraded",
4493
+ code: error.code,
4494
+ reason: "canonical_compaction_plan_rejected",
4495
+ summaryMode: "none",
4496
+ });
4497
+ if (costExceeded) {
4498
+ sawError = true;
4499
+ emit({
4500
+ type: "cost_budget_exhausted",
4501
+ limit_usd: options.maxCostUsd,
4502
+ spent_usd: costBudget.spentUsd,
4503
+ session_id: sessionId,
4504
+ turn: turns,
4505
+ });
4506
+ break;
4507
+ }
4508
+ continue;
4509
+ }
4510
+ if (settledCompactionUsage) {
4511
+ // Only a kernel-owned precommit rejection permits continuing. A
4512
+ // commit failure may have changed durable state, but cannot erase
4513
+ // the provider usage that this host already settled.
4514
+ emit({
4515
+ type: "compaction-degraded",
4516
+ code: error.code,
4517
+ reason: "canonical_compaction_settlement_failed",
4518
+ summaryMode: "none",
4519
+ });
4520
+ emit({
4521
+ type: "result",
4522
+ subtype: "error_compaction_settlement",
4523
+ is_error: true,
4524
+ code: error.code || "CC_COMPACTION_SETTLEMENT_FAILED",
4525
+ error:
4526
+ "Compaction settlement failed; the paid compaction is not retried",
4527
+ session_id: sessionId,
4528
+ });
4529
+ sawError = true;
4530
+ break;
4531
+ }
4414
4532
  if (error?.code === AGENT_EVOLUTION_INGRESS_FAILED_CODE) {
4415
4533
  evolutionIngressFailed = true;
4416
4534
  sawError = true;
@@ -4431,6 +4549,22 @@ async function runAgentHeadlessStreamInWorkspace(
4431
4549
  "headless semantic compaction",
4432
4550
  );
4433
4551
  }
4552
+ emit({
4553
+ ...event,
4554
+ type: "compaction_usage_unknown",
4555
+ usage_outcome: "unknown",
4556
+ });
4557
+ emit({
4558
+ type: "result",
4559
+ subtype: "error_compaction_usage_unknown",
4560
+ is_error: true,
4561
+ code: "CC_COMPACTION_USAGE_UNKNOWN",
4562
+ error:
4563
+ "Compaction provider usage is unknown; the paid compaction is not retried",
4564
+ session_id: sessionId,
4565
+ });
4566
+ sawError = true;
4567
+ break;
4434
4568
  }
4435
4569
  if (error?.code === AGENT_EVOLUTION_INGRESS_FAILED_CODE) {
4436
4570
  emit({
@@ -4487,8 +4621,7 @@ async function runAgentHeadlessStreamInWorkspace(
4487
4621
  sawError = true;
4488
4622
  break;
4489
4623
  }
4490
- let costExceeded = false;
4491
- if (usageEvent) {
4624
+ if (usageEvent && !settledCompactionUsage) {
4492
4625
  const event = {
4493
4626
  type: "token-usage",
4494
4627
  callId: compactionCallId,
Binary file
@@ -4,7 +4,10 @@
4
4
  * agent-core. Shared usage validation also serves non-streamed responses.
5
5
  */
6
6
 
7
- import { projectUsagePricingContext } from "../lib/usage-pricing-context.js";
7
+ import {
8
+ projectUsagePricingContext,
9
+ projectEnvelopePricingContext,
10
+ } from "../lib/usage-pricing-context.js";
8
11
 
9
12
  export function _isNonNegativeSafeInteger(value) {
10
13
  return Number.isSafeInteger(value) && value >= 0;
@@ -309,6 +312,15 @@ export function _openaiReduceLine(state, raw, onToken) {
309
312
  return state;
310
313
  }
311
314
  if (!state.responseId) state.responseId = _providerReceiptId(obj.id);
315
+ const pricing = projectEnvelopePricingContext(obj.usage || {}, obj);
316
+ for (const [key, value] of Object.entries(pricing)) {
317
+ if (
318
+ Object.hasOwn(state.pricingContext || {}, key) &&
319
+ state.pricingContext[key] !== value
320
+ )
321
+ pricing.pricingContextInvalid = true;
322
+ }
323
+ state.pricingContext = { ...state.pricingContext, ...pricing };
312
324
  const delta = obj.choices?.[0]?.delta;
313
325
  if (delta?.content) {
314
326
  state.text += delta.content;
@@ -373,6 +385,7 @@ export function _openaiFinalize(state) {
373
385
  input_tokens: state.inputTokens,
374
386
  output_tokens: state.outputTokens,
375
387
  cache_read_input_tokens: state.cacheReadTokens,
388
+ ...state.pricingContext,
376
389
  };
377
390
  }
378
391
  return out;
@@ -1 +0,0 @@
1
- import{P as c,J as d,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as p}from"./index-DpaGe-dr.js";const _={__name:"MarkdownRenderer",props:{content:{type:String,default:""}},setup(t,{expose:o}){o();const e=t,r=s(()=>a(e.content||"")),n={props:e,rendered:r,computed:s,get renderMarkdown(){return a}};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}},i=["innerHTML"];function m(t,o,e,r,n,u){return c(),d("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const w=p(_,[["render",m],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-dOhDed/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{w as M};
@@ -1 +0,0 @@
1
- import{I as w,P as l,J as u,U as s,R as n,c as i,K as v,Q as _,V as g,b as a}from"./vendor-Bn1JzzAn.js";import{_ as S}from"./index-DpaGe-dr.js";import"./icons-DG5UD-6K.js";const k={__name:"OrderTableRenderer",props:{event:{type:Object,required:!0}},setup(p,{expose:r}){r();const o=p,e=a(()=>o.event.content||{}),d=a(()=>o.event.extra||{}),m=a(()=>d.value.merchant||e.value.merchant||e.value.counterparty||"—"),c=a(()=>e.value.title||e.value.name||e.value.itemName||e.value.text||"—"),y=a(()=>{const t=e.value.amount??e.value.price??e.value.total;return t==null?"—":`${e.value.currency||"¥"} ${typeof t=="number"?t.toFixed(2):t}`}),T=a(()=>d.value.orderNo||e.value.orderNo||e.value.orderId),f=a(()=>e.value.status||e.value.state),h=a(()=>{const t=(f.value||"").toLowerCase();return t.includes("成功")||t.includes("succe")||t.includes("paid")?"green":t.includes("退")||t.includes("refund")?"orange":t.includes("失败")||t.includes("fail")?"red":"default"}),b=a(()=>{if(!o.event.occurredAt)return"";const t=new Date(o.event.occurredAt);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")} ${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}),x={props:o,c:e,e:d,merchantText:m,itemText:c,amountText:y,orderNo:T,statusText:f,statusColor:h,formattedTime:b,computed:a};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}},N={class:"order-card"},C={class:"head"},O={class:"time"},V={class:"row"},D={class:"val"},R={class:"row"},B={class:"val"},I={class:"row amount-row"},j={class:"val amount"},A={key:0,class:"row"},F={class:"val mono"},M={key:1,class:"row"};function P(p,r,o,e,d,m){const c=w("a-tag");return l(),u("div",N,[s("div",C,[s("span",O,n(e.formattedTime),1),i(c,{color:"gold"},{default:v(()=>[_(n(o.event.source.adapter),1)]),_:1}),i(c,null,{default:v(()=>[_(n(o.event.subtype),1)]),_:1})]),s("div",V,[r[0]||(r[0]=s("span",{class:"key"},"商户",-1)),s("span",D,n(e.merchantText),1)]),s("div",R,[r[1]||(r[1]=s("span",{class:"key"},"商品/项目",-1)),s("span",B,n(e.itemText),1)]),s("div",I,[r[2]||(r[2]=s("span",{class:"key"},"金额",-1)),s("span",j,n(e.amountText),1)]),e.orderNo?(l(),u("div",A,[r[3]||(r[3]=s("span",{class:"key"},"单号",-1)),s("span",F,n(e.orderNo),1)])):g("v-if",!0),e.statusText?(l(),u("div",M,[r[4]||(r[4]=s("span",{class:"key"},"状态",-1)),i(c,{color:e.statusColor},{default:v(()=>[_(n(e.statusText),1)]),_:1},8,["color"])])):g("v-if",!0)])}const K=S(k,[["render",P],["__scopeId","data-v-5ed5524d"],["__file","/tmp/cc-web-panel-dOhDed/repo/packages/web-panel/src/components/pdh/renderers/OrderTableRenderer.vue"]]);export{K as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-DpaGe-dr.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-CA2BYQ8T.js";import{a0 as t}from"./index-DpaGe-dr.js";import"./vendor-Bn1JzzAn.js";import"./index-B-bb-R99.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-xZ3MAM34.js";import{a0 as t}from"./index-DpaGe-dr.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-BXzeyzTa.js";import"./useFlexGapSupport-DrN8MrJb.js";import"./styleChecker-BnmJzXNr.js";import"./index-B-bb-R99.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};