chainlesschain 0.166.97 → 0.166.99

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 (188) hide show
  1. package/README.md +20 -23
  2. package/package.json +3 -3
  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-BB9kKNVw.js → AIOps-BUgaCgVU.js} +1 -1
  6. package/src/assets/web-panel/assets/{ActionButton-DTg-lWE0.js → ActionButton-b0MpUSSZ.js} +1 -1
  7. package/src/assets/web-panel/assets/{Analytics-BWUZ0Tpc.js → Analytics-hbXTvHqO.js} +3 -3
  8. package/src/assets/web-panel/assets/{AppLayout-Dj8WDnCf.js → AppLayout-CLQoAVu4.js} +5 -5
  9. package/src/assets/web-panel/assets/{Artifacts-x8NiiPTg.js → Artifacts-ytHzl2L2.js} +1 -1
  10. package/src/assets/web-panel/assets/{Audit-q7otRAqO.js → Audit-BuhkLm0C.js} +1 -1
  11. package/src/assets/web-panel/assets/{BackgroundAgents-f6qlO2au.js → BackgroundAgents-CS81hxZV.js} +1 -1
  12. package/src/assets/web-panel/assets/{Backup-BbuX9qQS.js → Backup-DzR-_Qvi.js} +1 -1
  13. package/src/assets/web-panel/assets/{BaseInput-amgV-Y0y.js → BaseInput-r8Ku_lYw.js} +1 -1
  14. package/src/assets/web-panel/assets/{Chat-CZW3DW7j.js → Chat-C3Uxtoaa.js} +5 -5
  15. package/src/assets/web-panel/assets/ChatBubbleRenderer-RvblDu77.js +1 -0
  16. package/src/assets/web-panel/assets/{Checkbox-DXHXC52i.js → Checkbox-BnG2P5yc.js} +1 -1
  17. package/src/assets/web-panel/assets/{Codegen-DQh47r4e.js → Codegen-BdgU6HZy.js} +1 -1
  18. package/src/assets/web-panel/assets/{Col-lBOOXCD7.js → Col-DT8t9wmf.js} +1 -1
  19. package/src/assets/web-panel/assets/{Community-BNFPnBu9.js → Community-ChkxR5oe.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compact-7MOWfBGb.js → Compact-DIwLeTk3.js} +1 -1
  21. package/src/assets/web-panel/assets/{Compliance-x0UA-rxk.js → Compliance-CAqzGLvW.js} +1 -1
  22. package/src/assets/web-panel/assets/{Cowork-C_eLfk_Q.js → Cowork-Bb3jejMG.js} +2 -2
  23. package/src/assets/web-panel/assets/{Cron-BP2-_Fja.js → Cron-BYRkZLta.js} +2 -2
  24. package/src/assets/web-panel/assets/{Crosschain-Dn-e1217.js → Crosschain-BD6z227t.js} +1 -1
  25. package/src/assets/web-panel/assets/{DID-D_jverif.js → DID-DA3G5Wgo.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dashboard-BysweBms.js → Dashboard-yaZePHOu.js} +2 -2
  27. package/src/assets/web-panel/assets/{Dropdown-osJi0Pci.js → Dropdown-BqY5MBx2.js} +1 -1
  28. package/src/assets/web-panel/assets/{EmailListRenderer-C72k1SKQ.js → EmailListRenderer-cIWwOgHm.js} +1 -1
  29. package/src/assets/web-panel/assets/{EvolutionSettings-CAtA1F9s.js → EvolutionSettings-zvV6ymca.js} +1 -1
  30. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bi0luzvO.js → FamilyGuardDashboard-CAmh1U2b.js} +1 -1
  31. package/src/assets/web-panel/assets/{Federation-CIwntDLI.js → Federation-5qd2LCg8.js} +1 -1
  32. package/src/assets/web-panel/assets/{FormItemContext-DRfwhPW-.js → FormItemContext-Bdkj1sRJ.js} +1 -1
  33. package/src/assets/web-panel/assets/{GenericCardRenderer-COJTzZ61.js → GenericCardRenderer-B-gWN2P3.js} +1 -1
  34. package/src/assets/web-panel/assets/{Git-CwsR46lj.js → Git-BEMh_NGd.js} +2 -2
  35. package/src/assets/web-panel/assets/{Governance-B1U-u9BN.js → Governance-qLGvA2Hw.js} +1 -1
  36. package/src/assets/web-panel/assets/{Inference-vPsdYTS_.js → Inference-DblBwYuW.js} +1 -1
  37. package/src/assets/web-panel/assets/{KnowledgeGraph-CVDRZM5h.js → KnowledgeGraph-BISegVD_.js} +1 -1
  38. package/src/assets/web-panel/assets/Logs-BD2UR7kE.js +2 -0
  39. package/src/assets/web-panel/assets/MarkdownRenderer-B-TlDCmr.js +1 -0
  40. package/src/assets/web-panel/assets/{Marketplace-CtxYHchd.js → Marketplace-CHKXMOkH.js} +1 -1
  41. package/src/assets/web-panel/assets/{McpTools-BkfCbpAk.js → McpTools-B5G1elqd.js} +3 -3
  42. package/src/assets/web-panel/assets/{Memory-COp-8Z20.js → Memory-O5Ib0uTR.js} +2 -2
  43. package/src/assets/web-panel/assets/{MobileBridge-7fX-n_xn.js → MobileBridge-BaGYL7rT.js} +1 -1
  44. package/src/assets/web-panel/assets/MobileProjects-Dsctbob8.js +1 -0
  45. package/src/assets/web-panel/assets/{Mtc-CLXFZ5dV.js → Mtc-CNjJ97jg.js} +5 -5
  46. package/src/assets/web-panel/assets/{MtcAudit-yJ4eP1wB.js → MtcAudit-DjBN-Wqz.js} +5 -5
  47. package/src/assets/web-panel/assets/{Multisig-Cwb_qTh0.js → Multisig-B850R9lO.js} +3 -3
  48. package/src/assets/web-panel/assets/{NLProgramming-CkuojSSJ.js → NLProgramming-Bn8sbFfV.js} +1 -1
  49. package/src/assets/web-panel/assets/{Notes-ju-QtUhJ.js → Notes-BpLmMp3Q.js} +3 -3
  50. package/src/assets/web-panel/assets/{NotificationSettings-DjryXIC3.js → NotificationSettings-Dbk97rjb.js} +1 -1
  51. package/src/assets/web-panel/assets/{OrderTableRenderer-B4KNF8xr.js → OrderTableRenderer-BOBX_I72.js} +1 -1
  52. package/src/assets/web-panel/assets/{Organization-6-EtcVaO.js → Organization-B45DpOuE.js} +4 -4
  53. package/src/assets/web-panel/assets/{Overflow-BKja8nqr.js → Overflow-DmKH7eer.js} +1 -1
  54. package/src/assets/web-panel/assets/{P2P-BX20f9uL.js → P2P-CC4FaXTl.js} +2 -2
  55. package/src/assets/web-panel/assets/{PdhVaultBrowser-C9zwOEUo.js → PdhVaultBrowser-C2SgP4PI.js} +3 -3
  56. package/src/assets/web-panel/assets/{Permissions-YQjQVrfE.js → Permissions-BQB4QFj_.js} +3 -3
  57. package/src/assets/web-panel/assets/{PersonalDataHub-yZYclXxq.js → PersonalDataHub-Dy6GGpn4.js} +3 -3
  58. package/src/assets/web-panel/assets/{Pipeline-ChZCCXAI.js → Pipeline-B9HB5pRc.js} +1 -1
  59. package/src/assets/web-panel/assets/{Privacy-Ds7R-a0H.js → Privacy-D7pOmg-p.js} +1 -1
  60. package/src/assets/web-panel/assets/{ProjectInit-B3qz_xab.js → ProjectInit-DglBqvec.js} +2 -2
  61. package/src/assets/web-panel/assets/{ProjectSettings-BlwNctdF.js → ProjectSettings-Bho22znM.js} +2 -2
  62. package/src/assets/web-panel/assets/{Projects-BxtYpNl7.js → Projects-C0bSuM8U.js} +1 -1
  63. package/src/assets/web-panel/assets/{Providers-BE_1SS_-.js → Providers-BgAgo1Yr.js} +1 -1
  64. package/src/assets/web-panel/assets/{QrScannerModal-CMQ25oLb.js → QrScannerModal-C2fBjCC8.js} +1 -1
  65. package/src/assets/web-panel/assets/{QuickAsk-DQRFLDeP.js → QuickAsk-C8MiF-rk.js} +1 -1
  66. package/src/assets/web-panel/assets/{Recommend-ChVra4Pk.js → Recommend-D_TzHdQf.js} +1 -1
  67. package/src/assets/web-panel/assets/{RemoteSession-9vPBIowJ.js → RemoteSession-BHO7b6xE.js} +2 -2
  68. package/src/assets/web-panel/assets/{Reputation-MdbWbyQQ.js → Reputation-BPxNmNhD.js} +1 -1
  69. package/src/assets/web-panel/assets/{Row-JLcBncLR.js → Row-fwhot5Bk.js} +1 -1
  70. package/src/assets/web-panel/assets/{RssFeed-CnMXnpFv.js → RssFeed-CZbD1B-5.js} +2 -2
  71. package/src/assets/web-panel/assets/{Search-Cf5ISVUe.js → Search-BRs6YpAE.js} +1 -1
  72. package/src/assets/web-panel/assets/{Security-CywFo2EM.js → Security-CB344tKC.js} +4 -4
  73. package/src/assets/web-panel/assets/{Services-CLYnSCG3.js → Services-Beo-7fEl.js} +2 -2
  74. package/src/assets/web-panel/assets/{Skeleton-BtbhOlo1.js → Skeleton-CDXx96vD.js} +1 -1
  75. package/src/assets/web-panel/assets/{Skills-DPeqcIo2.js → Skills-b-mQTJK4.js} +1 -1
  76. package/src/assets/web-panel/assets/{Sla-BRb4SqDn.js → Sla-BvjP-IS9.js} +1 -1
  77. package/src/assets/web-panel/assets/{SpeechSettings-0Wuxts-7.js → SpeechSettings-C6wsV-cO.js} +1 -1
  78. package/src/assets/web-panel/assets/{SyncSettings-BXtsOjXL.js → SyncSettings-BQZoko-e.js} +2 -2
  79. package/src/assets/web-panel/assets/{Tasks-D455Wfhx.js → Tasks-6Z0rJJVO.js} +1 -1
  80. package/src/assets/web-panel/assets/{Templates-LGc4O0fj.js → Templates-Cc9IXtEQ.js} +1 -1
  81. package/src/assets/web-panel/assets/{Tenant-DA--0GFz.js → Tenant-BLc7AjOI.js} +1 -1
  82. package/src/assets/web-panel/assets/{Terminal-DQsA0xCq.js → Terminal-CUN49v85.js} +2 -2
  83. package/src/assets/web-panel/assets/{TimelineRenderer-VH8AuSLp.js → TimelineRenderer-CX-SksHN.js} +1 -1
  84. package/src/assets/web-panel/assets/{Tokens-B8RyzFRN.js → Tokens-Btrm0-rK.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trigger-CA7lVVEf.js → Trigger-CIboUvKe.js} +1 -1
  86. package/src/assets/web-panel/assets/{Trust-wUoRRLg9.js → Trust-Rv9jEs5v.js} +1 -1
  87. package/src/assets/web-panel/assets/{UkeySign-ByoT_alW.js → UkeySign-B_xomdD5.js} +1 -1
  88. package/src/assets/web-panel/assets/{VideoEditing-D9fgAxJV.js → VideoEditing-CrvWeMow.js} +1 -1
  89. package/src/assets/web-panel/assets/{Wallet-CRkTndvj.js → Wallet-BjvWgk_7.js} +3 -3
  90. package/src/assets/web-panel/assets/{WebAuthn-VwmHOxJK.js → WebAuthn-CwfpFw92.js} +3 -3
  91. package/src/assets/web-panel/assets/{WorkflowEditor-Z0bPZc2O.js → WorkflowEditor-Dkk2QsOe.js} +1 -1
  92. package/src/assets/web-panel/assets/{chat-CfX_5qUm.js → chat-Dah1DVes.js} +1 -1
  93. package/src/assets/web-panel/assets/{colors-BK7mXUnR.js → colors-JEpgQ10k.js} +1 -1
  94. package/src/assets/web-panel/assets/{compact-item-Uq755CeO.js → compact-item--DuG_cxf.js} +1 -1
  95. package/src/assets/web-panel/assets/{createContext-DWXq8Qnk.js → createContext-BJ_GZvon.js} +1 -1
  96. package/src/assets/web-panel/assets/devWarning-B6kQEceX.js +1 -0
  97. package/src/assets/web-panel/assets/{hasIn-BXgy5JZA.js → hasIn-yZRLDmWK.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-LsBPnXHh.js → index-1QZASeW1.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-DSb7SKp5.js → index-9L3Pg2tc.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-H13lvPme.js → index-BKl40wrO.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-TDPkVyse.js → index-BM7xJKGD.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-CRLOeoFE.js → index-BUjyj7qR.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-JX7mXB5a.js → index-BWkKE8Oj.js} +3 -3
  104. package/src/assets/web-panel/assets/{index-VPLA-GO7.js → index-Bdg_nWD1.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-Bt3tjvj-.js → index-C56b8e9s.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-C3VnhfYU.js → index-C6ohEAEV.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DuhlVXh4.js → index-C8nXkCMf.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-BZD1My0S.js → index-CFj7ylAJ.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-BxSClhg5.js → index-CJLz3SpM.js} +1 -1
  110. package/src/assets/web-panel/assets/{index-CGy7b2rd.js → index-CQedFuDw.js} +1 -1
  111. package/src/assets/web-panel/assets/index-CSeiH6HA.js +1 -0
  112. package/src/assets/web-panel/assets/index-CayGTz6d.js +1 -0
  113. package/src/assets/web-panel/assets/{index-CqJw5WsH.js → index-CjuD8smQ.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-9XsaovMH.js → index-Cmr0AzcK.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-Dg9P9EDV.js → index-CxB49Mow.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-QXKuGlOS.js → index-D6Le2m3d.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-CarQiRSA.js → index-DFJbJ8rs.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-BRQSkXde.js → index-DQ4Fch3e.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-C8e4SYX4.js → index-DZBesaCN.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-Ait-_UUh.js → index-DaDLWIWo.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-DbjUfyVq.js → index-DbMGGcpZ.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-p3BlIre2.js → index-DddwZCT9.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-DdwC1i3O.js → index-DemMuw7n.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-_I4nSJFc.js → index-DhX48E81.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-wYTro42F.js → index-Dq-8PFhL.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-XdoslBhl.js → index-DroaQypF.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-DiVH_NiY.js → index-DxnkldGo.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CfYb8FjC.js → index-IjOa5lYn.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-B09haI0M.js → index-L9CFyRIi.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-Y77S-ZC0.js → index-VIgVth92.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-D4yvdQCj.js → index-asia_JPc.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-VrR8eMCk.js → index-cHx5KzUt.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-D63nsr0a.js → index-kZE-K3ZO.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-Ct41B4y4.js → index-o2qO_dYf.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-CUR7dnMg.js → index-rkvSOceQ.js} +1 -1
  136. package/src/assets/web-panel/assets/{index-D-8lN1rG.js → index-vdTrEOj7.js} +1 -1
  137. package/src/assets/web-panel/assets/{initDefaultProps-DTuF67Yy.js → initDefaultProps-anKyyjGc.js} +1 -1
  138. package/src/assets/web-panel/assets/{motion-DZasLgsl.js → motion-Cqp0nx5A.js} +1 -1
  139. package/src/assets/web-panel/assets/{move-pPR4O1Du.js → move-Ca3mgkM2.js} +1 -1
  140. package/src/assets/web-panel/assets/{mtc-parser-Dc7fidhm.js → mtc-parser-BmwuhJ3z.js} +1 -1
  141. package/src/assets/web-panel/assets/{omit-CZ1IcubN.js → omit-C9Mf05WJ.js} +1 -1
  142. package/src/assets/web-panel/assets/{pickAttrs-BMtJilhr.js → pickAttrs-2PbxB9Ds.js} +1 -1
  143. package/src/assets/web-panel/assets/{placementArrow-D0EXaZA7.js → placementArrow-CTVbOFHt.js} +1 -1
  144. package/src/assets/web-panel/assets/{responsiveObserve-HftdThc5.js → responsiveObserve-Nrm8Vbmr.js} +1 -1
  145. package/src/assets/web-panel/assets/{slide-CT1JEPWV.js → slide-Dh4r1zqR.js} +1 -1
  146. package/src/assets/web-panel/assets/{statusUtils-rwE-IPZB.js → statusUtils-vzNoQL-r.js} +1 -1
  147. package/src/assets/web-panel/assets/{styleChecker-B2B8XHVq.js → styleChecker-BXpGfNkI.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFlexGapSupport-TXNvIFVa.js → useFlexGapSupport-CVWBRdhs.js} +1 -1
  149. package/src/assets/web-panel/assets/{useFs-BcWgJKvf.js → useFs-BJWMLffI.js} +1 -1
  150. package/src/assets/web-panel/assets/{usePersonalDataHub-DWBDnOSR.js → usePersonalDataHub-CWCe5VHG.js} +1 -1
  151. package/src/assets/web-panel/assets/{vnode-Cf_LjUuu.js → vnode-D-NBEb8m.js} +1 -1
  152. package/src/assets/web-panel/assets/{zoom-DM2Bfuyl.js → zoom-C0mnhfGf.js} +1 -1
  153. package/src/assets/web-panel/index.html +1 -1
  154. package/src/commands/eval.js +79 -3
  155. package/src/commands/llm.js +40 -5
  156. package/src/data/changelog.json +26 -0
  157. package/src/lib/context-memory-kernel/message-adapter.js +41 -24
  158. package/src/lib/context-memory-kernel/segmented-memory-port.js +18 -0
  159. package/src/lib/cost-budget.js +8 -0
  160. package/src/lib/eval/runner.js +22 -1
  161. package/src/lib/eval/verify01-contracts.js +106 -51
  162. package/src/lib/eval/verify01-execution.js +148 -166
  163. package/src/lib/eval/verify01-host-evidence.js +34 -2
  164. package/src/lib/eval/verify01-workspace.js +302 -0
  165. package/src/lib/execution-location-failure-site.js +18 -0
  166. package/src/lib/execution-location-target.js +10 -0
  167. package/src/lib/llm-connection-probe.js +147 -6
  168. package/src/lib/llm-pricing.js +61 -7
  169. package/src/lib/model-capabilities.js +10 -2
  170. package/src/lib/model-catalog-review.js +1 -0
  171. package/src/lib/model-context-catalog.js +26 -1
  172. package/src/lib/provider-http-error.js +30 -11
  173. package/src/lib/provider-options.js +38 -1
  174. package/src/lib/search-command.js +4 -1
  175. package/src/lib/stream-retry.js +14 -1
  176. package/src/lib/task-progress-tracker.js +1 -0
  177. package/src/lib/usage-pricing-context.js +100 -10
  178. package/src/runtime/agent-core.js +95 -18
  179. package/src/runtime/headless-runner.js +47 -20
  180. package/src/runtime/headless-stream.js +32 -10
  181. package/src/runtime/provider-stream-state.js +7 -0
  182. package/src/assets/web-panel/assets/ChatBubbleRenderer-DgMYDmBW.js +0 -1
  183. package/src/assets/web-panel/assets/Logs-YRslKbRL.js +0 -2
  184. package/src/assets/web-panel/assets/MarkdownRenderer-CUBuc97a.js +0 -1
  185. package/src/assets/web-panel/assets/MobileProjects-DUyTVgId.js +0 -1
  186. package/src/assets/web-panel/assets/devWarning-CbtBfs7a.js +0 -1
  187. package/src/assets/web-panel/assets/index-CicoHC0s.js +0 -1
  188. package/src/assets/web-panel/assets/index-DttyUwDx.js +0 -1
