@namzu/sdk 35.0.0 → 37.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 (360) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/README.md +68 -41
  3. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  4. package/dist/bridge/a2a/mapper.js +2 -0
  5. package/dist/bridge/a2a/mapper.js.map +1 -1
  6. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  7. package/dist/bridge/sse/mapper.js +2 -0
  8. package/dist/bridge/sse/mapper.js.map +1 -1
  9. package/dist/compaction/extractor.d.ts +1 -1
  10. package/dist/compaction/extractor.d.ts.map +1 -1
  11. package/dist/compaction/extractor.js +15 -7
  12. package/dist/compaction/extractor.js.map +1 -1
  13. package/dist/compaction/manager.d.ts +2 -0
  14. package/dist/compaction/manager.d.ts.map +1 -1
  15. package/dist/compaction/manager.js +12 -1
  16. package/dist/compaction/manager.js.map +1 -1
  17. package/dist/compaction/verifier.d.ts.map +1 -1
  18. package/dist/compaction/verifier.js +82 -15
  19. package/dist/compaction/verifier.js.map +1 -1
  20. package/dist/contracts/schemas.d.ts +10 -10
  21. package/dist/eval/harness-verification.d.ts +63 -0
  22. package/dist/eval/harness-verification.d.ts.map +1 -0
  23. package/dist/eval/harness-verification.js +165 -0
  24. package/dist/eval/harness-verification.js.map +1 -0
  25. package/dist/eval/index.d.ts +2 -0
  26. package/dist/eval/index.d.ts.map +1 -1
  27. package/dist/eval/index.js +1 -0
  28. package/dist/eval/index.js.map +1 -1
  29. package/dist/execution/code-runtime/json-value.d.ts +10 -0
  30. package/dist/execution/code-runtime/json-value.d.ts.map +1 -0
  31. package/dist/execution/code-runtime/json-value.js +89 -0
  32. package/dist/execution/code-runtime/json-value.js.map +1 -0
  33. package/dist/execution/code-runtime/worker-program.d.ts +8 -0
  34. package/dist/execution/code-runtime/worker-program.d.ts.map +1 -0
  35. package/dist/execution/code-runtime/worker-program.js +240 -0
  36. package/dist/execution/code-runtime/worker-program.js.map +1 -0
  37. package/dist/execution/code-runtime/worker.d.ts +22 -0
  38. package/dist/execution/code-runtime/worker.d.ts.map +1 -1
  39. package/dist/execution/code-runtime/worker.js +148 -111
  40. package/dist/execution/code-runtime/worker.js.map +1 -1
  41. package/dist/manager/agent/lifecycle.d.ts +12 -0
  42. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  43. package/dist/manager/agent/lifecycle.js +306 -37
  44. package/dist/manager/agent/lifecycle.js.map +1 -1
  45. package/dist/manager/run/persistence.d.ts +2 -0
  46. package/dist/manager/run/persistence.d.ts.map +1 -1
  47. package/dist/manager/run/persistence.js +6 -0
  48. package/dist/manager/run/persistence.js.map +1 -1
  49. package/dist/provider/capabilities.d.ts +3 -1
  50. package/dist/provider/capabilities.d.ts.map +1 -1
  51. package/dist/provider/capabilities.js +13 -0
  52. package/dist/provider/capabilities.js.map +1 -1
  53. package/dist/provider/fallback.d.ts.map +1 -1
  54. package/dist/provider/fallback.js +2 -0
  55. package/dist/provider/fallback.js.map +1 -1
  56. package/dist/provider/token-budget.d.ts.map +1 -1
  57. package/dist/provider/token-budget.js +56 -8
  58. package/dist/provider/token-budget.js.map +1 -1
  59. package/dist/public-runtime.d.ts +5 -3
  60. package/dist/public-runtime.d.ts.map +1 -1
  61. package/dist/public-runtime.js +3 -2
  62. package/dist/public-runtime.js.map +1 -1
  63. package/dist/public-tools.d.ts +1 -1
  64. package/dist/public-tools.d.ts.map +1 -1
  65. package/dist/public-tools.js +1 -1
  66. package/dist/public-tools.js.map +1 -1
  67. package/dist/public-types.d.ts +1 -0
  68. package/dist/public-types.d.ts.map +1 -1
  69. package/dist/registry/tool/execute.d.ts +3 -0
  70. package/dist/registry/tool/execute.d.ts.map +1 -1
  71. package/dist/registry/tool/execute.js +11 -80
  72. package/dist/registry/tool/execute.js.map +1 -1
  73. package/dist/run/command-gate.d.ts.map +1 -1
  74. package/dist/run/command-gate.js +65 -12
  75. package/dist/run/command-gate.js.map +1 -1
  76. package/dist/run/index.d.ts +2 -0
  77. package/dist/run/index.d.ts.map +1 -1
  78. package/dist/run/index.js +1 -0
  79. package/dist/run/index.js.map +1 -1
  80. package/dist/run/memory-promoter.d.ts +3 -35
  81. package/dist/run/memory-promoter.d.ts.map +1 -1
  82. package/dist/run/memory-promoter.js +32 -40
  83. package/dist/run/memory-promoter.js.map +1 -1
  84. package/dist/run/memory-recall.d.ts +25 -0
  85. package/dist/run/memory-recall.d.ts.map +1 -0
  86. package/dist/run/memory-recall.js +228 -0
  87. package/dist/run/memory-recall.js.map +1 -0
  88. package/dist/run/reporter.d.ts.map +1 -1
  89. package/dist/run/reporter.js +1 -0
  90. package/dist/run/reporter.js.map +1 -1
  91. package/dist/run/token-budget.d.ts +2 -0
  92. package/dist/run/token-budget.d.ts.map +1 -1
  93. package/dist/run/token-budget.js +4 -0
  94. package/dist/run/token-budget.js.map +1 -1
  95. package/dist/run/workspace-fingerprint.d.ts +10 -3
  96. package/dist/run/workspace-fingerprint.d.ts.map +1 -1
  97. package/dist/run/workspace-fingerprint.js +17 -8
  98. package/dist/run/workspace-fingerprint.js.map +1 -1
  99. package/dist/runtime/query/checkpoint.d.ts +14 -0
  100. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  101. package/dist/runtime/query/checkpoint.js +82 -1
  102. package/dist/runtime/query/checkpoint.js.map +1 -1
  103. package/dist/runtime/query/executor.d.ts +6 -0
  104. package/dist/runtime/query/executor.d.ts.map +1 -1
  105. package/dist/runtime/query/executor.js +120 -24
  106. package/dist/runtime/query/executor.js.map +1 -1
  107. package/dist/runtime/query/index.d.ts +12 -8
  108. package/dist/runtime/query/index.d.ts.map +1 -1
  109. package/dist/runtime/query/index.js +55 -7
  110. package/dist/runtime/query/index.js.map +1 -1
  111. package/dist/runtime/query/iteration/index.d.ts +13 -3
  112. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  113. package/dist/runtime/query/iteration/index.js +356 -42
  114. package/dist/runtime/query/iteration/index.js.map +1 -1
  115. package/dist/runtime/query/iteration/native-output.d.ts +10 -0
  116. package/dist/runtime/query/iteration/native-output.d.ts.map +1 -0
  117. package/dist/runtime/query/iteration/native-output.js +32 -0
  118. package/dist/runtime/query/iteration/native-output.js.map +1 -0
  119. package/dist/runtime/query/iteration/phases/advisory.d.ts.map +1 -1
  120. package/dist/runtime/query/iteration/phases/advisory.js +18 -13
  121. package/dist/runtime/query/iteration/phases/advisory.js.map +1 -1
  122. package/dist/runtime/query/iteration/phases/compaction.d.ts +2 -0
  123. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  124. package/dist/runtime/query/iteration/phases/compaction.js +32 -11
  125. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  126. package/dist/runtime/query/iteration/phases/context.d.ts +11 -0
  127. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  128. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  129. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  130. package/dist/runtime/query/iteration/phases/tool-review.js +1 -1
  131. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  132. package/dist/runtime/query/iteration/phases/working-memory.d.ts +1 -1
  133. package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
  134. package/dist/runtime/query/iteration/phases/working-memory.js +23 -6
  135. package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
  136. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  137. package/dist/runtime/query/iteration/stream-turn.js +12 -5
  138. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  139. package/dist/runtime/query/prompt.d.ts.map +1 -1
  140. package/dist/runtime/query/prompt.js +14 -4
  141. package/dist/runtime/query/prompt.js.map +1 -1
  142. package/dist/runtime/query/steering.d.ts +6 -2
  143. package/dist/runtime/query/steering.d.ts.map +1 -1
  144. package/dist/runtime/query/steering.js +17 -2
  145. package/dist/runtime/query/steering.js.map +1 -1
  146. package/dist/runtime/query/tool-call-budget.d.ts +19 -0
  147. package/dist/runtime/query/tool-call-budget.d.ts.map +1 -0
  148. package/dist/runtime/query/tool-call-budget.js +110 -0
  149. package/dist/runtime/query/tool-call-budget.js.map +1 -0
  150. package/dist/runtime/query/tooling.d.ts +2 -0
  151. package/dist/runtime/query/tooling.d.ts.map +1 -1
  152. package/dist/runtime/query/tooling.js +4 -0
  153. package/dist/runtime/query/tooling.js.map +1 -1
  154. package/dist/sandbox/file-walk-program.d.ts +3 -0
  155. package/dist/sandbox/file-walk-program.d.ts.map +1 -0
  156. package/dist/sandbox/file-walk-program.js +94 -0
  157. package/dist/sandbox/file-walk-program.js.map +1 -0
  158. package/dist/sandbox/file-walk.d.ts +12 -0
  159. package/dist/sandbox/file-walk.d.ts.map +1 -0
  160. package/dist/sandbox/file-walk.js +429 -0
  161. package/dist/sandbox/file-walk.js.map +1 -0
  162. package/dist/sandbox/index.d.ts +2 -0
  163. package/dist/sandbox/index.d.ts.map +1 -1
  164. package/dist/sandbox/index.js +1 -0
  165. package/dist/sandbox/index.js.map +1 -1
  166. package/dist/sandbox/provider/local.d.ts.map +1 -1
  167. package/dist/sandbox/provider/local.js +9 -0
  168. package/dist/sandbox/provider/local.js.map +1 -1
  169. package/dist/scheduler/completion-inbox.d.ts +3 -2
  170. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  171. package/dist/scheduler/completion-inbox.js +29 -15
  172. package/dist/scheduler/completion-inbox.js.map +1 -1
  173. package/dist/scheduler/local.d.ts.map +1 -1
  174. package/dist/scheduler/local.js +1 -0
  175. package/dist/scheduler/local.js.map +1 -1
  176. package/dist/session/handoff/capacity.d.ts +2 -2
  177. package/dist/session/handoff/capacity.d.ts.map +1 -1
  178. package/dist/session/handoff/capacity.js +3 -2
  179. package/dist/session/handoff/capacity.js.map +1 -1
  180. package/dist/store/memory/disk.d.ts +6 -2
  181. package/dist/store/memory/disk.d.ts.map +1 -1
  182. package/dist/store/memory/disk.js +42 -25
  183. package/dist/store/memory/disk.js.map +1 -1
  184. package/dist/store/memory/index.d.ts +4 -0
  185. package/dist/store/memory/index.d.ts.map +1 -1
  186. package/dist/store/memory/index.js +55 -19
  187. package/dist/store/memory/index.js.map +1 -1
  188. package/dist/store/memory/memory.d.ts +3 -2
  189. package/dist/store/memory/memory.d.ts.map +1 -1
  190. package/dist/store/memory/memory.js +11 -2
  191. package/dist/store/memory/memory.js.map +1 -1
  192. package/dist/store/memory/operation-lock.d.ts +11 -0
  193. package/dist/store/memory/operation-lock.d.ts.map +1 -0
  194. package/dist/store/memory/operation-lock.js +94 -0
  195. package/dist/store/memory/operation-lock.js.map +1 -0
  196. package/dist/tools/builtins/bash.d.ts.map +1 -1
  197. package/dist/tools/builtins/bash.js +215 -59
  198. package/dist/tools/builtins/bash.js.map +1 -1
  199. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  200. package/dist/tools/builtins/computer-use.js +60 -10
  201. package/dist/tools/builtins/computer-use.js.map +1 -1
  202. package/dist/tools/builtins/glob.d.ts +2 -1
  203. package/dist/tools/builtins/glob.d.ts.map +1 -1
  204. package/dist/tools/builtins/glob.js +95 -103
  205. package/dist/tools/builtins/glob.js.map +1 -1
  206. package/dist/tools/builtins/grep.d.ts.map +1 -1
  207. package/dist/tools/builtins/grep.js +155 -111
  208. package/dist/tools/builtins/grep.js.map +1 -1
  209. package/dist/tools/builtins/ls.js +2 -2
  210. package/dist/tools/builtins/ls.js.map +1 -1
  211. package/dist/tools/builtins/run-code.d.ts +6 -0
  212. package/dist/tools/builtins/run-code.d.ts.map +1 -1
  213. package/dist/tools/builtins/run-code.js +15 -4
  214. package/dist/tools/builtins/run-code.js.map +1 -1
  215. package/dist/tools/builtins/search-tools.d.ts.map +1 -1
  216. package/dist/tools/builtins/search-tools.js +14 -2
  217. package/dist/tools/builtins/search-tools.js.map +1 -1
  218. package/dist/tools/defineTool.d.ts +2 -0
  219. package/dist/tools/defineTool.d.ts.map +1 -1
  220. package/dist/tools/defineTool.js +3 -0
  221. package/dist/tools/defineTool.js.map +1 -1
  222. package/dist/tools/memory/delete.d.ts +4 -0
  223. package/dist/tools/memory/delete.d.ts.map +1 -0
  224. package/dist/tools/memory/delete.js +26 -0
  225. package/dist/tools/memory/delete.js.map +1 -0
  226. package/dist/tools/memory/index.d.ts +2 -0
  227. package/dist/tools/memory/index.d.ts.map +1 -1
  228. package/dist/tools/memory/index.js +6 -0
  229. package/dist/tools/memory/index.js.map +1 -1
  230. package/dist/tools/memory/save.d.ts.map +1 -1
  231. package/dist/tools/memory/save.js +3 -2
  232. package/dist/tools/memory/save.js.map +1 -1
  233. package/dist/tools/memory/search.d.ts.map +1 -1
  234. package/dist/tools/memory/search.js +12 -5
  235. package/dist/tools/memory/search.js.map +1 -1
  236. package/dist/tools/memory/update.d.ts +4 -0
  237. package/dist/tools/memory/update.d.ts.map +1 -0
  238. package/dist/tools/memory/update.js +47 -0
  239. package/dist/tools/memory/update.js.map +1 -0
  240. package/dist/types/agent/scheduler.d.ts +5 -0
  241. package/dist/types/agent/scheduler.d.ts.map +1 -1
  242. package/dist/types/agent/task.d.ts +10 -0
  243. package/dist/types/agent/task.d.ts.map +1 -1
  244. package/dist/types/computer-use/index.d.ts +6 -0
  245. package/dist/types/computer-use/index.d.ts.map +1 -1
  246. package/dist/types/computer-use/index.js.map +1 -1
  247. package/dist/types/errors/catalog.js +1 -1
  248. package/dist/types/errors/catalog.js.map +1 -1
  249. package/dist/types/hitl/index.d.ts +11 -1
  250. package/dist/types/hitl/index.d.ts.map +1 -1
  251. package/dist/types/hitl/index.js.map +1 -1
  252. package/dist/types/memory/index.d.ts +14 -1
  253. package/dist/types/memory/index.d.ts.map +1 -1
  254. package/dist/types/project/entity.d.ts +1 -0
  255. package/dist/types/project/entity.d.ts.map +1 -1
  256. package/dist/types/provider/config.d.ts +2 -0
  257. package/dist/types/provider/config.d.ts.map +1 -1
  258. package/dist/types/provider/model.d.ts +4 -0
  259. package/dist/types/provider/model.d.ts.map +1 -1
  260. package/dist/types/run/answer-review.d.ts +2 -0
  261. package/dist/types/run/answer-review.d.ts.map +1 -1
  262. package/dist/types/run/events.d.ts +9 -0
  263. package/dist/types/run/events.d.ts.map +1 -1
  264. package/dist/types/run/events.js.map +1 -1
  265. package/dist/types/run/prepare-step.d.ts +19 -1
  266. package/dist/types/run/prepare-step.d.ts.map +1 -1
  267. package/dist/types/sandbox/index.d.ts +20 -0
  268. package/dist/types/sandbox/index.d.ts.map +1 -1
  269. package/dist/types/sandbox/index.js.map +1 -1
  270. package/dist/types/structured-output/index.d.ts +8 -2
  271. package/dist/types/structured-output/index.d.ts.map +1 -1
  272. package/dist/types/tool/index.d.ts +15 -0
  273. package/dist/types/tool/index.d.ts.map +1 -1
  274. package/dist/types/tool/index.js.map +1 -1
  275. package/dist/utils/json-snapshot.d.ts +3 -0
  276. package/dist/utils/json-snapshot.d.ts.map +1 -0
  277. package/dist/utils/json-snapshot.js +79 -0
  278. package/dist/utils/json-snapshot.js.map +1 -0
  279. package/package.json +8 -1
  280. package/src/bridge/a2a/mapper.ts +2 -0
  281. package/src/bridge/sse/mapper.ts +2 -0
  282. package/src/compaction/extractor.ts +21 -8
  283. package/src/compaction/manager.ts +11 -1
  284. package/src/compaction/verifier.ts +80 -18
  285. package/src/eval/harness-verification.ts +270 -0
  286. package/src/eval/index.ts +10 -0
  287. package/src/execution/code-runtime/json-value.ts +82 -0
  288. package/src/execution/code-runtime/worker-program.ts +239 -0
  289. package/src/execution/code-runtime/worker.ts +164 -111
  290. package/src/manager/agent/lifecycle.ts +340 -45
  291. package/src/manager/run/persistence.ts +7 -0
  292. package/src/provider/capabilities.ts +25 -1
  293. package/src/provider/fallback.ts +2 -0
  294. package/src/provider/token-budget.ts +52 -8
  295. package/src/public-runtime.ts +6 -1
  296. package/src/public-tools.ts +5 -1
  297. package/src/public-types.ts +1 -0
  298. package/src/registry/tool/execute.ts +17 -79
  299. package/src/run/command-gate.ts +61 -13
  300. package/src/run/index.ts +2 -0
  301. package/src/run/memory-promoter.ts +32 -40
  302. package/src/run/memory-recall.ts +254 -0
  303. package/src/run/reporter.ts +1 -0
  304. package/src/run/token-budget.ts +4 -0
  305. package/src/run/workspace-fingerprint.ts +17 -8
  306. package/src/runtime/query/checkpoint.ts +96 -2
  307. package/src/runtime/query/executor.ts +131 -28
  308. package/src/runtime/query/index.ts +81 -16
  309. package/src/runtime/query/iteration/index.ts +406 -53
  310. package/src/runtime/query/iteration/native-output.ts +35 -0
  311. package/src/runtime/query/iteration/phases/advisory.ts +21 -11
  312. package/src/runtime/query/iteration/phases/compaction.ts +36 -14
  313. package/src/runtime/query/iteration/phases/context.ts +11 -0
  314. package/src/runtime/query/iteration/phases/tool-review.ts +5 -1
  315. package/src/runtime/query/iteration/phases/working-memory.ts +23 -5
  316. package/src/runtime/query/iteration/stream-turn.ts +11 -5
  317. package/src/runtime/query/prompt.ts +21 -4
  318. package/src/runtime/query/steering.ts +19 -2
  319. package/src/runtime/query/tool-call-budget.ts +115 -0
  320. package/src/runtime/query/tooling.ts +6 -0
  321. package/src/sandbox/file-walk-program.ts +93 -0
  322. package/src/sandbox/file-walk.ts +463 -0
  323. package/src/sandbox/index.ts +2 -0
  324. package/src/sandbox/provider/local.ts +13 -0
  325. package/src/scheduler/completion-inbox.ts +29 -19
  326. package/src/scheduler/local.ts +1 -0
  327. package/src/session/handoff/capacity.ts +7 -3
  328. package/src/store/memory/disk.ts +52 -30
  329. package/src/store/memory/index.ts +75 -27
  330. package/src/store/memory/memory.ts +18 -6
  331. package/src/store/memory/operation-lock.ts +99 -0
  332. package/src/tools/builtins/bash.ts +230 -58
  333. package/src/tools/builtins/computer-use.ts +61 -7
  334. package/src/tools/builtins/glob.ts +104 -122
  335. package/src/tools/builtins/grep.ts +166 -132
  336. package/src/tools/builtins/ls.ts +2 -2
  337. package/src/tools/builtins/run-code.ts +24 -5
  338. package/src/tools/builtins/search-tools.ts +18 -3
  339. package/src/tools/defineTool.ts +5 -0
  340. package/src/tools/memory/delete.ts +29 -0
  341. package/src/tools/memory/index.ts +6 -0
  342. package/src/tools/memory/save.ts +4 -2
  343. package/src/tools/memory/search.ts +12 -5
  344. package/src/tools/memory/update.ts +50 -0
  345. package/src/types/agent/scheduler.ts +6 -0
  346. package/src/types/agent/task.ts +13 -0
  347. package/src/types/computer-use/index.ts +6 -0
  348. package/src/types/errors/catalog.ts +1 -1
  349. package/src/types/hitl/index.ts +11 -1
  350. package/src/types/memory/index.ts +16 -1
  351. package/src/types/project/entity.ts +1 -0
  352. package/src/types/provider/config.ts +2 -0
  353. package/src/types/provider/model.ts +4 -0
  354. package/src/types/run/answer-review.ts +2 -0
  355. package/src/types/run/events.ts +10 -0
  356. package/src/types/run/prepare-step.ts +19 -1
  357. package/src/types/sandbox/index.ts +21 -0
  358. package/src/types/structured-output/index.ts +15 -2
  359. package/src/types/tool/index.ts +16 -0
  360. package/src/utils/json-snapshot.ts +76 -0
