chainlesschain 0.166.62 → 0.166.64

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 (172) hide show
  1. package/README.md +54 -8
  2. package/package.json +3 -1
  3. package/src/assets/web-panel/assets/{AIOps-BqoRiuXE.js → AIOps-BFbLDWTF.js} +1 -1
  4. package/src/assets/web-panel/assets/{ActionButton-BwBhyFIm.js → ActionButton-CAHMtgNB.js} +1 -1
  5. package/src/assets/web-panel/assets/{Analytics-DTW03Emb.js → Analytics-CkrSj0oR.js} +3 -3
  6. package/src/assets/web-panel/assets/{AppLayout-CI-wxMLQ.js → AppLayout-BTb0Ws1l.js} +4 -4
  7. package/src/assets/web-panel/assets/{Artifacts-DVqbM3iE.js → Artifacts-C2Pgepj-.js} +1 -1
  8. package/src/assets/web-panel/assets/{Audit-DulhOs16.js → Audit-ZweyxXW8.js} +1 -1
  9. package/src/assets/web-panel/assets/{BackgroundAgents-DnRs67e8.js → BackgroundAgents-BS8tAnzP.js} +1 -1
  10. package/src/assets/web-panel/assets/{Backup-BFEZo0vX.js → Backup-CLkG_74M.js} +1 -1
  11. package/src/assets/web-panel/assets/{BaseInput-D185sBnp.js → BaseInput-MIfNcdUZ.js} +1 -1
  12. package/src/assets/web-panel/assets/{Chat-DUvP-2SK.js → Chat-DBwqlWWr.js} +6 -6
  13. package/src/assets/web-panel/assets/{ChatBubbleRenderer-u9WKQbZb.js → ChatBubbleRenderer-6T0uoJuS.js} +1 -1
  14. package/src/assets/web-panel/assets/{Checkbox-D8Zh_18b.js → Checkbox-DdBYhlVX.js} +1 -1
  15. package/src/assets/web-panel/assets/{Codegen-WdiWRdfC.js → Codegen-BR6MhiDo.js} +1 -1
  16. package/src/assets/web-panel/assets/{Col-CnSoVpw6.js → Col-yO-5EbbM.js} +1 -1
  17. package/src/assets/web-panel/assets/{Community-BJDHgBkw.js → Community-B608q_m7.js} +1 -1
  18. package/src/assets/web-panel/assets/{Compact-uNRdmBaq.js → Compact-BmVHi7Z7.js} +1 -1
  19. package/src/assets/web-panel/assets/{Compliance-_6jRTJa3.js → Compliance-BQ-DzutA.js} +1 -1
  20. package/src/assets/web-panel/assets/{Cowork-D5lnbXR6.js → Cowork-BEfLyXvi.js} +2 -2
  21. package/src/assets/web-panel/assets/{Cron-D6tuGBVg.js → Cron-Cld6NX-_.js} +2 -2
  22. package/src/assets/web-panel/assets/{Crosschain-Ce5e9Lbm.js → Crosschain-CUA3nDId.js} +1 -1
  23. package/src/assets/web-panel/assets/{DID-1VVKZ_c1.js → DID-DSI3E9zv.js} +2 -2
  24. package/src/assets/web-panel/assets/{Dashboard-DuHcZ13w.js → Dashboard-CoWtEdhO.js} +2 -2
  25. package/src/assets/web-panel/assets/{Dropdown-BC3EK0wN.js → Dropdown-CGhZ1Dyy.js} +1 -1
  26. package/src/assets/web-panel/assets/{EmailListRenderer-DzLpGs5E.js → EmailListRenderer-BHZe2K5q.js} +1 -1
  27. package/src/assets/web-panel/assets/{EvolutionSettings-x2XZHG0Z.js → EvolutionSettings-Corjo98k.js} +1 -1
  28. package/src/assets/web-panel/assets/{FamilyGuardDashboard-nAavV50Y.js → FamilyGuardDashboard-dPSWF3Pt.js} +1 -1
  29. package/src/assets/web-panel/assets/{Federation-CCHWVS5J.js → Federation-DT-Zr78c.js} +1 -1
  30. package/src/assets/web-panel/assets/{FormItemContext-CGod_3Ni.js → FormItemContext-CzKq63B0.js} +1 -1
  31. package/src/assets/web-panel/assets/{GenericCardRenderer-DIFYQa2f.js → GenericCardRenderer-CDkKrmu0.js} +1 -1
  32. package/src/assets/web-panel/assets/{Git-DikM1Nc5.js → Git-BrwRnLOv.js} +2 -2
  33. package/src/assets/web-panel/assets/{Governance-SzzBXCDX.js → Governance-C4PtCzod.js} +1 -1
  34. package/src/assets/web-panel/assets/{Inference-wVsu9QzM.js → Inference-CVPv5nwa.js} +1 -1
  35. package/src/assets/web-panel/assets/{KnowledgeGraph-DDpVxfO-.js → KnowledgeGraph-CmT9lvED.js} +1 -1
  36. package/src/assets/web-panel/assets/{Logs-BnIjS-2Z.js → Logs-DaRgv7pL.js} +2 -2
  37. package/src/assets/web-panel/assets/{MarkdownRenderer-3AsRzie6.js → MarkdownRenderer-B3zZwlSz.js} +1 -1
  38. package/src/assets/web-panel/assets/{Marketplace-Cj3PLhXV.js → Marketplace-Bm0GGEaL.js} +1 -1
  39. package/src/assets/web-panel/assets/{McpTools-DMKO55Kz.js → McpTools-71L5h0en.js} +3 -3
  40. package/src/assets/web-panel/assets/{Memory-wWJl5yJL.js → Memory-BoWrfASi.js} +2 -2
  41. package/src/assets/web-panel/assets/{MobileBridge-CJ_VIPgJ.js → MobileBridge-Dp4FcX_-.js} +1 -1
  42. package/src/assets/web-panel/assets/{MobileProjects-CiJT5cF8.js → MobileProjects-00ja0Z7O.js} +1 -1
  43. package/src/assets/web-panel/assets/{Mtc-BXmndm9a.js → Mtc-BZF6YNYp.js} +2 -2
  44. package/src/assets/web-panel/assets/{MtcAudit-C3hWIAnz.js → MtcAudit-Bp_vcI6H.js} +2 -2
  45. package/src/assets/web-panel/assets/{Multisig-DU4OUQ7u.js → Multisig-CnCo56CS.js} +3 -3
  46. package/src/assets/web-panel/assets/{NLProgramming-CyAwOeU5.js → NLProgramming-BCSzNHpv.js} +1 -1
  47. package/src/assets/web-panel/assets/{Notes--YvcAg13.js → Notes-kXoQk8B7.js} +3 -3
  48. package/src/assets/web-panel/assets/{NotificationSettings-Dyu6dC0D.js → NotificationSettings-oN-1fkcy.js} +1 -1
  49. package/src/assets/web-panel/assets/{OrderTableRenderer-Df-0iTO2.js → OrderTableRenderer-5ZVHrVZ9.js} +1 -1
  50. package/src/assets/web-panel/assets/{Organization-a9Em4Sgu.js → Organization-D4_T9Tdc.js} +4 -4
  51. package/src/assets/web-panel/assets/{Overflow-CCQtvcsw.js → Overflow-d8vZwo9w.js} +1 -1
  52. package/src/assets/web-panel/assets/{P2P--CaB5e38.js → P2P-0HGUdmTv.js} +2 -2
  53. package/src/assets/web-panel/assets/{PdhVaultBrowser-CmfHjoJG.js → PdhVaultBrowser-Cx8vp92z.js} +3 -3
  54. package/src/assets/web-panel/assets/{Permissions-BCDjNsXi.js → Permissions-XHd6pVQB.js} +4 -4
  55. package/src/assets/web-panel/assets/{PersonalDataHub-ByprqCJd.js → PersonalDataHub-CB5bZU9T.js} +4 -4
  56. package/src/assets/web-panel/assets/{Pipeline-CZRZq-P0.js → Pipeline-Dy_qx4-0.js} +1 -1
  57. package/src/assets/web-panel/assets/{Privacy-CeDay_dV.js → Privacy-BgR0-uEu.js} +1 -1
  58. package/src/assets/web-panel/assets/{ProjectInit-CgpIfRAZ.js → ProjectInit-DAcRi1Nx.js} +2 -2
  59. package/src/assets/web-panel/assets/{ProjectSettings-CU8iakEs.js → ProjectSettings-Bd1Q0rK_.js} +2 -2
  60. package/src/assets/web-panel/assets/{Projects-pPM0KRfQ.js → Projects-DVc9DcbM.js} +1 -1
  61. package/src/assets/web-panel/assets/{Providers-BfpxsZh1.js → Providers-C3c4QfUT.js} +1 -1
  62. package/src/assets/web-panel/assets/{QrScannerModal-Dmv3rax1.js → QrScannerModal-Ba_GbitW.js} +1 -1
  63. package/src/assets/web-panel/assets/{QuickAsk-DBOtB5wd.js → QuickAsk-CSn5tIkO.js} +1 -1
  64. package/src/assets/web-panel/assets/{Recommend-C_KnHRvS.js → Recommend-B3-8PLX0.js} +1 -1
  65. package/src/assets/web-panel/assets/{RemoteSession-OIO9kT7D.js → RemoteSession-Bd_7Zmi-.js} +2 -2
  66. package/src/assets/web-panel/assets/{Reputation-BCfNIBt3.js → Reputation-BU2A_wy5.js} +1 -1
  67. package/src/assets/web-panel/assets/{Row-pnhw7dyj.js → Row-I0JFMjCz.js} +1 -1
  68. package/src/assets/web-panel/assets/{RssFeed-CLJ1A3FF.js → RssFeed-CNc4Dgfz.js} +3 -3
  69. package/src/assets/web-panel/assets/{Search-CSQzJ3gj.js → Search-uAA6ceLl.js} +1 -1
  70. package/src/assets/web-panel/assets/{Security-CS_mvkaE.js → Security-U1SWj5nP.js} +4 -4
  71. package/src/assets/web-panel/assets/{Services-DBqA2Csq.js → Services-BFjZ5ASY.js} +2 -2
  72. package/src/assets/web-panel/assets/{Skeleton-BjR3_iWH.js → Skeleton-B8InBvQf.js} +1 -1
  73. package/src/assets/web-panel/assets/{Skills-DwGIXRJS.js → Skills-BDYwf3QV.js} +1 -1
  74. package/src/assets/web-panel/assets/{Sla-DwiHHJtJ.js → Sla-Dcc6iq3q.js} +1 -1
  75. package/src/assets/web-panel/assets/{SpeechSettings-QYN_t0CS.js → SpeechSettings-C3Ta-mC9.js} +1 -1
  76. package/src/assets/web-panel/assets/{SyncSettings-DcXA1Jp3.js → SyncSettings-BNHEYO95.js} +2 -2
  77. package/src/assets/web-panel/assets/Tasks-JbV6L1FX.js +1 -0
  78. package/src/assets/web-panel/assets/{Templates-C6MTuLXU.js → Templates-Yp0CUTBz.js} +1 -1
  79. package/src/assets/web-panel/assets/{Tenant-DmbdMB2D.js → Tenant-CToNYxCo.js} +1 -1
  80. package/src/assets/web-panel/assets/{Terminal-DYeXnE4A.js → Terminal-D7W9UqSD.js} +2 -2
  81. package/src/assets/web-panel/assets/{TimelineRenderer-BrwLhsSE.js → TimelineRenderer-B7rqc1kE.js} +1 -1
  82. package/src/assets/web-panel/assets/{Tokens-C5kKpRWj.js → Tokens-QP7K4ppA.js} +1 -1
  83. package/src/assets/web-panel/assets/{Trigger-C4Zyg1jj.js → Trigger-CAWowQCR.js} +1 -1
  84. package/src/assets/web-panel/assets/{Trust-D0mrY3kY.js → Trust-B-0XOP97.js} +1 -1
  85. package/src/assets/web-panel/assets/{UkeySign-Bq5NMLLb.js → UkeySign-BtiZbiuj.js} +1 -1
  86. package/src/assets/web-panel/assets/{VideoEditing-OObS6euz.js → VideoEditing-Dee11JI0.js} +1 -1
  87. package/src/assets/web-panel/assets/{Wallet-Die77ZAO.js → Wallet-y7qOmaWY.js} +4 -4
  88. package/src/assets/web-panel/assets/{WebAuthn-DFpqn0WO.js → WebAuthn-CjyRRWGK.js} +5 -5
  89. package/src/assets/web-panel/assets/{WorkflowEditor-BgKZiece.js → WorkflowEditor-D7Kiz25Q.js} +1 -1
  90. package/src/assets/web-panel/assets/{chat-CbWtbRmr.js → chat-4F_yB-Gw.js} +1 -1
  91. package/src/assets/web-panel/assets/{colors-Zu_TgmpG.js → colors-CrczPd-t.js} +1 -1
  92. package/src/assets/web-panel/assets/{compact-item-BqABAwA_.js → compact-item-AenPL6fz.js} +1 -1
  93. package/src/assets/web-panel/assets/{createContext-DR6r1ykz.js → createContext-BcwoqPgi.js} +1 -1
  94. package/src/assets/web-panel/assets/devWarning-C4qWsAvh.js +1 -0
  95. package/src/assets/web-panel/assets/{hasIn-BNnYbjOt.js → hasIn-YouHmap8.js} +1 -1
  96. package/src/assets/web-panel/assets/{index-BQHn6m4S.js → index--xwN0ZvG.js} +1 -1
  97. package/src/assets/web-panel/assets/{index-DxloCIDQ.js → index-31dhJpt3.js} +1 -1
  98. package/src/assets/web-panel/assets/{index-CuYLjMxX.js → index-4r7B8sTx.js} +1 -1
  99. package/src/assets/web-panel/assets/{index-hZ41pakD.js → index-5GHNjmnt.js} +1 -1
  100. package/src/assets/web-panel/assets/{index--vigBXnN.js → index-B5Vmr0CM.js} +1 -1
  101. package/src/assets/web-panel/assets/{index-CpmSx_mp.js → index-B8EXHVmM.js} +1 -1
  102. package/src/assets/web-panel/assets/{index-BQ1WFS4G.js → index-BHA5Fyjc.js} +1 -1
  103. package/src/assets/web-panel/assets/{index-ys7--3Ab.js → index-B_I1INkw.js} +1 -1
  104. package/src/assets/web-panel/assets/{index-CO9hQ7ri.js → index-BaguGDJP.js} +1 -1
  105. package/src/assets/web-panel/assets/{index-DaKziwj_.js → index-BoVeUGhC.js} +1 -1
  106. package/src/assets/web-panel/assets/{index-DiaPl_6F.js → index-BsGhFk79.js} +1 -1
  107. package/src/assets/web-panel/assets/{index-DEdqCQKQ.js → index-BwUqDg9_.js} +1 -1
  108. package/src/assets/web-panel/assets/{index-hWckjvz-.js → index-BzyDSW_e.js} +1 -1
  109. package/src/assets/web-panel/assets/index-C-ltOW-O.js +1 -0
  110. package/src/assets/web-panel/assets/{index-P-0rrwu0.js → index-C5hpEYbx.js} +1 -1
  111. package/src/assets/web-panel/assets/{index-CVgcq0cJ.js → index-CHNKoexH.js} +1 -1
  112. package/src/assets/web-panel/assets/{index-rS1lj7A9.js → index-COgeZETv.js} +1 -1
  113. package/src/assets/web-panel/assets/{index-Ct4xnx2r.js → index-CWgIKCVS.js} +1 -1
  114. package/src/assets/web-panel/assets/{index-CYgH1j85.js → index-CZ9Ikuo6.js} +1 -1
  115. package/src/assets/web-panel/assets/{index-BtQDpNFU.js → index-CZT-LLGS.js} +1 -1
  116. package/src/assets/web-panel/assets/{index-B9qA3lcI.js → index-CedvtJA_.js} +1 -1
  117. package/src/assets/web-panel/assets/{index-DuCixW1o.js → index-D0dXNgvi.js} +1 -1
  118. package/src/assets/web-panel/assets/{index-55eCb40A.js → index-D5Rvq67L.js} +3 -3
  119. package/src/assets/web-panel/assets/index-D7Ir0TiS.js +1 -0
  120. package/src/assets/web-panel/assets/{index-fvl4dSWm.js → index-D7m5Z4We.js} +1 -1
  121. package/src/assets/web-panel/assets/{index-D08ytPR_.js → index-D8a1AEVK.js} +1 -1
  122. package/src/assets/web-panel/assets/{index-CbJgVaoQ.js → index-DAGfuEUu.js} +1 -1
  123. package/src/assets/web-panel/assets/{index-n62j7dTt.js → index-DAh5KwVL.js} +1 -1
  124. package/src/assets/web-panel/assets/{index-BCyrVLzm.js → index-DE3qPp9l.js} +1 -1
  125. package/src/assets/web-panel/assets/{index-C912Wlyi.js → index-DNHmbdGm.js} +1 -1
  126. package/src/assets/web-panel/assets/{index--1t0mcMh.js → index-DPrzFdCg.js} +1 -1
  127. package/src/assets/web-panel/assets/{index-uwS83tsv.js → index-DVrgnhfu.js} +1 -1
  128. package/src/assets/web-panel/assets/{index-CR4uB9Mt.js → index-D_4VsL-L.js} +1 -1
  129. package/src/assets/web-panel/assets/{index-BvQB-LK5.js → index-Dfw3WyZU.js} +1 -1
  130. package/src/assets/web-panel/assets/{index-BbHnxChr.js → index-GP5u18DV.js} +1 -1
  131. package/src/assets/web-panel/assets/{index-CkBDWART.js → index-YX4dcbgh.js} +1 -1
  132. package/src/assets/web-panel/assets/{index-CSNMSJAt.js → index-fCuM1NPH.js} +1 -1
  133. package/src/assets/web-panel/assets/{index-GrGT2dft.js → index-gy1H_PJk.js} +1 -1
  134. package/src/assets/web-panel/assets/{index-CmGll9ri.js → index-q_9aqSgF.js} +1 -1
  135. package/src/assets/web-panel/assets/{initDefaultProps-BEtGYjIT.js → initDefaultProps-Ci6zc6ZA.js} +1 -1
  136. package/src/assets/web-panel/assets/{motion-Cvnft4fL.js → motion-DS3kjIxw.js} +1 -1
  137. package/src/assets/web-panel/assets/{move-CdxE_5Yl.js → move-DCdWAKk4.js} +1 -1
  138. package/src/assets/web-panel/assets/{mtc-parser-CS0l6IJn.js → mtc-parser-B0Wfce9U.js} +1 -1
  139. package/src/assets/web-panel/assets/{omit-Bnji87sb.js → omit-Clx9TR6z.js} +1 -1
  140. package/src/assets/web-panel/assets/{pickAttrs-BYdnEgN3.js → pickAttrs-CqSiqUvN.js} +1 -1
  141. package/src/assets/web-panel/assets/{placementArrow-DYYd524z.js → placementArrow-BWe_v-40.js} +1 -1
  142. package/src/assets/web-panel/assets/{responsiveObserve-BbIJIkXp.js → responsiveObserve-BSJ68bw6.js} +1 -1
  143. package/src/assets/web-panel/assets/{slide-BSvuvfUS.js → slide-VRPlLxZB.js} +1 -1
  144. package/src/assets/web-panel/assets/{statusUtils-DeLSt3js.js → statusUtils-BFBVDPdB.js} +1 -1
  145. package/src/assets/web-panel/assets/{styleChecker-DpJTPfyI.js → styleChecker-CehOXy1f.js} +1 -1
  146. package/src/assets/web-panel/assets/{useFlexGapSupport-S7WdFQMU.js → useFlexGapSupport-BCOdfK18.js} +1 -1
  147. package/src/assets/web-panel/assets/{useFs-CkfCBy52.js → useFs-BMKrjfJQ.js} +1 -1
  148. package/src/assets/web-panel/assets/{usePersonalDataHub-CA48p8Gt.js → usePersonalDataHub-BIjZ7IgI.js} +1 -1
  149. package/src/assets/web-panel/assets/{vnode-C9D1tq_L.js → vnode-oD0MXddQ.js} +1 -1
  150. package/src/assets/web-panel/assets/{zoom-B0TG7YQI.js → zoom-D7WqH2Ai.js} +1 -1
  151. package/src/assets/web-panel/index.html +1 -1
  152. package/src/data/changelog.json +26 -0
  153. package/src/lib/evolution/evolution-artifact-ports.js +3 -0
  154. package/src/lib/evolution/evolution-deployment-loader.js +125 -9
  155. package/src/lib/evolution/pm-exploration-budget-executor.js +346 -0
  156. package/src/lib/evolution/pm-exploration-business-grader.js +581 -0
  157. package/src/lib/evolution/pm-exploration-evidence-bundle.js +613 -0
  158. package/src/lib/evolution/pm-exploration-execution-host.js +946 -0
  159. package/src/lib/evolution/pm-exploration-ledger-adapter.js +210 -22
  160. package/src/lib/evolution/pm-exploration-provider-settlement-adapter.js +420 -0
  161. package/src/lib/evolution/pm-exploration-receipts.js +626 -0
  162. package/src/lib/evolution/pm-exploration-recovery-snapshot-store.js +521 -0
  163. package/src/lib/evolution/pm-exploration-rounds.js +12 -2
  164. package/src/lib/evolution/pm-exploration-transition-committer.js +541 -0
  165. package/src/lib/evolution/pm-exploration-volcengine-provider.js +724 -0
  166. package/src/lib/read-file-loop-guard.js +13 -7
  167. package/src/lib/task-progress-tracker.js +1 -1
  168. package/src/runtime/agent-core.js +14 -7
  169. package/src/assets/web-panel/assets/Tasks-DwWqvoyB.js +0 -1
  170. package/src/assets/web-panel/assets/devWarning-CmMzSuk5.js +0 -1
  171. package/src/assets/web-panel/assets/index-Dw-oPGSM.js +0 -1
  172. package/src/assets/web-panel/assets/index-OXemaG8f.js +0 -1