@@ -1368,14 +1368,19 @@ async function runAgentHeadlessInWorkspace(
1368
1368
  assertManagedPermissionMode(options.permissionMode, managedSettings);
1369
1369
  }
1370
1370
  const perm = resolvePermissionMode(options.permissionMode);
1371
+ const requestedToolNames = resolveEnabledTools({
1372
+ // An explicit --allowed-tools wins; otherwise a matched command's
1373
+ // `allowed-tools:` frontmatter scopes the run (null when neither applies).
1374
+ allowedTools: options.allowedTools || macroAllowedTools,
1375
+ readOnly: perm.readOnly,
1376
+ });
1377
+ // The formal file-only ceiling must also honor narrower caller permissions,
1378
+ // including an empty allowlist and plan mode's read-only intersection.
1371
1379
  const enabledToolNames = formalQualityHermetic
1372
- ? [...FORMAL_QUALITY_FILE_TOOLS]
1373
- : resolveEnabledTools({
1374
- // An explicit --allowed-tools wins; otherwise a matched command's
1375
- // `allowed-tools:` frontmatter scopes the run (null when neither applies).
1376
- allowedTools: options.allowedTools || macroAllowedTools,
1377
- readOnly: perm.readOnly,
1378
- });
1380
+ ? (requestedToolNames ?? FORMAL_QUALITY_FILE_TOOLS).filter((name) =>
1381
+ FORMAL_QUALITY_FILE_TOOLS.includes(name),
1382
+ )
1383
+ : requestedToolNames;
1379
1384
  const disabledTools = options.disallowedTools || [];
