@namzu/sdk 51.1.0 → 52.1.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 (395) hide show
  1. package/CHANGELOG.md +119 -0
  2. package/dist/agents/QueryAgent.d.ts.map +1 -1
  3. package/dist/agents/QueryAgent.js +2 -0
  4. package/dist/agents/QueryAgent.js.map +1 -1
  5. package/dist/agents/SupervisorAgent.d.ts +1 -1
  6. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  7. package/dist/agents/SupervisorAgent.js.map +1 -1
  8. package/dist/agents/examples/SupervisorAgent.d.ts +42 -0
  9. package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -1
  10. package/dist/agents/examples/SupervisorAgent.js +80 -4
  11. package/dist/agents/examples/SupervisorAgent.js.map +1 -1
  12. package/dist/agents/index.d.ts +1 -1
  13. package/dist/agents/index.d.ts.map +1 -1
  14. package/dist/agents/index.js.map +1 -1
  15. package/dist/authorization/protected-paths.d.ts +36 -0
  16. package/dist/authorization/protected-paths.d.ts.map +1 -0
  17. package/dist/authorization/protected-paths.js +107 -0
  18. package/dist/authorization/protected-paths.js.map +1 -0
  19. package/dist/authorization/readonly-commands.d.ts +39 -0
  20. package/dist/authorization/readonly-commands.d.ts.map +1 -0
  21. package/dist/authorization/readonly-commands.js +797 -0
  22. package/dist/authorization/readonly-commands.js.map +1 -0
  23. package/dist/authorization/readonly-flags.d.ts +19 -0
  24. package/dist/authorization/readonly-flags.d.ts.map +1 -0
  25. package/dist/authorization/readonly-flags.js +178 -0
  26. package/dist/authorization/readonly-flags.js.map +1 -0
  27. package/dist/authorization/removal.d.ts +52 -0
  28. package/dist/authorization/removal.d.ts.map +1 -0
  29. package/dist/authorization/removal.js +283 -0
  30. package/dist/authorization/removal.js.map +1 -0
  31. package/dist/authorization/shell-paths.d.ts +66 -0
  32. package/dist/authorization/shell-paths.d.ts.map +1 -0
  33. package/dist/authorization/shell-paths.js +697 -0
  34. package/dist/authorization/shell-paths.js.map +1 -0
  35. package/dist/bridge/acp/update.d.ts.map +1 -1
  36. package/dist/bridge/acp/update.js +1 -0
  37. package/dist/bridge/acp/update.js.map +1 -1
  38. package/dist/compaction/context-window.d.ts +24 -0
  39. package/dist/compaction/context-window.d.ts.map +1 -1
  40. package/dist/compaction/context-window.js +34 -0
  41. package/dist/compaction/context-window.js.map +1 -1
  42. package/dist/compaction/manual.d.ts.map +1 -1
  43. package/dist/compaction/manual.js +10 -2
  44. package/dist/compaction/manual.js.map +1 -1
  45. package/dist/compaction/plan.d.ts +4 -0
  46. package/dist/compaction/plan.d.ts.map +1 -1
  47. package/dist/compaction/plan.js +6 -2
  48. package/dist/compaction/plan.js.map +1 -1
  49. package/dist/compaction/verifier.d.ts +11 -1
  50. package/dist/compaction/verifier.d.ts.map +1 -1
  51. package/dist/compaction/verifier.js +75 -23
  52. package/dist/compaction/verifier.js.map +1 -1
  53. package/dist/config/runtime.d.ts +55 -7
  54. package/dist/config/runtime.d.ts.map +1 -1
  55. package/dist/config/runtime.js +23 -2
  56. package/dist/config/runtime.js.map +1 -1
  57. package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
  58. package/dist/connector/web/guarded-fetch.js +24 -0
  59. package/dist/connector/web/guarded-fetch.js.map +1 -1
  60. package/dist/connector/web/index.d.ts +1 -1
  61. package/dist/connector/web/index.d.ts.map +1 -1
  62. package/dist/connector/web/page.d.ts +59 -0
  63. package/dist/connector/web/page.d.ts.map +1 -0
  64. package/dist/connector/web/page.js +112 -0
  65. package/dist/connector/web/page.js.map +1 -0
  66. package/dist/connector/web/types.d.ts +47 -0
  67. package/dist/connector/web/types.d.ts.map +1 -1
  68. package/dist/connector/web/types.js.map +1 -1
  69. package/dist/constants/continuation.d.ts +8 -0
  70. package/dist/constants/continuation.d.ts.map +1 -1
  71. package/dist/constants/continuation.js +8 -0
  72. package/dist/constants/continuation.js.map +1 -1
  73. package/dist/constants/plugin/index.d.ts +1 -1
  74. package/dist/constants/plugin/index.d.ts.map +1 -1
  75. package/dist/constants/plugin/index.js +1 -1
  76. package/dist/constants/plugin/index.js.map +1 -1
  77. package/dist/contracts/a2a.d.ts +2 -2
  78. package/dist/manager/agent/lifecycle.d.ts +7 -0
  79. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  80. package/dist/manager/agent/lifecycle.js +11 -2
  81. package/dist/manager/agent/lifecycle.js.map +1 -1
  82. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  83. package/dist/manager/session/turn-recorder.js +4 -2
  84. package/dist/manager/session/turn-recorder.js.map +1 -1
  85. package/dist/plugin/index.d.ts +1 -1
  86. package/dist/plugin/index.d.ts.map +1 -1
  87. package/dist/plugin/index.js +1 -1
  88. package/dist/plugin/index.js.map +1 -1
  89. package/dist/plugin/lifecycle.d.ts +6 -0
  90. package/dist/plugin/lifecycle.d.ts.map +1 -1
  91. package/dist/plugin/lifecycle.js +98 -114
  92. package/dist/plugin/lifecycle.js.map +1 -1
  93. package/dist/plugin/shell-hook.d.ts +90 -22
  94. package/dist/plugin/shell-hook.d.ts.map +1 -1
  95. package/dist/plugin/shell-hook.js +434 -41
  96. package/dist/plugin/shell-hook.js.map +1 -1
  97. package/dist/provider/capabilities.d.ts +9 -0
  98. package/dist/provider/capabilities.d.ts.map +1 -1
  99. package/dist/provider/capabilities.js +15 -0
  100. package/dist/provider/capabilities.js.map +1 -1
  101. package/dist/provider/errors.d.ts.map +1 -1
  102. package/dist/provider/errors.js +13 -0
  103. package/dist/provider/errors.js.map +1 -1
  104. package/dist/provider/fallback.d.ts.map +1 -1
  105. package/dist/provider/fallback.js +10 -0
  106. package/dist/provider/fallback.js.map +1 -1
  107. package/dist/provider/idle-timeout.d.ts.map +1 -1
  108. package/dist/provider/idle-timeout.js +5 -0
  109. package/dist/provider/idle-timeout.js.map +1 -1
  110. package/dist/provider/image-input-refusal.d.ts +9 -0
  111. package/dist/provider/image-input-refusal.d.ts.map +1 -0
  112. package/dist/provider/image-input-refusal.js +54 -0
  113. package/dist/provider/image-input-refusal.js.map +1 -0
  114. package/dist/provider/index.d.ts +2 -1
  115. package/dist/provider/index.d.ts.map +1 -1
  116. package/dist/provider/index.js +2 -1
  117. package/dist/provider/index.js.map +1 -1
  118. package/dist/provider/retry.d.ts +7 -2
  119. package/dist/provider/retry.d.ts.map +1 -1
  120. package/dist/provider/retry.js +38 -4
  121. package/dist/provider/retry.js.map +1 -1
  122. package/dist/public-runtime.d.ts +5 -2
  123. package/dist/public-runtime.d.ts.map +1 -1
  124. package/dist/public-runtime.js +5 -2
  125. package/dist/public-runtime.js.map +1 -1
  126. package/dist/public-types.d.ts +2 -2
  127. package/dist/public-types.d.ts.map +1 -1
  128. package/dist/runtime/jobs/registry.d.ts +21 -0
  129. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  130. package/dist/runtime/jobs/registry.js +15 -2
  131. package/dist/runtime/jobs/registry.js.map +1 -1
  132. package/dist/runtime/query/deferred-sandbox.d.ts +54 -0
  133. package/dist/runtime/query/deferred-sandbox.d.ts.map +1 -0
  134. package/dist/runtime/query/deferred-sandbox.js +75 -0
  135. package/dist/runtime/query/deferred-sandbox.js.map +1 -0
  136. package/dist/runtime/query/executor/tool-call-admission.d.ts +10 -0
  137. package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
  138. package/dist/runtime/query/executor/tool-call-admission.js +74 -13
  139. package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
  140. package/dist/runtime/query/executor.d.ts +51 -2
  141. package/dist/runtime/query/executor.d.ts.map +1 -1
  142. package/dist/runtime/query/executor.js +214 -9
  143. package/dist/runtime/query/executor.js.map +1 -1
  144. package/dist/runtime/query/finalize-turn.d.ts +6 -0
  145. package/dist/runtime/query/finalize-turn.d.ts.map +1 -1
  146. package/dist/runtime/query/finalize-turn.js +1 -1
  147. package/dist/runtime/query/finalize-turn.js.map +1 -1
  148. package/dist/runtime/query/index.d.ts +29 -0
  149. package/dist/runtime/query/index.d.ts.map +1 -1
  150. package/dist/runtime/query/index.js +108 -28
  151. package/dist/runtime/query/index.js.map +1 -1
  152. package/dist/runtime/query/iteration/index.d.ts +57 -0
  153. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  154. package/dist/runtime/query/iteration/index.js +380 -28
  155. package/dist/runtime/query/iteration/index.js.map +1 -1
  156. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts +61 -0
  157. package/dist/runtime/query/iteration/phases/compaction-breaker.d.ts.map +1 -0
  158. package/dist/runtime/query/iteration/phases/compaction-breaker.js +94 -0
  159. package/dist/runtime/query/iteration/phases/compaction-breaker.js.map +1 -0
  160. package/dist/runtime/query/iteration/phases/compaction.d.ts +42 -1
  161. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  162. package/dist/runtime/query/iteration/phases/compaction.js +203 -23
  163. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  164. package/dist/runtime/query/iteration/phases/context.d.ts +10 -0
  165. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  166. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  167. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  168. package/dist/runtime/query/iteration/phases/tool-review.js +165 -2
  169. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  170. package/dist/runtime/query/iteration/provider-rejected-image.d.ts +21 -1
  171. package/dist/runtime/query/iteration/provider-rejected-image.d.ts.map +1 -1
  172. package/dist/runtime/query/iteration/provider-rejected-image.js +53 -7
  173. package/dist/runtime/query/iteration/provider-rejected-image.js.map +1 -1
  174. package/dist/runtime/query/iteration/request-repair.d.ts +108 -0
  175. package/dist/runtime/query/iteration/request-repair.d.ts.map +1 -0
  176. package/dist/runtime/query/iteration/request-repair.js +593 -0
  177. package/dist/runtime/query/iteration/request-repair.js.map +1 -0
  178. package/dist/runtime/query/iteration/stream-turn.d.ts +6 -0
  179. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  180. package/dist/runtime/query/iteration/stream-turn.js +2 -2
  181. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  182. package/dist/runtime/query/path-escalation.d.ts +36 -0
  183. package/dist/runtime/query/path-escalation.d.ts.map +1 -0
  184. package/dist/runtime/query/path-escalation.js +184 -0
  185. package/dist/runtime/query/path-escalation.js.map +1 -0
  186. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  187. package/dist/runtime/query/plugin-hooks.js +8 -0
  188. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  189. package/dist/runtime/query/reminders.d.ts +35 -0
  190. package/dist/runtime/query/reminders.d.ts.map +1 -0
  191. package/dist/runtime/query/reminders.js +7 -0
  192. package/dist/runtime/query/reminders.js.map +1 -0
  193. package/dist/runtime/query/request-rich-content.d.ts +5 -1
  194. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  195. package/dist/runtime/query/request-rich-content.js +67 -25
  196. package/dist/runtime/query/request-rich-content.js.map +1 -1
  197. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  198. package/dist/runtime/query/resume-pending.js +26 -0
  199. package/dist/runtime/query/resume-pending.js.map +1 -1
  200. package/dist/runtime/query/review-policy.d.ts +26 -0
  201. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  202. package/dist/runtime/query/review-policy.js +79 -5
  203. package/dist/runtime/query/review-policy.js.map +1 -1
  204. package/dist/runtime/query/tool-output-budget.d.ts +46 -0
  205. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  206. package/dist/runtime/query/tool-output-budget.js +85 -1
  207. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  208. package/dist/runtime/query/tooling.d.ts +1 -0
  209. package/dist/runtime/query/tooling.d.ts.map +1 -1
  210. package/dist/runtime/query/tooling.js +5 -0
  211. package/dist/runtime/query/tooling.js.map +1 -1
  212. package/dist/session/paths.d.ts +5 -1
  213. package/dist/session/paths.d.ts.map +1 -1
  214. package/dist/session/paths.js +8 -0
  215. package/dist/session/paths.js.map +1 -1
  216. package/dist/store/memory/disk.d.ts.map +1 -1
  217. package/dist/store/memory/disk.js +2 -2
  218. package/dist/store/memory/disk.js.map +1 -1
  219. package/dist/store/memory/markdown.d.ts.map +1 -1
  220. package/dist/store/memory/markdown.js +2 -2
  221. package/dist/store/memory/markdown.js.map +1 -1
  222. package/dist/store/memory/naming.d.ts +9 -0
  223. package/dist/store/memory/naming.d.ts.map +1 -1
  224. package/dist/store/memory/naming.js +12 -0
  225. package/dist/store/memory/naming.js.map +1 -1
  226. package/dist/tools/builtins/bash.d.ts +30 -1
  227. package/dist/tools/builtins/bash.d.ts.map +1 -1
  228. package/dist/tools/builtins/bash.js +170 -26
  229. package/dist/tools/builtins/bash.js.map +1 -1
  230. package/dist/tools/builtins/computer-use.d.ts +1 -1
  231. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  232. package/dist/tools/builtins/computer-use.js +12 -5
  233. package/dist/tools/builtins/computer-use.js.map +1 -1
  234. package/dist/tools/builtins/content-fingerprint.d.ts +2 -0
  235. package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
  236. package/dist/tools/builtins/content-fingerprint.js +4 -0
  237. package/dist/tools/builtins/content-fingerprint.js.map +1 -1
  238. package/dist/tools/builtins/edit.d.ts.map +1 -1
  239. package/dist/tools/builtins/edit.js +60 -18
  240. package/dist/tools/builtins/edit.js.map +1 -1
  241. package/dist/tools/builtins/grep.d.ts +8 -1
  242. package/dist/tools/builtins/grep.d.ts.map +1 -1
  243. package/dist/tools/builtins/grep.js +152 -33
  244. package/dist/tools/builtins/grep.js.map +1 -1
  245. package/dist/tools/builtins/read-file.d.ts +1 -0
  246. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  247. package/dist/tools/builtins/read-file.js +44 -5
  248. package/dist/tools/builtins/read-file.js.map +1 -1
  249. package/dist/tools/builtins/read-render.d.ts +52 -0
  250. package/dist/tools/builtins/read-render.d.ts.map +1 -1
  251. package/dist/tools/builtins/read-render.js +143 -0
  252. package/dist/tools/builtins/read-render.js.map +1 -1
  253. package/dist/tools/builtins/web.d.ts +13 -2
  254. package/dist/tools/builtins/web.d.ts.map +1 -1
  255. package/dist/tools/builtins/web.js +225 -32
  256. package/dist/tools/builtins/web.js.map +1 -1
  257. package/dist/tools/coordinator/ask-user-question.d.ts +2 -0
  258. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
  259. package/dist/tools/coordinator/ask-user-question.js +256 -92
  260. package/dist/tools/coordinator/ask-user-question.js.map +1 -1
  261. package/dist/tools/coordinator/question-options.d.ts +1 -0
  262. package/dist/tools/coordinator/question-options.d.ts.map +1 -1
  263. package/dist/tools/coordinator/question-options.js +6 -1
  264. package/dist/tools/coordinator/question-options.js.map +1 -1
  265. package/dist/tools/defineTool.d.ts +4 -1
  266. package/dist/tools/defineTool.d.ts.map +1 -1
  267. package/dist/tools/defineTool.js +6 -1
  268. package/dist/tools/defineTool.js.map +1 -1
  269. package/dist/tools/paths.d.ts +6 -0
  270. package/dist/tools/paths.d.ts.map +1 -1
  271. package/dist/tools/paths.js +1 -1
  272. package/dist/tools/paths.js.map +1 -1
  273. package/dist/types/agent/query.d.ts +3 -0
  274. package/dist/types/agent/query.d.ts.map +1 -1
  275. package/dist/types/errors/catalog.js +1 -1
  276. package/dist/types/errors/catalog.js.map +1 -1
  277. package/dist/types/hitl/index.d.ts +104 -0
  278. package/dist/types/hitl/index.d.ts.map +1 -1
  279. package/dist/types/hitl/index.js.map +1 -1
  280. package/dist/types/message/index.d.ts +1 -1
  281. package/dist/types/message/index.d.ts.map +1 -1
  282. package/dist/types/message/index.js +2 -0
  283. package/dist/types/message/index.js.map +1 -1
  284. package/dist/types/plugin/index.d.ts +93 -19
  285. package/dist/types/plugin/index.d.ts.map +1 -1
  286. package/dist/types/plugin/index.js +3 -0
  287. package/dist/types/plugin/index.js.map +1 -1
  288. package/dist/types/provider/errors.d.ts +19 -0
  289. package/dist/types/provider/errors.d.ts.map +1 -1
  290. package/dist/types/provider/errors.js +54 -5
  291. package/dist/types/provider/errors.js.map +1 -1
  292. package/dist/types/provider/interface.d.ts +12 -0
  293. package/dist/types/provider/interface.d.ts.map +1 -1
  294. package/dist/types/provider/stream.d.ts +1 -1
  295. package/dist/types/session/config.d.ts +14 -0
  296. package/dist/types/session/config.d.ts.map +1 -1
  297. package/dist/types/session/events.d.ts +27 -4
  298. package/dist/types/session/events.d.ts.map +1 -1
  299. package/dist/types/session/events.js.map +1 -1
  300. package/dist/types/session/records.d.ts +9 -9
  301. package/dist/types/session/records.d.ts.map +1 -1
  302. package/dist/types/session/records.js +1 -0
  303. package/dist/types/session/records.js.map +1 -1
  304. package/dist/types/session/stop-reason.d.ts +5 -0
  305. package/dist/types/session/stop-reason.d.ts.map +1 -1
  306. package/dist/types/tool/index.d.ts +52 -0
  307. package/dist/types/tool/index.d.ts.map +1 -1
  308. package/dist/types/tool/index.js.map +1 -1
  309. package/package.json +4 -2
  310. package/src/agents/QueryAgent.ts +5 -1
  311. package/src/agents/SupervisorAgent.ts +1 -1
  312. package/src/agents/examples/SupervisorAgent.ts +217 -106
  313. package/src/agents/index.ts +1 -1
  314. package/src/authorization/protected-paths.ts +110 -0
  315. package/src/authorization/readonly-commands.ts +771 -0
  316. package/src/authorization/readonly-flags.ts +196 -0
  317. package/src/authorization/removal.ts +326 -0
  318. package/src/authorization/shell-paths.ts +927 -0
  319. package/src/bridge/acp/update.ts +1 -0
  320. package/src/compaction/context-window.ts +41 -0
  321. package/src/compaction/manual.ts +10 -2
  322. package/src/compaction/plan.ts +11 -2
  323. package/src/compaction/verifier.ts +84 -22
  324. package/src/config/runtime.ts +23 -2
  325. package/src/connector/web/guarded-fetch.ts +26 -0
  326. package/src/connector/web/index.ts +3 -0
  327. package/src/connector/web/page.ts +130 -0
  328. package/src/connector/web/types.ts +47 -0
  329. package/src/constants/continuation.ts +10 -0
  330. package/src/constants/plugin/index.ts +1 -1
  331. package/src/manager/agent/lifecycle.ts +12 -4
  332. package/src/manager/session/turn-recorder.ts +10 -2
  333. package/src/plugin/index.ts +1 -0
  334. package/src/plugin/lifecycle.ts +107 -119
  335. package/src/plugin/shell-hook.ts +477 -43
  336. package/src/provider/capabilities.ts +17 -0
  337. package/src/provider/errors.ts +13 -0
  338. package/src/provider/fallback.ts +10 -0
  339. package/src/provider/idle-timeout.ts +5 -0
  340. package/src/provider/image-input-refusal.ts +54 -0
  341. package/src/provider/index.ts +2 -0
  342. package/src/provider/retry.ts +42 -4
  343. package/src/public-runtime.ts +11 -0
  344. package/src/public-types.ts +4 -0
  345. package/src/runtime/jobs/registry.ts +39 -2
  346. package/src/runtime/query/deferred-sandbox.ts +110 -0
  347. package/src/runtime/query/executor/tool-call-admission.ts +79 -13
  348. package/src/runtime/query/executor.ts +267 -11
  349. package/src/runtime/query/finalize-turn.ts +7 -1
  350. package/src/runtime/query/index.ts +169 -52
  351. package/src/runtime/query/iteration/index.ts +439 -35
  352. package/src/runtime/query/iteration/phases/compaction-breaker.ts +108 -0
  353. package/src/runtime/query/iteration/phases/compaction.ts +241 -38
  354. package/src/runtime/query/iteration/phases/context.ts +11 -0
  355. package/src/runtime/query/iteration/phases/tool-review.ts +177 -2
  356. package/src/runtime/query/iteration/provider-rejected-image.ts +71 -5
  357. package/src/runtime/query/iteration/request-repair.ts +743 -0
  358. package/src/runtime/query/iteration/stream-turn.ts +11 -1
  359. package/src/runtime/query/path-escalation.ts +204 -0
  360. package/src/runtime/query/plugin-hooks.ts +8 -0
  361. package/src/runtime/query/reminders.ts +45 -0
  362. package/src/runtime/query/request-rich-content.ts +77 -27
  363. package/src/runtime/query/resume-pending.ts +27 -0
  364. package/src/runtime/query/review-policy.ts +106 -5
  365. package/src/runtime/query/tool-output-budget.ts +115 -1
  366. package/src/runtime/query/tooling.ts +6 -0
  367. package/src/session/paths.ts +11 -1
  368. package/src/store/memory/disk.ts +2 -1
  369. package/src/store/memory/markdown.ts +2 -1
  370. package/src/store/memory/naming.ts +13 -0
  371. package/src/tools/builtins/bash.ts +203 -34
  372. package/src/tools/builtins/computer-use.ts +13 -4
  373. package/src/tools/builtins/content-fingerprint.ts +5 -0
  374. package/src/tools/builtins/edit.ts +69 -19
  375. package/src/tools/builtins/grep.ts +159 -38
  376. package/src/tools/builtins/read-file.ts +48 -5
  377. package/src/tools/builtins/read-render.ts +193 -0
  378. package/src/tools/builtins/web.ts +258 -33
  379. package/src/tools/coordinator/ask-user-question.ts +309 -103
  380. package/src/tools/coordinator/question-options.ts +8 -1
  381. package/src/tools/defineTool.ts +11 -2
  382. package/src/tools/paths.ts +1 -1
  383. package/src/types/agent/query.ts +3 -0
  384. package/src/types/errors/catalog.ts +1 -1
  385. package/src/types/hitl/index.ts +104 -0
  386. package/src/types/message/index.ts +2 -0
  387. package/src/types/plugin/index.ts +101 -18
  388. package/src/types/provider/errors.ts +66 -5
  389. package/src/types/provider/interface.ts +13 -0
  390. package/src/types/provider/stream.ts +1 -1
  391. package/src/types/session/config.ts +14 -0
  392. package/src/types/session/events.ts +32 -4
  393. package/src/types/session/records.ts +1 -0
  394. package/src/types/session/stop-reason.ts +5 -0
  395. package/src/types/tool/index.ts +53 -2