@@ -291,15 +291,21 @@ export class ReadFileLoopGuard {
291
291
  canContinue(filePath, args = {}) {
292
292
  if (this.canRecoverEdit(filePath, args)) return true;
293
293
  const entry = this.progress.get(keyFor(filePath, args));
294
+ const targeted =
295
+ Number.isSafeInteger(args.offset) &&
296
+ args.offset > 0 &&
297
+ Number.isSafeInteger(args.limit) &&
298
+ args.limit > 0 &&
299
+ args.limit <= 80;
300
+ // Task recovery tells the model to replace broad discovery with a targeted
301
+ // section read. That section may legitimately live in a file not observed
302
+ // before recovery (for example, a referenced implementation note). Admit
303
+ // the explicitly bounded request while continuing to reject whole-file
304
+ // reads. Once registered, the ordinary per-file reread limit applies.
305
+ if (!entry) return targeted;
294
306
  return (
295
307
  entry?.summary?.reachedEnd === false ||
296
- (!!entry &&
297
- entry.rereads.size < 3 &&
298
- Number.isSafeInteger(args.offset) &&
299
- args.offset > 0 &&
300
- Number.isSafeInteger(args.limit) &&
301
- args.limit > 0 &&
302
- args.limit <= 80)
308
+ (entry.rereads.size < 3 && targeted)
303
309
  );
304
310
  }
305
311
 
@@ -358,7 +358,7 @@ export class TaskProgressTracker {
358
358
  "Do not restart general investigation, rewrite the plan, or delegate the same research. " +
359
359
  "A child exhausting its budget is not task completion. Preserve useful partial findings and continue the original task. " +
360
360
  "During recovery, broad discovery stays paused until an actionable tool outcome; a focused search, another status query or a failed command does not end recovery. " +
361
- "Use search_files for an exact missing local fact or run a bounded computation/verification, then act on the result. " +
361
+ "Use search_files for an exact missing local fact, read_file with an explicit offset and limit of at most 80 lines for a known target section, or run a bounded computation/verification, then act on the result. " +
362
362
  "Never claim completion without satisfying the user's request.",
363
363
  };
364
364
  }
