@namzu/cli 38.2.0 → 39.0.0

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 (391) hide show
  1. package/CHANGELOG.md +111 -50
  2. package/dist/bin.js +1 -1
  3. package/dist/chunks/{acp-JU4DX3RK.js → acp-NZITIX4C.js} +40 -37
  4. package/dist/chunks/acp-NZITIX4C.js.map +6 -0
  5. package/dist/chunks/{activity-command-TERANSMO.js → activity-command-NKOTZ5FK.js} +11 -11
  6. package/dist/chunks/{add-MZ6KIHY3.js → add-AONYUNXG.js} +17 -17
  7. package/dist/chunks/{agent-JZFFS4IP.js → agent-YPKFE66C.js} +29 -28
  8. package/dist/chunks/agent-session-HFOLAFFL.js +53 -0
  9. package/dist/chunks/{archive-SXYHKL3H.js → archive-SUE5OUZZ.js} +9 -9
  10. package/dist/chunks/{bin-main-TFKZQ7NF.js → bin-main-55PUHGTA.js} +3 -3
  11. package/dist/chunks/{browser-3U3YBKL6.js → browser-HYPSUDAZ.js} +6 -6
  12. package/dist/chunks/{chat-37QA7HHN.js → chat-6OULID33.js} +14 -14
  13. package/dist/chunks/{chunk-7S5UB6DX.js → chunk-233DQVSC.js} +6 -6
  14. package/dist/chunks/{chunk-D5SIC3SF.js → chunk-263WNQB4.js} +9 -9
  15. package/dist/chunks/{chunk-XKEMUEI5.js → chunk-2KKF45DQ.js} +2 -2
  16. package/dist/chunks/{chunk-N57QO3AA.js → chunk-2VMMTC2V.js} +2 -2
  17. package/dist/chunks/{chunk-KUNQW3N3.js → chunk-2WQFRVVQ.js} +4 -4
  18. package/dist/chunks/{chunk-FOGCQUIH.js → chunk-3JB5NDB4.js} +11 -23
  19. package/dist/chunks/chunk-3JB5NDB4.js.map +6 -0
  20. package/dist/chunks/{chunk-LPYWPRIF.js → chunk-3OAGXDRM.js} +4 -4
  21. package/dist/chunks/{chunk-CDZT7WGY.js → chunk-47TGPZWD.js} +3 -3
  22. package/dist/chunks/{chunk-IG4O4UAL.js → chunk-4K2NRXHJ.js} +2 -2
  23. package/dist/chunks/{chunk-2SVXX5QK.js → chunk-5CGH647C.js} +5 -5
  24. package/dist/chunks/{chunk-ZJHOWWXZ.js → chunk-74U3P65Q.js} +12 -12
  25. package/dist/chunks/{chunk-ZJMUPGWD.js → chunk-7EASYULO.js} +8 -8
  26. package/dist/chunks/{chunk-KG2YA6TI.js → chunk-7YXHOSHD.js} +3 -3
  27. package/dist/chunks/{chunk-EKMOETAY.js → chunk-AZ3YHVFA.js} +2 -2
  28. package/dist/chunks/{chunk-7O4X4GYL.js → chunk-B2357ETN.js} +7 -7
  29. package/dist/chunks/{chunk-TCXFKEYW.js → chunk-B73OIFL6.js} +4 -4
  30. package/dist/chunks/{chunk-TCXFKEYW.js.map → chunk-B73OIFL6.js.map} +1 -1
  31. package/dist/chunks/{chunk-XIURI2PQ.js → chunk-BEFTUDYP.js} +7 -7
  32. package/dist/chunks/chunk-CDYUGK7F.js +70 -0
  33. package/dist/chunks/chunk-CDYUGK7F.js.map +6 -0
  34. package/dist/chunks/{chunk-DQICYFIG.js → chunk-CL5TCY4F.js} +2 -2
  35. package/dist/chunks/{chunk-5G3VKTLZ.js → chunk-CUOWARJI.js} +2 -2
  36. package/dist/chunks/{chunk-WLHI2QSC.js → chunk-CZEU2JYJ.js} +3 -3
  37. package/dist/chunks/{chunk-WLHI2QSC.js.map → chunk-CZEU2JYJ.js.map} +1 -1
  38. package/dist/chunks/{chunk-M2EJQU3F.js → chunk-DFA5OB46.js} +4 -4
  39. package/dist/chunks/{chunk-B5344NIV.js → chunk-E3HCZYGN.js} +3 -3
  40. package/dist/chunks/{chunk-Z4LTK3HY.js → chunk-EA6SWPO4.js} +4 -4
  41. package/dist/chunks/{chunk-XNHYUV6G.js → chunk-EUU4TDTH.js} +2 -2
  42. package/dist/chunks/{chunk-VFBIR3UC.js → chunk-FBNKKDIY.js} +4 -4
  43. package/dist/chunks/{chunk-PETRJVXF.js → chunk-FQZFVLJB.js} +4 -4
  44. package/dist/chunks/{chunk-FMJCN6JZ.js → chunk-GU5YARBU.js} +90 -6
  45. package/dist/chunks/chunk-GU5YARBU.js.map +6 -0
  46. package/dist/chunks/{chunk-5PDW6VPO.js → chunk-HI2KXIGA.js} +3 -3
  47. package/dist/chunks/{chunk-LC5VGZO2.js → chunk-HU35YAIZ.js} +2 -2
  48. package/dist/chunks/{chunk-S5U4BG57.js → chunk-HV77F4SF.js} +3 -52
  49. package/dist/chunks/chunk-HV77F4SF.js.map +6 -0
  50. package/dist/chunks/{chunk-2UT6U22B.js → chunk-IAYIUJMI.js} +2 -2
  51. package/dist/chunks/{chunk-6A7P3I3N.js → chunk-ID334ALD.js} +29 -28
  52. package/dist/chunks/{chunk-6A7P3I3N.js.map → chunk-ID334ALD.js.map} +1 -1
  53. package/dist/chunks/{chunk-U3JIZFOS.js → chunk-IE5XIE4W.js} +2 -2
  54. package/dist/chunks/{chunk-2UUBILYI.js → chunk-II57E2QW.js} +4 -4
  55. package/dist/chunks/{chunk-CZVHXYGD.js → chunk-IYPP6HSK.js} +4 -32
  56. package/dist/chunks/chunk-IYPP6HSK.js.map +6 -0
  57. package/dist/chunks/{chunk-OA5772RG.js → chunk-LFVQSMJG.js} +4 -4
  58. package/dist/chunks/{chunk-2WHVZCLT.js → chunk-M3TJHQF7.js} +18 -2
  59. package/dist/chunks/{chunk-2WHVZCLT.js.map → chunk-M3TJHQF7.js.map} +1 -1
  60. package/dist/chunks/{chunk-U75JG2RT.js → chunk-MCNEFI5Q.js} +2 -2
  61. package/dist/chunks/{chunk-JN6M424Z.js → chunk-N3FI7O4U.js} +2 -2
  62. package/dist/chunks/{chunk-3NIZKJJG.js → chunk-N72DH6D5.js} +2 -2
  63. package/dist/chunks/{chunk-V2VHVH5S.js → chunk-NLKIBRXJ.js} +3 -3
  64. package/dist/chunks/{chunk-LBPM46OY.js → chunk-OLOTFDTU.js} +2 -2
  65. package/dist/chunks/{chunk-LLZ32DHS.js → chunk-OXJEMOBQ.js} +860 -253
  66. package/dist/chunks/chunk-OXJEMOBQ.js.map +6 -0
  67. package/dist/chunks/{chunk-7MLTWXEW.js → chunk-P2Y4LUPJ.js} +2 -2
  68. package/dist/chunks/{chunk-KONWJQLM.js → chunk-QNF6COCY.js} +2 -2
  69. package/dist/chunks/{chunk-TNTP3CNT.js → chunk-QO5JUKFG.js} +2 -2
  70. package/dist/chunks/{chunk-GTXD263T.js → chunk-RB36O3CE.js} +2 -2
  71. package/dist/chunks/{chunk-A64X23MU.js → chunk-RQBT4RVE.js} +401 -56
  72. package/dist/chunks/chunk-RQBT4RVE.js.map +6 -0
  73. package/dist/chunks/{chunk-LH6J5QQ7.js → chunk-SBPCN24X.js} +2 -2
  74. package/dist/chunks/{chunk-CK4TOW2N.js → chunk-SIK62TDI.js} +2 -2
  75. package/dist/chunks/{chunk-XEOZYKPJ.js → chunk-T75ITEN6.js} +3 -3
  76. package/dist/chunks/{chunk-2T7TZDUE.js → chunk-TJTRVZFN.js} +2 -2
  77. package/dist/chunks/{chunk-AHVF22PV.js → chunk-UBOPUGDN.js} +5 -5
  78. package/dist/chunks/{chunk-UQZNYNX7.js → chunk-UIDLXA2K.js} +2 -2
  79. package/dist/chunks/{chunk-FI7TIM5P.js → chunk-UTMGJDC3.js} +2 -2
  80. package/dist/chunks/{chunk-CLIP7QVU.js → chunk-UUUNXKL3.js} +3 -3
  81. package/dist/chunks/{chunk-EUHPTASG.js → chunk-UZCA37QE.js} +2 -2
  82. package/dist/chunks/{chunk-Z56MZ7UW.js → chunk-W27ZDC4R.js} +4 -4
  83. package/dist/chunks/{chunk-ICBHR27I.js → chunk-XEHLRJXR.js} +16 -13
  84. package/dist/chunks/{chunk-ICBHR27I.js.map → chunk-XEHLRJXR.js.map} +1 -1
  85. package/dist/chunks/{chunk-HOOY63EB.js → chunk-XJ4IUCH6.js} +15 -15
  86. package/dist/chunks/{chunk-Q6SF7T77.js → chunk-YKEPC6NH.js} +3 -3
  87. package/dist/chunks/{chunk-3PBSWF6X.js → chunk-Z7XA4Y43.js} +3 -3
  88. package/dist/chunks/{cli-runtime-PRG53LL6.js → cli-runtime-G3FHYTCI.js} +13 -13
  89. package/dist/chunks/{commands-QMF4AHAY.js → commands-TIRZH2TK.js} +5 -5
  90. package/dist/chunks/{crash-report-BSZ6SUOF.js → crash-report-E4J7KQ32.js} +6 -6
  91. package/dist/chunks/{dist-HRWBXBF3.js → dist-2IUQEIEI.js} +2 -2
  92. package/dist/chunks/{dist-GNI4DIHI.js → dist-2U6NNEPY.js} +3 -3
  93. package/dist/chunks/{dist-QSOTJL6Z.js → dist-CVDGKJEI.js} +2 -2
  94. package/dist/chunks/{dist-JDUOF4K7.js → dist-MKQZKCB4.js} +2 -2
  95. package/dist/chunks/{dist-MYWLKPXK.js → dist-QCKKBLDW.js} +2 -2
  96. package/dist/chunks/{dist-SO6XBKFN.js → dist-QHKTYYMX.js} +2 -2
  97. package/dist/chunks/{dist-XDA5OMB2.js → dist-YX7Q3EJR.js} +3 -3
  98. package/dist/chunks/{doctor-5MS7V3JB.js → doctor-ASXICRC5.js} +10 -10
  99. package/dist/chunks/{drain-YGGEC4UE.js → drain-CGS3KBU3.js} +10 -10
  100. package/dist/chunks/{eval-GWP6MISH.js → eval-XWC3UCFI.js} +2 -2
  101. package/dist/chunks/{exec-YDIFQY7C.js → exec-FOUQBA6I.js} +42 -30
  102. package/dist/chunks/{exec-YDIFQY7C.js.map → exec-FOUQBA6I.js.map} +1 -1
  103. package/dist/chunks/{home-IZ2H7PM3.js → home-76YLI2M6.js} +3 -3
  104. package/dist/chunks/{host-queries-UCVJBJXU.js → host-queries-ODUQHYBN.js} +14 -14
  105. package/dist/chunks/{lifecycle-U52Z5ZMZ.js → lifecycle-JN43XQSS.js} +25 -25
  106. package/dist/chunks/{list-SVKI2XOL.js → list-TC7TYJDR.js} +11 -11
  107. package/dist/chunks/{login-MNDG4XIT.js → login-CTC6CAM4.js} +10 -10
  108. package/dist/chunks/{logs-M7RCXYPY.js → logs-2NGJFIQI.js} +4 -4
  109. package/dist/chunks/{mcp-KEQMYKDA.js → mcp-BPH7KWZ6.js} +18 -18
  110. package/dist/chunks/{message-command-FZ6VEUK5.js → message-command-A4XU7QQQ.js} +35 -34
  111. package/dist/chunks/message-command-A4XU7QQQ.js.map +6 -0
  112. package/dist/chunks/{operator-tools-C57ZIYRG.js → operator-tools-6RYAHVSL.js} +12 -12
  113. package/dist/chunks/{output-schema-IYQRSIUA.js → output-schema-GSWZHKSI.js} +3 -3
  114. package/dist/chunks/{pal-NXMTLY6Z.js → pal-4QXXG42H.js} +13 -13
  115. package/dist/chunks/{providers-TZBRQDXE.js → providers-6PIIF3WR.js} +8 -8
  116. package/dist/chunks/{resident-DBIZBLOV.js → resident-UP7W6MV6.js} +20 -20
  117. package/dist/chunks/resume-GJHTPMJS.js +22 -0
  118. package/dist/chunks/{resume-command-36S3HXPO.js → resume-command-2RFT7AGW.js} +4 -4
  119. package/dist/chunks/{schedule-UR54S44B.js → schedule-FZISVF6A.js} +8 -8
  120. package/dist/chunks/{service-VMXEAJCI.js → service-4WADXOUI.js} +24 -24
  121. package/dist/chunks/session-step-FX6B4TSE.js +29 -0
  122. package/dist/chunks/{skills-RXYS26H3.js → skills-BJQGVQ23.js} +8 -8
  123. package/dist/chunks/{state-NS47IVWW.js → state-2KKVQPZ2.js} +2 -2
  124. package/dist/chunks/{store-3U2GZAZS.js → store-LO4SSRYI.js} +9 -9
  125. package/dist/chunks/{store-TO65IAIZ.js → store-TKJKR5NM.js} +6 -6
  126. package/dist/chunks/{store-GNFHH2LZ.js → store-YFTJ24WU.js} +4 -4
  127. package/dist/chunks/{tui-STU5UZBC.js → tui-HA3JIVON.js} +1802 -1076
  128. package/dist/chunks/tui-HA3JIVON.js.map +6 -0
  129. package/dist/chunks/{upgrade-USIXROFG.js → upgrade-3QLPPCII.js} +4 -3
  130. package/dist/chunks/upgrade-3QLPPCII.js.map +6 -0
  131. package/dist/chunks/{worktree-AYI5VJ5H.js → worktree-3HYAYSGW.js} +11 -11
  132. package/dist/cli.d.ts.map +1 -1
  133. package/dist/commands/acp.d.ts.map +1 -1
  134. package/dist/commands/desktop-model-catalogue.d.ts +1 -1
  135. package/dist/commands/exec-json.d.ts.map +1 -1
  136. package/dist/commands/exec.d.ts.map +1 -1
  137. package/dist/commands/resume.d.ts +1 -1
  138. package/dist/config/load.d.ts +1 -2
  139. package/dist/config/load.d.ts.map +1 -1
  140. package/dist/config/schema.d.ts +20 -3
  141. package/dist/config/schema.d.ts.map +1 -1
  142. package/dist/context/doctrine.d.ts +4 -4
  143. package/dist/context/doctrine.d.ts.map +1 -1
  144. package/dist/index.js +14 -14
  145. package/dist/integrations/harness/codex-protocol.d.ts +1 -1
  146. package/dist/integrations/harness/codex-protocol.d.ts.map +1 -1
  147. package/dist/integrations/mcp/tool-search.d.ts +3 -4
  148. package/dist/integrations/mcp/tool-search.d.ts.map +1 -1
  149. package/dist/integrations/notifications/idle.d.ts +2 -2
  150. package/dist/integrations/notifications/idle.d.ts.map +1 -1
  151. package/dist/integrations/providers/identity.d.ts +1 -1
  152. package/dist/integrations/resident/runner-worker.js +20 -20
  153. package/dist/integrations/subagents/activity.d.ts +4 -0
  154. package/dist/integrations/subagents/activity.d.ts.map +1 -1
  155. package/dist/integrations/subagents/label-ledger.d.ts +2 -3
  156. package/dist/integrations/subagents/label-ledger.d.ts.map +1 -1
  157. package/dist/integrations/subagents/runtime.d.ts +40 -6
  158. package/dist/integrations/subagents/runtime.d.ts.map +1 -1
  159. package/dist/integrations/subagents/workflow-assignment.d.ts +13 -0
  160. package/dist/integrations/subagents/workflow-assignment.d.ts.map +1 -0
  161. package/dist/integrations/workflows/doctrine.d.ts +4 -3
  162. package/dist/integrations/workflows/doctrine.d.ts.map +1 -1
  163. package/dist/integrations/workflows/host.d.ts +5 -0
  164. package/dist/integrations/workflows/host.d.ts.map +1 -1
  165. package/dist/integrations/workflows/offering.d.ts +9 -27
  166. package/dist/integrations/workflows/offering.d.ts.map +1 -1
  167. package/dist/integrations/workflows/size.d.ts +51 -0
  168. package/dist/integrations/workflows/size.d.ts.map +1 -0
  169. package/dist/permissions/live-mode.d.ts +1 -2
  170. package/dist/permissions/live-mode.d.ts.map +1 -1
  171. package/dist/permissions/local-settings.d.ts +4 -4
  172. package/dist/permissions/mode.d.ts +1 -1
  173. package/dist/permissions/rules.d.ts +1 -2
  174. package/dist/permissions/rules.d.ts.map +1 -1
  175. package/dist/permissions/session-allow.d.ts +12 -12
  176. package/dist/permissions/session-allow.d.ts.map +1 -1
  177. package/dist/plan/approval.d.ts +1 -2
  178. package/dist/plan/approval.d.ts.map +1 -1
  179. package/dist/reminders/frame.d.ts +1 -1
  180. package/dist/reminders/frame.d.ts.map +1 -1
  181. package/dist/reminders/hypermode.d.ts +31 -0
  182. package/dist/reminders/hypermode.d.ts.map +1 -0
  183. package/dist/reminders/index.d.ts +7 -1
  184. package/dist/reminders/index.d.ts.map +1 -1
  185. package/dist/reminders/plan-mode.d.ts +1 -1
  186. package/dist/reminders/task-nudge.d.ts +1 -1
  187. package/dist/schedule/fire/fire.d.ts.map +1 -1
  188. package/dist/tui/AgentExplorer.d.ts +25 -6
  189. package/dist/tui/AgentExplorer.d.ts.map +1 -1
  190. package/dist/tui/App.d.ts +10 -1
  191. package/dist/tui/App.d.ts.map +1 -1
  192. package/dist/tui/BackgroundAgentRows.d.ts +13 -0
  193. package/dist/tui/BackgroundAgentRows.d.ts.map +1 -0
  194. package/dist/tui/BackgroundJobsPanel.d.ts.map +1 -1
  195. package/dist/tui/ChoicePicker.d.ts.map +1 -1
  196. package/dist/tui/Composer.d.ts +8 -4
  197. package/dist/tui/Composer.d.ts.map +1 -1
  198. package/dist/tui/ComposerFrame.d.ts +1 -1
  199. package/dist/tui/EffortSlider.d.ts +4 -4
  200. package/dist/tui/EffortSlider.d.ts.map +1 -1
  201. package/dist/tui/LiveActivity.d.ts.map +1 -1
  202. package/dist/tui/PendingInputPanel.d.ts +1 -1
  203. package/dist/tui/PendingInputPanel.d.ts.map +1 -1
  204. package/dist/tui/PermissionOverlay.d.ts +1 -1
  205. package/dist/tui/PlanApprovalOverlay.d.ts +2 -2
  206. package/dist/tui/QuestionDialog.d.ts +1 -1
  207. package/dist/tui/StatusBar.d.ts +6 -3
  208. package/dist/tui/StatusBar.d.ts.map +1 -1
  209. package/dist/tui/Transcript.d.ts +5 -6
  210. package/dist/tui/Transcript.d.ts.map +1 -1
  211. package/dist/tui/agent-stop-all.d.ts +11 -0
  212. package/dist/tui/agent-stop-all.d.ts.map +1 -1
  213. package/dist/tui/agent-transcript-rows.d.ts +28 -15
  214. package/dist/tui/agent-transcript-rows.d.ts.map +1 -1
  215. package/dist/tui/agent-view-commands.d.ts +3 -5
  216. package/dist/tui/agent-view-commands.d.ts.map +1 -1
  217. package/dist/tui/agent.d.ts +26 -12
  218. package/dist/tui/agent.d.ts.map +1 -1
  219. package/dist/tui/background-agents.d.ts +46 -0
  220. package/dist/tui/background-agents.d.ts.map +1 -0
  221. package/dist/tui/choice-selection.d.ts +3 -1
  222. package/dist/tui/choice-selection.d.ts.map +1 -1
  223. package/dist/tui/composer-hints.d.ts +26 -0
  224. package/dist/tui/composer-hints.d.ts.map +1 -0
  225. package/dist/tui/context-meter.d.ts +1 -1
  226. package/dist/tui/diff-rows.d.ts +30 -18
  227. package/dist/tui/diff-rows.d.ts.map +1 -1
  228. package/dist/tui/diff-view.d.ts +99 -0
  229. package/dist/tui/diff-view.d.ts.map +1 -0
  230. package/dist/tui/hint-counts.d.ts +7 -0
  231. package/dist/tui/hint-counts.d.ts.map +1 -0
  232. package/dist/tui/hypermode.d.ts +20 -26
  233. package/dist/tui/hypermode.d.ts.map +1 -1
  234. package/dist/tui/index.d.ts.map +1 -1
  235. package/dist/tui/live-window.d.ts +1 -1
  236. package/dist/tui/live-window.d.ts.map +1 -1
  237. package/dist/tui/markdown-table.d.ts +1 -2
  238. package/dist/tui/markdown-table.d.ts.map +1 -1
  239. package/dist/tui/paste-chips.d.ts +22 -0
  240. package/dist/tui/paste-chips.d.ts.map +1 -0
  241. package/dist/tui/placeholder-examples.d.ts +5 -0
  242. package/dist/tui/placeholder-examples.d.ts.map +1 -0
  243. package/dist/tui/restored-rows.d.ts +3 -1
  244. package/dist/tui/restored-rows.d.ts.map +1 -1
  245. package/dist/tui/schedule/source-deliveries.d.ts +1 -1
  246. package/dist/tui/schedule/source-deliveries.d.ts.map +1 -1
  247. package/dist/tui/shell-cell.d.ts +15 -0
  248. package/dist/tui/shell-cell.d.ts.map +1 -1
  249. package/dist/tui/slashCommands.d.ts.map +1 -1
  250. package/dist/tui/status-line/StatusLineRows.d.ts +1 -2
  251. package/dist/tui/status-line/StatusLineRows.d.ts.map +1 -1
  252. package/dist/tui/status-line/controller.d.ts +1 -1
  253. package/dist/tui/status-line/output.d.ts +2 -2
  254. package/dist/tui/status-line/payload.d.ts +2 -2
  255. package/dist/tui/status-line/run-command.d.ts +1 -1
  256. package/dist/tui/system-rows.d.ts +8 -0
  257. package/dist/tui/system-rows.d.ts.map +1 -1
  258. package/dist/tui/terminal-choice-text.d.ts +7 -0
  259. package/dist/tui/terminal-choice-text.d.ts.map +1 -1
  260. package/dist/tui/theme.d.ts +21 -0
  261. package/dist/tui/theme.d.ts.map +1 -1
  262. package/dist/tui/tool-end-rows.d.ts +9 -1
  263. package/dist/tui/tool-end-rows.d.ts.map +1 -1
  264. package/dist/tui/tool-failure-text.d.ts +13 -0
  265. package/dist/tui/tool-failure-text.d.ts.map +1 -0
  266. package/dist/tui/triggers/context-text.d.ts +3 -3
  267. package/dist/tui/triggers/context-text.d.ts.map +1 -1
  268. package/dist/tui/triggers/copy.d.ts +7 -11
  269. package/dist/tui/triggers/copy.d.ts.map +1 -1
  270. package/dist/tui/triggers/registry.d.ts +2 -3
  271. package/dist/tui/triggers/registry.d.ts.map +1 -1
  272. package/dist/tui/typed-input.d.ts +14 -0
  273. package/dist/tui/typed-input.d.ts.map +1 -0
  274. package/dist/tui/types.d.ts +7 -5
  275. package/dist/tui/types.d.ts.map +1 -1
  276. package/dist/tui/user-text-view.d.ts +25 -0
  277. package/dist/tui/user-text-view.d.ts.map +1 -0
  278. package/dist/tui/workflow-runs.d.ts.map +1 -1
  279. package/dist/tui/workspace-diff.d.ts +3 -4
  280. package/dist/tui/workspace-diff.d.ts.map +1 -1
  281. package/package.json +6 -5
  282. package/dist/chunks/acp-JU4DX3RK.js.map +0 -6
  283. package/dist/chunks/agent-session-YS3JWF6Z.js +0 -52
  284. package/dist/chunks/chunk-A64X23MU.js.map +0 -6
  285. package/dist/chunks/chunk-CZVHXYGD.js.map +0 -6
  286. package/dist/chunks/chunk-FMJCN6JZ.js.map +0 -6
  287. package/dist/chunks/chunk-FOGCQUIH.js.map +0 -6
  288. package/dist/chunks/chunk-LLZ32DHS.js.map +0 -6
  289. package/dist/chunks/chunk-S5U4BG57.js.map +0 -6
  290. package/dist/chunks/message-command-FZ6VEUK5.js.map +0 -6
  291. package/dist/chunks/resume-GG6RMJXQ.js +0 -22
  292. package/dist/chunks/session-step-VJCHKPWD.js +0 -29
  293. package/dist/chunks/tui-STU5UZBC.js.map +0 -6
  294. package/dist/chunks/upgrade-USIXROFG.js.map +0 -6
  295. package/dist/integrations/subagents/failure-text.d.ts +0 -13
  296. package/dist/integrations/subagents/failure-text.d.ts.map +0 -1
  297. /package/dist/chunks/{activity-command-TERANSMO.js.map → activity-command-NKOTZ5FK.js.map} +0 -0
  298. /package/dist/chunks/{add-MZ6KIHY3.js.map → add-AONYUNXG.js.map} +0 -0
  299. /package/dist/chunks/{agent-JZFFS4IP.js.map → agent-YPKFE66C.js.map} +0 -0
  300. /package/dist/chunks/{agent-session-YS3JWF6Z.js.map → agent-session-HFOLAFFL.js.map} +0 -0
  301. /package/dist/chunks/{archive-SXYHKL3H.js.map → archive-SUE5OUZZ.js.map} +0 -0
  302. /package/dist/chunks/{bin-main-TFKZQ7NF.js.map → bin-main-55PUHGTA.js.map} +0 -0
  303. /package/dist/chunks/{browser-3U3YBKL6.js.map → browser-HYPSUDAZ.js.map} +0 -0
  304. /package/dist/chunks/{chat-37QA7HHN.js.map → chat-6OULID33.js.map} +0 -0
  305. /package/dist/chunks/{chunk-7S5UB6DX.js.map → chunk-233DQVSC.js.map} +0 -0
  306. /package/dist/chunks/{chunk-D5SIC3SF.js.map → chunk-263WNQB4.js.map} +0 -0
  307. /package/dist/chunks/{chunk-XKEMUEI5.js.map → chunk-2KKF45DQ.js.map} +0 -0
  308. /package/dist/chunks/{chunk-N57QO3AA.js.map → chunk-2VMMTC2V.js.map} +0 -0
  309. /package/dist/chunks/{chunk-KUNQW3N3.js.map → chunk-2WQFRVVQ.js.map} +0 -0
  310. /package/dist/chunks/{chunk-LPYWPRIF.js.map → chunk-3OAGXDRM.js.map} +0 -0
  311. /package/dist/chunks/{chunk-CDZT7WGY.js.map → chunk-47TGPZWD.js.map} +0 -0
  312. /package/dist/chunks/{chunk-IG4O4UAL.js.map → chunk-4K2NRXHJ.js.map} +0 -0
  313. /package/dist/chunks/{chunk-2SVXX5QK.js.map → chunk-5CGH647C.js.map} +0 -0
  314. /package/dist/chunks/{chunk-ZJHOWWXZ.js.map → chunk-74U3P65Q.js.map} +0 -0
  315. /package/dist/chunks/{chunk-ZJMUPGWD.js.map → chunk-7EASYULO.js.map} +0 -0
  316. /package/dist/chunks/{chunk-KG2YA6TI.js.map → chunk-7YXHOSHD.js.map} +0 -0
  317. /package/dist/chunks/{chunk-EKMOETAY.js.map → chunk-AZ3YHVFA.js.map} +0 -0
  318. /package/dist/chunks/{chunk-7O4X4GYL.js.map → chunk-B2357ETN.js.map} +0 -0
  319. /package/dist/chunks/{chunk-XIURI2PQ.js.map → chunk-BEFTUDYP.js.map} +0 -0
  320. /package/dist/chunks/{chunk-DQICYFIG.js.map → chunk-CL5TCY4F.js.map} +0 -0
  321. /package/dist/chunks/{chunk-5G3VKTLZ.js.map → chunk-CUOWARJI.js.map} +0 -0
  322. /package/dist/chunks/{chunk-M2EJQU3F.js.map → chunk-DFA5OB46.js.map} +0 -0
  323. /package/dist/chunks/{chunk-B5344NIV.js.map → chunk-E3HCZYGN.js.map} +0 -0
  324. /package/dist/chunks/{chunk-Z4LTK3HY.js.map → chunk-EA6SWPO4.js.map} +0 -0
  325. /package/dist/chunks/{chunk-XNHYUV6G.js.map → chunk-EUU4TDTH.js.map} +0 -0
  326. /package/dist/chunks/{chunk-VFBIR3UC.js.map → chunk-FBNKKDIY.js.map} +0 -0
  327. /package/dist/chunks/{chunk-PETRJVXF.js.map → chunk-FQZFVLJB.js.map} +0 -0
  328. /package/dist/chunks/{chunk-5PDW6VPO.js.map → chunk-HI2KXIGA.js.map} +0 -0
  329. /package/dist/chunks/{chunk-LC5VGZO2.js.map → chunk-HU35YAIZ.js.map} +0 -0
  330. /package/dist/chunks/{chunk-2UT6U22B.js.map → chunk-IAYIUJMI.js.map} +0 -0
  331. /package/dist/chunks/{chunk-U3JIZFOS.js.map → chunk-IE5XIE4W.js.map} +0 -0
  332. /package/dist/chunks/{chunk-2UUBILYI.js.map → chunk-II57E2QW.js.map} +0 -0
  333. /package/dist/chunks/{chunk-OA5772RG.js.map → chunk-LFVQSMJG.js.map} +0 -0
  334. /package/dist/chunks/{chunk-U75JG2RT.js.map → chunk-MCNEFI5Q.js.map} +0 -0
  335. /package/dist/chunks/{chunk-JN6M424Z.js.map → chunk-N3FI7O4U.js.map} +0 -0
  336. /package/dist/chunks/{chunk-3NIZKJJG.js.map → chunk-N72DH6D5.js.map} +0 -0
  337. /package/dist/chunks/{chunk-V2VHVH5S.js.map → chunk-NLKIBRXJ.js.map} +0 -0
  338. /package/dist/chunks/{chunk-LBPM46OY.js.map → chunk-OLOTFDTU.js.map} +0 -0
  339. /package/dist/chunks/{chunk-7MLTWXEW.js.map → chunk-P2Y4LUPJ.js.map} +0 -0
  340. /package/dist/chunks/{chunk-KONWJQLM.js.map → chunk-QNF6COCY.js.map} +0 -0
  341. /package/dist/chunks/{chunk-TNTP3CNT.js.map → chunk-QO5JUKFG.js.map} +0 -0
  342. /package/dist/chunks/{chunk-GTXD263T.js.map → chunk-RB36O3CE.js.map} +0 -0
  343. /package/dist/chunks/{chunk-LH6J5QQ7.js.map → chunk-SBPCN24X.js.map} +0 -0
  344. /package/dist/chunks/{chunk-CK4TOW2N.js.map → chunk-SIK62TDI.js.map} +0 -0
  345. /package/dist/chunks/{chunk-XEOZYKPJ.js.map → chunk-T75ITEN6.js.map} +0 -0
  346. /package/dist/chunks/{chunk-2T7TZDUE.js.map → chunk-TJTRVZFN.js.map} +0 -0
  347. /package/dist/chunks/{chunk-AHVF22PV.js.map → chunk-UBOPUGDN.js.map} +0 -0
  348. /package/dist/chunks/{chunk-UQZNYNX7.js.map → chunk-UIDLXA2K.js.map} +0 -0
  349. /package/dist/chunks/{chunk-FI7TIM5P.js.map → chunk-UTMGJDC3.js.map} +0 -0
  350. /package/dist/chunks/{chunk-CLIP7QVU.js.map → chunk-UUUNXKL3.js.map} +0 -0
  351. /package/dist/chunks/{chunk-EUHPTASG.js.map → chunk-UZCA37QE.js.map} +0 -0
  352. /package/dist/chunks/{chunk-Z56MZ7UW.js.map → chunk-W27ZDC4R.js.map} +0 -0
  353. /package/dist/chunks/{chunk-HOOY63EB.js.map → chunk-XJ4IUCH6.js.map} +0 -0
  354. /package/dist/chunks/{chunk-Q6SF7T77.js.map → chunk-YKEPC6NH.js.map} +0 -0
  355. /package/dist/chunks/{chunk-3PBSWF6X.js.map → chunk-Z7XA4Y43.js.map} +0 -0
  356. /package/dist/chunks/{cli-runtime-PRG53LL6.js.map → cli-runtime-G3FHYTCI.js.map} +0 -0
  357. /package/dist/chunks/{commands-QMF4AHAY.js.map → commands-TIRZH2TK.js.map} +0 -0
  358. /package/dist/chunks/{crash-report-BSZ6SUOF.js.map → crash-report-E4J7KQ32.js.map} +0 -0
  359. /package/dist/chunks/{dist-HRWBXBF3.js.map → dist-2IUQEIEI.js.map} +0 -0
  360. /package/dist/chunks/{dist-GNI4DIHI.js.map → dist-2U6NNEPY.js.map} +0 -0
  361. /package/dist/chunks/{dist-QSOTJL6Z.js.map → dist-CVDGKJEI.js.map} +0 -0
  362. /package/dist/chunks/{dist-JDUOF4K7.js.map → dist-MKQZKCB4.js.map} +0 -0
  363. /package/dist/chunks/{dist-MYWLKPXK.js.map → dist-QCKKBLDW.js.map} +0 -0
  364. /package/dist/chunks/{dist-SO6XBKFN.js.map → dist-QHKTYYMX.js.map} +0 -0
  365. /package/dist/chunks/{dist-XDA5OMB2.js.map → dist-YX7Q3EJR.js.map} +0 -0
  366. /package/dist/chunks/{doctor-5MS7V3JB.js.map → doctor-ASXICRC5.js.map} +0 -0
  367. /package/dist/chunks/{drain-YGGEC4UE.js.map → drain-CGS3KBU3.js.map} +0 -0
  368. /package/dist/chunks/{eval-GWP6MISH.js.map → eval-XWC3UCFI.js.map} +0 -0
  369. /package/dist/chunks/{home-IZ2H7PM3.js.map → home-76YLI2M6.js.map} +0 -0
  370. /package/dist/chunks/{host-queries-UCVJBJXU.js.map → host-queries-ODUQHYBN.js.map} +0 -0
  371. /package/dist/chunks/{lifecycle-U52Z5ZMZ.js.map → lifecycle-JN43XQSS.js.map} +0 -0
  372. /package/dist/chunks/{list-SVKI2XOL.js.map → list-TC7TYJDR.js.map} +0 -0
  373. /package/dist/chunks/{login-MNDG4XIT.js.map → login-CTC6CAM4.js.map} +0 -0
  374. /package/dist/chunks/{logs-M7RCXYPY.js.map → logs-2NGJFIQI.js.map} +0 -0
  375. /package/dist/chunks/{mcp-KEQMYKDA.js.map → mcp-BPH7KWZ6.js.map} +0 -0
  376. /package/dist/chunks/{operator-tools-C57ZIYRG.js.map → operator-tools-6RYAHVSL.js.map} +0 -0
  377. /package/dist/chunks/{output-schema-IYQRSIUA.js.map → output-schema-GSWZHKSI.js.map} +0 -0
  378. /package/dist/chunks/{pal-NXMTLY6Z.js.map → pal-4QXXG42H.js.map} +0 -0
  379. /package/dist/chunks/{providers-TZBRQDXE.js.map → providers-6PIIF3WR.js.map} +0 -0
  380. /package/dist/chunks/{resident-DBIZBLOV.js.map → resident-UP7W6MV6.js.map} +0 -0
  381. /package/dist/chunks/{resume-GG6RMJXQ.js.map → resume-GJHTPMJS.js.map} +0 -0
  382. /package/dist/chunks/{resume-command-36S3HXPO.js.map → resume-command-2RFT7AGW.js.map} +0 -0
  383. /package/dist/chunks/{schedule-UR54S44B.js.map → schedule-FZISVF6A.js.map} +0 -0
  384. /package/dist/chunks/{service-VMXEAJCI.js.map → service-4WADXOUI.js.map} +0 -0
  385. /package/dist/chunks/{session-step-VJCHKPWD.js.map → session-step-FX6B4TSE.js.map} +0 -0
  386. /package/dist/chunks/{skills-RXYS26H3.js.map → skills-BJQGVQ23.js.map} +0 -0
  387. /package/dist/chunks/{state-NS47IVWW.js.map → state-2KKVQPZ2.js.map} +0 -0
  388. /package/dist/chunks/{store-3U2GZAZS.js.map → store-LO4SSRYI.js.map} +0 -0
  389. /package/dist/chunks/{store-GNFHH2LZ.js.map → store-TKJKR5NM.js.map} +0 -0
  390. /package/dist/chunks/{store-TO65IAIZ.js.map → store-YFTJ24WU.js.map} +0 -0
  391. /package/dist/chunks/{worktree-AYI5VJ5H.js.map → worktree-3HYAYSGW.js.map} +0 -0
