@namzu/sdk 34.2.0 → 36.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 (669) hide show
  1. package/CHANGELOG.md +171 -0
  2. package/README.md +2 -6
  3. package/dist/agents/PipelineAgent.d.ts.map +1 -1
  4. package/dist/agents/PipelineAgent.js +118 -100
  5. package/dist/agents/PipelineAgent.js.map +1 -1
  6. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  7. package/dist/agents/ReactiveAgent.js +2 -0
  8. package/dist/agents/ReactiveAgent.js.map +1 -1
  9. package/dist/agents/RouterAgent.d.ts.map +1 -1
  10. package/dist/agents/RouterAgent.js +105 -61
  11. package/dist/agents/RouterAgent.js.map +1 -1
  12. package/dist/agents/SupervisorAgent.d.ts.map +1 -1
  13. package/dist/agents/SupervisorAgent.js +8 -4
  14. package/dist/agents/SupervisorAgent.js.map +1 -1
  15. package/dist/agents/budget.d.ts +6 -0
  16. package/dist/agents/budget.d.ts.map +1 -0
  17. package/dist/agents/budget.js +33 -0
  18. package/dist/agents/budget.js.map +1 -0
  19. package/dist/agents/explore.d.ts +20 -0
  20. package/dist/agents/explore.d.ts.map +1 -0
  21. package/dist/agents/explore.js +26 -0
  22. package/dist/agents/explore.js.map +1 -0
  23. package/dist/agents/file-definitions.d.ts +80 -0
  24. package/dist/agents/file-definitions.d.ts.map +1 -0
  25. package/dist/agents/file-definitions.js +179 -0
  26. package/dist/agents/file-definitions.js.map +1 -0
  27. package/dist/agents/index.d.ts +3 -0
  28. package/dist/agents/index.d.ts.map +1 -1
  29. package/dist/agents/index.js +2 -0
  30. package/dist/agents/index.js.map +1 -1
  31. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  32. package/dist/bridge/a2a/mapper.js +6 -0
  33. package/dist/bridge/a2a/mapper.js.map +1 -1
  34. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  35. package/dist/bridge/sse/mapper.js +22 -0
  36. package/dist/bridge/sse/mapper.js.map +1 -1
  37. package/dist/bus/lock.d.ts.map +1 -1
  38. package/dist/bus/lock.js +1 -10
  39. package/dist/bus/lock.js.map +1 -1
  40. package/dist/compaction/consolidation.d.ts +31 -0
  41. package/dist/compaction/consolidation.d.ts.map +1 -0
  42. package/dist/compaction/consolidation.js +63 -0
  43. package/dist/compaction/consolidation.js.map +1 -0
  44. package/dist/compaction/factory.d.ts.map +1 -1
  45. package/dist/compaction/factory.js +3 -0
  46. package/dist/compaction/factory.js.map +1 -1
  47. package/dist/compaction/index.d.ts +6 -1
  48. package/dist/compaction/index.d.ts.map +1 -1
  49. package/dist/compaction/index.js +6 -0
  50. package/dist/compaction/index.js.map +1 -1
  51. package/dist/compaction/manager.d.ts +7 -0
  52. package/dist/compaction/manager.d.ts.map +1 -1
  53. package/dist/compaction/manager.js +31 -0
  54. package/dist/compaction/manager.js.map +1 -1
  55. package/dist/compaction/plan.d.ts +23 -0
  56. package/dist/compaction/plan.d.ts.map +1 -1
  57. package/dist/compaction/plan.js +41 -24
  58. package/dist/compaction/plan.js.map +1 -1
  59. package/dist/compaction/salience/bm25.d.ts +26 -0
  60. package/dist/compaction/salience/bm25.d.ts.map +1 -0
  61. package/dist/compaction/salience/bm25.js +56 -0
  62. package/dist/compaction/salience/bm25.js.map +1 -0
  63. package/dist/compaction/salience/goal.d.ts +21 -0
  64. package/dist/compaction/salience/goal.d.ts.map +1 -0
  65. package/dist/compaction/salience/goal.js +32 -0
  66. package/dist/compaction/salience/goal.js.map +1 -0
  67. package/dist/compaction/salience/index.d.ts +4 -0
  68. package/dist/compaction/salience/index.d.ts.map +1 -0
  69. package/dist/compaction/salience/index.js +4 -0
  70. package/dist/compaction/salience/index.js.map +1 -0
  71. package/dist/compaction/salience/minhash.d.ts +17 -0
  72. package/dist/compaction/salience/minhash.d.ts.map +1 -0
  73. package/dist/compaction/salience/minhash.js +54 -0
  74. package/dist/compaction/salience/minhash.js.map +1 -0
  75. package/dist/compaction/salience/score.d.ts +64 -0
  76. package/dist/compaction/salience/score.d.ts.map +1 -0
  77. package/dist/compaction/salience/score.js +256 -0
  78. package/dist/compaction/salience/score.js.map +1 -0
  79. package/dist/compaction/salience/tokenize.d.ts +20 -0
  80. package/dist/compaction/salience/tokenize.d.ts.map +1 -0
  81. package/dist/compaction/salience/tokenize.js +92 -0
  82. package/dist/compaction/salience/tokenize.js.map +1 -0
  83. package/dist/compaction/salience/working-set.d.ts +59 -0
  84. package/dist/compaction/salience/working-set.d.ts.map +1 -0
  85. package/dist/compaction/salience/working-set.js +137 -0
  86. package/dist/compaction/salience/working-set.js.map +1 -0
  87. package/dist/compaction/serializer.d.ts +2 -0
  88. package/dist/compaction/serializer.d.ts.map +1 -1
  89. package/dist/compaction/serializer.js +15 -0
  90. package/dist/compaction/serializer.js.map +1 -1
  91. package/dist/compaction/token-estimate.d.ts +13 -0
  92. package/dist/compaction/token-estimate.d.ts.map +1 -0
  93. package/dist/compaction/token-estimate.js +58 -0
  94. package/dist/compaction/token-estimate.js.map +1 -0
  95. package/dist/compaction/tool-result-editing.d.ts +10 -2
  96. package/dist/compaction/tool-result-editing.d.ts.map +1 -1
  97. package/dist/compaction/tool-result-editing.js +22 -24
  98. package/dist/compaction/tool-result-editing.js.map +1 -1
  99. package/dist/compaction/types.d.ts +22 -1
  100. package/dist/compaction/types.d.ts.map +1 -1
  101. package/dist/compaction/wire.d.ts +3 -1
  102. package/dist/compaction/wire.d.ts.map +1 -1
  103. package/dist/compaction/wire.js +2 -0
  104. package/dist/compaction/wire.js.map +1 -1
  105. package/dist/config/runtime.d.ts +58 -28
  106. package/dist/config/runtime.d.ts.map +1 -1
  107. package/dist/config/runtime.js +13 -1
  108. package/dist/config/runtime.js.map +1 -1
  109. package/dist/connector/builtins/http.d.ts.map +1 -1
  110. package/dist/connector/builtins/http.js +2 -8
  111. package/dist/connector/builtins/http.js.map +1 -1
  112. package/dist/connector/builtins/webhook.js +2 -2
  113. package/dist/connector/builtins/webhook.js.map +1 -1
  114. package/dist/connector/mcp/adapter.d.ts +2 -0
  115. package/dist/connector/mcp/adapter.d.ts.map +1 -1
  116. package/dist/connector/mcp/adapter.js +30 -0
  117. package/dist/connector/mcp/adapter.js.map +1 -1
  118. package/dist/connector/tools/adapter.js +2 -2
  119. package/dist/connector/tools/adapter.js.map +1 -1
  120. package/dist/connector/tools/definitions.js +2 -2
  121. package/dist/connector/tools/definitions.js.map +1 -1
  122. package/dist/constants/compaction/index.d.ts +1 -0
  123. package/dist/constants/compaction/index.d.ts.map +1 -1
  124. package/dist/constants/compaction/index.js +1 -0
  125. package/dist/constants/compaction/index.js.map +1 -1
  126. package/dist/constants/telemetry/index.d.ts +0 -1
  127. package/dist/constants/telemetry/index.d.ts.map +1 -1
  128. package/dist/constants/telemetry/index.js +0 -1
  129. package/dist/constants/telemetry/index.js.map +1 -1
  130. package/dist/contracts/a2a.d.ts +5 -5
  131. package/dist/contracts/api.d.ts +4 -2
  132. package/dist/contracts/api.d.ts.map +1 -1
  133. package/dist/contracts/schemas.d.ts +1 -15
  134. package/dist/contracts/schemas.d.ts.map +1 -1
  135. package/dist/contracts/schemas.js +5 -20
  136. package/dist/contracts/schemas.js.map +1 -1
  137. package/dist/invariants/index.d.ts +1 -1
  138. package/dist/manager/agent/lifecycle.d.ts +2 -18
  139. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  140. package/dist/manager/agent/lifecycle.js +373 -340
  141. package/dist/manager/agent/lifecycle.js.map +1 -1
  142. package/dist/manager/run/persistence.d.ts +3 -0
  143. package/dist/manager/run/persistence.d.ts.map +1 -1
  144. package/dist/manager/run/persistence.js +35 -5
  145. package/dist/manager/run/persistence.js.map +1 -1
  146. package/dist/plugin/index.d.ts +2 -0
  147. package/dist/plugin/index.d.ts.map +1 -1
  148. package/dist/plugin/index.js +1 -0
  149. package/dist/plugin/index.js.map +1 -1
  150. package/dist/plugin/shell-hook.d.ts +128 -0
  151. package/dist/plugin/shell-hook.d.ts.map +1 -0
  152. package/dist/plugin/shell-hook.js +299 -0
  153. package/dist/plugin/shell-hook.js.map +1 -0
  154. package/dist/prompt/coding-agent-doctrine.d.ts +63 -0
  155. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -0
  156. package/dist/prompt/coding-agent-doctrine.js +100 -0
  157. package/dist/prompt/coding-agent-doctrine.js.map +1 -0
  158. package/dist/prompt/index.d.ts +2 -0
  159. package/dist/prompt/index.d.ts.map +1 -1
  160. package/dist/prompt/index.js +1 -0
  161. package/dist/prompt/index.js.map +1 -1
  162. package/dist/provider/errors.d.ts +1 -1
  163. package/dist/provider/errors.js +1 -1
  164. package/dist/provider/fallback.d.ts +2 -0
  165. package/dist/provider/fallback.d.ts.map +1 -1
  166. package/dist/provider/fallback.js +3 -1
  167. package/dist/provider/fallback.js.map +1 -1
  168. package/dist/provider/retry.d.ts +2 -0
  169. package/dist/provider/retry.d.ts.map +1 -1
  170. package/dist/provider/retry.js +3 -1
  171. package/dist/provider/retry.js.map +1 -1
  172. package/dist/provider/token-budget.d.ts +13 -0
  173. package/dist/provider/token-budget.d.ts.map +1 -0
  174. package/dist/provider/token-budget.js +150 -0
  175. package/dist/provider/token-budget.js.map +1 -0
  176. package/dist/public-runtime.d.ts +14 -14
  177. package/dist/public-runtime.d.ts.map +1 -1
  178. package/dist/public-runtime.js +15 -10
  179. package/dist/public-runtime.js.map +1 -1
  180. package/dist/public-tools.d.ts +2 -0
  181. package/dist/public-tools.d.ts.map +1 -1
  182. package/dist/public-tools.js +2 -0
  183. package/dist/public-tools.js.map +1 -1
  184. package/dist/public-types.d.ts +12 -2
  185. package/dist/public-types.d.ts.map +1 -1
  186. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  187. package/dist/registry/command/kernel-commands.js +18 -6
  188. package/dist/registry/command/kernel-commands.js.map +1 -1
  189. package/dist/registry/tool/execute.d.ts.map +1 -1
  190. package/dist/registry/tool/execute.js +4 -1
  191. package/dist/registry/tool/execute.js.map +1 -1
  192. package/dist/run/LimitChecker.js +1 -1
  193. package/dist/run/LimitChecker.js.map +1 -1
  194. package/dist/run/drain.js +1 -1
  195. package/dist/run/reporter.d.ts.map +1 -1
  196. package/dist/run/reporter.js +15 -0
  197. package/dist/run/reporter.js.map +1 -1
  198. package/dist/run/token-budget.d.ts +108 -0
  199. package/dist/run/token-budget.d.ts.map +1 -0
  200. package/dist/run/token-budget.js +591 -0
  201. package/dist/run/token-budget.js.map +1 -0
  202. package/dist/runtime/jobs/registry.d.ts +29 -0
  203. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  204. package/dist/runtime/jobs/registry.js +98 -18
  205. package/dist/runtime/jobs/registry.js.map +1 -1
  206. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  207. package/dist/runtime/query/checkpoint.js +10 -3
  208. package/dist/runtime/query/checkpoint.js.map +1 -1
  209. package/dist/runtime/query/context.d.ts +2 -26
  210. package/dist/runtime/query/context.d.ts.map +1 -1
  211. package/dist/runtime/query/context.js +1 -29
  212. package/dist/runtime/query/context.js.map +1 -1
  213. package/dist/runtime/query/executor.d.ts +13 -9
  214. package/dist/runtime/query/executor.d.ts.map +1 -1
  215. package/dist/runtime/query/executor.js +144 -55
  216. package/dist/runtime/query/executor.js.map +1 -1
  217. package/dist/runtime/query/guard.d.ts.map +1 -1
  218. package/dist/runtime/query/guard.js +8 -0
  219. package/dist/runtime/query/guard.js.map +1 -1
  220. package/dist/runtime/query/index.d.ts +42 -4
  221. package/dist/runtime/query/index.d.ts.map +1 -1
  222. package/dist/runtime/query/index.js +153 -52
  223. package/dist/runtime/query/index.js.map +1 -1
  224. package/dist/runtime/query/iteration/index.d.ts +3 -3
  225. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  226. package/dist/runtime/query/iteration/index.js +47 -11
  227. package/dist/runtime/query/iteration/index.js.map +1 -1
  228. package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
  229. package/dist/runtime/query/iteration/phases/compaction.js +98 -30
  230. package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
  231. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  232. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  233. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  234. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  235. package/dist/runtime/query/iteration/phases/tool-review.js +29 -7
  236. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  237. package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
  238. package/dist/runtime/query/iteration/phases/working-memory.js +25 -15
  239. package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
  240. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  241. package/dist/runtime/query/iteration/stream-turn.js +10 -5
  242. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  243. package/dist/runtime/query/plugin-hooks.d.ts +1 -1
  244. package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
  245. package/dist/runtime/query/plugin-hooks.js +20 -1
  246. package/dist/runtime/query/plugin-hooks.js.map +1 -1
  247. package/dist/runtime/query/prompt.d.ts.map +1 -1
  248. package/dist/runtime/query/prompt.js +14 -4
  249. package/dist/runtime/query/prompt.js.map +1 -1
  250. package/dist/runtime/query/repeat-call.d.ts +20 -2
  251. package/dist/runtime/query/repeat-call.d.ts.map +1 -1
  252. package/dist/runtime/query/repeat-call.js +35 -7
  253. package/dist/runtime/query/repeat-call.js.map +1 -1
  254. package/dist/runtime/query/result.d.ts.map +1 -1
  255. package/dist/runtime/query/result.js +9 -0
  256. package/dist/runtime/query/result.js.map +1 -1
  257. package/dist/runtime/query/review-policy.d.ts +142 -0
  258. package/dist/runtime/query/review-policy.d.ts.map +1 -0
  259. package/dist/runtime/query/review-policy.js +144 -0
  260. package/dist/runtime/query/review-policy.js.map +1 -0
  261. package/dist/runtime/query/run-state.d.ts.map +1 -1
  262. package/dist/runtime/query/run-state.js +4 -0
  263. package/dist/runtime/query/run-state.js.map +1 -1
  264. package/dist/runtime/query/steering.d.ts +4 -0
  265. package/dist/runtime/query/steering.d.ts.map +1 -1
  266. package/dist/runtime/query/steering.js +29 -0
  267. package/dist/runtime/query/steering.js.map +1 -1
  268. package/dist/runtime/query/token-budget.d.ts +7 -0
  269. package/dist/runtime/query/token-budget.d.ts.map +1 -0
  270. package/dist/runtime/query/token-budget.js +101 -0
  271. package/dist/runtime/query/token-budget.js.map +1 -0
  272. package/dist/runtime/query/tool-output-budget.d.ts +2 -0
  273. package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
  274. package/dist/runtime/query/tool-output-budget.js +29 -11
  275. package/dist/runtime/query/tool-output-budget.js.map +1 -1
  276. package/dist/runtime/query/tool-pause.d.ts.map +1 -1
  277. package/dist/runtime/query/tool-pause.js +4 -2
  278. package/dist/runtime/query/tool-pause.js.map +1 -1
  279. package/dist/runtime/query/tooling.d.ts +4 -0
  280. package/dist/runtime/query/tooling.d.ts.map +1 -1
  281. package/dist/runtime/query/tooling.js +4 -0
  282. package/dist/runtime/query/tooling.js.map +1 -1
  283. package/dist/sandbox/file-walk-program.d.ts +3 -0
  284. package/dist/sandbox/file-walk-program.d.ts.map +1 -0
  285. package/dist/sandbox/file-walk-program.js +94 -0
  286. package/dist/sandbox/file-walk-program.js.map +1 -0
  287. package/dist/sandbox/file-walk.d.ts +12 -0
  288. package/dist/sandbox/file-walk.d.ts.map +1 -0
  289. package/dist/sandbox/file-walk.js +429 -0
  290. package/dist/sandbox/file-walk.js.map +1 -0
  291. package/dist/sandbox/index.d.ts +2 -0
  292. package/dist/sandbox/index.d.ts.map +1 -1
  293. package/dist/sandbox/index.js +1 -0
  294. package/dist/sandbox/index.js.map +1 -1
  295. package/dist/sandbox/provider/local.d.ts +3 -1
  296. package/dist/sandbox/provider/local.d.ts.map +1 -1
  297. package/dist/sandbox/provider/local.js +121 -12
  298. package/dist/sandbox/provider/local.js.map +1 -1
  299. package/dist/scheduler/completion-inbox.d.ts +3 -2
  300. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  301. package/dist/scheduler/completion-inbox.js +29 -15
  302. package/dist/scheduler/completion-inbox.js.map +1 -1
  303. package/dist/scheduler/delegating.d.ts +1 -0
  304. package/dist/scheduler/delegating.d.ts.map +1 -1
  305. package/dist/scheduler/delegating.js +29 -12
  306. package/dist/scheduler/delegating.js.map +1 -1
  307. package/dist/scheduler/local.d.ts +1 -0
  308. package/dist/scheduler/local.d.ts.map +1 -1
  309. package/dist/scheduler/local.js +4 -7
  310. package/dist/scheduler/local.js.map +1 -1
  311. package/dist/session/index.d.ts +0 -1
  312. package/dist/session/index.d.ts.map +1 -1
  313. package/dist/session/index.js +0 -1
  314. package/dist/session/index.js.map +1 -1
  315. package/dist/session/workspace/path-builder.d.ts.map +1 -1
  316. package/dist/session/workspace/path-builder.js +5 -4
  317. package/dist/session/workspace/path-builder.js.map +1 -1
  318. package/dist/store/feedback/disk.d.ts.map +1 -1
  319. package/dist/store/feedback/disk.js +4 -6
  320. package/dist/store/feedback/disk.js.map +1 -1
  321. package/dist/store/index.d.ts +2 -0
  322. package/dist/store/index.d.ts.map +1 -1
  323. package/dist/store/index.js +1 -0
  324. package/dist/store/index.js.map +1 -1
  325. package/dist/store/memory/disk.d.ts.map +1 -1
  326. package/dist/store/memory/disk.js +3 -12
  327. package/dist/store/memory/disk.js.map +1 -1
  328. package/dist/store/run/checkpoint-disk.d.ts +3 -3
  329. package/dist/store/run/checkpoint-disk.d.ts.map +1 -1
  330. package/dist/store/run/checkpoint-disk.js +14 -26
  331. package/dist/store/run/checkpoint-disk.js.map +1 -1
  332. package/dist/store/run/claim-disk.js +1 -1
  333. package/dist/store/run/conformance.d.ts +1 -1
  334. package/dist/store/run/conformance.d.ts.map +1 -1
  335. package/dist/store/run/conformance.js +41 -33
  336. package/dist/store/run/conformance.js.map +1 -1
  337. package/dist/store/run/disk.d.ts.map +1 -1
  338. package/dist/store/run/disk.js +20 -4
  339. package/dist/store/run/disk.js.map +1 -1
  340. package/dist/store/run/token-budget-disk.d.ts +37 -0
  341. package/dist/store/run/token-budget-disk.d.ts.map +1 -0
  342. package/dist/store/run/token-budget-disk.js +208 -0
  343. package/dist/store/run/token-budget-disk.js.map +1 -0
  344. package/dist/store/session/disk.d.ts +4 -13
  345. package/dist/store/session/disk.d.ts.map +1 -1
  346. package/dist/store/session/disk.js +34 -31
  347. package/dist/store/session/disk.js.map +1 -1
  348. package/dist/store/session/memory.d.ts +2 -0
  349. package/dist/store/session/memory.d.ts.map +1 -1
  350. package/dist/store/session/memory.js +41 -2
  351. package/dist/store/session/memory.js.map +1 -1
  352. package/dist/store/task/disk.d.ts.map +1 -1
  353. package/dist/store/task/disk.js +7 -8
  354. package/dist/store/task/disk.js.map +1 -1
  355. package/dist/store/topic/memory.d.ts +2 -0
  356. package/dist/store/topic/memory.d.ts.map +1 -1
  357. package/dist/store/topic/memory.js +13 -1
  358. package/dist/store/topic/memory.js.map +1 -1
  359. package/dist/test-support/ids.d.ts +4 -19
  360. package/dist/test-support/ids.d.ts.map +1 -1
  361. package/dist/test-support/ids.js +51 -59
  362. package/dist/test-support/ids.js.map +1 -1
  363. package/dist/tools/advisory/index.d.ts.map +1 -1
  364. package/dist/tools/advisory/index.js +3 -1
  365. package/dist/tools/advisory/index.js.map +1 -1
  366. package/dist/tools/builtins/bash.d.ts +2 -0
  367. package/dist/tools/builtins/bash.d.ts.map +1 -1
  368. package/dist/tools/builtins/bash.js +224 -70
  369. package/dist/tools/builtins/bash.js.map +1 -1
  370. package/dist/tools/builtins/computer-use.d.ts +2 -2
  371. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  372. package/dist/tools/builtins/computer-use.js +4 -2
  373. package/dist/tools/builtins/computer-use.js.map +1 -1
  374. package/dist/tools/builtins/edit.js +2 -2
  375. package/dist/tools/builtins/edit.js.map +1 -1
  376. package/dist/tools/builtins/glob.d.ts +2 -1
  377. package/dist/tools/builtins/glob.d.ts.map +1 -1
  378. package/dist/tools/builtins/glob.js +95 -103
  379. package/dist/tools/builtins/glob.js.map +1 -1
  380. package/dist/tools/builtins/grep.d.ts.map +1 -1
  381. package/dist/tools/builtins/grep.js +155 -111
  382. package/dist/tools/builtins/grep.js.map +1 -1
  383. package/dist/tools/builtins/ls.js +4 -4
  384. package/dist/tools/builtins/ls.js.map +1 -1
  385. package/dist/tools/builtins/lsp.js +2 -2
  386. package/dist/tools/builtins/lsp.js.map +1 -1
  387. package/dist/tools/builtins/read-file.js +2 -2
  388. package/dist/tools/builtins/read-file.js.map +1 -1
  389. package/dist/tools/builtins/write-file.js +2 -2
  390. package/dist/tools/builtins/write-file.js.map +1 -1
  391. package/dist/tools/coordinator/ask-user-question.d.ts +33 -0
  392. package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -0
  393. package/dist/tools/coordinator/ask-user-question.js +237 -0
  394. package/dist/tools/coordinator/ask-user-question.js.map +1 -0
  395. package/dist/tools/coordinator/index.d.ts +1 -2
  396. package/dist/tools/coordinator/index.d.ts.map +1 -1
  397. package/dist/tools/coordinator/index.js +4 -220
  398. package/dist/tools/coordinator/index.js.map +1 -1
  399. package/dist/tools/memory/read.d.ts.map +1 -1
  400. package/dist/tools/memory/read.js +2 -4
  401. package/dist/tools/memory/read.js.map +1 -1
  402. package/dist/tools/paths.d.ts +13 -0
  403. package/dist/tools/paths.d.ts.map +1 -1
  404. package/dist/tools/paths.js +53 -0
  405. package/dist/tools/paths.js.map +1 -1
  406. package/dist/tools/roster.d.ts +27 -0
  407. package/dist/tools/roster.d.ts.map +1 -0
  408. package/dist/tools/roster.js +42 -0
  409. package/dist/tools/roster.js.map +1 -0
  410. package/dist/types/agent/base.d.ts +5 -0
  411. package/dist/types/agent/base.d.ts.map +1 -1
  412. package/dist/types/agent/pipeline.d.ts +3 -0
  413. package/dist/types/agent/pipeline.d.ts.map +1 -1
  414. package/dist/types/agent/router.d.ts +2 -3
  415. package/dist/types/agent/router.d.ts.map +1 -1
  416. package/dist/types/agent/scheduler.d.ts +3 -0
  417. package/dist/types/agent/scheduler.d.ts.map +1 -1
  418. package/dist/types/agent/task.d.ts +5 -16
  419. package/dist/types/agent/task.d.ts.map +1 -1
  420. package/dist/types/agent/task.js.map +1 -1
  421. package/dist/types/common/index.d.ts.map +1 -1
  422. package/dist/types/common/index.js +3 -0
  423. package/dist/types/common/index.js.map +1 -1
  424. package/dist/types/computer-use/index.d.ts +8 -0
  425. package/dist/types/computer-use/index.d.ts.map +1 -1
  426. package/dist/types/computer-use/index.js.map +1 -1
  427. package/dist/types/hitl/index.d.ts +5 -0
  428. package/dist/types/hitl/index.d.ts.map +1 -1
  429. package/dist/types/hitl/index.js.map +1 -1
  430. package/dist/types/ids/brand.d.ts +5 -47
  431. package/dist/types/ids/brand.d.ts.map +1 -1
  432. package/dist/types/ids/brand.js +2 -39
  433. package/dist/types/ids/brand.js.map +1 -1
  434. package/dist/types/ids/index.d.ts +59 -69
  435. package/dist/types/ids/index.d.ts.map +1 -1
  436. package/dist/types/ids/index.js +12 -10
  437. package/dist/types/ids/index.js.map +1 -1
  438. package/dist/types/permission/index.d.ts +9 -0
  439. package/dist/types/permission/index.d.ts.map +1 -1
  440. package/dist/types/permission/index.js +9 -1
  441. package/dist/types/permission/index.js.map +1 -1
  442. package/dist/types/plugin/index.d.ts +45 -4
  443. package/dist/types/plugin/index.d.ts.map +1 -1
  444. package/dist/types/plugin/index.js +7 -0
  445. package/dist/types/plugin/index.js.map +1 -1
  446. package/dist/types/run/config.d.ts +3 -0
  447. package/dist/types/run/config.d.ts.map +1 -1
  448. package/dist/types/run/emergency.d.ts +5 -0
  449. package/dist/types/run/emergency.d.ts.map +1 -1
  450. package/dist/types/run/emergency.js.map +1 -1
  451. package/dist/types/run/entity.d.ts +6 -2
  452. package/dist/types/run/entity.d.ts.map +1 -1
  453. package/dist/types/run/events.d.ts +35 -0
  454. package/dist/types/run/events.d.ts.map +1 -1
  455. package/dist/types/run/events.js.map +1 -1
  456. package/dist/types/run/index.d.ts +1 -0
  457. package/dist/types/run/index.d.ts.map +1 -1
  458. package/dist/types/run/index.js +1 -0
  459. package/dist/types/run/index.js.map +1 -1
  460. package/dist/types/run/state.d.ts +16 -15
  461. package/dist/types/run/state.d.ts.map +1 -1
  462. package/dist/types/run/state.js +41 -22
  463. package/dist/types/run/state.js.map +1 -1
  464. package/dist/types/run/stop-reason.d.ts +3 -14
  465. package/dist/types/run/stop-reason.d.ts.map +1 -1
  466. package/dist/types/run/token-budget-store.d.ts +29 -0
  467. package/dist/types/run/token-budget-store.d.ts.map +1 -0
  468. package/dist/types/run/token-budget-store.js +25 -0
  469. package/dist/types/run/token-budget-store.js.map +1 -0
  470. package/dist/types/sandbox/index.d.ts +47 -2
  471. package/dist/types/sandbox/index.d.ts.map +1 -1
  472. package/dist/types/sandbox/index.js.map +1 -1
  473. package/dist/types/session/store.d.ts +8 -0
  474. package/dist/types/session/store.d.ts.map +1 -1
  475. package/dist/types/tool/index.d.ts +15 -0
  476. package/dist/types/tool/index.d.ts.map +1 -1
  477. package/dist/types/tool/index.js.map +1 -1
  478. package/dist/utils/frontmatter.d.ts +1 -1
  479. package/dist/utils/frontmatter.js +1 -1
  480. package/dist/utils/id-format.d.ts +3 -0
  481. package/dist/utils/id-format.d.ts.map +1 -0
  482. package/dist/utils/id-format.js +9 -0
  483. package/dist/utils/id-format.js.map +1 -0
  484. package/dist/utils/id.d.ts +65 -32
  485. package/dist/utils/id.d.ts.map +1 -1
  486. package/dist/utils/id.js +168 -148
  487. package/dist/utils/id.js.map +1 -1
  488. package/dist/utils/log/exception.js +1 -1
  489. package/dist/utils/log/exception.js.map +1 -1
  490. package/dist/utils/log/index.d.ts.map +1 -1
  491. package/dist/utils/log/index.js +1 -2
  492. package/dist/utils/log/index.js.map +1 -1
  493. package/dist/utils/log/templates.d.ts.map +1 -1
  494. package/dist/utils/log/templates.js +0 -1
  495. package/dist/utils/log/templates.js.map +1 -1
  496. package/package.json +6 -1
  497. package/src/agents/AGENTS.md +1 -1
  498. package/src/agents/PipelineAgent.ts +129 -109
  499. package/src/agents/ReactiveAgent.ts +2 -0
  500. package/src/agents/RouterAgent.ts +120 -73
  501. package/src/agents/SupervisorAgent.ts +12 -4
  502. package/src/agents/budget.ts +42 -0
  503. package/src/agents/explore.ts +29 -0
  504. package/src/agents/file-definitions.ts +237 -0
  505. package/src/agents/index.ts +15 -0
  506. package/src/bridge/a2a/mapper.ts +6 -0
  507. package/src/bridge/sse/mapper.ts +22 -0
  508. package/src/bus/lock.ts +1 -10
  509. package/src/compaction/consolidation.ts +79 -0
  510. package/src/compaction/factory.ts +3 -0
  511. package/src/compaction/index.ts +34 -4
  512. package/src/compaction/manager.ts +39 -1
  513. package/src/compaction/plan.ts +52 -21
  514. package/src/compaction/salience/bm25.ts +72 -0
  515. package/src/compaction/salience/goal.ts +44 -0
  516. package/src/compaction/salience/index.ts +19 -0
  517. package/src/compaction/salience/minhash.ts +53 -0
  518. package/src/compaction/salience/score.ts +305 -0
  519. package/src/compaction/salience/tokenize.ts +89 -0
  520. package/src/compaction/salience/working-set.ts +187 -0
  521. package/src/compaction/serializer.ts +16 -0
  522. package/src/compaction/token-estimate.ts +57 -0
  523. package/src/compaction/tool-result-editing.ts +28 -26
  524. package/src/compaction/types.ts +24 -1
  525. package/src/compaction/wire.ts +5 -1
  526. package/src/config/runtime.ts +13 -1
  527. package/src/connector/builtins/http.ts +2 -8
  528. package/src/connector/builtins/webhook.ts +2 -2
  529. package/src/connector/mcp/adapter.ts +32 -0
  530. package/src/connector/tools/adapter.ts +2 -2
  531. package/src/connector/tools/definitions.ts +2 -2
  532. package/src/constants/compaction/index.ts +1 -0
  533. package/src/constants/telemetry/index.ts +0 -1
  534. package/src/contracts/api.ts +5 -1
  535. package/src/contracts/schemas.ts +6 -20
  536. package/src/invariants/index.ts +1 -1
  537. package/src/manager/agent/lifecycle.ts +380 -352
  538. package/src/manager/run/persistence.ts +35 -5
  539. package/src/plugin/index.ts +19 -0
  540. package/src/plugin/shell-hook.ts +403 -0
  541. package/src/prompt/coding-agent-doctrine.ts +118 -0
  542. package/src/prompt/index.ts +8 -0
  543. package/src/provider/errors.ts +1 -1
  544. package/src/provider/fallback.ts +4 -1
  545. package/src/provider/retry.ts +4 -1
  546. package/src/provider/token-budget.ts +158 -0
  547. package/src/public-runtime.ts +56 -28
  548. package/src/public-tools.ts +5 -0
  549. package/src/public-types.ts +65 -0
  550. package/src/registry/command/kernel-commands.ts +16 -6
  551. package/src/registry/tool/execute.ts +4 -1
  552. package/src/run/LimitChecker.ts +1 -1
  553. package/src/run/drain.ts +1 -1
  554. package/src/run/reporter.ts +15 -0
  555. package/src/run/token-budget.ts +692 -0
  556. package/src/runtime/jobs/registry.ts +123 -17
  557. package/src/runtime/query/checkpoint.ts +10 -3
  558. package/src/runtime/query/context.ts +3 -57
  559. package/src/runtime/query/executor.ts +181 -71
  560. package/src/runtime/query/guard.ts +8 -0
  561. package/src/runtime/query/index.ts +209 -62
  562. package/src/runtime/query/iteration/index.ts +53 -15
  563. package/src/runtime/query/iteration/phases/compaction.ts +130 -31
  564. package/src/runtime/query/iteration/phases/context.ts +4 -0
  565. package/src/runtime/query/iteration/phases/tool-review.ts +39 -7
  566. package/src/runtime/query/iteration/phases/working-memory.ts +23 -14
  567. package/src/runtime/query/iteration/stream-turn.ts +9 -5
  568. package/src/runtime/query/plugin-hooks.ts +24 -2
  569. package/src/runtime/query/prompt.ts +21 -4
  570. package/src/runtime/query/repeat-call.ts +42 -7
  571. package/src/runtime/query/result.ts +9 -0
  572. package/src/runtime/query/review-policy.ts +231 -0
  573. package/src/runtime/query/run-state.ts +4 -0
  574. package/src/runtime/query/steering.ts +32 -0
  575. package/src/runtime/query/token-budget.ts +127 -0
  576. package/src/runtime/query/tool-output-budget.ts +33 -10
  577. package/src/runtime/query/tool-pause.ts +4 -2
  578. package/src/runtime/query/tooling.ts +8 -0
  579. package/src/sandbox/file-walk-program.ts +93 -0
  580. package/src/sandbox/file-walk.ts +463 -0
  581. package/src/sandbox/index.ts +2 -0
  582. package/src/sandbox/provider/local.ts +136 -13
  583. package/src/scheduler/completion-inbox.ts +29 -19
  584. package/src/scheduler/delegating.ts +35 -13
  585. package/src/scheduler/local.ts +5 -7
  586. package/src/session/index.ts +0 -1
  587. package/src/session/workspace/path-builder.ts +5 -4
  588. package/src/store/feedback/disk.ts +4 -6
  589. package/src/store/index.ts +2 -0
  590. package/src/store/memory/disk.ts +3 -11
  591. package/src/store/run/checkpoint-disk.ts +14 -27
  592. package/src/store/run/claim-disk.ts +1 -1
  593. package/src/store/run/conformance.ts +55 -39
  594. package/src/store/run/disk.ts +19 -4
  595. package/src/store/run/token-budget-disk.ts +247 -0
  596. package/src/store/session/disk.ts +36 -29
  597. package/src/store/session/memory.ts +38 -1
  598. package/src/store/task/disk.ts +7 -8
  599. package/src/store/topic/memory.ts +13 -1
  600. package/src/test-support/ids.ts +62 -59
  601. package/src/tools/advisory/index.ts +3 -1
  602. package/src/tools/builtins/bash.ts +241 -70
  603. package/src/tools/builtins/computer-use.ts +6 -2
  604. package/src/tools/builtins/edit.ts +2 -2
  605. package/src/tools/builtins/glob.ts +104 -122
  606. package/src/tools/builtins/grep.ts +166 -132
  607. package/src/tools/builtins/ls.ts +4 -4
  608. package/src/tools/builtins/lsp.ts +2 -2
  609. package/src/tools/builtins/read-file.ts +2 -2
  610. package/src/tools/builtins/write-file.ts +2 -2
  611. package/src/tools/coordinator/ask-user-question.ts +284 -0
  612. package/src/tools/coordinator/index.ts +5 -248
  613. package/src/tools/memory/read.ts +2 -4
  614. package/src/tools/paths.ts +64 -0
  615. package/src/tools/roster.ts +46 -0
  616. package/src/types/agent/base.ts +6 -0
  617. package/src/types/agent/pipeline.ts +3 -0
  618. package/src/types/agent/router.ts +2 -3
  619. package/src/types/agent/scheduler.ts +4 -0
  620. package/src/types/agent/task.ts +5 -18
  621. package/src/types/common/index.ts +3 -0
  622. package/src/types/computer-use/index.ts +8 -0
  623. package/src/types/hitl/index.ts +5 -0
  624. package/src/types/ids/brand.ts +5 -48
  625. package/src/types/ids/index.ts +66 -75
  626. package/src/types/permission/index.ts +11 -0
  627. package/src/types/plugin/index.ts +49 -1
  628. package/src/types/run/config.ts +3 -0
  629. package/src/types/run/emergency.ts +5 -0
  630. package/src/types/run/entity.ts +6 -2
  631. package/src/types/run/events.ts +37 -0
  632. package/src/types/run/index.ts +1 -0
  633. package/src/types/run/state.ts +58 -30
  634. package/src/types/run/stop-reason.ts +3 -14
  635. package/src/types/run/token-budget-store.ts +54 -0
  636. package/src/types/sandbox/index.ts +53 -0
  637. package/src/types/session/store.ts +8 -0
  638. package/src/types/tool/index.ts +15 -0
  639. package/src/utils/frontmatter.ts +1 -1
  640. package/src/utils/id-format.ts +9 -0
  641. package/src/utils/id.ts +222 -181
  642. package/src/utils/log/exception.ts +1 -1
  643. package/src/utils/log/index.ts +1 -2
  644. package/src/utils/log/templates.ts +0 -1
  645. package/dist/session/migration/errors.d.ts +0 -26
  646. package/dist/session/migration/errors.d.ts.map +0 -1
  647. package/dist/session/migration/errors.js +0 -22
  648. package/dist/session/migration/errors.js.map +0 -1
  649. package/dist/session/migration/filesystem.d.ts +0 -122
  650. package/dist/session/migration/filesystem.d.ts.map +0 -1
  651. package/dist/session/migration/filesystem.js +0 -379
  652. package/dist/session/migration/filesystem.js.map +0 -1
  653. package/dist/session/migration/id-prefix.d.ts +0 -113
  654. package/dist/session/migration/id-prefix.d.ts.map +0 -1
  655. package/dist/session/migration/id-prefix.js +0 -132
  656. package/dist/session/migration/id-prefix.js.map +0 -1
  657. package/dist/session/migration/index.d.ts +0 -12
  658. package/dist/session/migration/index.d.ts.map +0 -1
  659. package/dist/session/migration/index.js +0 -12
  660. package/dist/session/migration/index.js.map +0 -1
  661. package/dist/session/migration/marker.d.ts +0 -57
  662. package/dist/session/migration/marker.d.ts.map +0 -1
  663. package/dist/session/migration/marker.js +0 -123
  664. package/dist/session/migration/marker.js.map +0 -1
  665. package/src/session/migration/errors.ts +0 -23
  666. package/src/session/migration/filesystem.ts +0 -468
  667. package/src/session/migration/id-prefix.ts +0 -166
  668. package/src/session/migration/index.ts +0 -41
  669. package/src/session/migration/marker.ts +0 -142