@@ -0,0 +1,593 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { repairToolMessageHistory, toolHistoryRepairChanged } from '../../../compaction/dangling.js';
3
+ import { isProviderRequestError } from '../../../provider/errors.js';
4
+ import { isImageInputRefusal } from '../../../provider/image-input-refusal.js';
5
+ import { findSingleRequestImage } from '../request-rich-content.js';
6
+ import { isProviderRejectedImageError } from './provider-rejected-image.js';
7
+ /** Most repair resends for one original request, across every send it makes. */
8
+ export const MAX_REPAIRS_PER_REQUEST = 5;
9
+ const MAX_STRIPS_PER_INDEX = 3;
10
+ /** The reference drops media in these steps for an unprocessable request. */
11
+ const GENERIC_MEDIA_LIMITS = [510, 255, 127];
12
+ const PARAMETER_CODES = new Set([
13
+ 'unsupported_parameter',
14
+ 'unsupported_value',
15
+ 'unknown_parameter',
16
+ ]);
17
+ const REASONING_CODES = new Set([
18
+ 'invalid_encrypted_content',
19
+ 'invalid_reasoning',
20
+ 'invalid_signature',
21
+ ]);
22
+ const TOOL_PAIRING = /\btool_use\b.{0,120}\btool_result\b|\btool_result\b.{0,120}\btool_use\b|unexpected\s+`?tool_use_id`?|tool_use\s+ids?\s+must\s+be\s+unique|\btool_call_id\b|role\s+'tool'\s+must\s+be\s+a\s+response|'tool_calls'\s+must\s+be\s+followed|Expected\s+toolResult\s+blocks|function\s+call\s+turn\s+comes\s+immediately|number\s+of\s+function\s+response\s+parts/i;
23
+ const REASONING = /\bthought[_ ]?signature\b|`?signature`?\s+in\s+`?(?:thinking|redacted_thinking)|\b(?:thinking|redacted_thinking)\s+blocks?\b.{0,160}\b(?:cannot|can['’]t|must|invalid|modified|expected)|\bexpected\s+`?(?:thinking|redacted_thinking)`?|\bencrypted[_ ]content\b|\breasoning\s+item\b|\bitem\s+'rs_[^']*'|\bof\s+type\s+'reasoning'/i;
24
+ /** A path into the tool list: wording about a tool schema is never about a request parameter or media. */
25
+ const TOOL_SCHEMA_PATH = /\b(?:tools?|functions?)[.[]\s*\d+|input_schema|\.properties\b|json\s+schema/i;
26
+ const REFUSAL = "(?:unsupported|not\\s+supported|does\\s?n[o']t\\s+support|do\\s+not\\s+support|unrecognized|unknown\\s+(?:request\\s+)?(?:parameter|argument|field)|not\\s+allowed|deprecated|only\\s+the\\s+default)";
27
+ const PARAMETER_NAMES = {
28
+ effort: '(?:reasoning[_. -]?effort|effort)',
29
+ thinking: 'thinking',
30
+ temperature: 'temperature',
31
+ topP: 'top[_ ]?p',
32
+ responseFormat: '(?:response_format|output_config(?:\\.format)?|json_schema|json_object|structured\\s+output)',
33
+ };
34
+ const PARAMETER_PATTERNS = Object.fromEntries(Object.entries(PARAMETER_NAMES).map(([name, token]) => [
35
+ name,
36
+ {
37
+ named: new RegExp(`\\b${token}\\b`, 'i'),
38
+ refused: new RegExp(`${REFUSAL}.{0,80}\\b${token}\\b|\\b${token}\\b.{0,80}${REFUSAL}`, 'i'),
39
+ },
40
+ ]));
41
+ const BOTH_SAMPLING = /temperature.{0,60}top[_ ]?p.{0,80}(?:cannot|can['’]t|may\s+not|should\s+not).{0,20}(?:both|together)/i;
42
+ const IMAGE_FAULT = /\b(?:images?|pictures?|photos?)\b.{0,100}\b(?:too\s+(?:large|big)|exceeds?|larger\s+than|maximum\s+(?:size|dimensions?)|dimensions?|(?:could|can)\s?not\s+be\s+(?:processed|decoded|loaded|read|fetched|downloaded)|failed\s+to\s+(?:process|decode|load|read|download)|unsupported|not\s+supported|corrupt\w*|malformed|truncated|invalid)\b|\b(?:(?:could|can)\s?not|failed\s+to|unable\s+to)\s+(?:process|decode|load|read|download|fetch)\b.{0,60}\b(?:images?|pictures?)\b|\bunsupported\s+(?:image|media)\b|\binvalid\s+image\b/i;
43
+ const DOCUMENT_FAULT = /\bdocument_block\b|\b(?:documents?|pdfs?)\b.{0,80}\b(?:too\s+(?:large|big)|exceeds?\s+(?:the\s+)?(?:maximum|size|page)|page\s+limit|password|corrupt\w*|(?:could|can)\s?not\s+be\s+(?:processed|read|decoded)|failed\s+to\s+(?:process|read|decode))\b|\bpassword[- ]protected\s+pdf\b|\bpdf\b.{0,40}\bpages?\b.{0,20}\b(?:limit|maximum|exceeds?)\b/i;
44
+ const GENERIC_MEDIA = /\bunprocessable\b.{0,100}\b(?:images?|media|documents?)\b|\b(?:images?|media|documents?)\b.{0,100}\bunprocessable\b|\btoo\s+many\s+(?:images?|documents?|media|attachments?)\b|\bmedia_budget\b|\bimage_block\b/i;
45
+ const NAMES_MEDIA = /\b(?:images?|pictures?|photos?|documents?|pdfs?|media|attachments?)\b/i;
46
+ function wireIndexes(text) {
47
+ const both = /\bmessages?[.[]\s*(\d+)\s*\]?[.[]\s*content[.[]\s*(\d+)/i.exec(text);
48
+ if (both?.[1] !== undefined && both[2] !== undefined) {
49
+ return { messageIndex: Number(both[1]), contentIndex: Number(both[2]) };
50
+ }
51
+ const only = /\bmessages?[.[]\s*(\d+)\b/i.exec(text);
52
+ return only?.[1] !== undefined ? { messageIndex: Number(only[1]) } : {};
53
+ }
54
+ function rejectedParameters(text, code, params) {
55
+ if (TOOL_SCHEMA_PATH.test(text))
56
+ return [];
57
+ const structured = code !== undefined && PARAMETER_CODES.has(code);
58
+ const set = {
59
+ effort: params.effort !== undefined,
60
+ thinking: params.thinking !== undefined,
61
+ temperature: params.temperature !== undefined,
62
+ topP: params.topP !== undefined,
63
+ responseFormat: params.responseFormat !== undefined,
64
+ };
65
+ const found = [];
66
+ for (const name of Object.keys(set)) {
67
+ if (!set[name])
68
+ continue;
69
+ const pattern = PARAMETER_PATTERNS[name];
70
+ if (structured ? pattern.named.test(text) : pattern.refused.test(text))
71
+ found.push(name);
72
+ }
73
+ if (found.length === 0 && set.topP && BOTH_SAMPLING.test(text))
74
+ found.push('topP');
75
+ return found;
76
+ }
77
+ function requestHasMedia(params) {
78
+ return listMedia(params.messages).length > 0;
79
+ }
80
+ /**
81
+ * What kind of invalid request this is, from the provider's structured code
82
+ * where it sent one and from its wording only as a fallback.
83
+ */
84
+ export function classifyRequestRejection(error, params) {
85
+ if (!isProviderRequestError(error) || error.kind !== 'bad_request')
86
+ return null;
87
+ if (error.status !== undefined &&
88
+ error.status !== 400 &&
89
+ error.status !== 413 &&
90
+ error.status !== 422) {
91
+ return null;
92
+ }
93
+ const text = error.detail ?? error.message;
94
+ const code = error.providerCode;
95
+ if (code !== undefined && REASONING_CODES.has(code))
96
+ return { kind: 'reasoning' };
97
+ if (REASONING.test(text))
98
+ return { kind: 'reasoning' };
99
+ if (TOOL_PAIRING.test(text))
100
+ return { kind: 'tool-pairing' };
101
+ const parameters = rejectedParameters(text, code, params);
102
+ if (parameters.length > 0)
103
+ return { kind: 'parameter', parameters };
104
+ if (TOOL_SCHEMA_PATH.test(text))
105
+ return null;
106
+ if (code === 'invalid_image')
107
+ return { kind: 'media', generic: false, ...wireIndexes(text) };
108
+ if (GENERIC_MEDIA.test(text))
109
+ return { kind: 'media', generic: true };
110
+ // A bare 413 or 422 says nothing about media: it counts only when the
111
+ // request carries some and the provider's words name it.
112
+ if ((error.status === 413 || error.status === 422) && NAMES_MEDIA.test(text)) {
113
+ return requestHasMedia(params) ? { kind: 'media', generic: true } : null;
114
+ }
115
+ if (IMAGE_FAULT.test(text) || DOCUMENT_FAULT.test(text)) {
116
+ return { kind: 'media', generic: false, ...wireIndexes(text) };
117
+ }
118
+ return null;
119
+ }
120
+ function isAccepted(chunk) {
121
+ if (chunk.retry !== undefined || chunk.fallback !== undefined || chunk.error !== undefined) {
122
+ return false;
123
+ }
124
+ return Boolean(chunk.delta.content ||
125
+ chunk.delta.toolCalls?.length ||
126
+ chunk.delta.toolCallEnd ||
127
+ chunk.delta.reasoning ||
128
+ chunk.delta.citation ||
129
+ chunk.finishReason !== undefined ||
130
+ chunk.usage !== undefined ||
131
+ chunk.replayState !== undefined ||
132
+ chunk.textParts !== undefined);
133
+ }
134
+ const mediaFingerprint = (data, mediaType) => createHash('sha256').update(mediaType).update('\0').update(data).digest('hex');
135
+ const FAULT_NOTE = 'the provider could not process it. The file may be unsupported or corrupt; do not retry reading it. If you need to inspect it, use a shell command instead.';
136
+ const LIMIT_NOTE = 'this conversation holds more files than the provider accepts at once, so the oldest are left out of the request. They are still in the conversation.';
137
+ const removedNote = (kind, limit) => `[${kind} removed: ${limit ? LIMIT_NOTE : FAULT_NOTE}]`;
138
+ function listMedia(messages) {
139
+ const slots = [];
140
+ for (const [messageIndex, message] of messages.entries()) {
141
+ if (message.role === 'user') {
142
+ for (const [itemIndex, attachment] of (message.attachments ?? []).entries()) {
143
+ if (attachment.type === 'stored')
144
+ continue;
145
+ slots.push({
146
+ messageIndex,
147
+ itemIndex,
148
+ source: 'user',
149
+ kind: attachment.type === 'document' ? 'document' : 'image',
150
+ fingerprint: mediaFingerprint(attachment.data, attachment.mediaType),
151
+ });
152
+ }
153
+ }
154
+ else if (message.role === 'tool' && Array.isArray(message.content)) {
155
+ for (const [itemIndex, block] of message.content.entries()) {
156
+ if (block.type !== 'image' && block.type !== 'document')
157
+ continue;
158
+ slots.push({
159
+ messageIndex,
160
+ itemIndex,
161
+ source: 'tool',
162
+ kind: block.type,
163
+ fingerprint: mediaFingerprint(block.data, block.mediaType),
164
+ });
165
+ }
166
+ }
167
+ }
168
+ return slots;
169
+ }
170
+ /** Replace the given media with a short text note, in a copy. */
171
+ function removeMedia(messages, slots, limit) {
172
+ if (slots.length === 0)
173
+ return messages;
174
+ const byMessage = new Map();
175
+ for (const slot of slots) {
176
+ const items = byMessage.get(slot.messageIndex) ?? new Map();
177
+ items.set(slot.itemIndex, slot);
178
+ byMessage.set(slot.messageIndex, items);
179
+ }
180
+ return messages.map((message, messageIndex) => {
181
+ const items = byMessage.get(messageIndex);
182
+ if (!items)
183
+ return message;
184
+ if (message.role === 'user') {
185
+ const attachments = message.attachments ?? [];
186
+ const kept = attachments.filter((_a, i) => !items.has(i));
187
+ const notes = [...items.values()]
188
+ .sort((a, b) => a.itemIndex - b.itemIndex)
189
+ .map((slot) => removedNote(slot.kind, limit))
190
+ .join('\n\n');
191
+ const { attachments: _drop, ...rest } = message;
192
+ return {
193
+ ...rest,
194
+ content: message.content.length > 0 ? `${message.content}\n\n${notes}` : notes,
195
+ ...(kept.length > 0 ? { attachments: kept } : {}),
196
+ };
197
+ }
198
+ if (message.role === 'tool' && Array.isArray(message.content)) {
199
+ const content = message.content.map((block, i) => {
200
+ const slot = items.get(i);
201
+ return slot ? { type: 'text', text: removedNote(slot.kind, limit) } : block;
202
+ });
203
+ return { ...message, content };
204
+ }
205
+ return message;
206
+ });
207
+ }
208
+ function stripReasoning(messages) {
209
+ let changed = false;
210
+ const out = messages.map((message) => {
211
+ if (message.role !== 'assistant')
212
+ return message;
213
+ const assistant = message;
214
+ const hasState = assistant.source !== undefined &&
215
+ assistant.source.replayState !== undefined;
216
+ if (assistant.reasoning === undefined && !hasState)
217
+ return message;
218
+ changed = true;
219
+ const { reasoning: _reasoning, source, ...rest } = assistant;
220
+ if (source === undefined)
221
+ return rest;
222
+ const { replayState: _state, ...route } = source;
223
+ return { ...rest, source: route };
224
+ });
225
+ return changed ? out : messages;
226
+ }
227
+ /**
228
+ * The media a provider's `messages.N.content.M` points at, mapped back through
229
+ * that driver's own serialisation. Exact for the two wires whose layout is
230
+ * known; anything else returns undefined and the caller does not guess.
231
+ *
232
+ * - the content-block wire: system turns are left out; a run of consecutive tool results
233
+ * is ONE user entry whose blocks are those results; every other message,
234
+ * including a user turn that follows tool results, is its own entry; a user
235
+ * entry's blocks are its text (when not empty) and then each attachment.
236
+ * - the chat-completions wire: one entry per message, system included; only user attachments
237
+ * travel as media (tool results are sent as text); blocks are the text (when
238
+ * not empty) and then each attachment.
239
+ */
240
+ function mediaAtWireIndex(messages, slots, family, wireIndex, contentIndex) {
241
+ if (family !== 'anthropic' && family !== 'openai')
242
+ return undefined;
243
+ const entries = [];
244
+ let inToolRun = false;
245
+ for (const [index, message] of messages.entries()) {
246
+ if (family === 'anthropic') {
247
+ if (message.role === 'system')
248
+ continue;
249
+ if (message.role === 'tool') {
250
+ if (!inToolRun)
251
+ entries.push([]);
252
+ inToolRun = true;
253
+ entries[entries.length - 1]?.push(index);
254
+ continue;
255
+ }
256
+ inToolRun = false;
257
+ }
258
+ entries.push([index]);
259
+ }
260
+ const entry = entries[wireIndex];
261
+ if (entry === undefined)
262
+ return undefined;
263
+ const mine = slots.filter((slot) => entry.includes(slot.messageIndex));
264
+ if (mine.length === 0)
265
+ return undefined;
266
+ if (contentIndex === undefined)
267
+ return mine;
268
+ const first = entry[0];
269
+ const message = first === undefined ? undefined : messages[first];
270
+ if (message?.role === 'user' && !(family === 'openai' && mine.some((s) => s.source === 'tool'))) {
271
+ const itemIndex = contentIndex - (message.content.length > 0 ? 1 : 0);
272
+ const hit = mine.filter((slot) => slot.itemIndex === itemIndex);
273
+ return hit.length > 0 ? hit : mine;
274
+ }
275
+ if (family === 'anthropic' && message?.role === 'tool') {
276
+ const owner = entry[contentIndex];
277
+ const hit = owner === undefined ? [] : mine.filter((slot) => slot.messageIndex === owner);
278
+ return hit.length > 0 ? hit : mine;
279
+ }
280
+ return mine;
281
+ }
282
+ const emptyLearned = () => ({
283
+ latched: new Map(),
284
+ reasoningOff: new Set(),
285
+ rejectedMedia: new Set(),
286
+ mediaLimit: undefined,
287
+ });
288
+ export class RequestRepair {
289
+ hooks;
290
+ learned = emptyLearned();
291
+ constructor(hooks = {}) {
292
+ this.hooks = hooks;
293
+ }
294
+ /** A fresh budget for one original request. */
295
+ session() {
296
+ return {
297
+ spent: new Set(),
298
+ stripsByIndex: new Map(),
299
+ pending: emptyLearned(),
300
+ repairs: 0,
301
+ removal: undefined,
302
+ };
303
+ }
304
+ served(provider, params) {
305
+ const member = this.hooks.servedBy?.();
306
+ return {
307
+ providerId: member?.providerId ?? params.providerRoute?.providerId ?? provider.id,
308
+ model: member?.model ?? params.providerRoute?.model ?? params.model,
309
+ };
310
+ }
311
+ routeKey(provider, params) {
312
+ const { providerId, model } = this.served(provider, params);
313
+ return `${providerId}|${model}`;
314
+ }
315
+ /** Everything already confirmed, then the tool pairing the provider requires. */
316
+ prepare(provider, params) {
317
+ const key = this.routeKey(provider, params);
318
+ let next = params;
319
+ const latched = this.learned.latched.get(key);
320
+ if (latched)
321
+ next = withoutParameters(next, latched);
322
+ let messages = next.messages;
323
+ if (this.learned.reasoningOff.has(key))
324
+ messages = stripReasoning(messages);
325
+ messages = this.applyMediaMemory(messages);
326
+ messages = this.pair(messages);
327
+ return messages === next.messages ? next : { ...next, messages };
328
+ }
329
+ applyMediaMemory(messages) {
330
+ const { rejectedMedia, mediaLimit } = this.learned;
331
+ if (rejectedMedia.size === 0 && mediaLimit === undefined)
332
+ return messages;
333
+ const slots = listMedia(messages);
334
+ const faulty = slots.filter((slot) => rejectedMedia.has(slot.fingerprint));
335
+ let out = removeMedia(messages, faulty, false);
336
+ if (mediaLimit !== undefined) {
337
+ const rest = listMedia(out);
338
+ if (rest.length > mediaLimit) {
339
+ out = removeMedia(out, rest.slice(0, rest.length - mediaLimit), true);
340
+ }
341
+ }
342
+ return out;
343
+ }
344
+ /** The shared tool-history repair, on the outgoing copy. Duplicate call ids fail closed there, so the request goes out as it is. */
345
+ pair(messages) {
346
+ try {
347
+ const repaired = repairToolMessageHistory(messages);
348
+ if (!toolHistoryRepairChanged(repaired.report))
349
+ return messages;
350
+ this.hooks.debug?.(`Repaired tool pairing before sending: ${JSON.stringify(repaired.report)}`);
351
+ return repaired.messages;
352
+ }
353
+ catch (error) {
354
+ this.hooks.debug?.(`Tool pairing could not be repaired before sending: ${error instanceof Error ? error.message : String(error)}`);
355
+ return messages;
356
+ }
357
+ }
358
+ /** What a resend that was accepted has proved. */
359
+ commit(session) {
360
+ const { pending } = session;
361
+ for (const [key, names] of pending.latched) {
362
+ const set = this.learned.latched.get(key) ?? new Set();
363
+ for (const name of names)
364
+ set.add(name);
365
+ this.learned.latched.set(key, set);
366
+ }
367
+ for (const key of pending.reasoningOff)
368
+ this.learned.reasoningOff.add(key);
369
+ for (const fingerprint of pending.rejectedMedia)
370
+ this.learned.rejectedMedia.add(fingerprint);
371
+ if (pending.mediaLimit !== undefined) {
372
+ this.learned.mediaLimit = Math.min(this.learned.mediaLimit ?? pending.mediaLimit, pending.mediaLimit);
373
+ }
374
+ session.pending = emptyLearned();
375
+ }
376
+ /** The request to send after `rejection`, or null when nothing more can be tried. */
377
+ next(provider, params, rejection, session) {
378
+ const { spent, pending } = session;
379
+ const key = this.routeKey(provider, params);
380
+ switch (rejection.kind) {
381
+ case 'tool-pairing': {
382
+ if (spent.has('tool-pairing'))
383
+ return null;
384
+ spent.add('tool-pairing');
385
+ const repaired = repairOnce(params.messages);
386
+ if (repaired === null)
387
+ return null;
388
+ this.hooks.debug?.(`Retrying after a tool-history rejection (${key})`);
389
+ return { ...params, messages: repaired };
390
+ }
391
+ case 'reasoning': {
392
+ if (spent.has('reasoning'))
393
+ return null;
394
+ spent.add('reasoning');
395
+ const messages = stripReasoning(params.messages);
396
+ if (messages === params.messages)
397
+ return null;
398
+ pending.reasoningOff.add(key);
399
+ let next = { ...params, messages };
400
+ // With thinking on, a tool turn that carries no thinking block is
401
+ // itself refused ("Expected `thinking` … but found `tool_use`"), so
402
+ // the two go together: neither is asked for in this resend.
403
+ if (params.thinking !== undefined && params.thinking.type !== 'disabled') {
404
+ next = withoutParameters(next, new Set(['thinking']));
405
+ const names = pending.latched.get(key) ?? new Set();
406
+ names.add('thinking');
407
+ pending.latched.set(key, names);
408
+ }
409
+ this.hooks.debug?.(`Retrying without reasoning blocks (${key})`);
410
+ return next;
411
+ }
412
+ case 'parameter': {
413
+ const fresh = rejection.parameters.filter((name) => !spent.has(`param:${name}`));
414
+ if (fresh.length === 0)
415
+ return null;
416
+ for (const name of fresh)
417
+ spent.add(`param:${name}`);
418
+ const names = pending.latched.get(key) ?? new Set();
419
+ for (const name of fresh)
420
+ names.add(name);
421
+ pending.latched.set(key, names);
422
+ this.hooks.debug?.(`Retrying without parameters the model refused (${key}): ${fresh.join(', ')}`);
423
+ return withoutParameters(params, new Set(fresh));
424
+ }
425
+ case 'media':
426
+ return this.nextWithoutMedia(provider, params, rejection, session);
427
+ }
428
+ }
429
+ nextWithoutMedia(provider, params, rejection, session) {
430
+ const { spent, stripsByIndex, pending } = session;
431
+ const slots = listMedia(params.messages);
432
+ if (slots.length === 0)
433
+ return null;
434
+ let victims = [];
435
+ let limited = false;
436
+ if (!rejection.generic) {
437
+ if (rejection.messageIndex !== undefined) {
438
+ const used = stripsByIndex.get(rejection.messageIndex) ?? 0;
439
+ if (used < MAX_STRIPS_PER_INDEX) {
440
+ stripsByIndex.set(rejection.messageIndex, used + 1);
441
+ victims =
442
+ mediaAtWireIndex(params.messages, slots, this.served(provider, params).providerId, rejection.messageIndex, rejection.contentIndex) ?? [];
443
+ }
444
+ }
445
+ if (victims.length === 0) {
446
+ // No exact index: the newest message that carries media.
447
+ const newest = slots[slots.length - 1];
448
+ if (newest === undefined)
449
+ return null;
450
+ const count = (stripsByIndex.get(-1) ?? 0) + 1;
451
+ if (count > MAX_STRIPS_PER_INDEX)
452
+ return null;
453
+ stripsByIndex.set(-1, count);
454
+ victims = slots.filter((slot) => slot.messageIndex === newest.messageIndex);
455
+ }
456
+ }
457
+ else {
458
+ // The reference's steps, then halving for smaller requests, down to
459
+ // none: each step keeps fewer than the request held, newest first.
460
+ const limit = GENERIC_MEDIA_LIMITS.find((candidate) => candidate < slots.length) ??
461
+ Math.floor(slots.length / 2);
462
+ spent.add(`limit:${limit}`);
463
+ pending.mediaLimit = Math.min(pending.mediaLimit ?? limit, limit);
464
+ victims = slots.slice(0, slots.length - limit);
465
+ limited = true;
466
+ }
467
+ // A count limit teaches a limit, not that these files are faulty.
468
+ if (!limited)
469
+ for (const slot of victims)
470
+ pending.rejectedMedia.add(slot.fingerprint);
471
+ this.hooks.debug?.(`Retrying without ${victims.length} media the provider rejected`);
472
+ let lastUser = -1;
473
+ for (const [index, message] of params.messages.entries()) {
474
+ if (message.role === 'user')
475
+ lastUser = index;
476
+ }
477
+ const kinds = new Set(victims.map((slot) => slot.kind));
478
+ const removal = {
479
+ count: victims.length,
480
+ kind: kinds.size === 1 ? [...kinds][0] : 'media',
481
+ current: victims.some((slot) => slot.source === 'user' && slot.messageIndex === lastUser),
482
+ limit: limited,
483
+ };
484
+ const before = session.removal;
485
+ session.removal = before
486
+ ? {
487
+ count: before.count + removal.count,
488
+ kind: before.kind === removal.kind ? before.kind : 'media',
489
+ current: before.current || removal.current,
490
+ limit: before.limit && removal.limit,
491
+ }
492
+ : removal;
493
+ return { ...params, messages: removeMedia(params.messages, victims, limited) };
494
+ }
495
+ /**
496
+ * Send `params`, repairing and resending a request the provider rejects as
497
+ * invalid until it is accepted or nothing more can be changed. The original
498
+ * rejection is thrown when nothing applies, and what the guesses taught is
499
+ * forgotten unless a resend was accepted.
500
+ */
501
+ async *stream(provider, params, session = this.session()) {
502
+ let current = this.prepare(provider, params);
503
+ let firstError;
504
+ for (;;) {
505
+ let produced = false;
506
+ let reported = false;
507
+ try {
508
+ for await (const chunk of provider.chatStream(current)) {
509
+ if (isAccepted(chunk)) {
510
+ produced = true;
511
+ this.commit(session);
512
+ if (session.removal !== undefined && !reported) {
513
+ reported = true;
514
+ const removal = session.removal;
515
+ session.removal = undefined;
516
+ await this.hooks.onMediaRemoved?.(removal);
517
+ }
518
+ }
519
+ yield chunk;
520
+ }
521
+ this.commit(session);
522
+ if (session.removal !== undefined && !reported) {
523
+ const removal = session.removal;
524
+ session.removal = undefined;
525
+ await this.hooks.onMediaRemoved?.(removal);
526
+ }
527
+ return;
528
+ }
529
+ catch (error) {
530
+ if (current.signal?.aborted)
531
+ throw current.signal.reason;
532
+ if (produced)
533
+ throw error;
534
+ firstError ??= error;
535
+ const forget = () => {
536
+ session.pending = emptyLearned();
537
+ session.removal = undefined;
538
+ throw firstError;
539
+ };
540
+ if (session.repairs >= MAX_REPAIRS_PER_REQUEST)
541
+ return forget();
542
+ if (isHandledElsewhere(error, current))
543
+ return forget();
544
+ const rejection = classifyRequestRejection(error, current);
545
+ if (rejection === null)
546
+ return forget();
547
+ const step = this.next(provider, current, rejection, session);
548
+ if (step === null)
549
+ return forget();
550
+ session.repairs++;
551
+ current = step;
552
+ }
553
+ }
554
+ }
555
+ }
556
+ /** Re-run the shared repair on the outgoing copy; null when it changes nothing or cannot. */
557
+ function repairOnce(messages) {
558
+ try {
559
+ const repaired = repairToolMessageHistory(messages);
560
+ return toolHistoryRepairChanged(repaired.report) ? repaired.messages : null;
561
+ }
562
+ catch {
563
+ return null;
564
+ }
565
+ }
566
+ function withoutParameters(params, names) {
567
+ if (names.size === 0)
568
+ return params;
569
+ const next = { ...params };
570
+ if (names.has('effort'))
571
+ next.effort = undefined;
572
+ if (names.has('thinking'))
573
+ next.thinking = undefined;
574
+ if (names.has('temperature'))
575
+ next.temperature = undefined;
576
+ if (names.has('topP'))
577
+ next.topP = undefined;
578
+ if (names.has('responseFormat'))
579
+ next.responseFormat = undefined;
580
+ return next;
581
+ }
582
+ /**
583
+ * Rejections another recovery already owns: a model that reads text only, and
584
+ * a single distinct image the provider calls invalid. Those keep their own
585
+ * commit points in `provider-rejected-image.ts`, which wraps this one.
586
+ */
587
+ function isHandledElsewhere(error, params) {
588
+ if (isProviderRejectedImageError(error) && findSingleRequestImage(params.messages) !== null) {
589
+ return true;
590
+ }
591
+ return isImageInputRefusal(error);
592
+ }
593
+ //# sourceMappingURL=request-repair.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-repair.js","sourceRoot":"","sources":["../../../../src/runtime/query/iteration/request-repair.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ import type { SessionEvent } from '../../../types/session/index.js';
5
5
  import type { Logger } from '../../../utils/logger.js';
6
6
  import type { EmitEvent } from '../events.js';
7
7
  import type { RequestImageIdentity } from '../request-rich-content.js';
8
+ import { type TextOnlyModelRecovery } from './provider-rejected-image.js';
9
+ import type { RequestRepair } from './request-repair.js';
8
10
  export interface StreamingTurnResult {
9
11
  response: ChatCompletionResponse;
10
12
  messageId: import('../../../types/ids/index.js').MessageId;
@@ -26,6 +28,10 @@ export declare function streamProviderTurn(provider: LLMProvider, params: import
26
28
  */
27
29
  announceAs?: import('../../../types/ids/index.js').MessageId, imageRecovery?: {
28
30
  readonly onAccepted: (identity: RequestImageIdentity) => Promise<void>;
31
+ /** A model refused the request for holding an image it cannot read; the retry sent none. */
32
+ readonly textOnly?: TextOnlyModelRecovery;
33
+ /** Repairs and resends a request the provider rejects as invalid. */
34
+ readonly repair?: RequestRepair;
29
35
  }, captureRequest?: boolean,
30
36
  /** The session the turn belongs to, named on the chat span as `gen_ai.conversation.id`. */
31
37
  sessionId?: import('../../../types/ids/index.js').SessionId): AsyncGenerator<SessionEvent, StreamingTurnResult>;