@@ -1,4 +1,6 @@
1
- import type { Message } from '../../types/message/index.js';
1
+ import type { Message, UserMessage } from '../../types/message/index.js';
2
+ /** User-role runtime reports are context, not new operator intent. */
3
+ export declare function isOperatorUserMessage(message: Message): message is UserMessage;
2
4
  /**
3
5
  * Guidance a host hands to a turn that is already running.
4
6
  *
@@ -81,5 +83,7 @@ export declare function formatSteeringNote(text: string): string;
81
83
  * to handle: a turn that called no tools has nothing in flight, so guidance
82
84
  * belongs to the next turn and stays queued for it.
83
85
  */
84
- export declare function attachSteering(messages: readonly Message[], channel: SteeringChannel | undefined): readonly Message[];
86
+ export declare function attachSteering(messages: readonly Message[], channel: SteeringChannel | undefined,
87
+ /** Receives accepted operator text, never inferred from a tool's output. */
88
+ onDelivered?: (text: string) => void): readonly Message[];
85
89
  //# sourceMappingURL=steering.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/steering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,eAAe;IAC/B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzB,yDAAyD;IACzD,KAAK,IAAI,MAAM,GAAG,SAAS,CAAA;IAE3B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,qBAAa,eAAgB,YAAW,eAAe;IACtD,OAAO,CAAC,MAAM,CAAe;IAE7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,KAAK,IAAI,MAAM,GAAG,SAAS;IAO3B,IAAI,OAAO,IAAI,OAAO,CAErB;CACD;AAED;;;;;;;;;;;;GAYG;AACH,+EAA+E;AAC/E,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC9B,SAAS,OAAO,EAAE,CAoBpB;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,GAClC,SAAS,OAAO,EAAE,CA8BpB"}