1380
1385
 
1381
1386
  // ── Best-effort runtime bootstrap (DB optional, like startAgentRepl) ───
@@ -3226,6 +3231,19 @@ async function runAgentHeadlessInWorkspace(
3226
3231
  });
3227
3232
  break;
3228
3233
  }
3234
+ case "tool-pre-execution-denied": {
3235
+ // A request declaration is not an invocation: do not start a
3236
+ // side effect, telemetry call, or persisted compact tool record.
3237
+ emitStream({
3238
+ type: "tool_use",
3239
+ id: event.tool_use_id,
3240
+ tool: event.tool,
3241
+ args: {},
3242
+ preExecutionDenied: true,
3243
+ execution_started: false,
3244
+ });
3245
+ break;
3246
+ }
3229
3247
  case "tool-executing": {
3230
3248
  const telemetryToolId = runtimeToolCallId(event.tool_use_id);
3231
3249
  const line = ` [${event.tool}] ${formatToolArgs(event.tool, event.args)}`;
@@ -3300,9 +3318,23 @@ async function runAgentHeadlessInWorkspace(
3300
3318
  }
3301
3319
  case "tool-result": {
3302
3320
  const err = event.error || event.result?.error || null;
3321
+ // A denied request has no invocation to settle. Explicit provider
3322
+ // IDs must never fall back to a different pending invocation.
3323
+ const settledCall =
3324
+ event.execution_started === false
3325
+ ? null
3326
+ : event.tool_use_id
3327
+ ? activeToolCalls.get(event.tool_use_id) || null
3328
+ : [...toolCalls]
3329
+ .reverse()
3330
+ .find(
3331
+ (call) =>
3332
+ !call._runtimeSettled &&
3333
+ (!event.tool || call.tool === event.tool),
3334
+ ) || null;
3303
3335
  // P0-2: settle the in-flight side-effect (commit on success, fail on
3304
3336
  // a clean error) and persist the updated ledger snapshot.
3305
- if (persist && currentSideEffectOpId) {
3337
+ if (persist && currentSideEffectOpId && settledCall) {
3306
3338
  if (event.permission_decision) {
3307
3339
  sideEffectLedger.annotate(currentSideEffectOpId, {
3308
3340
  permissionDecision: event.permission_decision,
@@ -3330,6 +3362,13 @@ async function runAgentHeadlessInWorkspace(
3330
3362
  ...(event.tool_use_id ? { id: event.tool_use_id } : {}),
3331
3363
  tool: event.tool,
3332
3364
  is_error: Boolean(err),
3365
+ ...(event.execution_started === false
3366
+ ? { execution_started: false }
3367
+ : {}),
3368
+ ...(event.preExecutionDenied === true &&
3369
+ event.execution_started === false
3370
+ ? { preExecutionDenied: true }
3371
+ : {}),
3333
3372
  error: err,
3334
3373
  result: event.result,
3335
3374
  ...(event.permission_decision_id
@@ -3347,18 +3386,6 @@ async function runAgentHeadlessInWorkspace(
3347
3386
  });
3348
3387
  if (policyEvent) emitStream(policyEvent);
3349
3388
  }
3350
- const settledCall =
3351
- (event.tool_use_id
3352
- ? activeToolCalls.get(event.tool_use_id)
3353
- : null) ||
3354
- [...toolCalls]
3355
- .reverse()
3356
- .find(
3357
- (call) =>
3358
- !call._runtimeSettled &&
3359
- (!event.tool || call.tool === event.tool),
3360
- ) ||
3361
- null;
3362
3389
  if (settledCall) {
3363
3390
  settledCall.is_error = Boolean(err);
3364
3391
  settledCall.durationMs =
@@ -990,6 +990,19 @@ async function runTurn(
990
990
  }
991
991
  turnBindingFeed?.handleEvent(event);
992
992
  switch (event.type) {
993
+ case "tool-pre-execution-denied": {
994
+ // Keep the request/result pair visible without plan/ledger execution
995
+ // bookkeeping and without exposing rejected request arguments.
996
+ emit({
997
+ type: "tool_use",
998
+ id: event.tool_use_id,
999
+ tool: event.tool,
1000
+ args: {},
1001
+ preExecutionDenied: true,
1002
+ execution_started: false,
1003
+ });
1004
+ break;
1005
+ }
993
1006
  case "tool-executing": {
994
1007
  // Additive protocol-v1 correlation id ("tu-<n>", session-scoped —
995
1008
  // agent-sdk docs/PROTOCOL.md §1.2.1): the matching tool_result below
@@ -1061,9 +1074,17 @@ async function runTurn(
1061
1074
  }
1062
1075
  case "tool-result": {
1063
1076
  const err = event.error || event.result?.error || null;
1077
+ // No invocation started for a preflight denial. For actual results,
1078
+ // retain the adjacency fallback only for legacy events without IDs.
1079
+ const lastCall =
1080
+ event.execution_started === false
1081
+ ? null
1082
+ : event.tool_use_id
1083
+ ? toolCalls.find((call) => call.id === event.tool_use_id) || null
1084
+ : toolCalls.at(-1) || null;
1064
1085
  // P0-2: settle the in-flight side-effect (commit on success, fail on
1065
1086
  // a clean error) and persist the updated ledger snapshot.
1066
- if (sideEffects && currentSideEffectOpId) {
1087
+ if (sideEffects && currentSideEffectOpId && lastCall) {
1067
1088
  if (event.permission_decision) {
1068
1089
  sideEffects.ledger.annotate(currentSideEffectOpId, {
1069
1090
  permissionDecision: event.permission_decision,
@@ -1085,14 +1106,6 @@ async function runTurn(
1085
1106
  sideEffects.persist();
1086
1107
  currentSideEffectOpId = null;
1087
1108
  }
1088
- // The loop runs tools serially, so this result settles the most
1089
- // recent tool_use (same adjacency rule the is_error attribution
1090
- // below has always used).
1091
- const lastCall =
1092
- (event.tool_use_id
1093
- ? toolCalls.find((call) => call.id === event.tool_use_id)
1094
- : null) ||
1095
- (toolCalls.length > 0 ? toolCalls[toolCalls.length - 1] : null);
1096
1109
  if (lastCall) {
1097
1110
  lastCall.is_error = Boolean(err);
1098
1111
  lastCall.durationMs =
@@ -1117,13 +1130,22 @@ async function runTurn(
1117
1130
  : null;
1118
1131
  emit({
1119
1132
  type: "tool_result",
1120
- ...(lastCall?.id ? { id: lastCall.id } : {}),
1133
+ ...(event.tool_use_id || lastCall?.id
1134
+ ? { id: event.tool_use_id || lastCall.id }
1135
+ : {}),
1121
1136
  ...(lastCall?.planItemId
1122
1137
  ? { plan_item_id: lastCall.planItemId }
1123
1138
  : {}),
1124
1139
  ...(settledItem?.turn ? { turn: settledItem.turn } : {}),
1125
1140
  tool: event.tool,
1126
1141
  is_error: Boolean(err),
1142
+ ...(event.execution_started === false
1143
+ ? { execution_started: false }
1144
+ : {}),
1145
+ ...(event.preExecutionDenied === true &&
1146
+ event.execution_started === false
1147
+ ? { preExecutionDenied: true }
1148
+ : {}),
1127
1149
  error: err,
1128
1150
  result: event.result,
1129
1151
  ...(event.permission_decision_id
@@ -4,6 +4,8 @@
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";
8
+
7
9
  export function _isNonNegativeSafeInteger(value) {
8
10
  return Number.isSafeInteger(value) && value >= 0;
9
11
  }
@@ -114,6 +116,10 @@ export function _anthropicReduceLine(state, raw, onToken, onThinking) {
114
116
  state.inputTokens = inputTokens;
115
117
  state.cacheReadTokens = cacheReadTokens;
116
118
  state.cacheCreationTokens = cacheCreationTokens;
119
+ state.pricingContext = projectUsagePricingContext({
120
+ ...usage,
121
+ cache_creation_input_tokens: cacheCreationTokens,
122
+ });
117
123
  }
118
124
  }
119
125
  } else if (obj.type === "content_block_start") {
@@ -215,6 +221,7 @@ export function _anthropicFinalize(state) {
215
221
  output_tokens: state.outputTokens,
216
222
  cache_read_input_tokens: state.cacheReadTokens,
217
223
  cache_creation_input_tokens: state.cacheCreationTokens,
224
+ ...state.pricingContext,
218
225
  };
219
226
  }
220
227
  return out;
@@ -1 +0,0 @@
1
- import{I as v,P as u,J as S,U as n,R as a,S as y,K as C,Q as x,V as w,_ as B,b as s}from"./vendor-Bn1JzzAn.js";import{_ as k}from"./index-JX7mXB5a.js";import"./icons-DG5UD-6K.js";const T={__name:"ChatBubbleRenderer",props:{event:{type:Object,required:!0}},setup(c,{expose:d}){d();const t=c,r=s(()=>{const e=t.event.content||{};return e.text||e.body||e.message||e.title||JSON.stringify(e).slice(0,200)}),i=s(()=>{const e=t.event.content||{};return e.from||e.sender||e.senderName||t.event.actor||"(unknown)"}),l=s(()=>{const e=(t.event.actor||"").toLowerCase();return e.includes("self")||e==="me"||e.endsWith("_self")}),o=s(()=>{const e=t.event.source.adapter||"";return e.startsWith("messaging-qq")?"magenta":e==="wechat"?"green":"blue"}),m=s(()=>{if(!t.event.occurredAt)return"";try{const e=new Date(t.event.occurredAt),p=e.getFullYear(),b=String(e.getMonth()+1).padStart(2,"0"),f=String(e.getDate()).padStart(2,"0"),g=String(e.getHours()).padStart(2,"0"),h=String(e.getMinutes()).padStart(2,"0");return`${p}-${b}-${f} ${g}:${h}`}catch{return""}}),_={props:t,messageText:r,actorLabel:i,isMine:l,adapterColor:o,formattedTime:m,computed:s};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}},N={class:"bubble"},R={class:"meta"},M={class:"actor"},V={class:"time"},q={class:"body"};function D(c,d,t,r,i,l){const o=v("a-tag");return u(),S("div",{class:B(["chat-row",{mine:r.isMine}])},[n("div",N,[n("div",R,[n("span",M,a(r.actorLabel),1),n("span",V,a(r.formattedTime),1)]),n("div",q,a(r.messageText),1),t.event.source.adapter?(u(),y(o,{key:0,class:"src",color:r.adapterColor},{default:C(()=>[x(a(t.event.source.adapter),1)]),_:1},8,["color"])):w("v-if",!0)])],2)}const j=k(T,[["render",D],["__scopeId","data-v-49238629"],["__file","/tmp/cc-web-panel-TRWb3u/repo/packages/web-panel/src/components/pdh/renderers/ChatBubbleRenderer.vue"]]);export{j as default};
@@ -1,2 +0,0 @@
1
- import{I as s,J as g,U as d,c as n,K as _,V as k,S as V,R as S,F as K,Z as Q,w as H,n as C,o as M,b as T,r,P as p,Q as O,_ as U}from"./vendor-Bn1JzzAn.js";import{_ as E,u as W}from"./index-JX7mXB5a.js";import{R as j}from"./icons-DG5UD-6K.js";const q={__name:"Logs",setup(N,{expose:a}){a();const x=W(),e=r("status"),y=r(!1),v=r(""),i=r(""),c=r(""),f=r(!0),o=r(null),h={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},m=T(()=>i.value.split(`
2
- `)),b=T(()=>{if(!c.value)return m.value;const t=c.value.toLowerCase();return m.value.filter(u=>u.toLowerCase().includes(t))});function L(t){return t.includes("✖")||t.includes("error")||t.includes("Error")||t.includes("failed")?"line-error":t.includes("✔")||t.includes("✓")||t.includes("success")||t.includes("running")?"line-success":t.includes("warn")||t.includes("Warn")||t.includes("○")?"line-warn":t.startsWith(" ")||t.startsWith(" ")?"line-indent":""}function l(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function w(t){if(!c.value)return t;const u=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp(`(${u})`,"gi"),"<mark>$1</mark>")}async function R(){y.value=!0,v.value="",i.value="";const t=h[e.value]||"status";try{const{output:u}=await x.execute(t,3e4);i.value=u,f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}catch(u){v.value=`执行失败: ${u.message}`,i.value=v.value}finally{y.value=!1}}H(b,async()=>{f.value&&(await C(),o.value&&(o.value.scrollTop=o.value.scrollHeight))}),M(R);const B={ws:x,activeTab:e,loading:y,error:v,rawOutput:i,searchQuery:c,autoScroll:f,logContainer:o,TAB_COMMANDS:h,allLines:m,filteredLines:b,lineClass:L,escapeHtml:l,highlightSearch:w,loadLog:R,ref:r,computed:T,watch:H,nextTick:C,onMounted:M,get ReloadOutlined(){return j},get useWsStore(){return W}};return Object.defineProperty(B,"__isScriptSetup",{enumerable:!1,value:!0}),B}},z={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},A={style:{display:"flex",gap:"10px",margin:"12px 0"}},D={ref:"logContainer",class:"log-box"},F={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},I={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},P={key:2},J=["innerHTML"];function Z(N,a,x,e,y,v){const i=s("a-checkbox"),c=s("a-button"),f=s("a-space"),o=s("a-tab-pane"),h=s("a-tabs"),m=s("a-input-search"),b=s("a-tag"),L=s("a-spin");return p(),g("div",null,[d("div",z,[a[5]||(a[5]=d("div",null,[d("h2",{class:"page-title"},"日志查看"),d("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),n(f,null,{default:_(()=>[n(i,{checked:e.autoScroll,"onUpdate:checked":a[0]||(a[0]=l=>e.autoScroll=l)},{default:_(()=>[...a[3]||(a[3]=[O("自动滚动",-1)])]),_:1},8,["checked"]),n(c,{type:"primary",ghost:"",loading:e.loading,onClick:e.loadLog},{icon:_(()=>[n(e.ReloadOutlined)]),default:_(()=>[a[4]||(a[4]=O(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),k(" Tab Selector "),n(h,{activeKey:e.activeTab,"onUpdate:activeKey":a[1]||(a[1]=l=>e.activeTab=l),onChange:e.loadLog,style:{"margin-bottom":"0"}},{default:_(()=>[n(o,{key:"status",tab:"系统状态"}),n(o,{key:"doctor",tab:"环境诊断"}),n(o,{key:"skill-sources",tab:"技能来源"}),n(o,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),k(" Search Bar "),d("div",A,[n(m,{value:e.searchQuery,"onUpdate:value":a[2]||(a[2]=l=>e.searchQuery=l),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),e.filteredLines.length!==e.allLines.length?(p(),V(b,{key:0,color:"blue"},{default:_(()=>[O(S(e.filteredLines.length)+" / "+S(e.allLines.length)+" 行 ",1)]),_:1})):k("v-if",!0)]),k(" Log Output "),d("div",D,[e.loading?(p(),g("div",F,[n(L,{size:"large"}),a[6]||(a[6]=d("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):e.filteredLines.length?(p(),g("div",P,[(p(!0),g(K,null,Q(e.filteredLines,(l,w)=>(p(),g("div",{key:w,class:U(["log-line",e.lineClass(l)]),innerHTML:e.highlightSearch(e.escapeHtml(l))},null,10,J))),128))])):(p(),g("div",I,S(e.error||"暂无日志内容,点击刷新加载"),1))],512)])}const $=E(q,[["render",Z],["__scopeId","data-v-8c2906e0"],["__file","/tmp/cc-web-panel-TRWb3u/repo/packages/web-panel/src/views/Logs.vue"]]);export{$ as default};
@@ -1 +0,0 @@
1
- import{P as c,J as p,b as s}from"./vendor-Bn1JzzAn.js";import{r as a}from"./markdown-Yo_c6Krv.js";import{_ as d}from"./index-JX7mXB5a.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 u(t,o,e,r,n,m){return c(),p("div",{class:"markdown-content",innerHTML:r.rendered},null,8,i)}const b=d(_,[["render",u],["__scopeId","data-v-0b0b9f63"],["__file","/tmp/cc-web-panel-TRWb3u/repo/packages/web-panel/src/components/MarkdownRenderer.vue"]]);export{b as M};
@@ -1 +0,0 @@
1
- import{I as n,J as g,c as l,K as r,N as u,P as h,U as o,R as t,Q as b}from"./vendor-Bn1JzzAn.js";import{_ as v,b as m}from"./index-JX7mXB5a.js";import{a8 as y,M}from"./icons-DG5UD-6K.js";const B={__name:"MobileProjects",setup(p,{expose:i}){i();const c=u(),{t:e}=m();function a(){c.push("/projects")}function _(){c.push("/mobile-bridge")}const s={router:c,t:e,goToProjects:a,goToMobileBridge:_,get useRouter(){return u},get useI18n(){return m},get MobileOutlined(){return M},get FolderOutlined(){return y}};return Object.defineProperty(s,"__isScriptSetup",{enumerable:!1,value:!0}),s}},x={class:"mobile-projects-placeholder"},O={class:"title"},T={class:"subtitle"},k={class:"explainer"};function w(p,i,c,e,a,_){const s=n("a-alert"),d=n("a-button"),f=n("a-space"),P=n("a-empty"),j=n("a-card");return h(),g("div",x,[l(j,null,{default:r(()=>[l(P,{description:!1},{image:r(()=>[l(e.MobileOutlined,{style:{fontSize:"64px",color:"#bfbfbf"}})]),default:r(()=>[o("h2",O,t(e.t("mobileProjects.title")),1),o("p",T,t(e.t("mobileProjects.subtitle")),1),l(s,{message:e.t("mobileProjects.v02Banner"),type:"info","show-icon":"",class:"banner"},null,8,["message"]),o("div",k,[o("h3",null,t(e.t("mobileProjects.currentDirection")),1),o("p",null,t(e.t("mobileProjects.currentDirectionBody")),1),o("ul",null,[o("li",null,t(e.t("mobileProjects.stepPhone")),1),o("li",null,t(e.t("mobileProjects.stepTap")),1),o("li",null,t(e.t("mobileProjects.stepPull")),1)]),o("h3",null,t(e.t("mobileProjects.reverseDirection")),1),o("p",null,t(e.t("mobileProjects.reverseDirectionBody")),1)]),l(f,{class:"actions"},{default:r(()=>[l(d,{type:"primary",onClick:e.goToProjects},{default:r(()=>[l(e.FolderOutlined),b(" "+t(e.t("mobileProjects.viewLocalProjects")),1)]),_:1}),l(d,{onClick:e.goToMobileBridge},{default:r(()=>[l(e.MobileOutlined),b(" "+t(e.t("mobileProjects.checkBridge")),1)]),_:1})]),_:1})]),_:1})]),_:1})])}const N=v(B,[["render",w],["__scopeId","data-v-9262cc45"],["__file","/tmp/cc-web-panel-TRWb3u/repo/packages/web-panel/src/views/MobileProjects.vue"]]);export{N as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-JX7mXB5a.js";const o=((n,a,e)=>{r(n,`[ant-design-vue: ${a}] ${e}`)});export{o as d};
@@ -1 +0,0 @@
1
- import{A as o}from"./Row-JLcBncLR.js";import{a0 as t}from"./index-JX7mXB5a.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-HftdThc5.js";import"./useFlexGapSupport-TXNvIFVa.js";import"./styleChecker-B2B8XHVq.js";import"./index-DdwC1i3O.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-lBOOXCD7.js";import{a0 as t}from"./index-JX7mXB5a.js";import"./vendor-Bn1JzzAn.js";import"./index-DdwC1i3O.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};