chainlesschain 0.166.97 → 0.166.98

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 (175) 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-BB9kKNVw.js → AIOps-DCIQFtF1.js} +1 -1
  5. package/src/assets/web-panel/assets/{ActionButton-DTg-lWE0.js → ActionButton-BxhHU3nE.js} +1 -1
  6. package/src/assets/web-panel/assets/{Analytics-BWUZ0Tpc.js → Analytics-DdM_307O.js} +3 -3
  7. package/src/assets/web-panel/assets/{AppLayout-Dj8WDnCf.js → AppLayout-C43-kSrh.js} +5 -5
  8. package/src/assets/web-panel/assets/{Artifacts-x8NiiPTg.js → Artifacts-B2Vp2Am6.js} +1 -1
  9. package/src/assets/web-panel/assets/{Audit-q7otRAqO.js → Audit-s-lYUfOp.js} +1 -1
  10. package/src/assets/web-panel/assets/{BackgroundAgents-f6qlO2au.js → BackgroundAgents-DTE7Kzio.js} +1 -1
  11. package/src/assets/web-panel/assets/{Backup-BbuX9qQS.js → Backup-9k1q4Mt6.js} +1 -1
  12. package/src/assets/web-panel/assets/{BaseInput-amgV-Y0y.js → BaseInput-DlpUtK5R.js} +1 -1
  13. package/src/assets/web-panel/assets/{Chat-CZW3DW7j.js → Chat-CR9S8Rmb.js} +5 -5
  14. package/src/assets/web-panel/assets/ChatBubbleRenderer-Xtgfw3-c.js +1 -0
  15. package/src/assets/web-panel/assets/{Checkbox-DXHXC52i.js → Checkbox-DpFRu7Df.js} +1 -1
  16. package/src/assets/web-panel/assets/{Codegen-DQh47r4e.js → Codegen-BIl72E4Y.js} +1 -1
  17. package/src/assets/web-panel/assets/{Col-lBOOXCD7.js → Col-91tl_err.js} +1 -1
  18. package/src/assets/web-panel/assets/{Community-BNFPnBu9.js → Community-CswahO9-.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compact-7MOWfBGb.js → Compact-D9pfHmaM.js} +1 -1
  20. package/src/assets/web-panel/assets/{Compliance-x0UA-rxk.js → Compliance-CXSZzAO9.js} +1 -1
  21. package/src/assets/web-panel/assets/{Cowork-C_eLfk_Q.js → Cowork-CuT9RWTn.js} +2 -2
  22. package/src/assets/web-panel/assets/{Cron-BP2-_Fja.js → Cron-B71aJWDV.js} +2 -2
  23. package/src/assets/web-panel/assets/{Crosschain-Dn-e1217.js → Crosschain-CcUuWyx8.js} +1 -1
  24. package/src/assets/web-panel/assets/{DID-D_jverif.js → DID-CtVVGOPL.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dashboard-BysweBms.js → Dashboard-CV7ZCYQq.js} +2 -2
  26. package/src/assets/web-panel/assets/{Dropdown-osJi0Pci.js → Dropdown-DKHxwLgE.js} +1 -1
  27. package/src/assets/web-panel/assets/{EmailListRenderer-C72k1SKQ.js → EmailListRenderer-Bd03UIvv.js} +1 -1
  28. package/src/assets/web-panel/assets/{EvolutionSettings-CAtA1F9s.js → EvolutionSettings-CTrG03B_.js} +1 -1
  29. package/src/assets/web-panel/assets/{FamilyGuardDashboard-Bi0luzvO.js → FamilyGuardDashboard-DXS4bS6Q.js} +1 -1
  30. package/src/assets/web-panel/assets/{Federation-CIwntDLI.js → Federation-BODG2Szj.js} +1 -1
  31. package/src/assets/web-panel/assets/{FormItemContext-DRfwhPW-.js → FormItemContext-D32ccUqD.js} +1 -1
  32. package/src/assets/web-panel/assets/{GenericCardRenderer-COJTzZ61.js → GenericCardRenderer-ClsyrKvF.js} +1 -1
  33. package/src/assets/web-panel/assets/{Git-CwsR46lj.js → Git-DcM2yhbL.js} +2 -2
  34. package/src/assets/web-panel/assets/{Governance-B1U-u9BN.js → Governance-BhUzM87n.js} +1 -1
  35. package/src/assets/web-panel/assets/{Inference-vPsdYTS_.js → Inference-Dq1n0Ifg.js} +1 -1
  36. package/src/assets/web-panel/assets/{KnowledgeGraph-CVDRZM5h.js → KnowledgeGraph-dmmPwEks.js} +1 -1
  37. package/src/assets/web-panel/assets/{Logs-YRslKbRL.js → Logs-CBSYrPmh.js} +2 -2
  38. package/src/assets/web-panel/assets/MarkdownRenderer-CRoDI77y.js +1 -0
  39. package/src/assets/web-panel/assets/{Marketplace-CtxYHchd.js → Marketplace-Cfw7XLck.js} +1 -1
  40. package/src/assets/web-panel/assets/{McpTools-BkfCbpAk.js → McpTools-CNrZRy4n.js} +3 -3
  41. package/src/assets/web-panel/assets/{Memory-COp-8Z20.js → Memory-BESjTxdd.js} +2 -2
  42. package/src/assets/web-panel/assets/{MobileBridge-7fX-n_xn.js → MobileBridge-Boyjo07i.js} +1 -1
  43. package/src/assets/web-panel/assets/{MobileProjects-DUyTVgId.js → MobileProjects-BmxmpTWz.js} +1 -1
  44. package/src/assets/web-panel/assets/{Mtc-CLXFZ5dV.js → Mtc-CBkrD0Fq.js} +5 -5
  45. package/src/assets/web-panel/assets/{MtcAudit-yJ4eP1wB.js → MtcAudit-BA7cAK8h.js} +5 -5
  46. package/src/assets/web-panel/assets/{Multisig-Cwb_qTh0.js → Multisig-m0RGzkKO.js} +3 -3
  47. package/src/assets/web-panel/assets/{NLProgramming-CkuojSSJ.js → NLProgramming-D_TgzifU.js} +1 -1
  48. package/src/assets/web-panel/assets/{Notes-ju-QtUhJ.js → Notes-Dr-Yr9LL.js} +3 -3
  49. package/src/assets/web-panel/assets/{NotificationSettings-DjryXIC3.js → NotificationSettings-DGanpkqO.js} +1 -1
  50. package/src/assets/web-panel/assets/{OrderTableRenderer-B4KNF8xr.js → OrderTableRenderer-D1FX50QY.js} +1 -1
  51. package/src/assets/web-panel/assets/{Organization-6-EtcVaO.js → Organization-DRbPg-gs.js} +2 -2
  52. package/src/assets/web-panel/assets/{Overflow-BKja8nqr.js → Overflow-flEO37z6.js} +1 -1
  53. package/src/assets/web-panel/assets/{P2P-BX20f9uL.js → P2P-DqfqFbCW.js} +2 -2
  54. package/src/assets/web-panel/assets/{PdhVaultBrowser-C9zwOEUo.js → PdhVaultBrowser-Cmi5a5dW.js} +3 -3
  55. package/src/assets/web-panel/assets/{Permissions-YQjQVrfE.js → Permissions-DBVRlvBW.js} +4 -4
  56. package/src/assets/web-panel/assets/{PersonalDataHub-yZYclXxq.js → PersonalDataHub-gQqjPr9X.js} +4 -4
  57. package/src/assets/web-panel/assets/{Pipeline-ChZCCXAI.js → Pipeline-6HlifUc9.js} +1 -1
  58. package/src/assets/web-panel/assets/{Privacy-Ds7R-a0H.js → Privacy-bm_2-Zwg.js} +1 -1
  59. package/src/assets/web-panel/assets/{ProjectInit-B3qz_xab.js → ProjectInit-BJW3isuq.js} +2 -2
  60. package/src/assets/web-panel/assets/{ProjectSettings-BlwNctdF.js → ProjectSettings-DD3yolz7.js} +2 -2
  61. package/src/assets/web-panel/assets/{Projects-BxtYpNl7.js → Projects-BF3GtWny.js} +1 -1
  62. package/src/assets/web-panel/assets/{Providers-BE_1SS_-.js → Providers-CQA6WAK7.js} +1 -1
  63. package/src/assets/web-panel/assets/{QrScannerModal-CMQ25oLb.js → QrScannerModal-DOAwp5Xo.js} +1 -1
  64. package/src/assets/web-panel/assets/{QuickAsk-DQRFLDeP.js → QuickAsk-qeFXsAZT.js} +1 -1
  65. package/src/assets/web-panel/assets/{Recommend-ChVra4Pk.js → Recommend-zDWXwZN8.js} +1 -1
  66. package/src/assets/web-panel/assets/{RemoteSession-9vPBIowJ.js → RemoteSession-toe6Ip06.js} +3 -3
  67. package/src/assets/web-panel/assets/{Reputation-MdbWbyQQ.js → Reputation-DRDi_Eqp.js} +1 -1
  68. package/src/assets/web-panel/assets/{Row-JLcBncLR.js → Row-Do2UbYkf.js} +1 -1
  69. package/src/assets/web-panel/assets/{RssFeed-CnMXnpFv.js → RssFeed-B57C6_Sa.js} +3 -3
  70. package/src/assets/web-panel/assets/{Search-Cf5ISVUe.js → Search-DfDyBpe9.js} +1 -1
  71. package/src/assets/web-panel/assets/{Security-CywFo2EM.js → Security-CulNxeAM.js} +3 -3
  72. package/src/assets/web-panel/assets/{Services-CLYnSCG3.js → Services-COfAYvs4.js} +2 -2
  73. package/src/assets/web-panel/assets/{Skeleton-BtbhOlo1.js → Skeleton-0fn0T146.js} +1 -1
  74. package/src/assets/web-panel/assets/{Skills-DPeqcIo2.js → Skills-pPQgAhvJ.js} +1 -1
  75. package/src/assets/web-panel/assets/{Sla-BRb4SqDn.js → Sla-CIsRmePR.js} +1 -1
  76. package/src/assets/web-panel/assets/{SpeechSettings-0Wuxts-7.js → SpeechSettings-Bn01d-8b.js} +1 -1
  77. package/src/assets/web-panel/assets/{SyncSettings-BXtsOjXL.js → SyncSettings-Cx_Znk7L.js} +2 -2
  78. package/src/assets/web-panel/assets/{Tasks-D455Wfhx.js → Tasks-DvaskzpG.js} +1 -1
  79. package/src/assets/web-panel/assets/{Templates-LGc4O0fj.js → Templates-DmHCEiDO.js} +1 -1
  80. package/src/assets/web-panel/assets/{Tenant-DA--0GFz.js → Tenant-CqHyvnbW.js} +1 -1
  81. package/src/assets/web-panel/assets/{Terminal-DQsA0xCq.js → Terminal-DTt3yqWL.js} +2 -2
  82. package/src/assets/web-panel/assets/{TimelineRenderer-VH8AuSLp.js → TimelineRenderer-BhkIxcR3.js} +1 -1
  83. package/src/assets/web-panel/assets/{Tokens-B8RyzFRN.js → Tokens-mhjYcBBP.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trigger-CA7lVVEf.js → Trigger-CdlMQfwX.js} +1 -1
  85. package/src/assets/web-panel/assets/{Trust-wUoRRLg9.js → Trust-Bzovg_Gw.js} +1 -1
  86. package/src/assets/web-panel/assets/{UkeySign-ByoT_alW.js → UkeySign-ph3EuYi7.js} +1 -1
  87. package/src/assets/web-panel/assets/{VideoEditing-D9fgAxJV.js → VideoEditing-Bo2B4VZE.js} +1 -1
  88. package/src/assets/web-panel/assets/{Wallet-CRkTndvj.js → Wallet-BQTKsSUT.js} +2 -2
  89. package/src/assets/web-panel/assets/{WebAuthn-VwmHOxJK.js → WebAuthn-nJxsXNHV.js} +5 -5
  90. package/src/assets/web-panel/assets/{WorkflowEditor-Z0bPZc2O.js → WorkflowEditor-CjH8g2N7.js} +1 -1
  91. package/src/assets/web-panel/assets/{chat-CfX_5qUm.js → chat-CkbNmnQD.js} +1 -1
  92. package/src/assets/web-panel/assets/{colors-BK7mXUnR.js → colors-BY9JcObR.js} +1 -1
  93. package/src/assets/web-panel/assets/{compact-item-Uq755CeO.js → compact-item-Dzzq-d8n.js} +1 -1
  94. package/src/assets/web-panel/assets/{createContext-DWXq8Qnk.js → createContext-DiJxxdTx.js} +1 -1
  95. package/src/assets/web-panel/assets/devWarning-D502_Z3w.js +1 -0
  96. package/src/assets/web-panel/assets/{hasIn-BXgy5JZA.js → hasIn-DaXPOw3D.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-_I4nSJFc.js → index-6Z6Z4UwN.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-D4yvdQCj.js → index-7YVCjSqG.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-D63nsr0a.js → index-B31oMRmK.js} +1 -1
  100. package/src/assets/web-panel/assets/{index-DdwC1i3O.js → index-B4Sf1AMk.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CRLOeoFE.js → index-BGvIb1Sr.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-JX7mXB5a.js → index-BHeHyLRM.js} +3 -3
  103. package/src/assets/web-panel/assets/{index-Ct41B4y4.js → index-BQvtlYUd.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-VrR8eMCk.js → index-Bhsxh-rH.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-C8e4SYX4.js → index-BlWg1bRA.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-C3VnhfYU.js → index-BqCHe05H.js} +1 -1
  107. package/src/assets/web-panel/assets/index-BrQ4nI4W.js +1 -0
  108. package/src/assets/web-panel/assets/{index-DSb7SKp5.js → index-BvgMt6Io.js} +1 -1
  109. package/src/assets/web-panel/assets/{index-Y77S-ZC0.js → index-BycyBM6g.js} +1 -1
  110. package/src/assets/web-panel/assets/index-C0_sewGO.js +1 -0
  111. package/src/assets/web-panel/assets/{index-CGy7b2rd.js → index-C6XSCXeb.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-XdoslBhl.js → index-CAzfu6k5.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-B09haI0M.js → index-CVblRqUN.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-Bt3tjvj-.js → index-CWLpEg34.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-wYTro42F.js → index-C_OMH_FT.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-H13lvPme.js → index-CbOOm8I8.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-TDPkVyse.js → index-CnLO1_yN.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-DuhlVXh4.js → index-CqOkm6kW.js} +1 -1
  119. package/src/assets/web-panel/assets/{index-CfYb8FjC.js → index-DDnqjZa2.js} +1 -1
  120. package/src/assets/web-panel/assets/{index-VPLA-GO7.js → index-DObXhPhH.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-CarQiRSA.js → index-DSqQyS9-.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-Ait-_UUh.js → index-DWT9-E5b.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-D-8lN1rG.js → index-D_Eoh740.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-DiVH_NiY.js → index-DaylJfw6.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-DbjUfyVq.js → index-DbmHmeP-.js} +1 -1
  126. package/src/assets/web-panel/assets/{index-LsBPnXHh.js → index-Djeh6rAb.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-Dg9P9EDV.js → index-Dl8U-0hn.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-BRQSkXde.js → index-EiaWq1TH.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BZD1My0S.js → index-Igq-72Ep.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-QXKuGlOS.js → index-Jmlk_lDX.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-p3BlIre2.js → index-LRZSVBxC.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-CUR7dnMg.js → index-Uh9SjtgW.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-CqJw5WsH.js → index-cu1J4avY.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-9XsaovMH.js → index-dC2JACyJ.js} +1 -1
  135. package/src/assets/web-panel/assets/{index-BxSClhg5.js → index-i9eu2Kir.js} +1 -1
  136. package/src/assets/web-panel/assets/{initDefaultProps-DTuF67Yy.js → initDefaultProps-B0WuG3fa.js} +1 -1
  137. package/src/assets/web-panel/assets/{motion-DZasLgsl.js → motion-1r5YB22w.js} +1 -1
  138. package/src/assets/web-panel/assets/{move-pPR4O1Du.js → move-CvtXWA_V.js} +1 -1
  139. package/src/assets/web-panel/assets/{mtc-parser-Dc7fidhm.js → mtc-parser-ChedmEE_.js} +1 -1
  140. package/src/assets/web-panel/assets/{omit-CZ1IcubN.js → omit-DpEA3MP0.js} +1 -1
  141. package/src/assets/web-panel/assets/{pickAttrs-BMtJilhr.js → pickAttrs-BWgrUZF6.js} +1 -1
  142. package/src/assets/web-panel/assets/{placementArrow-D0EXaZA7.js → placementArrow-BWfo_VbI.js} +1 -1
  143. package/src/assets/web-panel/assets/{responsiveObserve-HftdThc5.js → responsiveObserve-CRft03Vk.js} +1 -1
  144. package/src/assets/web-panel/assets/{slide-CT1JEPWV.js → slide-l5LeXusH.js} +1 -1
  145. package/src/assets/web-panel/assets/{statusUtils-rwE-IPZB.js → statusUtils-CCEC0JR-.js} +1 -1
  146. package/src/assets/web-panel/assets/{styleChecker-B2B8XHVq.js → styleChecker-Bw5Gw_2w.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFlexGapSupport-TXNvIFVa.js → useFlexGapSupport-BAuxWB7K.js} +1 -1
  148. package/src/assets/web-panel/assets/{useFs-BcWgJKvf.js → useFs-CxUP97Cw.js} +1 -1
  149. package/src/assets/web-panel/assets/{usePersonalDataHub-DWBDnOSR.js → usePersonalDataHub-BJDjT4Sy.js} +1 -1
  150. package/src/assets/web-panel/assets/{vnode-Cf_LjUuu.js → vnode-BcCsFzIs.js} +1 -1
  151. package/src/assets/web-panel/assets/{zoom-DM2Bfuyl.js → zoom-MLmG09h6.js} +1 -1
  152. package/src/assets/web-panel/index.html +1 -1
  153. package/src/commands/eval.js +79 -3
  154. package/src/commands/llm.js +40 -5
  155. package/src/data/changelog.json +13 -0
  156. package/src/lib/context-memory-kernel/message-adapter.js +41 -24
  157. package/src/lib/context-memory-kernel/segmented-memory-port.js +18 -0
  158. package/src/lib/eval/runner.js +22 -1
  159. package/src/lib/eval/verify01-contracts.js +106 -51
  160. package/src/lib/eval/verify01-execution.js +148 -166
  161. package/src/lib/eval/verify01-host-evidence.js +34 -2
  162. package/src/lib/eval/verify01-workspace.js +302 -0
  163. package/src/lib/execution-location-failure-site.js +18 -0
  164. package/src/lib/execution-location-target.js +10 -0
  165. package/src/lib/llm-connection-probe.js +147 -6
  166. package/src/lib/provider-http-error.js +30 -11
  167. package/src/lib/task-progress-tracker.js +1 -0
  168. package/src/runtime/agent-core.js +22 -0
  169. package/src/runtime/headless-runner.js +30 -20
  170. package/src/runtime/headless-stream.js +15 -10
  171. package/src/assets/web-panel/assets/ChatBubbleRenderer-DgMYDmBW.js +0 -1
  172. package/src/assets/web-panel/assets/MarkdownRenderer-CUBuc97a.js +0 -1
  173. package/src/assets/web-panel/assets/devWarning-CbtBfs7a.js +0 -1
  174. package/src/assets/web-panel/assets/index-CicoHC0s.js +0 -1
  175. 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) ───