@@ -9342,7 +9342,7 @@ function codeFromMessage(message, status) {
9342
9342
  // a plain invalid request — which is not retryable, and which the
9343
9343
  // overflow rescue tests for by exact equality. The turn died holding
9344
9344
  // the remedy.
9345
- m.includes("too long for") || // The reference terminal's own wordings (its `context window` and
9345
+ m.includes("too long for") || // Known wordings: `context window` and
9346
9346
  // `input length and max_tokens exceed context limit` matchers).
9347
9347
  // Only where the status cannot say otherwise: a 429, 5xx or 401 that
9348
9348
  // mentions the window is still a rate limit, a server fault or an auth
@@ -9781,14 +9781,14 @@ function revisionFileSegment(value) {
9781
9781
  return out;
9782
9782
  }
9783
9783
  __name(revisionFileSegment, "revisionFileSegment");
9784
- function decodeRevisionFileSegment(segment) {
9785
- if (segment === "~empty")
9784
+ function decodeRevisionFileSegment(segment2) {
9785
+ if (segment2 === "~empty")
9786
9786
  return "";
9787
- if (segment.length === 0)
9787
+ if (segment2.length === 0)
9788
9788
  return null;
9789
9789
  let value = "";
9790
- for (let i = 0; i < segment.length; i++) {
9791
- const char = segment[i];
9790
+ for (let i = 0; i < segment2.length; i++) {
9791
+ const char = segment2[i];
9792
9792
  if (char === void 0)
9793
9793
  return null;
9794
9794
  if (char !== "~") {
@@ -9797,13 +9797,13 @@ function decodeRevisionFileSegment(segment) {
9797
9797
  value += char;
9798
9798
  continue;
9799
9799
  }
9800
- const escaped = segment.slice(i + 1, i + 5);
9800
+ const escaped = segment2.slice(i + 1, i + 5);
9801
9801
  if (!/^[0-9a-f]{4}$/u.test(escaped))
9802
9802
  return null;
9803
9803
  value += String.fromCharCode(Number.parseInt(escaped, 16));
9804
9804
  i += 4;
9805
9805
  }
9806
- return revisionFileSegment(value) === segment ? value : null;
9806
+ return revisionFileSegment(value) === segment2 ? value : null;
9807
9807
  }
9808
9808
  __name(decodeRevisionFileSegment, "decodeRevisionFileSegment");
9809
9809
  var DiskRevisionRecordStore = class {
@@ -10379,10 +10379,10 @@ var DiskSessionGoalStore = class extends SessionGoalStoreBase {
10379
10379
  }
10380
10380
  location(sessionId5) {
10381
10381
  const root = join4(this.config.rootDir, "goals");
10382
- const segment = revisionFileSegment(sessionId5);
10382
+ const segment2 = revisionFileSegment(sessionId5);
10383
10383
  return {
10384
- legacyPath: join4(root, `${segment}.json`),
10385
- revisionsDir: join4(root, ".revisions", segment)
10384
+ legacyPath: join4(root, `${segment2}.json`),
10385
+ revisionsDir: join4(root, ".revisions", segment2)
10386
10386
  };
10387
10387
  }
10388
10388
  async put(record3) {
@@ -15849,8 +15849,8 @@ var OVERFLOW_BODY_PATTERNS = [
15849
15849
  // length" — so a pattern anchored on "exceeded" misses it entirely.
15850
15850
  /exceeds?\s+(?:the\s+)?(?:model'?s?\s+)?context\s+(?:length|window|size)/i,
15851
15851
  /context\s+(?:length|window|size)\s+exceed/i,
15852
- // The reference terminal's own list matches the bare phrase "context
15853
- // window". Here it must sit next to a verb that says the request did not
15852
+ // The bare phrase "context
15853
+ // window" is too broad on its own. Here it must sit next to a verb that says the request did not
15854
15854
  // fit ("larger than the model context window of N tokens"), so a 400 that
15855
15855
  // only names the window ("does not support this parameter with the 1M
15856
15856
  // context window beta") stays an invalid request. The same pattern lives in
@@ -23111,8 +23111,8 @@ var FILE_NAMES = new Set(PROTECTED_FILE_NAMES.map(fold));
23111
23111
  var NESTED = PROTECTED_NESTED_DIRECTORIES.map((sequence) => sequence.map(fold));
23112
23112
  function isProtectedPath(path2) {
23113
23113
  const segments = path2.split(/[\\/]+/).map(fold);
23114
- for (const segment of segments) {
23115
- if (DIRECTORIES.has(segment))
23114
+ for (const segment2 of segments) {
23115
+ if (DIRECTORIES.has(segment2))
23116
23116
  return true;
23117
23117
  }
23118
23118
  for (const sequence of NESTED) {
@@ -23345,10 +23345,10 @@ function checkTarget(program, args, spelled, word2, scope) {
23345
23345
  __name(checkTarget, "checkTarget");
23346
23346
  function hasParentAfterName(path2) {
23347
23347
  let named = false;
23348
- for (const segment of path2.split(/[\\/]+/)) {
23349
- if (segment === "" || segment === ".")
23348
+ for (const segment2 of path2.split(/[\\/]+/)) {
23349
+ if (segment2 === "" || segment2 === ".")
23350
23350
  continue;
23351
- if (segment === "..") {
23351
+ if (segment2 === "..") {
23352
23352
  if (named)
23353
23353
  return true;
23354
23354
  } else
@@ -26011,6 +26011,298 @@ var Diff = class {
26011
26011
  }
26012
26012
  };
26013
26013
 
26014
+ // ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/util/string.js
26015
+ function longestCommonPrefix(str1, str2) {
26016
+ let i;
26017
+ for (i = 0; i < str1.length && i < str2.length; i++) {
26018
+ if (str1[i] != str2[i]) {
26019
+ return str1.slice(0, i);
26020
+ }
26021
+ }
26022
+ return str1.slice(0, i);
26023
+ }
26024
+ __name(longestCommonPrefix, "longestCommonPrefix");
26025
+ function longestCommonSuffix(str1, str2) {
26026
+ let i;
26027
+ if (!str1 || !str2 || str1[str1.length - 1] != str2[str2.length - 1]) {
26028
+ return "";
26029
+ }
26030
+ for (i = 0; i < str1.length && i < str2.length; i++) {
26031
+ if (str1[str1.length - (i + 1)] != str2[str2.length - (i + 1)]) {
26032
+ return str1.slice(-i);
26033
+ }
26034
+ }
26035
+ return str1.slice(-i);
26036
+ }
26037
+ __name(longestCommonSuffix, "longestCommonSuffix");
26038
+ function replacePrefix(string, oldPrefix, newPrefix) {
26039
+ if (string.slice(0, oldPrefix.length) != oldPrefix) {
26040
+ throw Error(`string ${JSON.stringify(string)} doesn't start with prefix ${JSON.stringify(oldPrefix)}; this is a bug`);
26041
+ }
26042
+ return newPrefix + string.slice(oldPrefix.length);
26043
+ }
26044
+ __name(replacePrefix, "replacePrefix");
26045
+ function replaceSuffix(string, oldSuffix, newSuffix) {
26046
+ if (!oldSuffix) {
26047
+ return string + newSuffix;
26048
+ }
26049
+ if (string.slice(-oldSuffix.length) != oldSuffix) {
26050
+ throw Error(`string ${JSON.stringify(string)} doesn't end with suffix ${JSON.stringify(oldSuffix)}; this is a bug`);
26051
+ }
26052
+ return string.slice(0, -oldSuffix.length) + newSuffix;
26053
+ }
26054
+ __name(replaceSuffix, "replaceSuffix");
26055
+ function removePrefix(string, oldPrefix) {
26056
+ return replacePrefix(string, oldPrefix, "");
26057
+ }
26058
+ __name(removePrefix, "removePrefix");
26059
+ function removeSuffix(string, oldSuffix) {
26060
+ return replaceSuffix(string, oldSuffix, "");
26061
+ }
26062
+ __name(removeSuffix, "removeSuffix");
26063
+ function maximumOverlap(string1, string2) {
26064
+ return string2.slice(0, overlapCount(string1, string2));
26065
+ }
26066
+ __name(maximumOverlap, "maximumOverlap");
26067
+ function overlapCount(a, b) {
26068
+ let startA = 0;
26069
+ if (a.length > b.length) {
26070
+ startA = a.length - b.length;
26071
+ }
26072
+ let endB = b.length;
26073
+ if (a.length < b.length) {
26074
+ endB = a.length;
26075
+ }
26076
+ const map = Array(endB);
26077
+ let k = 0;
26078
+ map[0] = 0;
26079
+ for (let j = 1; j < endB; j++) {
26080
+ if (b[j] == b[k]) {
26081
+ map[j] = map[k];
26082
+ } else {
26083
+ map[j] = k;
26084
+ }
26085
+ while (k > 0 && b[j] != b[k]) {
26086
+ k = map[k];
26087
+ }
26088
+ if (b[j] == b[k]) {
26089
+ k++;
26090
+ }
26091
+ }
26092
+ k = 0;
26093
+ for (let i = startA; i < a.length; i++) {
26094
+ while (k > 0 && a[i] != b[k]) {
26095
+ k = map[k];
26096
+ }
26097
+ if (a[i] == b[k]) {
26098
+ k++;
26099
+ }
26100
+ }
26101
+ return k;
26102
+ }
26103
+ __name(overlapCount, "overlapCount");
26104
+ function segment(string, segmenter) {
26105
+ const parts = [];
26106
+ for (const segmentObj of Array.from(segmenter.segment(string))) {
26107
+ const segment2 = segmentObj.segment;
26108
+ if (parts.length && /\s/.test(parts[parts.length - 1]) && /\s/.test(segment2)) {
26109
+ parts[parts.length - 1] += segment2;
26110
+ } else {
26111
+ parts.push(segment2);
26112
+ }
26113
+ }
26114
+ return parts;
26115
+ }
26116
+ __name(segment, "segment");
26117
+ function trailingWs(string, segmenter) {
26118
+ if (segmenter) {
26119
+ return leadingAndTrailingWs(string, segmenter)[1];
26120
+ }
26121
+ let i;
26122
+ for (i = string.length - 1; i >= 0; i--) {
26123
+ if (!string[i].match(/\s/)) {
26124
+ break;
26125
+ }
26126
+ }
26127
+ return string.substring(i + 1);
26128
+ }
26129
+ __name(trailingWs, "trailingWs");
26130
+ function leadingWs(string, segmenter) {
26131
+ if (segmenter) {
26132
+ return leadingAndTrailingWs(string, segmenter)[0];
26133
+ }
26134
+ const match2 = string.match(/^\s*/);
26135
+ return match2 ? match2[0] : "";
26136
+ }
26137
+ __name(leadingWs, "leadingWs");
26138
+ function leadingAndTrailingWs(string, segmenter) {
26139
+ if (!segmenter) {
26140
+ return [leadingWs(string), trailingWs(string)];
26141
+ }
26142
+ if (segmenter.resolvedOptions().granularity != "word") {
26143
+ throw new Error('The segmenter passed must have a granularity of "word"');
26144
+ }
26145
+ const segments = segment(string, segmenter);
26146
+ const firstSeg = segments[0];
26147
+ const lastSeg = segments[segments.length - 1];
26148
+ const head2 = /\s/.test(firstSeg) ? firstSeg : "";
26149
+ const tail = /\s/.test(lastSeg) ? lastSeg : "";
26150
+ return [head2, tail];
26151
+ }
26152
+ __name(leadingAndTrailingWs, "leadingAndTrailingWs");
26153
+
26154
+ // ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/word.js
26155
+ var extendedWordChars = "a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}";
26156
+ var tokenizeIncludingWhitespace = new RegExp(`[${extendedWordChars}]+|\\s+|[^${extendedWordChars}]`, "ug");
26157
+ var WordDiff = class extends Diff {
26158
+ static {
26159
+ __name(this, "WordDiff");
26160
+ }
26161
+ equals(left, right, options) {
26162
+ if (options.ignoreCase) {
26163
+ left = left.toLowerCase();
26164
+ right = right.toLowerCase();
26165
+ }
26166
+ return left.trim() === right.trim();
26167
+ }
26168
+ tokenize(value, options = {}) {
26169
+ let parts;
26170
+ if (options.intlSegmenter) {
26171
+ const segmenter = options.intlSegmenter;
26172
+ if (segmenter.resolvedOptions().granularity != "word") {
26173
+ throw new Error('The segmenter passed must have a granularity of "word"');
26174
+ }
26175
+ parts = segment(value, segmenter);
26176
+ } else {
26177
+ parts = value.match(tokenizeIncludingWhitespace) || [];
26178
+ }
26179
+ const tokens = [];
26180
+ let prevPart = null;
26181
+ parts.forEach((part2) => {
26182
+ if (/\s/.test(part2)) {
26183
+ if (prevPart == null) {
26184
+ tokens.push(part2);
26185
+ } else {
26186
+ tokens.push(tokens.pop() + part2);
26187
+ }
26188
+ } else if (prevPart != null && /\s/.test(prevPart)) {
26189
+ if (tokens[tokens.length - 1] == prevPart) {
26190
+ tokens.push(tokens.pop() + part2);
26191
+ } else {
26192
+ tokens.push(prevPart + part2);
26193
+ }
26194
+ } else {
26195
+ tokens.push(part2);
26196
+ }
26197
+ prevPart = part2;
26198
+ });
26199
+ return tokens;
26200
+ }
26201
+ join(tokens) {
26202
+ return tokens.map((token, i) => {
26203
+ if (i == 0) {
26204
+ return token;
26205
+ } else {
26206
+ return token.replace(/^\s+/, "");
26207
+ }
26208
+ }).join("");
26209
+ }
26210
+ postProcess(changes, options) {
26211
+ if (!changes || options.oneChangePerToken) {
26212
+ return changes;
26213
+ }
26214
+ let lastKeep = null;
26215
+ let insertion = null;
26216
+ let deletion = null;
26217
+ changes.forEach((change) => {
26218
+ if (change.added) {
26219
+ insertion = change;
26220
+ } else if (change.removed) {
26221
+ deletion = change;
26222
+ } else {
26223
+ if (insertion || deletion) {
26224
+ dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, change, options.intlSegmenter);
26225
+ }
26226
+ lastKeep = change;
26227
+ insertion = null;
26228
+ deletion = null;
26229
+ }
26230
+ });
26231
+ if (insertion || deletion) {
26232
+ dedupeWhitespaceInChangeObjects(lastKeep, deletion, insertion, null, options.intlSegmenter);
26233
+ }
26234
+ return changes;
26235
+ }
26236
+ };
26237
+ var wordDiff = new WordDiff();
26238
+ function diffWords(oldStr, newStr, options) {
26239
+ if ((options === null || options === void 0 ? void 0 : options.ignoreWhitespace) != null && !options.ignoreWhitespace) {
26240
+ return diffWordsWithSpace(oldStr, newStr, options);
26241
+ }
26242
+ return wordDiff.diff(oldStr, newStr, options);
26243
+ }
26244
+ __name(diffWords, "diffWords");
26245
+ function dedupeWhitespaceInChangeObjects(startKeep, deletion, insertion, endKeep, segmenter) {
26246
+ if (deletion && insertion) {
26247
+ const [oldWsPrefix, oldWsSuffix] = leadingAndTrailingWs(deletion.value, segmenter);
26248
+ const [newWsPrefix, newWsSuffix] = leadingAndTrailingWs(insertion.value, segmenter);
26249
+ if (startKeep) {
26250
+ const commonWsPrefix = longestCommonPrefix(oldWsPrefix, newWsPrefix);
26251
+ startKeep.value = replaceSuffix(startKeep.value, newWsPrefix, commonWsPrefix);
26252
+ deletion.value = removePrefix(deletion.value, commonWsPrefix);
26253
+ insertion.value = removePrefix(insertion.value, commonWsPrefix);
26254
+ }
26255
+ if (endKeep) {
26256
+ const commonWsSuffix = longestCommonSuffix(oldWsSuffix, newWsSuffix);
26257
+ endKeep.value = replacePrefix(endKeep.value, newWsSuffix, commonWsSuffix);
26258
+ deletion.value = removeSuffix(deletion.value, commonWsSuffix);
26259
+ insertion.value = removeSuffix(insertion.value, commonWsSuffix);
26260
+ }
26261
+ } else if (insertion) {
26262
+ if (startKeep) {
26263
+ const ws = leadingWs(insertion.value, segmenter);
26264
+ insertion.value = insertion.value.substring(ws.length);
26265
+ }
26266
+ if (endKeep) {
26267
+ const ws = leadingWs(endKeep.value, segmenter);
26268
+ endKeep.value = endKeep.value.substring(ws.length);
26269
+ }
26270
+ } else if (startKeep && endKeep) {
26271
+ const newWsFull = leadingWs(endKeep.value, segmenter), [delWsStart, delWsEnd] = leadingAndTrailingWs(deletion.value, segmenter);
26272
+ const newWsStart = longestCommonPrefix(newWsFull, delWsStart);
26273
+ deletion.value = removePrefix(deletion.value, newWsStart);
26274
+ const newWsEnd = longestCommonSuffix(removePrefix(newWsFull, newWsStart), delWsEnd);
26275
+ deletion.value = removeSuffix(deletion.value, newWsEnd);
26276
+ endKeep.value = replacePrefix(endKeep.value, newWsFull, newWsEnd);
26277
+ startKeep.value = replaceSuffix(startKeep.value, newWsFull, newWsFull.slice(0, newWsFull.length - newWsEnd.length));
26278
+ } else if (endKeep) {
26279
+ const endKeepWsPrefix = leadingWs(endKeep.value, segmenter);
26280
+ const deletionWsSuffix = trailingWs(deletion.value, segmenter);
26281
+ const overlap = maximumOverlap(deletionWsSuffix, endKeepWsPrefix);
26282
+ deletion.value = removeSuffix(deletion.value, overlap);
26283
+ } else if (startKeep) {
26284
+ const startKeepWsSuffix = trailingWs(startKeep.value, segmenter);
26285
+ const deletionWsPrefix = leadingWs(deletion.value, segmenter);
26286
+ const overlap = maximumOverlap(startKeepWsSuffix, deletionWsPrefix);
26287
+ deletion.value = removePrefix(deletion.value, overlap);
26288
+ }
26289
+ }
26290
+ __name(dedupeWhitespaceInChangeObjects, "dedupeWhitespaceInChangeObjects");
26291
+ var WordsWithSpaceDiff = class extends Diff {
26292
+ static {
26293
+ __name(this, "WordsWithSpaceDiff");
26294
+ }
26295
+ tokenize(value) {
26296
+ const regex = new RegExp(`(\\r?\\n)|[${extendedWordChars}]+|[^\\S\\n\\r]+|[^${extendedWordChars}]`, "ug");
26297
+ return value.match(regex) || [];
26298
+ }
26299
+ };
26300
+ var wordsWithSpaceDiff = new WordsWithSpaceDiff();
26301
+ function diffWordsWithSpace(oldStr, newStr, options) {
26302
+ return wordsWithSpaceDiff.diff(oldStr, newStr, options);
26303
+ }
26304
+ __name(diffWordsWithSpace, "diffWordsWithSpace");
26305
+
26014
26306
  // ../../node_modules/.pnpm/diff@9.0.0/node_modules/diff/libesm/diff/line.js
26015
26307
  var LineDiff = class extends Diff {
26016
26308
  static {
@@ -28833,7 +29125,7 @@ function evaluateRule(rule, toolName, toolInput, toolDef, compiledPattern, nameS
28833
29125
  if (rule.decision === "deny" || rule.decision === "review") {
28834
29126
  if (compiledPattern.test(subject))
28835
29127
  return rule.decision;
28836
- if (segments.some((segment) => compiledPattern.test(segment)))
29128
+ if (segments.some((segment2) => compiledPattern.test(segment2)))
28837
29129
  return rule.decision;
28838
29130
  if (isUrl)
28839
29131
  return null;
@@ -28841,7 +29133,7 @@ function evaluateRule(rule, toolName, toolInput, toolDef, compiledPattern, nameS
28841
29133
  }
28842
29134
  if (opaque2)
28843
29135
  return null;
28844
- return segments.every((segment) => compiledPattern.test(segment)) ? "allow" : null;
29136
+ return segments.every((segment2) => compiledPattern.test(segment2)) ? "allow" : null;
28845
29137
  }
28846
29138
  case "allow_by_tier": {
28847
29139
  if (toolDef?.tier && rule.tiers.includes(toolDef.tier)) {
@@ -34029,9 +34321,20 @@ var CompletionInbox = class {
34029
34321
  * `log` is optional and unresolved until it is actually needed (the
34030
34322
  * eviction-warning path in `hold()`), same reason as `LocalTaskScheduler`.
34031
34323
  */
34032
- constructor(log) {
34324
+ constructor(log, options = {}) {
34033
34325
  this.log = log;
34326
+ this.holdsTurnOpen = options.holdsTurnOpen !== false;
34034
34327
  }
34328
+ /**
34329
+ * Whether a turn about to end waits here for the tasks still running.
34330
+ *
34331
+ * `true` (the default) is the original contract: the turn parks at its settle
34332
+ * point until the tasks it launched report back, so their results enter the
34333
+ * same turn. `false` lets the turn end with them still running; the host owns
34334
+ * their completion from then on (it keeps them alive and wakes the model when
34335
+ * they end). Completions that have already arrived are delivered either way.
34336
+ */
34337
+ holdsTurnOpen;
34035
34338
  /**
34036
34339
  * Start listening.
34037
34340
  *
@@ -34207,6 +34510,14 @@ var CompletionInbox = class {
34207
34510
  get hasPendingWork() {
34208
34511
  return this.unheard.size > 0 || this.outstanding.size > 0;
34209
34512
  }
34513
+ /**
34514
+ * Whether the turn has a reason to wait at its settle point: anything
34515
+ * pending when it {@link holdsTurnOpen}, else only a completion already in
34516
+ * hand (waiting for its persistence gate).
34517
+ */
34518
+ get holdsTurn() {
34519
+ return this.holdsTurnOpen ? this.hasPendingWork : this.unheard.size > 0;
34520
+ }
34210
34521
  /**
34211
34522
  * Wait for the next completion, deadline or abort, whichever comes first.
34212
34523
  * Aborting releases only this waiter; work and undelivered results remain owned.
@@ -35093,7 +35404,7 @@ function awaitedJobGraceMs(remainingBeforeFinalizeMs) {
35093
35404
  }
35094
35405
  __name(awaitedJobGraceMs, "awaitedJobGraceMs");
35095
35406
  async function* holdForOutstandingWork(ctx, iterationNum, hasToolCalls2, deliverInbound) {
35096
- const inbox = ctx.completionInbox?.hasPendingWork ? ctx.completionInbox : void 0;
35407
+ const inbox = ctx.completionInbox?.holdsTurn ? ctx.completionInbox : void 0;
35097
35408
  const jobs = ctx.awaitedJobs?.hasPendingWork ? ctx.awaitedJobs : void 0;
35098
35409
  if (!inbox && !jobs)
35099
35410
  return false;
@@ -35218,7 +35529,12 @@ function settleOutstandingWork(ctx) {
35218
35529
  __name(settleOutstandingWork, "settleOutstandingWork");
35219
35530
  function recordAbandonedWork(ctx) {
35220
35531
  const abandoned = ctx.completionInbox?.outstandingTaskIds ?? [];
35221
- if (abandoned.length > 0) {
35532
+ if (abandoned.length > 0 && ctx.completionInbox?.holdsTurnOpen === false) {
35533
+ ctx.log.info("Turn ended with delegated work left running in the background", {
35534
+ [NAMZU.TURN_ID]: ctx.recorder.turnId,
35535
+ "namzu.runtime.tasks": abandoned
35536
+ });
35537
+ } else if (abandoned.length > 0) {
35222
35538
  ctx.log.warn("Turn ended with delegated work still running", {
35223
35539
  [NAMZU.TURN_ID]: ctx.recorder.turnId,
35224
35540
  "namzu.runtime.tasks": abandoned
@@ -35357,11 +35673,11 @@ function tokenize2(text9) {
35357
35673
  out.push(whole);
35358
35674
  const segments = raw.split(/[/\\.:\-]+/).filter((s) => s.length > 0);
35359
35675
  if (segments.length > 1) {
35360
- for (const segment of segments) {
35361
- const lower = segment.toLowerCase();
35676
+ for (const segment2 of segments) {
35677
+ const lower = segment2.toLowerCase();
35362
35678
  if (!STOP_WORDS.has(lower) && lower !== whole)
35363
35679
  out.push(lower);
35364
- for (const part2 of splitIdentifier(segment))
35680
+ for (const part2 of splitIdentifier(segment2))
35365
35681
  out.push(part2.toLowerCase());
35366
35682
  }
35367
35683
  } else {
@@ -57457,8 +57773,8 @@ var DiskMessageFeedbackStore = class {
57457
57773
  }
57458
57774
  ids.set(messageId4, messageId4);
57459
57775
  }
57460
- for (const segment of await records2.scanNames(this.revisionsDir(sessionId5), "")) {
57461
- const decoded = decodeRevisionFileSegment(segment);
57776
+ for (const segment2 of await records2.scanNames(this.revisionsDir(sessionId5), "")) {
57777
+ const decoded = decodeRevisionFileSegment(segment2);
57462
57778
  if (decoded === null)
57463
57779
  continue;
57464
57780
  const messageId4 = asMessageId(decoded);
@@ -61741,7 +62057,7 @@ async function resolveMcpEra(input) {
61741
62057
  __name(resolveMcpEra, "resolveMcpEra");
61742
62058
 
61743
62059
  // ../sdk/dist/version.js
61744
- var VERSION2 = "52.7.0";
62060
+ var VERSION2 = "53.0.0";
61745
62061
 
61746
62062
  // ../sdk/dist/connector/mcp/client.js
61747
62063
  var MAX_LIST_PAGES = 100;
@@ -64915,8 +65231,6 @@ var PLAN_MODE_DOCTRINE = `## Plan mode
64915
65231
  You are in plan mode. Read, search and think; do not change anything. \`read\`, \`grep\`, \`glob\` and the other read-only tools work as usual, and you may keep a task list. Any \`edit\`, \`write\` or shell command that changes state will be refused, so do not attempt one.
64916
65232
 
64917
65233
  When you have understood the task, reply with the plan: what you would change, in which files, in what order, and what you would verify. Be concrete \u2014 name files and functions \u2014 and short enough to read in one screen. Then stop and wait; the user will leave plan mode to have the plan carried out, and that switch is their approval.`;
64918
- var CODING_AGENT_HYPERMODE_DOCTRINE = `### Hypermode
64919
- This session has hypermode on: treat delegation through \`Agent\` as the default for substantive work, not the exception. Before doing multi-step work yourself, ask whether an independent piece of it \u2014 a lookup, a draft, a check \u2014 could run as its own delegation, and prefer delegating it when the answer is yes. This changes only how eagerly you reach for \`Agent\` on work you would otherwise do inline; it does not mount a roster or start any delegation by itself. Agents in the same phase are launched in the same response, each with \`run_in_background: true\` when you mean to wait for them together; a phase is never started one agent at a time.`;
64920
65234
 
64921
65235
  // ../sdk/dist/manager/resident/learning.js
64922
65236
  import { createHash as createHash23 } from "node:crypto";
@@ -70148,6 +70462,15 @@ var PRELUDE_SOURCE = String.raw`(function (config) {
70148
70462
  if (t === 'object') return typeof value.then === 'function' ? 'a promise' : 'an object';
70149
70463
  return 'a ' + t;
70150
70464
  }
70465
+ function overBudget() {
70466
+ return config.tokenLimit !== null && config.tokenLimit > 0 && spent.tokensUsed >= config.tokenLimit;
70467
+ }
70468
+ function budgetError() {
70469
+ var e = new Error('Workflow token budget exceeded (' + spent.tokensUsed.toLocaleString('en-US') + ' / ' + config.tokenLimit.toLocaleString('en-US') + ' output tokens). Stopping further agent() calls. Agents already running will finish and their results are kept.');
70470
+ e.name = 'WorkflowBudgetExceededError';
70471
+ return e;
70472
+ }
70473
+ function isBudgetError(e) { return !!e && e.name === 'WorkflowBudgetExceededError'; }
70151
70474
  async function agent(prompt, opts) {
70152
70475
  if (typeof prompt !== 'string' || prompt.length === 0) {
70153
70476
  throw new TypeError('agent(prompt, options?): the prompt must be a non-empty string, got ' + kind(prompt));
@@ -70156,6 +70479,7 @@ var PRELUDE_SOURCE = String.raw`(function (config) {
70156
70479
  if (typeof o !== 'object' || Array.isArray(o)) {
70157
70480
  throw new TypeError('agent(prompt, options?): options must be an object, got ' + kind(o));
70158
70481
  }
70482
+ if (overBudget()) throw budgetError();
70159
70483
  var request = { prompt: prompt, cursor: cursor };
70160
70484
  if (o.label != null) request.label = clean(o.label, 120);
70161
70485
  if (o.phase != null) request.phase = clean(o.phase, 120);
@@ -70176,12 +70500,16 @@ var PRELUDE_SOURCE = String.raw`(function (config) {
70176
70500
  throw new TypeError('parallel(thunks): item ' + (p + 1) + ' must be a function (wrap the work as () => agent(...)), got ' + kind(thunks[p]));
70177
70501
  }
70178
70502
  }
70179
- return Promise.all(thunks.map(function (t, n) {
70503
+ var dropped = 0;
70504
+ var results = await Promise.all(thunks.map(function (t, n) {
70180
70505
  return Promise.resolve().then(t).catch(function (e) {
70181
- log('parallel item ' + (n + 1) + ' failed: ' + clean(e && e.message ? e.message : e, 300));
70506
+ if (isBudgetError(e)) { dropped++; return null; }
70507
+ log('Step ' + (n + 1) + ' stopped: ' + clean(e && e.message ? e.message : e, 300));
70182
70508
  return null;
70183
70509
  });
70184
70510
  }));
70511
+ if (dropped > 0) log('parallel: ' + dropped + (dropped === 1 ? ' item' : ' items') + ' dropped because the token budget is spent.');
70512
+ return results;
70185
70513
  }
70186
70514
  async function pipeline(items) {
70187
70515
  if (!Array.isArray(items)) {
@@ -70193,21 +70521,31 @@ var PRELUDE_SOURCE = String.raw`(function (config) {
70193
70521
  throw new TypeError('pipeline(items, ...stages): stage ' + (s + 1) + ' must be a function, got ' + kind(stages[s]));
70194
70522
  }
70195
70523
  }
70196
- return Promise.all(items.map(async function (item, index) {
70524
+ if (items.length > 0 && overBudget()) throw budgetError();
70525
+ var dropped = 0;
70526
+ var results = await Promise.all(items.map(async function (item, index) {
70197
70527
  var value = item;
70198
70528
  for (var i = 0; i < stages.length; i++) {
70199
70529
  try {
70200
- value = await stages[i](value, index, item);
70530
+ value = await stages[i](value, item, index);
70201
70531
  } catch (e) {
70202
- log('pipeline item ' + (index + 1) + ' stopped at stage ' + (i + 1) + ': ' + clean(e && e.message ? e.message : e, 300));
70532
+ if (isBudgetError(e)) { dropped++; return null; }
70533
+ log('Item ' + (index + 1) + ' stopped at step ' + (i + 1) + ': ' + clean(e && e.message ? e.message : e, 300));
70203
70534
  return null;
70204
70535
  }
70205
70536
  if (value === null || value === undefined) return null;
70206
70537
  }
70207
70538
  return value;
70208
70539
  }));
70540
+ if (dropped > 0) log('pipeline: ' + dropped + (dropped === 1 ? ' item' : ' items') + ' dropped because the token budget is spent.');
70541
+ return results;
70209
70542
  }
70210
70543
  var budget = Object.freeze({
70544
+ get total() { return config.tokenLimit; },
70545
+ spent: function () { return spent.tokensUsed; },
70546
+ remaining: function () {
70547
+ return config.tokenLimit === null ? Infinity : Math.max(0, config.tokenLimit - spent.tokensUsed);
70548
+ },
70211
70549
  get tokensUsed() { return spent.tokensUsed; },
70212
70550
  get tokenLimit() { return config.tokenLimit === null ? undefined : config.tokenLimit; },
70213
70551
  });
@@ -70386,6 +70724,11 @@ var AGENT_CALL_KEYS = /* @__PURE__ */ new Set([
70386
70724
  "model",
70387
70725
  "effort"
70388
70726
  ]);
70727
+ function defaultAgentLabel(prompt, index) {
70728
+ const label5 = prompt.slice(0, 60).replace(/\s+/g, " ").trim();
70729
+ return label5.length > 0 ? label5 : `Agent ${index}`;
70730
+ }
70731
+ __name(defaultAgentLabel, "defaultAgentLabel");
70389
70732
  function integer4(name2, value, min, max) {
70390
70733
  if (!Number.isSafeInteger(value) || value < min || value > max) {
70391
70734
  throw new RangeError(`${name2} must be an integer between ${min} and ${max}.`);
@@ -70394,10 +70737,10 @@ function integer4(name2, value, min, max) {
70394
70737
  }
70395
70738
  __name(integer4, "integer");
70396
70739
  function resolveWorkflowLimits(limits = {}) {
70397
- const defaultConcurrency = Math.min(8, Math.max(1, cpus().length - 2));
70740
+ const defaultConcurrency = Math.min(16, Math.max(2, cpus().length - 2));
70398
70741
  return {
70399
70742
  maxConcurrency: integer4("maxConcurrency", limits.maxConcurrency ?? defaultConcurrency, 1, 16),
70400
- maxAgents: integer4("maxAgents", limits.maxAgents ?? 200, 1, 1e3),
70743
+ maxAgents: integer4("maxAgents", limits.maxAgents ?? 1e3, 1, 1e3),
70401
70744
  maxSourceBytes: integer4("maxSourceBytes", limits.maxSourceBytes ?? 256 * 1024, 1, 4 * 1024 * 1024),
70402
70745
  memoryLimitBytes: integer4("memoryLimitBytes", limits.memoryLimitBytes ?? 64 * 1024 * 1024, 16 * 1024 * 1024, 256 * 1024 * 1024),
70403
70746
  maxValueBytes: integer4("maxValueBytes", limits.maxValueBytes ?? 1024 * 1024, 1, 16 * 1024 * 1024),
@@ -70729,7 +71072,7 @@ var WorkflowRuntime = class {
70729
71072
  const queuedAt = now();
70730
71073
  const agent = {
70731
71074
  index,
70732
- label: call2.label || `Agent ${index}`,
71075
+ label: call2.label || defaultAgentLabel(call2.prompt, index),
70733
71076
  prompt: call2.prompt,
70734
71077
  ...phase ? { phaseIndex: phase.index, phaseTitle: phase.title } : {},
70735
71078
  ...call2.agentType !== void 0 ? { agentType: call2.agentType } : {},
@@ -73518,7 +73861,7 @@ function pathOf(toolInput) {
73518
73861
  return void 0;
73519
73862
  }
73520
73863
  __name(pathOf, "pathOf");
73521
- var REFERENCE_EVENT_NAMES = {
73864
+ var PASCAL_EVENT_NAMES = {
73522
73865
  user_prompt_submit: "UserPromptSubmit",
73523
73866
  session_start: "SessionStart",
73524
73867
  session_end: "SessionEnd",
@@ -73597,7 +73940,7 @@ function readShellHookJson(event, stdout) {
73597
73940
  if (typeof named !== "string") {
73598
73941
  return { invalid: "`hookSpecificOutput` is missing its `hookEventName`" };
73599
73942
  }
73600
- if (named !== event && named !== REFERENCE_EVENT_NAMES[event]) {
73943
+ if (named !== event && named !== PASCAL_EVENT_NAMES[event]) {
73601
73944
  return {
73602
73945
  invalid: `\`hookSpecificOutput.hookEventName\` is "${named}" but this hook ran for ${event}`
73603
73946
  };
@@ -74206,7 +74549,7 @@ var AgentManager = class {
74206
74549
  }
74207
74550
  /**
74208
74551
  * The refusal for a delegation past the depth limit. It tells the model what
74209
- * to do instead (the reference terminal's rule): a bare limit leaves it
74552
+ * to do instead: a bare limit leaves it
74210
74553
  * retrying the same spawn, while an instruction to do the work itself ends the
74211
74554
  * attempt. The limit is `AgentManagerConfig.maxDepth`; there is no env override.
74212
74555
  */
@@ -77294,17 +77637,17 @@ function planWalk(root, options) {
77294
77637
  });
77295
77638
  });
77296
77639
  const sets = matchers.flatMap((matcher) => matcher.set);
77297
- if (sets.some((set3) => set3.some((segment) => segment === ".."))) {
77640
+ if (sets.some((set3) => set3.some((segment2) => segment2 === ".."))) {
77298
77641
  throw new Error("Expanded file walk pattern escapes its root");
77299
77642
  }
77300
77643
  const patternDepth = Math.max(1, ...sets.map((set3) => set3.includes(GLOBSTAR) ? Number.POSITIVE_INFINITY : set3.length));
77301
77644
  const maxDepth = Math.min(patternDepth, options.maxDepth === void 0 ? Number.POSITIVE_INFINITY : positiveInteger(options.maxDepth, "maxDepth"));
77302
77645
  const prefix = [];
77303
77646
  for (let index = 0; sets.length > 0; index += 1) {
77304
- const segment = sets[0]?.[index];
77305
- if (typeof segment !== "string" || !segment || segment === "." || sets.some((set3) => index >= set3.length - 1 || set3[index] !== segment))
77647
+ const segment2 = sets[0]?.[index];
77648
+ if (typeof segment2 !== "string" || !segment2 || segment2 === "." || sets.some((set3) => index >= set3.length - 1 || set3[index] !== segment2))
77306
77649
  break;
77307
- prefix.push(segment);
77650
+ prefix.push(segment2);
77308
77651
  }
77309
77652
  const expressions = matchers.flatMap((matcher) => {
77310
77653
  const expression = matcher.makeRe();
@@ -77318,7 +77661,7 @@ function planWalk(root, options) {
77318
77661
  maxEntries: positiveInteger(options.maxEntries, "maxEntries"),
77319
77662
  maxVisitedEntries: positiveInteger(options.maxVisitedEntries ?? 2e4, "maxVisitedEntries"),
77320
77663
  includeHidden: options.includeHidden ?? false,
77321
- patterns: sets.map((set3) => set3.map((segment) => segment === GLOBSTAR ? null : typeof segment === "string" ? segment : { source: segment.source, flags: segment.flags }))
77664
+ patterns: sets.map((set3) => set3.map((segment2) => segment2 === GLOBSTAR ? null : typeof segment2 === "string" ? segment2 : { source: segment2.source, flags: segment2.flags }))
77322
77665
  };
77323
77666
  }
77324
77667
  __name(planWalk, "planWalk");
@@ -77335,11 +77678,11 @@ function directoryMatcher(plan) {
77335
77678
  for (const name2 of relative10.split("/")) {
77336
77679
  const next = /* @__PURE__ */ new Set();
77337
77680
  for (const index of states) {
77338
- const segment = pattern[index];
77339
- if (segment === null) {
77681
+ const segment2 = pattern[index];
77682
+ if (segment2 === null) {
77340
77683
  if (plan.includeHidden || !name2.startsWith("."))
77341
77684
  next.add(index);
77342
- } else if (typeof segment === "string" ? segment === name2 : segment?.test(name2))
77685
+ } else if (typeof segment2 === "string" ? segment2 === name2 : segment2?.test(name2))
77343
77686
  next.add(index + 1);
77344
77687
  }
77345
77688
  states = closure(next);
@@ -89911,17 +90254,17 @@ import { isAbsolute as isAbsolute13, join as join43, relative as relative8, sep
89911
90254
  // ../sdk/dist/tools/posix-path.js
89912
90255
  function normalizeSegments(path2) {
89913
90256
  const out = [];
89914
- for (const segment of path2.split("/")) {
89915
- if (segment === "" || segment === ".")
90257
+ for (const segment2 of path2.split("/")) {
90258
+ if (segment2 === "" || segment2 === ".")
89916
90259
  continue;
89917
- if (segment === "..") {
90260
+ if (segment2 === "..") {
89918
90261
  if (out.length > 0 && out[out.length - 1] !== "..")
89919
90262
  out.pop();
89920
90263
  else
89921
90264
  out.push("..");
89922
90265
  continue;
89923
90266
  }
89924
- out.push(segment);
90267
+ out.push(segment2);
89925
90268
  }
89926
90269
  return out;
89927
90270
  }
@@ -93244,6 +93587,7 @@ export {
93244
93587
  findPendingCheckpoint,
93245
93588
  isTerminalAgentTaskState,
93246
93589
  CompletionInbox,
93590
+ formatCompletionNotification,
93247
93591
  buildAskUserQuestionTool,
93248
93592
  resolveTriggerThreshold,
93249
93593
  resolveContextWindow,
@@ -93276,6 +93620,8 @@ export {
93276
93620
  InMemorySessionTokenBudgetStore,
93277
93621
  DiskSessionCheckpointStore,
93278
93622
  createFileReadTracker,
93623
+ diffWords,
93624
+ structuredPatch,
93279
93625
  dryRunEdit,
93280
93626
  seedObservationLedger,
93281
93627
  toolResultInjectionGuardrail,
@@ -93357,7 +93703,6 @@ export {
93357
93703
  CODING_AGENT_WORKING_DOCTRINE,
93358
93704
  CODING_AGENT_DELEGATION_DOCTRINE,
93359
93705
  PLAN_MODE_DOCTRINE,
93360
- CODING_AGENT_HYPERMODE_DOCTRINE,
93361
93706
  projectResidentLearning,
93362
93707
  createResidentStepContributions,
93363
93708
  createResidentStepContext,
@@ -93437,4 +93782,4 @@ export {
93437
93782
  buildResidentToolEvidenceTools,
93438
93783
  createPalMessagingTools
93439
93784
  };
93440
- //# sourceMappingURL=chunk-A64X23MU.js.map
93785
+ //# sourceMappingURL=chunk-RQBT4RVE.js.map