@@ -0,0 +1,299 @@
1
+ /**
2
+ * A shell command as a plugin hook.
3
+ *
4
+ * The lifecycle manager carries a hook system — `pre_tool_use`,
5
+ * `post_tool_use`, `run_start`, `run_end` and the rest — and `registerHook`
6
+ * lets a host attach a handler without a plugin on disk. What every host then
7
+ * writes for itself is the same adapter: run a command, hand it the event,
8
+ * read its exit code. This file is that adapter, once, so an operator
9
+ * application, an ACP server and an embedder all offer the same contract and
10
+ * an operator's hook script works under all three.
11
+ *
12
+ * ## The contract
13
+ *
14
+ * The command runs with `sh -c` in `cwd`. It receives one JSON object on
15
+ * stdin — `event`, `cwd`, `run_id`, and for tool events `tool_name`,
16
+ * `tool_input` and (after the call) `tool_result` — and the same facts as
17
+ * `NAMZU_HOOK_EVENT`, `NAMZU_RUN_ID`, `NAMZU_TOOL_NAME` and, when the input
18
+ * names a file, `NAMZU_TOOL_PATH`. Its exit code is its answer:
19
+ *
20
+ * - `0` — carry on.
21
+ * - `2` — **block.** Before a tool (`pre_tool_use`) the call is skipped and the
22
+ * model is told why, with the hook's stderr as the reason. On any other
23
+ * event a 2 is reported and the run carries on: there is nothing left to
24
+ * block once the tool has run or the run has started.
25
+ * - anything else — the hook's own failure. Reported through the logger,
26
+ * never blocking. A formatter that crashed must not stop the agent editing,
27
+ * and a script missing its interpreter (127) must not read as "forbidden".
28
+ *
29
+ * `2` rather than any non-zero, because a verdict and a failure are different
30
+ * facts and one exit code cannot carry both.
31
+ *
32
+ * ## What a hook cannot do here
33
+ *
34
+ * Modify a tool's input or replace its result. The hook protocol allows both
35
+ * (`modify`, `replace`); this adapter exposes neither, because a shell command
36
+ * that rewrites what the model asked for deserves its own design and audit,
37
+ * not a JSON field on stdout nobody reviewed.
38
+ *
39
+ * ## Bounds
40
+ *
41
+ * Each hook has a deadline (`timeoutMs`, default 30 s, capped at ten minutes)
42
+ * and its output is captured to a bound. A hook that times out is reported
43
+ * and does not block: one that could not answer in time has not answered no.
44
+ */
45
+ import { spawn } from 'node:child_process';
46
+ import { asPluginId } from '../utils/id.js';
47
+ import { NOOP_LOGGER } from '../utils/log/create-logger.js';
48
+ export const SHELL_HOOK_EVENTS = [
49
+ 'user_prompt_submit',
50
+ 'session_start',
51
+ 'session_end',
52
+ 'pre_tool_use',
53
+ 'post_tool_use',
54
+ 'pre_compact',
55
+ 'post_compact',
56
+ 'subagent_stop',
57
+ 'run_start',
58
+ 'run_end',
59
+ ];
60
+ /** The plugin id host shell hooks register under when the host names none. */
61
+ export const SHELL_HOOKS_PLUGIN_ID = asPluginId('6d6f6bec-9d54-485b-90ca-52edbac1009d');
62
+ export const DEFAULT_SHELL_HOOK_TIMEOUT_MS = 30_000;
63
+ export const MAX_SHELL_HOOK_TIMEOUT_MS = 10 * 60_000;
64
+ /** Captured output bound per stream. */
65
+ const MAX_CAPTURE_BYTES = 64 * 1024;
66
+ /**
67
+ * `matcher` against a tool name: `*`, or a `|`-separated list of names, each
68
+ * of which may end in `*`. Case-sensitive, because tool names are. A matcher
69
+ * on an event with no tool (`run_start`) matches nothing unless it is `*`.
70
+ */
71
+ export function shellHookMatches(matcher, toolName) {
72
+ if (matcher === undefined || matcher.trim() === '' || matcher.trim() === '*')
73
+ return true;
74
+ if (toolName === undefined)
75
+ return false;
76
+ return matcher.split('|').some((part) => {
77
+ const candidate = part.trim();
78
+ if (candidate.length === 0)
79
+ return false;
80
+ return candidate.endsWith('*')
81
+ ? toolName.startsWith(candidate.slice(0, -1))
82
+ : toolName === candidate;
83
+ });
84
+ }
85
+ /** Run one hook command to completion, bounded by its deadline and capture. */
86
+ export function runShellHook(entry, input, signal) {
87
+ const timeoutMs = Math.min(MAX_SHELL_HOOK_TIMEOUT_MS, Math.max(1, entry.timeoutMs ?? DEFAULT_SHELL_HOOK_TIMEOUT_MS));
88
+ const payload = JSON.stringify({
89
+ event: input.event,
90
+ cwd: input.cwd,
91
+ run_id: input.runId,
92
+ ...(input.sessionId !== undefined ? { session_id: input.sessionId } : {}),
93
+ ...(input.parentRunId !== undefined ? { parent_run_id: input.parentRunId } : {}),
94
+ ...(input.prompt !== undefined ? { prompt: input.prompt } : {}),
95
+ ...(input.compaction !== undefined ? { compaction: input.compaction } : {}),
96
+ ...(input.toolName !== undefined ? { tool_name: input.toolName } : {}),
97
+ ...(input.toolInput !== undefined ? { tool_input: input.toolInput } : {}),
98
+ ...(input.toolResult !== undefined ? { tool_result: input.toolResult } : {}),
99
+ });
100
+ const toolPath = pathOf(input.toolInput);
101
+ return new Promise((resolve) => {
102
+ let child;
103
+ try {
104
+ child = spawn('sh', ['-c', entry.command], {
105
+ cwd: input.cwd,
106
+ env: {
107
+ ...process.env,
108
+ NAMZU_HOOK_EVENT: input.event,
109
+ NAMZU_RUN_ID: input.runId,
110
+ ...(input.sessionId !== undefined ? { NAMZU_SESSION_ID: input.sessionId } : {}),
111
+ ...(input.toolName !== undefined ? { NAMZU_TOOL_NAME: input.toolName } : {}),
112
+ ...(toolPath !== undefined ? { NAMZU_TOOL_PATH: toolPath } : {}),
113
+ },
114
+ stdio: ['pipe', 'pipe', 'pipe'],
115
+ // Its own process group, so the deadline can kill everything the
116
+ // command started. `sh -c 'sleep 5'` is one process under a shell
117
+ // that execs its last command and two under one that forks it;
118
+ // killing only the shell in the second case leaves `sleep` holding
119
+ // the stdout pipe, and the outcome cannot settle until it exits on
120
+ // its own — the hook's deadline becomes the grandchild's.
121
+ detached: process.platform !== 'win32',
122
+ });
123
+ }
124
+ catch (error) {
125
+ resolve({
126
+ exitCode: null,
127
+ timedOut: false,
128
+ stdout: '',
129
+ stderr: '',
130
+ spawnError: error instanceof Error ? error.message : String(error),
131
+ });
132
+ return;
133
+ }
134
+ let stdout = '';
135
+ let stderr = '';
136
+ let timedOut = false;
137
+ let settled = false;
138
+ const capture = (current, chunk) => current.length >= MAX_CAPTURE_BYTES
139
+ ? current
140
+ : (current + chunk.toString('utf8')).slice(0, MAX_CAPTURE_BYTES);
141
+ child.stdout?.on('data', (chunk) => {
142
+ stdout = capture(stdout, chunk);
143
+ });
144
+ child.stderr?.on('data', (chunk) => {
145
+ stderr = capture(stderr, chunk);
146
+ });
147
+ const finish = (outcome) => {
148
+ if (settled)
149
+ return;
150
+ settled = true;
151
+ clearTimeout(timer);
152
+ signal?.removeEventListener('abort', onAbort);
153
+ resolve(outcome);
154
+ };
155
+ const killTree = () => {
156
+ if (child.pid !== undefined && process.platform !== 'win32') {
157
+ try {
158
+ process.kill(-child.pid, 'SIGKILL');
159
+ return;
160
+ }
161
+ catch {
162
+ // The group is already gone, or this platform has no groups;
163
+ // the child alone is the best that can be done.
164
+ }
165
+ }
166
+ child.kill('SIGKILL');
167
+ };
168
+ const timer = setTimeout(() => {
169
+ timedOut = true;
170
+ killTree();
171
+ }, timeoutMs);
172
+ const onAbort = () => killTree();
173
+ signal?.addEventListener('abort', onAbort, { once: true });
174
+ child.on('error', (error) => {
175
+ finish({ exitCode: null, timedOut, stdout, stderr, spawnError: error.message });
176
+ });
177
+ child.on('close', (code) => {
178
+ finish({ exitCode: code, timedOut, stdout, stderr });
179
+ });
180
+ child.on('exit', () => {
181
+ // After a kill, a survivor that still holds the pipes must not hold
182
+ // the outcome: drop our ends so `close` follows `exit` promptly.
183
+ if (timedOut || signal?.aborted) {
184
+ child.stdout?.destroy();
185
+ child.stderr?.destroy();
186
+ }
187
+ });
188
+ child.stdin?.on('error', () => {
189
+ // A hook that never reads stdin closes it; that is not a failure.
190
+ });
191
+ child.stdin?.end(payload);
192
+ });
193
+ }
194
+ function pathOf(toolInput) {
195
+ if (toolInput === null || typeof toolInput !== 'object')
196
+ return undefined;
197
+ const record = toolInput;
198
+ for (const key of ['path', 'file_path', 'filePath']) {
199
+ const value = record[key];
200
+ if (typeof value === 'string' && value.length > 0)
201
+ return value;
202
+ }
203
+ return undefined;
204
+ }
205
+ /**
206
+ * The verdict, from the outcome and the event. Pure apart from the logger,
207
+ * so the mapping — the part that decides what the model is told — is
208
+ * testable without a process.
209
+ */
210
+ export function shellHookVerdict(event, entry, outcome, log = NOOP_LOGGER) {
211
+ const attrs = { 'namzu.hook.event': event, 'namzu.hook.command': entry.command };
212
+ if (outcome.spawnError !== undefined) {
213
+ log.warn('hook could not start', { ...attrs, 'namzu.hook.error': outcome.spawnError });
214
+ return { action: 'continue' };
215
+ }
216
+ if (outcome.timedOut) {
217
+ log.warn('hook timed out', attrs);
218
+ return { action: 'continue' };
219
+ }
220
+ if (outcome.exitCode === 0) {
221
+ // On the prompt event, what the hook printed is context for the
222
+ // model — the branch, the time, a ticket. Everywhere else stdout is
223
+ // the operator's to read and the model's business not at all.
224
+ const text = outcome.stdout.trim();
225
+ if (event === 'user_prompt_submit' && text.length > 0)
226
+ return { action: 'annotate', text };
227
+ return { action: 'continue' };
228
+ }
229
+ if (outcome.exitCode === 2) {
230
+ const reason = outcome.stderr.trim() || outcome.stdout.trim() || `blocked by hook \`${entry.command}\``;
231
+ if (event === 'pre_tool_use' || event === 'user_prompt_submit')
232
+ return { action: 'skip', reason };
233
+ log.warn('hook returned 2 on an event it cannot block', {
234
+ ...attrs,
235
+ 'namzu.hook.reason': reason,
236
+ });
237
+ return { action: 'continue' };
238
+ }
239
+ log.warn('hook failed', {
240
+ ...attrs,
241
+ 'namzu.hook.exit': outcome.exitCode ?? -1,
242
+ 'namzu.hook.stderr': outcome.stderr.trim().slice(0, 500),
243
+ });
244
+ return { action: 'continue' };
245
+ }
246
+ /** One entry as a hook definition the lifecycle manager accepts. */
247
+ export function createShellHook(event, entry, options) {
248
+ const log = options.log ?? NOOP_LOGGER;
249
+ return {
250
+ event,
251
+ handler: async (context) => {
252
+ if (!shellHookMatches(entry.matcher, context.toolName))
253
+ return { action: 'continue' };
254
+ const outcome = await runShellHook(entry, {
255
+ event,
256
+ cwd: options.cwd,
257
+ runId: String(context.runId),
258
+ ...(context.sessionId !== undefined ? { sessionId: String(context.sessionId) } : {}),
259
+ ...(context.parentRunId !== undefined
260
+ ? { parentRunId: String(context.parentRunId) }
261
+ : {}),
262
+ ...(context.prompt !== undefined ? { prompt: context.prompt } : {}),
263
+ ...(context.compaction !== undefined ? { compaction: context.compaction } : {}),
264
+ ...(context.toolName !== undefined ? { toolName: context.toolName } : {}),
265
+ ...(context.toolInput !== undefined ? { toolInput: context.toolInput } : {}),
266
+ ...(context.toolResult !== undefined
267
+ ? {
268
+ toolResult: {
269
+ success: context.toolResult.success,
270
+ output: context.toolResult.output,
271
+ ...(context.toolResult.error !== undefined
272
+ ? { error: context.toolResult.error }
273
+ : {}),
274
+ },
275
+ }
276
+ : {}),
277
+ }, context.signal);
278
+ return shellHookVerdict(event, entry, outcome, log);
279
+ },
280
+ };
281
+ }
282
+ /**
283
+ * Register every entry on the manager, in file order within an event. The
284
+ * manager runs `post_*` hooks in reverse, as it does for plugins, so a
285
+ * formatter registered last runs first after a write. Returns how many were
286
+ * attached.
287
+ */
288
+ export function attachShellHooks(manager, hooks, options) {
289
+ const pluginId = options.pluginId ?? SHELL_HOOKS_PLUGIN_ID;
290
+ let count = 0;
291
+ for (const event of SHELL_HOOK_EVENTS) {
292
+ for (const entry of hooks[event] ?? []) {
293
+ manager.registerHook(pluginId, createShellHook(event, entry, options));
294
+ count += 1;
295
+ }
296
+ }
297
+ return count;
298
+ }
299
+ //# sourceMappingURL=shell-hook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shell-hook.js","sourceRoot":"","sources":["../../src/plugin/shell-hook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * How a coding agent works, as text the model reads.
3
+ *
4
+ * A system prompt built from the kernel says WHO the agent is and what tools
5
+ * it has. Nothing said HOW it should work: whether to act or ask, how much of
6
+ * a request to deliver, what to do when a test fails, when a shell command is
7
+ * the wrong tool, what is off-limits in git without a person saying so. Every
8
+ * one of those was left to the underlying model's defaults, and the defaults
9
+ * differ per provider — so the same session felt like a different agent
10
+ * depending on which model was behind it, and an operator experienced the gap
11
+ * as "it narrates instead of doing", "it stopped halfway", "it asked me three
12
+ * things it could have decided".
13
+ *
14
+ * This lived in the operator application first. It moved here because none of
15
+ * it is about that application: every rule names a builtin tool of this kernel
16
+ * (`read`, `edit`, `bash`, `task_create`, `Agent`) or a behaviour any coding
17
+ * agent built on it wants, and a second host would otherwise copy the text and
18
+ * let the two drift.
19
+ *
20
+ * Two texts, not one, and the split is by TOOL SET rather than by topic.
21
+ * `CODING_AGENT_WORKING_DOCTRINE` names only the builtins and is meant for the
22
+ * parent and for every delegated sub-agent, because a delegated task edits the
23
+ * same repository under the same rules. `CODING_AGENT_DELEGATION_DOCTRINE`
24
+ * names `task_create` and `Agent`, which a sub-agent does not have, and so is
25
+ * for the parent only. An adversarial review caught a draft ordering children
26
+ * to plan with a tool they could not call; a rule about a tool the reader does
27
+ * not have is not guidance, it is an instruction to fail.
28
+ *
29
+ * Each rule names a behaviour, not a value; a rule about one repository
30
+ * belongs in that repository's instructions file, which the model receives
31
+ * separately. A host that wants its own identity block puts it in
32
+ * `systemPrompt`; the contribution below lands after it.
33
+ */
34
+ import type { PromptContribution } from './contributions.js';
35
+ export declare const CODING_AGENT_WORKING_DOCTRINE = "## How you work\n\n### Delivering work\n- Act when you have enough information. Do not re-derive facts already established, and do not re-open a decision the user has already made.\n- The requested scope is the deliverable. Do not quietly narrow it, widen it, or turn it into something adjacent. Read ambiguity the way a careful colleague would; make the routine judgment calls yourself and check in only when different readings would produce materially different work.\n- Finish the whole task, not just the easy parts. If one part is blocked \u2014 a tool or capability you do not have, an input that is missing \u2014 say so plainly, do not improvise a result for it, finish every other part in full, and say explicitly what you left out and why. Scaling the work down is the user's call.\n- If you find a real problem with the task as stated, say so in a sentence or two, then keep going under a stated assumption. Reserve blocking questions for cases where proceeding under any assumption would be unsafe or would make the work useless if wrong.\n- If the user repeats or reaffirms a request after you raised a concern, that is their decision: say so and do the full request.\n\n### Reporting\n- Report outcomes faithfully. If tests fail, say so and show the output. If you skipped a step, say it was skipped. When something is done and verified, state it plainly without hedging.\n- Never present a green run on a subset as a green run. Name what was actually executed.\n- Reference code as `path:line` so the user can jump to it.\n- Correct an earlier statement only when the error would change the user's code, conclusions or decisions; state it once, plainly, and continue. No apologies, no tally of past mistakes.\n\n### Reading and editing code\n- Read a file before you edit it, and read enough of the surrounding code to match its comment density, naming and idiom. Code that reads like the file it lives in is the goal; code that reads like a different author is a defect.\n- Prefer the dedicated tools over shell equivalents: `read` over `cat`, the `grep` tool over running `grep` or `rg` through bash, `glob` over `find` or `ls -R`, `edit` over `sed -i`. To change an existing file use `edit`; use `write` only to create a file or when the user asked for a whole-file rewrite. The dedicated tools are bounded, previewable and permission-aware; a shell command is none of those.\n- Independent tool calls go in one response. Reading three files, or running a grep and a glob, does not need three turns. Tools that mutate the workspace \u2014 `bash`, `edit`, `write` \u2014 are applied one after another even when you emit them together; read-only tools run in parallel.\n- After a change, run the checks that would catch a mistake in it \u2014 the package's tests, typecheck, lint \u2014 before you report it done. A change you did not verify is a change you are guessing about.\n- Never leave the working tree in a state you have not described. If you created scratch files, say where; if you touched files outside the request, say which.\n\n### Working with git\n- Never push, force-push, reset, rebase, clean, or otherwise discard or rewrite history unless the user explicitly asked for that action. Approval for one push does not extend to the next.\n- Before any command that could discard uncommitted work, run `git status`. If there are changes there that you did not make, stop and ask rather than stashing, committing or discarding somebody else's work.\n- Commit only when the user asks, on the branch that is checked out. Do not create or switch branches unless the user asks or the project's instructions require it.\n- After a broad `git add`, review what was staged before committing; a file whose name looks harmless can still carry a secret.\n\n### Keeping the user informed\n- Before a batch of tool calls, say in one short line what you are about to do and why. When you have been working for a while without saying anything, say in a few words where you are, then continue. One line, not a paragraph; the tool rows on screen already show the details.\n- Keep the final reply short and specific: what changed, what was verified, what is left. Do not restate the transcript.";
36
+ /**
37
+ * Parent-only: rules about `task_create` / `task_update` and `Agent`, which a
38
+ * delegated sub-agent does not have. See the module comment for the split.
39
+ */
40
+ export declare const CODING_AGENT_DELEGATION_DOCTRINE = "### Planning and delegating\n- For work that is genuinely multi-step \u2014 several files, several distinct stages, anything you would write a checklist for \u2014 open a task list with `task_create` and keep it current with `task_update`, marking each step done when it is done rather than at the end. Do not open one for a single inspect-edit-test cycle; the list is for the user to follow, and a list of one item tells them nothing.\n- When the `Agent` tool is available, delegate genuinely independent work through it and give each delegation a short, specific description; the user watches those descriptions, not the prompts. Each sub-agent starts with no context, so the prompt must carry everything it needs.\n- Delegate lookups \u2014 where something is defined, which files reference it, how a module works \u2014 with `subagent_type: \"explore\"`: it has reading and searching tools only and never interrupts the user for permission. Reserve the default sub-agent for work that changes files or runs commands.";
41
+ /**
42
+ * For a session whose permission layer refuses every mutation. Says what that
43
+ * layer will enforce anyway, so the model plans instead of discovering the
44
+ * boundary one refused call at a time.
45
+ */
46
+ export declare const PLAN_MODE_DOCTRINE = "## Plan mode\n\nYou are in plan mode. Read, search and think; do not change anything. `read`, `grep`, `glob` and the other read-only tools work as usual, and you may keep a task list. Any `edit`, `write` or shell command that changes state will be refused, so do not attempt one.\n\nWhen you have understood the task, reply with the plan: what you would change, in which files, in what order, and what you would verify. Be concrete \u2014 name files and functions \u2014 and short enough to read in one screen. Then stop and wait; the user will leave plan mode to have the plan carried out, and that switch is their approval.";
47
+ export declare const CODING_AGENT_DOCTRINE_CONTRIBUTION_ID = "namzu.coding-agent-doctrine";
48
+ export interface CodingAgentDoctrineOptions {
49
+ /**
50
+ * Include the parent-only delegation rules. Default `true`; a host
51
+ * building the prompt of a delegated sub-agent, which has no `Agent` or
52
+ * `task_create`, passes `false`.
53
+ */
54
+ delegation?: boolean;
55
+ }
56
+ /**
57
+ * The doctrine as a `static` contribution: it depends on nothing that changes
58
+ * inside a run, so it belongs in the cached prefix. Register it on the
59
+ * `PromptContributionRegistry` handed to `query`; it renders after
60
+ * `systemPrompt` and the skills section.
61
+ */
62
+ export declare function codingAgentDoctrineContribution(options?: CodingAgentDoctrineOptions): PromptContribution;
63
+ //# sourceMappingURL=coding-agent-doctrine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agent-doctrine.d.ts","sourceRoot":"","sources":["../../src/prompt/coding-agent-doctrine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,6BAA6B,mnIA8B+E,CAAA;AAEzH;;;GAGG;AACH,eAAO,MAAM,gCAAgC,igCAGwP,CAAA;AAErS;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,snBAI8S,CAAA;AAE7U,eAAO,MAAM,qCAAqC,gCAAgC,CAAA;AAElF,MAAM,WAAW,0BAA0B;IAC1C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC9C,OAAO,GAAE,0BAA+B,GACtC,kBAAkB,CAUpB"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * How a coding agent works, as text the model reads.
3
+ *
4
+ * A system prompt built from the kernel says WHO the agent is and what tools
5
+ * it has. Nothing said HOW it should work: whether to act or ask, how much of
6
+ * a request to deliver, what to do when a test fails, when a shell command is
7
+ * the wrong tool, what is off-limits in git without a person saying so. Every
8
+ * one of those was left to the underlying model's defaults, and the defaults
9
+ * differ per provider — so the same session felt like a different agent
10
+ * depending on which model was behind it, and an operator experienced the gap
11
+ * as "it narrates instead of doing", "it stopped halfway", "it asked me three
12
+ * things it could have decided".
13
+ *
14
+ * This lived in the operator application first. It moved here because none of
15
+ * it is about that application: every rule names a builtin tool of this kernel
16
+ * (`read`, `edit`, `bash`, `task_create`, `Agent`) or a behaviour any coding
17
+ * agent built on it wants, and a second host would otherwise copy the text and
18
+ * let the two drift.
19
+ *
20
+ * Two texts, not one, and the split is by TOOL SET rather than by topic.
21
+ * `CODING_AGENT_WORKING_DOCTRINE` names only the builtins and is meant for the
22
+ * parent and for every delegated sub-agent, because a delegated task edits the
23
+ * same repository under the same rules. `CODING_AGENT_DELEGATION_DOCTRINE`
24
+ * names `task_create` and `Agent`, which a sub-agent does not have, and so is
25
+ * for the parent only. An adversarial review caught a draft ordering children
26
+ * to plan with a tool they could not call; a rule about a tool the reader does
27
+ * not have is not guidance, it is an instruction to fail.
28
+ *
29
+ * Each rule names a behaviour, not a value; a rule about one repository
30
+ * belongs in that repository's instructions file, which the model receives
31
+ * separately. A host that wants its own identity block puts it in
32
+ * `systemPrompt`; the contribution below lands after it.
33
+ */
34
+ export const CODING_AGENT_WORKING_DOCTRINE = `## How you work
35
+
36
+ ### Delivering work
37
+ - Act when you have enough information. Do not re-derive facts already established, and do not re-open a decision the user has already made.
38
+ - The requested scope is the deliverable. Do not quietly narrow it, widen it, or turn it into something adjacent. Read ambiguity the way a careful colleague would; make the routine judgment calls yourself and check in only when different readings would produce materially different work.
39
+ - Finish the whole task, not just the easy parts. If one part is blocked — a tool or capability you do not have, an input that is missing — say so plainly, do not improvise a result for it, finish every other part in full, and say explicitly what you left out and why. Scaling the work down is the user's call.
40
+ - If you find a real problem with the task as stated, say so in a sentence or two, then keep going under a stated assumption. Reserve blocking questions for cases where proceeding under any assumption would be unsafe or would make the work useless if wrong.
41
+ - If the user repeats or reaffirms a request after you raised a concern, that is their decision: say so and do the full request.
42
+
43
+ ### Reporting
44
+ - Report outcomes faithfully. If tests fail, say so and show the output. If you skipped a step, say it was skipped. When something is done and verified, state it plainly without hedging.
45
+ - Never present a green run on a subset as a green run. Name what was actually executed.
46
+ - Reference code as \`path:line\` so the user can jump to it.
47
+ - Correct an earlier statement only when the error would change the user's code, conclusions or decisions; state it once, plainly, and continue. No apologies, no tally of past mistakes.
48
+
49
+ ### Reading and editing code
50
+ - Read a file before you edit it, and read enough of the surrounding code to match its comment density, naming and idiom. Code that reads like the file it lives in is the goal; code that reads like a different author is a defect.
51
+ - Prefer the dedicated tools over shell equivalents: \`read\` over \`cat\`, the \`grep\` tool over running \`grep\` or \`rg\` through bash, \`glob\` over \`find\` or \`ls -R\`, \`edit\` over \`sed -i\`. To change an existing file use \`edit\`; use \`write\` only to create a file or when the user asked for a whole-file rewrite. The dedicated tools are bounded, previewable and permission-aware; a shell command is none of those.
52
+ - Independent tool calls go in one response. Reading three files, or running a grep and a glob, does not need three turns. Tools that mutate the workspace — \`bash\`, \`edit\`, \`write\` — are applied one after another even when you emit them together; read-only tools run in parallel.
53
+ - After a change, run the checks that would catch a mistake in it — the package's tests, typecheck, lint — before you report it done. A change you did not verify is a change you are guessing about.
54
+ - Never leave the working tree in a state you have not described. If you created scratch files, say where; if you touched files outside the request, say which.
55
+
56
+ ### Working with git
57
+ - Never push, force-push, reset, rebase, clean, or otherwise discard or rewrite history unless the user explicitly asked for that action. Approval for one push does not extend to the next.
58
+ - Before any command that could discard uncommitted work, run \`git status\`. If there are changes there that you did not make, stop and ask rather than stashing, committing or discarding somebody else's work.
59
+ - Commit only when the user asks, on the branch that is checked out. Do not create or switch branches unless the user asks or the project's instructions require it.
60
+ - After a broad \`git add\`, review what was staged before committing; a file whose name looks harmless can still carry a secret.
61
+
62
+ ### Keeping the user informed
63
+ - Before a batch of tool calls, say in one short line what you are about to do and why. When you have been working for a while without saying anything, say in a few words where you are, then continue. One line, not a paragraph; the tool rows on screen already show the details.
64
+ - Keep the final reply short and specific: what changed, what was verified, what is left. Do not restate the transcript.`;
65
+ /**
66
+ * Parent-only: rules about `task_create` / `task_update` and `Agent`, which a
67
+ * delegated sub-agent does not have. See the module comment for the split.
68
+ */
69
+ export const CODING_AGENT_DELEGATION_DOCTRINE = `### Planning and delegating
70
+ - For work that is genuinely multi-step — several files, several distinct stages, anything you would write a checklist for — open a task list with \`task_create\` and keep it current with \`task_update\`, marking each step done when it is done rather than at the end. Do not open one for a single inspect-edit-test cycle; the list is for the user to follow, and a list of one item tells them nothing.
71
+ - When the \`Agent\` tool is available, delegate genuinely independent work through it and give each delegation a short, specific description; the user watches those descriptions, not the prompts. Each sub-agent starts with no context, so the prompt must carry everything it needs.
72
+ - Delegate lookups — where something is defined, which files reference it, how a module works — with \`subagent_type: "explore"\`: it has reading and searching tools only and never interrupts the user for permission. Reserve the default sub-agent for work that changes files or runs commands.`;
73
+ /**
74
+ * For a session whose permission layer refuses every mutation. Says what that
75
+ * layer will enforce anyway, so the model plans instead of discovering the
76
+ * boundary one refused call at a time.
77
+ */
78
+ export const PLAN_MODE_DOCTRINE = `## Plan mode
79
+
80
+ You are in plan mode. Read, search and think; do not change anything. \`read\`, \`grep\`, \`glob\` and the other read-only tools work as usual, and you may keep a task list. Any \`edit\`, \`write\` or shell command that changes state will be refused, so do not attempt one.
81
+
82
+ When you have understood the task, reply with the plan: what you would change, in which files, in what order, and what you would verify. Be concrete — name files and functions — and short enough to read in one screen. Then stop and wait; the user will leave plan mode to have the plan carried out, and that switch is their approval.`;
83
+ export const CODING_AGENT_DOCTRINE_CONTRIBUTION_ID = 'namzu.coding-agent-doctrine';
84
+ /**
85
+ * The doctrine as a `static` contribution: it depends on nothing that changes
86
+ * inside a run, so it belongs in the cached prefix. Register it on the
87
+ * `PromptContributionRegistry` handed to `query`; it renders after
88
+ * `systemPrompt` and the skills section.
89
+ */
90
+ export function codingAgentDoctrineContribution(options = {}) {
91
+ const text = options.delegation === false
92
+ ? CODING_AGENT_WORKING_DOCTRINE
93
+ : `${CODING_AGENT_WORKING_DOCTRINE}\n\n${CODING_AGENT_DELEGATION_DOCTRINE}`;
94
+ return {
95
+ id: CODING_AGENT_DOCTRINE_CONTRIBUTION_ID,
96
+ placement: 'static',
97
+ render: () => text,
98
+ };
99
+ }
100
+ //# sourceMappingURL=coding-agent-doctrine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coding-agent-doctrine.js","sourceRoot":"","sources":["../../src/prompt/coding-agent-doctrine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yHA8B4E,CAAA;AAEzH;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;qSAGqP,CAAA;AAErS;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;6UAI2S,CAAA;AAE7U,MAAM,CAAC,MAAM,qCAAqC,GAAG,6BAA6B,CAAA;AAWlF;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC9C,UAAsC,EAAE;IAExC,MAAM,IAAI,GACT,OAAO,CAAC,UAAU,KAAK,KAAK;QAC3B,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,GAAG,6BAA6B,OAAO,gCAAgC,EAAE,CAAA;IAC7E,OAAO;QACN,EAAE,EAAE,qCAAqC;QACzC,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB,CAAA;AACF,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export { PromptContributionCollisionError, PromptContributionRegistry, SKILLS_CONTRIBUTION_ID, skillsContribution, } from './contributions.js';
2
2
  export type { PromptContribution, PromptContributionContext, PromptPlacement, } from './contributions.js';