@@ -3300,9 +3305,23 @@ async function runAgentHeadlessInWorkspace(
3300
3305
  }
3301
3306
  case "tool-result": {
3302
3307
  const err = event.error || event.result?.error || null;
3308
+ // A denied request has no invocation to settle. Explicit provider
3309
+ // IDs must never fall back to a different pending invocation.
3310
+ const settledCall =
3311
+ event.execution_started === false
3312
+ ? null
3313
+ : event.tool_use_id
3314
+ ? activeToolCalls.get(event.tool_use_id) || null
3315
+ : [...toolCalls]
3316
+ .reverse()
3317
+ .find(
3318
+ (call) =>
3319
+ !call._runtimeSettled &&
3320
+ (!event.tool || call.tool === event.tool),
3321
+ ) || null;
3303
3322
  // P0-2: settle the in-flight side-effect (commit on success, fail on
3304
3323
  // a clean error) and persist the updated ledger snapshot.
3305
- if (persist && currentSideEffectOpId) {
3324
+ if (persist && currentSideEffectOpId && settledCall) {
3306
3325
  if (event.permission_decision) {
3307
3326
  sideEffectLedger.annotate(currentSideEffectOpId, {
3308
3327
  permissionDecision: event.permission_decision,
@@ -3330,6 +3349,9 @@ async function runAgentHeadlessInWorkspace(
3330
3349
  ...(event.tool_use_id ? { id: event.tool_use_id } : {}),
3331
3350
  tool: event.tool,
3332
3351
  is_error: Boolean(err),
3352
+ ...(event.execution_started === false
3353
+ ? { execution_started: false }
3354
+ : {}),
3333
3355
  error: err,
3334
3356
  result: event.result,
3335
3357
  ...(event.permission_decision_id
@@ -3347,18 +3369,6 @@ async function runAgentHeadlessInWorkspace(
3347
3369
  });
3348
3370
  if (policyEvent) emitStream(policyEvent);
3349
3371
  }
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
3372
  if (settledCall) {
3363
3373
  settledCall.is_error = Boolean(err);
3364
3374
  settledCall.durationMs =
@@ -1061,9 +1061,17 @@ async function runTurn(
1061
1061
  }
1062
1062
  case "tool-result": {
1063
1063
  const err = event.error || event.result?.error || null;
1064
+ // No invocation started for a preflight denial. For actual results,
1065
+ // retain the adjacency fallback only for legacy events without IDs.
1066
+ const lastCall =
1067
+ event.execution_started === false
1068
+ ? null
1069
+ : event.tool_use_id
1070
+ ? toolCalls.find((call) => call.id === event.tool_use_id) || null
1071
+ : toolCalls.at(-1) || null;
1064
1072
  // P0-2: settle the in-flight side-effect (commit on success, fail on
1065
1073
  // a clean error) and persist the updated ledger snapshot.
1066
- if (sideEffects && currentSideEffectOpId) {
1074
+ if (sideEffects && currentSideEffectOpId && lastCall) {
1067
1075
  if (event.permission_decision) {
1068
1076
  sideEffects.ledger.annotate(currentSideEffectOpId, {
1069
1077
  permissionDecision: event.permission_decision,
@@ -1085,14 +1093,6 @@ async function runTurn(
1085
1093
  sideEffects.persist();
1086
1094
  currentSideEffectOpId = null;
1087
1095
  }
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
1096
  if (lastCall) {
1097
1097
  lastCall.is_error = Boolean(err);
1098
1098
  lastCall.durationMs =
@@ -1117,13 +1117,18 @@ async function runTurn(
1117
1117
  : null;
1118
1118
  emit({
1119
1119
  type: "tool_result",
1120
- ...(lastCall?.id ? { id: lastCall.id } : {}),
1120
+ ...(event.tool_use_id || lastCall?.id
1121
+ ? { id: event.tool_use_id || lastCall.id }
1122
+ : {}),
1121
1123
  ...(lastCall?.planItemId
1122
1124
  ? { plan_item_id: lastCall.planItemId }
1123
1125
  : {}),
1124
1126
  ...(settledItem?.turn ? { turn: settledItem.turn } : {}),
1125
1127
  tool: event.tool,
1126
1128
  is_error: Boolean(err),
1129
+ ...(event.execution_started === false
1130
+ ? { execution_started: false }
1131
+ : {}),
1127
1132
  error: err,
1128
1133
  result: event.result,
1129
1134
  ...(event.permission_decision_id
@@ -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 +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{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};