@@ -14993,9 +14993,16 @@ export async function* agentLoop(messages, options) {
14993
14993
  const prInvestigationExhausted =
14994
14994
  prActionTask &&
14995
14995
  taskProgressTracker.explorationCalls >= PR_INVESTIGATION_LIMIT;
14996
+ // Keep read_file visible during task recovery so the model can request a
14997
+ // known, explicitly bounded section. Admission below still rejects broad
14998
+ // new-file reads and repeated covered ranges.
14996
14999
  const taskRecoveryTools = TASK_RECOVERY_TOOLS.filter(
14997
- (tool) => tool !== "read_file" || !readFileLoopGuard.hasRecoveryReads,
15000
+ (tool) => tool !== "read_file",
14998
15001
  );
15002
+ const readToolRecoveryPaused =
15003
+ readRecoveryTurn &&
15004
+ !taskRecoveryTurn &&
15005
+ !readFileLoopGuard.hasEditRecoveryReads;
14999
15006
  if (newProgressIntervention) {
15000
15007
  lastTaskProgressIntervention = progressIntervention.key;
15001
15008
  // Reuse the existing warning event so CLI, REPL and IDE clients all show
@@ -15010,9 +15017,7 @@ export async function* agentLoop(messages, options) {
15010
15017
  };
15011
15018
  }
15012
15019
  const pausedTools = new Set([
15013
- ...(readRecoveryTurn && !readFileLoopGuard.hasEditRecoveryReads
15014
- ? ["read_file"]
15015
- : []),
15020
+ ...(readToolRecoveryPaused ? ["read_file"] : []),
15016
15021
  ...(taskRecoveryTurn ? taskRecoveryTools : []),
15017
15022
  ...remoteRecoveryTools,
15018
15023
  ...(prInvestigationExhausted
@@ -15125,13 +15130,13 @@ export async function* agentLoop(messages, options) {
15125
15130
  content:
15126
15131
  progressIntervention.guidance +
15127
15132
  (taskRecoveryTurn
15128
- ? ` Recovery remains active: ${taskRecoveryTools.join(", ")} are omitted until an actionable tool outcome. Only unfinished, already-started file scans may continue; new whole-file discovery is paused. Focused search, authorized changes and verification remain available.`
15133
+ ? ` Recovery remains active: ${taskRecoveryTools.join(", ")} are omitted until an actionable tool outcome. Unfinished scans and explicit target-section reads of at most 80 lines may continue; new whole-file discovery is paused. Focused search, authorized changes and verification remain available.`
15129
15134
  : ""),
15130
15135
  },
15131
15136
  ];
15132
15137
  contextMemoryTrustedSystemIndexes.push(callMessages.length - 1);
15133
15138
  }
15134
- if (readRecoveryTurn && !prInvestigationExhausted) {
15139
+ if (readToolRecoveryPaused && !prInvestigationExhausted) {
15135
15140
  callMessages = [
15136
15141
  ...callMessages,
15137
15142
  {
@@ -15909,7 +15914,9 @@ export async function* agentLoop(messages, options) {
15909
15914
  );
15910
15915
  const earlyAuthorityDenial =
15911
15916
  ((pausedTools.has(toolName) && !editRecoveryRead) ||
15912
- (readRecoveryTurn && toolName === "read_file" && !editRecoveryRead) ||
15917
+ (readToolRecoveryPaused &&
15918
+ toolName === "read_file" &&
15919
+ !editRecoveryRead) ||
15913
15920
  remoteReadLoopGuard.shouldPause(toolName, toolArgs) ||
15914
15921
  (taskRecoveryTurn &&
15915
15922
  toolName === "read_file" &&
@@ -1 +0,0 @@
1
- import{E as B,b as D,r as R,I as p,J as c,U as _,c as n,K as a,S,V as x,o as I,x as O,P as i,Q as k,R as r,F as T,Z as F}from"./vendor-Bn1JzzAn.js";import{u as P,_ as E}from"./index-55eCb40A.js";import{R as U}from"./icons-DG5UD-6K.js";const V=B("tasks",()=>{const y=R([]),l=R(!1);let u=null,t=null,d=null;const b=D(()=>y.value.filter(e=>e.status==="running")),v=D(()=>y.value.filter(e=>e.status==="pending")),w=D(()=>y.value.filter(e=>e.status==="completed"||e.status==="failed"||e.status==="timeout"));async function s(){const e=P();l.value=!0;try{const g=await e.sendRaw({type:"tasks-list"});g&&Array.isArray(g.tasks)&&(y.value=g.tasks)}catch{}finally{l.value=!1}}async function m(e){const g=P();try{await g.sendRaw({type:"tasks-stop",taskId:e})}catch{}finally{await s()}}const f=R(null);function h(e=5e3){N(),s(),u=setInterval(s,e),C()}function N(){u&&(clearInterval(u),u=null),t&&(t(),t=null),d&&(clearTimeout(d),d=null)}function C(){const e=P();if(t)return;const g=z=>{z.type==="task:notification"&&z.payload?.task&&(f.value=z.payload.task,s(),d&&clearTimeout(d),d=setTimeout(()=>{f.value=null,d=null},8e3))};t=e.onRuntimeEvent(g)}function A(e){return!e||e<0?"-":e<1e3?`${e}ms`:e<6e4?`${(e/1e3).toFixed(1)}s`:`${(e/6e4).toFixed(1)}m`}function o(e){switch(e){case"running":return"processing";case"pending":return"default";case"completed":return"success";case"failed":return"error";case"timeout":return"warning";default:return"default"}}return{tasks:y,loading:l,running:b,pending:v,completed:w,lastNotification:f,fetchTasks:s,stopTask:m,startPolling:h,stopPolling:N,formatDuration:A,getStatusColor:o}}),K={__name:"Tasks",setup(y,{expose:l}){l();const u=V(),t=[{title:"状态",key:"status",width:90},{title:"描述",key:"description",ellipsis:!0},{title:"类型",dataIndex:"type",width:100},{title:"耗时",key:"duration",width:90},{title:"创建时间",key:"createdAt",width:180},{title:"结果",key:"result",ellipsis:!0},{title:"操作",key:"action",width:80}];function d(s){return s.status==="running"&&s.startedAt?u.formatDuration(Date.now()-s.startedAt):s.completedAt&&s.startedAt?u.formatDuration(s.completedAt-s.startedAt):"-"}function b(s){return s?new Date(s).toLocaleString():"-"}function v(s,m){return s?s.length>m?`${s.slice(0,m)}...`:s:""}I(()=>u.startPolling(5e3)),O(()=>u.stopPolling());const w={store:u,columns:t,getDuration:d,formatTime:b,truncate:v,onMounted:I,onUnmounted:O,get ReloadOutlined(){return U},get useTasksStore(){return V}};return Object.defineProperty(w,"__isScriptSetup",{enumerable:!1,value:!0}),w}},L={class:"page-header"},W={key:0,class:"error-text"},j={key:1},q={class:"task-header"},J={class:"task-desc"},M={class:"task-id"},Q={class:"task-meta"},Z=["title"],G={key:0,class:"error-text"},H={key:1,class:"success-text"},X={key:2,class:"muted-text"};function Y(y,l,u,t,d,b){const v=p("a-button"),w=p("a-space"),s=p("a-alert"),m=p("a-statistic"),f=p("a-card"),h=p("a-col"),N=p("a-row"),C=p("a-tag"),A=p("a-table");return i(),c("div",null,[_("div",L,[l[3]||(l[3]=_("div",null,[_("h2",{class:"page-title"},"后台任务"),_("p",{class:"page-sub"},"查看后台任务队列、实时通知和任务执行结果。")],-1)),n(w,null,{default:a(()=>[n(v,{ghost:"",loading:t.store.loading,onClick:l[0]||(l[0]=o=>t.store.fetchTasks())},{icon:a(()=>[n(t.ReloadOutlined)]),default:a(()=>[l[2]||(l[2]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),t.store.lastNotification?(i(),S(s,{key:0,type:t.store.lastNotification.status==="completed"?"success":"error","show-icon":"",closable:"",class:"banner",onClose:l[1]||(l[1]=o=>t.store.lastNotification=null)},{message:a(()=>[k(" 任务"+r(t.store.lastNotification.status==="completed"?"完成":"结束")+": "+r(t.store.lastNotification.description||t.store.lastNotification.id.slice(0,16)),1)]),description:a(()=>[t.store.lastNotification.error?(i(),c("span",W,r(t.store.lastNotification.error),1)):t.store.lastNotification.result?(i(),c("span",j,r(t.truncate(String(t.store.lastNotification.result),120)),1)):x("v-if",!0)]),_:1},8,["type"])):x("v-if",!0),n(N,{gutter:[16,16],class:"stats-row"},{default:a(()=>[n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"全部任务",value:t.store.tasks.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"运行中",value:t.store.running.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"等待中",value:t.store.pending.length},null,8,["value"])]),_:1})]),_:1}),n(h,{xs:12,sm:6},{default:a(()=>[n(f,{class:"stat-card",size:"small"},{default:a(()=>[n(m,{title:"已完成",value:t.store.completed.length},null,8,["value"])]),_:1})]),_:1})]),_:1}),t.store.running.length>0?(i(),S(f,{key:1,title:"运行中的任务",class:"panel-card",size:"small"},{default:a(()=>[(i(!0),c(T,null,F(t.store.running,o=>(i(),c("div",{key:o.id,class:"task-item running"},[_("div",q,[n(C,{color:t.store.getStatusColor(o.status)},{default:a(()=>[k(r(o.status.toUpperCase()),1)]),_:2},1032,["color"]),_("span",J,r(o.description),1),_("span",M,r(o.id.slice(0,16)),1)]),_("div",Q,[_("span",null,"类型: "+r(o.type||"-"),1),_("span",null,"已运行: "+r(t.store.formatDuration(Date.now()-o.startedAt)),1),n(v,{size:"small",danger:"",onClick:e=>t.store.stopTask(o.id)},{default:a(()=>[...l[4]||(l[4]=[k("停止",-1)])]),_:1},8,["onClick"])])]))),128))]),_:1})):x("v-if",!0),n(f,{class:"panel-card"},{default:a(()=>[n(A,{columns:t.columns,"data-source":t.store.tasks,pagination:{pageSize:15,size:"small"},loading:t.store.loading,"row-key":"id",size:"small"},{bodyCell:a(({column:o,record:e})=>[o.key==="status"?(i(),S(C,{key:0,color:t.store.getStatusColor(e.status)},{default:a(()=>[k(r(e.status),1)]),_:2},1032,["color"])):o.key==="description"?(i(),c("span",{key:1,title:e.command},r(e.description),9,Z)):o.key==="duration"?(i(),c(T,{key:2},[k(r(t.getDuration(e)),1)],64)):o.key==="createdAt"?(i(),c(T,{key:3},[k(r(t.formatTime(e.createdAt)),1)],64)):o.key==="result"?(i(),c(T,{key:4},[e.error?(i(),c("span",G,r(t.truncate(e.error,60)),1)):e.result?(i(),c("span",H,r(t.truncate(String(e.result),60)),1)):(i(),c("span",X,"-"))],64)):o.key==="action"?(i(),c(T,{key:5},[e.status==="running"?(i(),S(v,{key:0,size:"small",danger:"",onClick:g=>t.store.stopTask(e.id)},{default:a(()=>[...l[5]||(l[5]=[k(" 停止 ",-1)])]),_:1},8,["onClick"])):x("v-if",!0)],64)):x("v-if",!0)]),_:1},8,["data-source","loading"])]),_:1})])}const st=E(K,[["render",Y],["__scopeId","data-v-da5ff6a2"],["__file","/tmp/cc-web-panel-6WKCqO/repo/packages/web-panel/src/views/Tasks.vue"]]);export{st as default};
@@ -1 +0,0 @@
1
- import{Q as r}from"./index-55eCb40A.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-pnhw7dyj.js";import{a0 as t}from"./index-55eCb40A.js";import"./vendor-Bn1JzzAn.js";import"./responsiveObserve-BbIJIkXp.js";import"./useFlexGapSupport-S7WdFQMU.js";import"./styleChecker-DpJTPfyI.js";import"./index-n62j7dTt.js";import"./icons-DG5UD-6K.js";const l=t(o);export{l as default};
@@ -1 +0,0 @@
1
- import{C as o}from"./Col-CnSoVpw6.js";import{a0 as t}from"./index-55eCb40A.js";import"./vendor-Bn1JzzAn.js";import"./index-n62j7dTt.js";import"./icons-DG5UD-6K.js";const s=t(o);export{s as default};