1
+ {"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/steering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAExE,sEAAsE;AACtE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,WAAW,CAQ9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,eAAe;IAC/B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzB,yDAAyD;IACzD,KAAK,IAAI,MAAM,GAAG,SAAS,CAAA;IAE3B,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CACzB;AAED,qBAAa,eAAgB,YAAW,eAAe;IACtD,OAAO,CAAC,MAAM,CAAe;IAE7B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAMzB,KAAK,IAAI,MAAM,GAAG,SAAS;IAO3B,IAAI,OAAO,IAAI,OAAO,CAErB;CACD;AAED;;;;;;;;;;;;GAYG;AACH,+EAA+E;AAC/E,wBAAgB,YAAY,CAC3B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAC9B,SAAS,OAAO,EAAE,CAoBpB;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS;AACpC,4EAA4E;AAC5E,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAClC,SAAS,OAAO,EAAE,CAkCpB"}
@@ -1,3 +1,12 @@
1
+ /** User-role runtime reports are context, not new operator intent. */
2
+ export function isOperatorUserMessage(message) {
3
+ if (message.role !== 'user')
4
+ return false;
5
+ const source = message.source;
6
+ return (!source ||
7
+ source.type === 'goal-round' ||
8
+ (source.type === 'runtime-context' && source.kind === 'steering'));
9
+ }
1
10
  export class SteeringBinding {
2
11
  queued = [];
3
12
  steer(text) {
@@ -73,7 +82,9 @@ export function formatSteeringNote(text) {
73
82
  * to handle: a turn that called no tools has nothing in flight, so guidance
74
83
  * belongs to the next turn and stays queued for it.
75
84
  */
76
- export function attachSteering(messages, channel) {
85
+ export function attachSteering(messages, channel,
86
+ /** Receives accepted operator text, never inferred from a tool's output. */
87
+ onDelivered) {
77
88
  if (!channel?.pending)
78
89
  return messages;
79
90
  let lastToolIndex = -1;
@@ -100,7 +111,11 @@ export function attachSteering(messages, channel) {
100
111
  return messages;
101
112
  }
102
113
  const next = [...messages];
103
- next[lastToolIndex] = { ...target, content: target.content + formatSteeringNote(guidance) };
114
+ next[lastToolIndex] = {
115
+ ...target,
116
+ content: target.content + formatSteeringNote(guidance),
117
+ };
118
+ onDelivered?.(guidance);
104
119
  return next;
105
120
  }
106
121
  //# sourceMappingURL=steering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"steering.js","sourceRoot":"","sources":["../../../src/runtime/query/steering.ts"],"names":[],"mappings":"AAoDA,MAAM,OAAO,eAAe;IACnB,MAAM,GAAa,EAAE,CAAA;IAE7B,KAAK,CAAC,IAAY;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO;YAAE,OAAM;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,KAAK;QACJ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,OAAO,MAAM,CAAA;IACd,CAAC;IAED,IAAI,OAAO;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;IAC9B,CAAC;CACD;AAED;;;;;;;;;;;;GAYG;AACH,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAC3B,QAA4B,EAC5B,OAAoC,EACpC,MAAgC;IAEhC,IAAI,CAAC,OAAO,EAAE,OAAO;QAAE,OAAO,QAAQ,CAAA;IACtC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAA;IACtB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,aAAa,GAAG,KAAK,CAAA;YACrB,MAAK;QACN,CAAC;IACF,CAAC;IACD,IAAI,aAAa,KAAK,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IAC5B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAY,CAAA;IACjD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,QAAQ,CAAA;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;IAC3E,OAAO,IAAI,CAAA;AACZ,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,OAAO,gCAAgC,IAAI,EAAE,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,0EAA0E,IAAI,EAAE,CAAA;AACxF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC7B,QAA4B,EAC5B,OAAoC;IAEpC,IAAI,CAAC,OAAO,EAAE,OAAO;QAAE,OAAO,QAAQ,CAAA;IAEtC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAA;IACtB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;YACtC,aAAa,GAAG,KAAK,CAAA;YACrB,MAAK;QACN,CAAC;IACF,CAAC;IACD,IAAI,aAAa,KAAK,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IAEzC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA;IAChC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAA;IAE3C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAY,CAAA;IACjD,wEAAwE;IACxE,sEAAsE;IACtE,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACvB,OAAO,QAAQ,CAAA;IAChB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAA;IAC1B,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAA;IAC3F,OAAO,IAAI,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"steering.js","sourceRoot":"","sources":["../../../src/runtime/query/steering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { RunId } from '../../types/ids/index.js';
2
+ import type { RunEvent } from '../../types/run/index.js';
3
+ export declare function assertMaxToolCalls(limit: number | undefined): void;
4
+ /** A run-owned admission ledger; durability belongs to the run's event store. */
5
+ export declare class ToolCallBudget {
6
+ private readonly limit;
7
+ private readonly runId;
8
+ private readonly emit;
9
+ private readonly read?;
10
+ private used;
11
+ private initialized?;
12
+ private chain;
13
+ private failed;
14
+ constructor(limit: number, runId: RunId, emit: (event: RunEvent) => Promise<void>, read?: (() => Promise<readonly RunEvent[]>) | undefined);
15
+ private initialize;
16
+ /** Reserve before work, never refund. A refused group consumes no new slots. */
17
+ admit(count: number, kind: 'batch' | 'nested' | 'retry', signal: AbortSignal): Promise<string | undefined>;
18
+ }
19
+ //# sourceMappingURL=tool-call-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-budget.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tool-call-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAExD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAIlE;AAED,iFAAiF;AACjF,qBAAa,cAAc;IAOzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IATvB,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,MAAM,CAAS;gBAGL,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,EACxC,IAAI,CAAC,GAAE,MAAM,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,aAAA;YAK7C,UAAU;IA4CxB,gFAAgF;IAC1E,KAAK,CACV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,EAClC,MAAM,EAAE,WAAW,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAwC9B"}
@@ -0,0 +1,110 @@
1
+ export function assertMaxToolCalls(limit) {
2
+ if (limit !== undefined && (!Number.isSafeInteger(limit) || limit < 0)) {
3
+ throw new RangeError('maxToolCalls must be a nonnegative safe integer.');
4
+ }
5
+ }
6
+ /** A run-owned admission ledger; durability belongs to the run's event store. */
7
+ export class ToolCallBudget {
8
+ limit;
9
+ runId;
10
+ emit;
11
+ read;
12
+ used = 0;
13
+ initialized;
14
+ chain = Promise.resolve();
15
+ failed;
16
+ constructor(limit, runId, emit, read) {
17
+ this.limit = limit;
18
+ this.runId = runId;
19
+ this.emit = emit;
20
+ this.read = read;
21
+ assertMaxToolCalls(limit);
22
+ }
23
+ async initialize() {
24
+ const events = (await this.read?.()) ?? [];
25
+ if (events.length > 100_000)
26
+ throw new Error('Tool-call budget recovery exceeds 100000 events.');
27
+ let initialized = false;
28
+ let expectedSeq = 0;
29
+ for (const event of events) {
30
+ // A replayed transcript must be complete and belong to this run.
31
+ if (event.runId !== this.runId || event.seq !== ++expectedSeq)
32
+ throw new Error('Tool-call budget recovery requires a complete run event log.');
33
+ if (event.type === 'tool_calls_admitted') {
34
+ if (!Number.isSafeInteger(event.count) ||
35
+ event.count < 0 ||
36
+ !Number.isSafeInteger(event.used) ||
37
+ event.used !== this.used + event.count ||
38
+ !Number.isSafeInteger(event.limit) ||
39
+ event.limit < event.used ||
40
+ !['initialize', 'batch', 'nested', 'retry'].includes(event.kind) ||
41
+ (event.kind === 'initialize'
42
+ ? initialized || event.count !== 0
43
+ : !initialized || event.count === 0))
44
+ throw new Error('Invalid tool-call admission ledger.');
45
+ initialized = true;
46
+ this.used = event.used;
47
+ }
48
+ else if (!initialized &&
49
+ (event.type === 'tool_executing' || event.type === 'tool_completed')) {
50
+ throw new Error('Cannot establish tool-call usage for an earlier unbudgeted execution.');
51
+ }
52
+ }
53
+ if (!initialized) {
54
+ await this.emit({
55
+ type: 'tool_calls_admitted',
56
+ runId: this.runId,
57
+ kind: 'initialize',
58
+ count: 0,
59
+ used: 0,
60
+ limit: this.limit,
61
+ });
62
+ }
63
+ }
64
+ /** Reserve before work, never refund. A refused group consumes no new slots. */
65
+ async admit(count, kind, signal) {
66
+ signal.throwIfAborted();
67
+ const previous = this.chain;
68
+ let release;
69
+ this.chain = new Promise((resolve) => {
70
+ release = resolve;
71
+ });
72
+ try {
73
+ await previous;
74
+ signal.throwIfAborted();
75
+ if (this.failed !== undefined)
76
+ throw this.failed;
77
+ this.initialized ??= this.initialize();
78
+ await this.initialized;
79
+ signal.throwIfAborted();
80
+ if (count > Math.max(0, this.limit - this.used)) {
81
+ return `Tool-call budget exhausted: this ${kind} needs ${count} slots; ${Math.max(0, this.limit - this.used)} remain of maxToolCalls=${this.limit}. No calls in this admission were executed.`;
82
+ }
83
+ if (count === 0)
84
+ return undefined;
85
+ const used = this.used + count;
86
+ try {
87
+ await this.emit({
88
+ type: 'tool_calls_admitted',
89
+ runId: this.runId,
90
+ kind,
91
+ count,
92
+ used,
93
+ limit: this.limit,
94
+ });
95
+ }
96
+ catch (error) {
97
+ // An uncertain write must not be retried as a fresh allowance.
98
+ this.failed = error ?? new Error('Tool-call admission persistence failed.');
99
+ throw this.failed;
100
+ }
101
+ this.used = used;
102
+ signal.throwIfAborted();
103
+ return undefined;
104
+ }
105
+ finally {
106
+ release();
107
+ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=tool-call-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-budget.js","sourceRoot":"","sources":["../../../src/runtime/query/tool-call-budget.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,8 @@ export interface ToolingBootstrapConfig {
37
37
  web?: import('../../types/tool/index.js').ToolContext['web'];
38
38
  toolRetryBackoff?: Partial<BackoffPolicy>;
39
39
  maxToolConcurrency?: number;
40
+ maxToolCalls?: number;
41
+ readToolCallBudgetEvents?: () => Promise<readonly RunEvent[]>;
40
42
  maxToolOutputChars?: number;
41
43
  maxToolContentBytes?: number;
42
44
  toolOutputDir?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EACX,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,+CAA+C;IAC/C,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,+EAA+E;IAC/E,cAAc,EAAE,cAAc,GAAG,CAAC,MAAM,cAAc,CAAC,CAAA;IACvD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,aAAa,CAAC,EAAE,sBAAsB,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gEAAgE;IAChE,cAAc,CAAC,EAAE,qBAAqB,CAAA;IACtC,4CAA4C;IAC5C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,yCAAyC;IACzC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,oCAAoC;IACpC,GAAG,CAAC,EAAE,OAAO,2BAA2B,EAAE,WAAW,CAAC,KAAK,CAAC,CAAA;IAC5D,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1D,qFAAqF;IACrF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,CAAA;CACnD;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,GACT,YAAY;CA6Cf"}
1
+ {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,10 @@ export class ToolingBootstrap {
22
22
  ...(config.toolRetryBackoff !== undefined
23
23
  ? { toolRetryBackoff: config.toolRetryBackoff }
24
24
  : {}),
25
+ ...(config.maxToolCalls !== undefined ? { maxToolCalls: config.maxToolCalls } : {}),
26
+ ...(config.readToolCallBudgetEvents
27
+ ? { readToolCallBudgetEvents: config.readToolCallBudgetEvents }
28
+ : {}),
25
29
  ...(config.maxToolConcurrency !== undefined
26
30
  ? { maxToolConcurrency: config.maxToolConcurrency }
27
31
  : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAwC5C,MAAM,OAAO,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EACpB,GAAW;QAEX,OAAO,IAAI,YAAY,CACtB;YACC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM;gBACvC,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE;gBACzD,CAAC,CAAC,EAAE,CAAC;YACN,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE;gBACrD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,EACD,aAAa,EACb,SAAS,EACT,GAAG,CACH,CAAA;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AA0C5C,MAAM,OAAO,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EACpB,GAAW;QAEX,OAAO,IAAI,YAAY,CACtB;YACC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,MAAM;gBACvC,CAAC,CAAC,EAAE,qBAAqB,EAAE,MAAM,CAAC,qBAAqB,EAAE;gBACzD,CAAC,CAAC,EAAE,CAAC;YACN,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnF,GAAG,CAAC,MAAM,CAAC,wBAAwB;gBAClC,CAAC,CAAC,EAAE,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,EAAE;gBAC/D,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE;gBACrD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,EACD,aAAa,EACb,SAAS,EACT,GAAG,CACH,CAAA;IACF,CAAC;CACD"}
@@ -0,0 +1,3 @@
1
+ /** Stable guest code: host bundlers must never rewrite a function we serialize. */
2
+ export declare const FILE_WALK_PROGRAM: string;
3
+ //# sourceMappingURL=file-walk-program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-walk-program.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QA2F7B,CAAA"}
@@ -0,0 +1,94 @@
1
+ /** Stable guest code: host bundlers must never rewrite a function we serialize. */
2
+ export const FILE_WALK_PROGRAM = String.raw `
3
+ const fs = require('node:fs/promises');
4
+ const path = require('node:path');
5
+ const plan = JSON.parse(process.argv[1]);
6
+ const missing = error => ['ENOENT', 'ENOTDIR'].includes(error.code);
7
+ const write = async value => {
8
+ if (!process.stdout.write(JSON.stringify(value) + '\n')) {
9
+ await new Promise(resolve => process.stdout.once('drain', resolve));
10
+ }
11
+ };
12
+ const visit = count => {
13
+ if (count > plan.maxVisitedEntries) {
14
+ throw Object.assign(new Error('File search stopped after examining ' + plan.maxVisitedEntries + ' entries; narrow its root or pattern.'), {code:'ERR_FILE_WALK_LIMIT'});
15
+ }
16
+ };
17
+ const patterns = plan.patterns.map(set => set.map(part =>
18
+ typeof part === 'object' && part !== null ? new RegExp(part.source, part.flags + 's') : part));
19
+ const canDescend = relative => patterns.some(pattern => {
20
+ const closure = states => {
21
+ for (const index of states) if (pattern[index] === null) states.add(index + 1);
22
+ return states;
23
+ };
24
+ let states = closure(new Set([0]));
25
+ for (const name of relative.split('/')) {
26
+ const next = new Set();
27
+ for (const index of states) {
28
+ const segment = pattern[index];
29
+ if (segment === null) {
30
+ if (plan.includeHidden || !name.startsWith('.')) next.add(index);
31
+ } else if (typeof segment === 'string' ? segment === name : segment?.test(name)) next.add(index + 1);
32
+ }
33
+ states = closure(next);
34
+ if (states.size === 0) return false;
35
+ }
36
+ return [...states].some(index => index < pattern.length);
37
+ });
38
+ async function run() {
39
+ const stack = [];
40
+ let visited = 0;
41
+ let emitted = 0;
42
+ const matchers = plan.expressions.map(({source, flags}) => new RegExp(source, flags + 's'));
43
+ const maxDepth = plan.maxDepth === null ? Infinity : plan.maxDepth;
44
+ const open = async (absolute, relative, depth) => {
45
+ try { stack.push({dir: await fs.opendir(absolute), relative, depth}); }
46
+ catch (error) { if (!missing(error)) throw error; }
47
+ };
48
+ try {
49
+ if (plan.patterns.length === 0) return;
50
+ let canonicalRoot;
51
+ try { canonicalRoot = await fs.realpath(plan.root); }
52
+ catch (error) { if (missing(error)) return; throw error; }
53
+ if (canonicalRoot !== path.resolve(plan.root)) throw new Error('File walk root follows a symbolic link; use its authorized real directory');
54
+ let start = plan.root;
55
+ for (const part of plan.prefix) {
56
+ start = path.join(start, part);
57
+ let info;
58
+ try { info = await fs.lstat(start); }
59
+ catch (error) { if (missing(error)) return; throw error; }
60
+ visit(++visited);
61
+ if (!info.isDirectory()) return;
62
+ }
63
+ if (plan.prefix.length >= maxDepth) return;
64
+ await open(start, plan.prefix.join('/'), plan.prefix.length);
65
+ while (stack.length) {
66
+ const frame = stack[stack.length - 1];
67
+ const entry = await frame.dir.read();
68
+ if (!entry) { stack.pop(); await frame.dir.close(); continue; }
69
+ visit(++visited);
70
+ const relative = frame.relative ? frame.relative + '/' + entry.name : entry.name;
71
+ const absolute = path.join(plan.root, relative);
72
+ const depth = frame.depth + 1;
73
+ if (entry.isDirectory()) {
74
+ if (depth < maxDepth && canDescend(relative)) await open(absolute, relative, depth);
75
+ continue;
76
+ }
77
+ if (!entry.isFile() || !matchers.some(matcher => matcher.test(relative))) continue;
78
+ let info;
79
+ try { info = await fs.lstat(absolute); }
80
+ catch (error) { if (missing(error)) continue; throw error; }
81
+ if (!info.isFile()) continue;
82
+ await write({type:'entry', path:absolute, size:info.size});
83
+ if (++emitted >= plan.maxEntries) return;
84
+ }
85
+ } finally {
86
+ for (const {dir} of stack.reverse()) await dir.close();
87
+ }
88
+ }
89
+ run().then(
90
+ () => write({type:'done'}),
91
+ async error => { await write({type:'error', message:error.message, code:error.code}); process.exitCode = 1; },
92
+ );
93
+ `;
94
+ //# sourceMappingURL=file-walk-program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-walk-program.js","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2F1C,CAAA"}
@@ -0,0 +1,12 @@
1
+ import type { SandboxExecOptions, SandboxExecResult, SandboxFileEntry, SandboxWalkFilesOptions } from '../types/sandbox/index.js';
2
+ /** Internal host path; the caller first resolves its authorized filesystem root. */
3
+ export declare function walkFilesLocally(rootPath: string, options: SandboxWalkFilesOptions): AsyncGenerator<SandboxFileEntry>;
4
+ /** The existing sandbox execution seam; no separate worker protocol is needed. */
5
+ export type SandboxFileWalkExec = (command: string, argv?: string[], options?: SandboxExecOptions) => Promise<SandboxExecResult>;
6
+ /**
7
+ * Lazy, bounded JSONL enumeration inside the execution boundary owned by exec.
8
+ * The adapter must implement SandboxExecOptions.signal: iterator cleanup waits
9
+ * for cancellation settlement and preserves failures to confirm remote shutdown.
10
+ */
11
+ export declare function walkFilesViaExec(exec: SandboxFileWalkExec, rootPath: string, options: SandboxWalkFilesOptions): AsyncGenerator<SandboxFileEntry>;
12
+ //# sourceMappingURL=file-walk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-walk.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,MAAM,2BAA2B,CAAA;AAmSlC,oFAAoF;AACpF,wBAAuB,gBAAgB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CAGlC;AAED,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,GAAG,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,kBAAkB,KACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE/B;;;;GAIG;AACH,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CA0IlC"}