3
+ export { CODING_AGENT_DELEGATION_DOCTRINE, CODING_AGENT_DOCTRINE_CONTRIBUTION_ID, CODING_AGENT_WORKING_DOCTRINE, PLAN_MODE_DOCTRINE, codingAgentDoctrineContribution, } from './coding-agent-doctrine.js';
4
+ export type { CodingAgentDoctrineOptions } from './coding-agent-doctrine.js';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACX,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,GACf,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACX,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,6BAA6B,EAC7B,kBAAkB,EAClB,+BAA+B,GAC/B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA"}
@@ -3,4 +3,5 @@
3
3
  // needed the model to know something had to argue for a branch or splice
4
4
  // into `systemPrompt` and lose whatever was there.
5
5
  export { PromptContributionCollisionError, PromptContributionRegistry, SKILLS_CONTRIBUTION_ID, skillsContribution, } from './contributions.js';
6
+ export { CODING_AGENT_DELEGATION_DOCTRINE, CODING_AGENT_DOCTRINE_CONTRIBUTION_ID, CODING_AGENT_WORKING_DOCTRINE, PLAN_MODE_DOCTRINE, codingAgentDoctrineContribution, } from './coding-agent-doctrine.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,mDAAmD;AACnD,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,mDAAmD;AACnD,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,6BAA6B,EAC7B,kBAAkB,EAClB,+BAA+B,GAC/B,MAAM,4BAA4B,CAAA"}
@@ -143,7 +143,7 @@ export declare function classifyProviderHttpStatus(status: number, body?: string
143
143
  * isolation — that is what would catch a driver that stops going through
144
144
  * `providerVendorError`/`providerHttpError` and attaches one directly.
145
145
  * `packages/sdk/src/provider/__tests__/errors.test.ts` pins the same thing
146
- * against this shared function directly. See `docs/conventions/index.md`.
146
+ * against this shared function directly. See "index".
147
147
  *
148
148
  * `name` is checked too, because AWS models its failures as distinct classes
149
149
  * (`ThrottlingException`, `ValidationException`, `AccessDeniedException`) rather
@@ -394,7 +394,7 @@ function vendorRetryAfter(err) {
394
394
  * isolation — that is what would catch a driver that stops going through
395
395
  * `providerVendorError`/`providerHttpError` and attaches one directly.
396
396
  * `packages/sdk/src/provider/__tests__/errors.test.ts` pins the same thing
397
- * against this shared function directly. See `docs/conventions/index.md`.
397
+ * against this shared function directly. See "index".
398
398
  *
399
399
  * `name` is checked too, because AWS models its failures as distinct classes
400
400
  * (`ThrottlingException`, `ValidationException`, `AccessDeniedException`) rather
@@ -55,6 +55,8 @@ export interface ServingMember {
55
55
  readonly model?: string;
56
56
  }
57
57
  export interface WithProviderFallbackOptions {
58
+ /** Additional live admission policy before selecting another provider. */
59
+ readonly canFallback?: () => boolean;
58
60
  readonly log?: Logger;
59
61
  /**
60
62
  * Called once per swap, with the member that serves from here on.
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEX,WAAW,EAIX,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,GAAE,2BAAgC,GACvC,WAAW,CAuLb"}
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEX,WAAW,EAIX,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,GAAE,2BAAgC,GACvC,WAAW,CAwLb"}
@@ -56,7 +56,7 @@ import { classifyProviderError, isAbortError } from '../types/provider/errors.js
56
56
  * classifier maps a `content_policy_violation` structural code onto it, and
57
57
  * `ProviderError` is a public type a third-party driver constructs directly.
58
58
  * Named rather than omitted for that reason; see
59
- * `docs/conventions/a-check-that-cannot-fail.md` for why an unnameable one
59
+ * "a check that cannot fail" for why an unnameable one
60
60
  * would have been left out.
61
61
  */
62
62
  const REQUEST_FAULT_CODES = new Set([
@@ -287,6 +287,8 @@ export function withProviderFallback(members, options = {}) {
287
287
  // guards the same way and for the same reason.
288
288
  if (isAbortError(err) || params.signal?.aborted)
289
289
  throw err;
290
+ if (options.canFallback?.() === false)
291
+ throw err;
290
292
  const next = cursor + 1;
291
293
  const to = members[next];
292
294
  if (produced || !to || !shouldFallOver(err, member.provider.id)) {
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"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"}
@@ -30,6 +30,8 @@ export interface ProviderRetryConfig extends BackoffPolicy {
30
30
  }
31
31
  export declare const DEFAULT_PROVIDER_RETRY: ProviderRetryConfig;
32
32
  export interface WithProviderRetryOptions {
33
+ /** Additional live admission policy, checked before scheduling a retry. */
34
+ readonly canRetry?: () => boolean;
33
35
  readonly config?: Partial<ProviderRetryConfig>;
34
36
  readonly log?: Logger;
35
37
  /** Seam for deterministic tests. */