@namzu/sdk 59.0.0 → 60.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/dist/agents/QueryAgent.d.ts.map +1 -1
  3. package/dist/agents/QueryAgent.js +1 -0
  4. package/dist/agents/QueryAgent.js.map +1 -1
  5. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  6. package/dist/bridge/a2a/mapper.js +16 -0
  7. package/dist/bridge/a2a/mapper.js.map +1 -1
  8. package/dist/bridge/acp/update.d.ts.map +1 -1
  9. package/dist/bridge/acp/update.js +1 -0
  10. package/dist/bridge/acp/update.js.map +1 -1
  11. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  12. package/dist/bridge/sse/mapper.js +12 -0
  13. package/dist/bridge/sse/mapper.js.map +1 -1
  14. package/dist/compaction/context-window.d.ts +53 -0
  15. package/dist/compaction/context-window.d.ts.map +1 -1
  16. package/dist/compaction/context-window.js +141 -2
  17. package/dist/compaction/context-window.js.map +1 -1
  18. package/dist/constants/continuation.d.ts +9 -0
  19. package/dist/constants/continuation.d.ts.map +1 -1
  20. package/dist/constants/continuation.js +9 -0
  21. package/dist/constants/continuation.js.map +1 -1
  22. package/dist/contracts/session/api.d.ts +7 -1
  23. package/dist/contracts/session/api.d.ts.map +1 -1
  24. package/dist/execution/workflow/index.d.ts +3 -1
  25. package/dist/execution/workflow/index.d.ts.map +1 -1
  26. package/dist/execution/workflow/index.js +2 -1
  27. package/dist/execution/workflow/index.js.map +1 -1
  28. package/dist/execution/workflow/journal.d.ts +24 -4
  29. package/dist/execution/workflow/journal.d.ts.map +1 -1
  30. package/dist/execution/workflow/journal.js +131 -9
  31. package/dist/execution/workflow/journal.js.map +1 -1
  32. package/dist/execution/workflow/prelude.d.ts +2 -0
  33. package/dist/execution/workflow/prelude.d.ts.map +1 -1
  34. package/dist/execution/workflow/prelude.js +49 -8
  35. package/dist/execution/workflow/prelude.js.map +1 -1
  36. package/dist/execution/workflow/resume.d.ts +59 -0
  37. package/dist/execution/workflow/resume.d.ts.map +1 -0
  38. package/dist/execution/workflow/resume.js +273 -0
  39. package/dist/execution/workflow/resume.js.map +1 -0
  40. package/dist/execution/workflow/runtime.d.ts.map +1 -1
  41. package/dist/execution/workflow/runtime.js +112 -8
  42. package/dist/execution/workflow/runtime.js.map +1 -1
  43. package/dist/execution/workflow/types.d.ts +105 -1
  44. package/dist/execution/workflow/types.d.ts.map +1 -1
  45. package/dist/index.d.ts +3 -0
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +4 -0
  48. package/dist/index.js.map +1 -1
  49. package/dist/manager/session/turn-recorder.d.ts.map +1 -1
  50. package/dist/manager/session/turn-recorder.js +1 -0
  51. package/dist/manager/session/turn-recorder.js.map +1 -1
  52. package/dist/plugin/compat.d.ts +24 -0
  53. package/dist/plugin/compat.d.ts.map +1 -0
  54. package/dist/plugin/compat.js +149 -0
  55. package/dist/plugin/compat.js.map +1 -0
  56. package/dist/plugin/loader.d.ts +2 -1
  57. package/dist/plugin/loader.d.ts.map +1 -1
  58. package/dist/plugin/loader.js +6 -0
  59. package/dist/plugin/loader.js.map +1 -1
  60. package/dist/pricing/index.d.ts.map +1 -1
  61. package/dist/pricing/index.js +2 -1
  62. package/dist/pricing/index.js.map +1 -1
  63. package/dist/process/kill-tree.d.ts +44 -0
  64. package/dist/process/kill-tree.d.ts.map +1 -1
  65. package/dist/process/kill-tree.js +102 -4
  66. package/dist/process/kill-tree.js.map +1 -1
  67. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  68. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  69. package/dist/prompt/coding-agent-doctrine.js +9 -1
  70. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  71. package/dist/provider/collect-chat-completion.d.ts.map +1 -1
  72. package/dist/provider/collect-chat-completion.js +4 -0
  73. package/dist/provider/collect-chat-completion.js.map +1 -1
  74. package/dist/provider/fallback.d.ts.map +1 -1
  75. package/dist/provider/fallback.js +11 -0
  76. package/dist/provider/fallback.js.map +1 -1
  77. package/dist/provider/idle-timeout.d.ts.map +1 -1
  78. package/dist/provider/idle-timeout.js +5 -0
  79. package/dist/provider/idle-timeout.js.map +1 -1
  80. package/dist/provider/mock.d.ts +2 -0
  81. package/dist/provider/mock.d.ts.map +1 -1
  82. package/dist/provider/mock.js +16 -8
  83. package/dist/provider/mock.js.map +1 -1
  84. package/dist/provider/model-window-suffix.d.ts +18 -0
  85. package/dist/provider/model-window-suffix.d.ts.map +1 -0
  86. package/dist/provider/model-window-suffix.js +78 -0
  87. package/dist/provider/model-window-suffix.js.map +1 -0
  88. package/dist/provider/retry.d.ts.map +1 -1
  89. package/dist/provider/retry.js +5 -0
  90. package/dist/provider/retry.js.map +1 -1
  91. package/dist/public-runtime.d.ts +5 -3
  92. package/dist/public-runtime.d.ts.map +1 -1
  93. package/dist/public-runtime.js +5 -4
  94. package/dist/public-runtime.js.map +1 -1
  95. package/dist/public-types.d.ts +1 -0
  96. package/dist/public-types.d.ts.map +1 -1
  97. package/dist/registry/command/kernel-commands.d.ts +1 -4
  98. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  99. package/dist/registry/command/kernel-commands.js +0 -28
  100. package/dist/registry/command/kernel-commands.js.map +1 -1
  101. package/dist/runtime/jobs/awaited-jobs.d.ts +6 -0
  102. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  103. package/dist/runtime/jobs/awaited-jobs.js +11 -0
  104. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  105. package/dist/runtime/jobs/host-exit-finalizer.d.ts +20 -0
  106. package/dist/runtime/jobs/host-exit-finalizer.d.ts.map +1 -0
  107. package/dist/runtime/jobs/host-exit-finalizer.js +57 -0
  108. package/dist/runtime/jobs/host-exit-finalizer.js.map +1 -0
  109. package/dist/runtime/jobs/liveness.d.ts +67 -0
  110. package/dist/runtime/jobs/liveness.d.ts.map +1 -0
  111. package/dist/runtime/jobs/liveness.js +94 -0
  112. package/dist/runtime/jobs/liveness.js.map +1 -0
  113. package/dist/runtime/jobs/registry.d.ts +21 -0
  114. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  115. package/dist/runtime/jobs/registry.js +104 -2
  116. package/dist/runtime/jobs/registry.js.map +1 -1
  117. package/dist/runtime/jobs/wake-budget.d.ts +35 -0
  118. package/dist/runtime/jobs/wake-budget.d.ts.map +1 -0
  119. package/dist/runtime/jobs/wake-budget.js +48 -0
  120. package/dist/runtime/jobs/wake-budget.js.map +1 -0
  121. package/dist/runtime/query/detached-calls.d.ts +65 -0
  122. package/dist/runtime/query/detached-calls.d.ts.map +1 -0
  123. package/dist/runtime/query/detached-calls.js +116 -0
  124. package/dist/runtime/query/detached-calls.js.map +1 -0
  125. package/dist/runtime/query/executor.d.ts +4 -1
  126. package/dist/runtime/query/executor.d.ts.map +1 -1
  127. package/dist/runtime/query/executor.js +90 -6
  128. package/dist/runtime/query/executor.js.map +1 -1
  129. package/dist/runtime/query/index.d.ts +34 -0
  130. package/dist/runtime/query/index.d.ts.map +1 -1
  131. package/dist/runtime/query/index.js +32 -5
  132. package/dist/runtime/query/index.js.map +1 -1
  133. package/dist/runtime/query/iteration/effort-clamp.d.ts +13 -0
  134. package/dist/runtime/query/iteration/effort-clamp.d.ts.map +1 -0
  135. package/dist/runtime/query/iteration/effort-clamp.js +42 -0
  136. package/dist/runtime/query/iteration/effort-clamp.js.map +1 -0
  137. package/dist/runtime/query/iteration/index.d.ts +34 -0
  138. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  139. package/dist/runtime/query/iteration/index.js +199 -6
  140. package/dist/runtime/query/iteration/index.js.map +1 -1
  141. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  142. package/dist/runtime/query/iteration/outstanding-work.js +11 -3
  143. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  144. package/dist/runtime/query/iteration/phases/context.d.ts +9 -0
  145. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  146. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  147. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  148. package/dist/runtime/query/iteration/phases/tool-review.js +63 -1
  149. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  150. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  151. package/dist/runtime/query/iteration/stream-turn.js +6 -0
  152. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  153. package/dist/runtime/query/session-storage.d.ts.map +1 -1
  154. package/dist/runtime/query/session-storage.js +8 -3
  155. package/dist/runtime/query/session-storage.js.map +1 -1
  156. package/dist/runtime/query/steering.d.ts +29 -3
  157. package/dist/runtime/query/steering.d.ts.map +1 -1
  158. package/dist/runtime/query/steering.js +58 -3
  159. package/dist/runtime/query/steering.js.map +1 -1
  160. package/dist/runtime/query/tooling.d.ts +1 -0
  161. package/dist/runtime/query/tooling.d.ts.map +1 -1
  162. package/dist/runtime/query/tooling.js +1 -0
  163. package/dist/runtime/query/tooling.js.map +1 -1
  164. package/dist/runtime/system-events.d.ts +5 -0
  165. package/dist/runtime/system-events.d.ts.map +1 -1
  166. package/dist/runtime/system-events.js +7 -1
  167. package/dist/runtime/system-events.js.map +1 -1
  168. package/dist/sandbox/denial.d.ts +11 -0
  169. package/dist/sandbox/denial.d.ts.map +1 -0
  170. package/dist/sandbox/denial.js +61 -0
  171. package/dist/sandbox/denial.js.map +1 -0
  172. package/dist/sandbox/file-walk-program.d.ts.map +1 -1
  173. package/dist/sandbox/file-walk-program.js +31 -13
  174. package/dist/sandbox/file-walk-program.js.map +1 -1
  175. package/dist/sandbox/file-walk.d.ts +2 -0
  176. package/dist/sandbox/file-walk.d.ts.map +1 -1
  177. package/dist/sandbox/file-walk.js +64 -13
  178. package/dist/sandbox/file-walk.js.map +1 -1
  179. package/dist/sandbox/ignore-matcher.d.ts +30 -0
  180. package/dist/sandbox/ignore-matcher.d.ts.map +1 -0
  181. package/dist/sandbox/ignore-matcher.js +11 -0
  182. package/dist/sandbox/ignore-matcher.js.map +1 -0
  183. package/dist/sandbox/ignore-source.d.ts +26 -0
  184. package/dist/sandbox/ignore-source.d.ts.map +1 -0
  185. package/dist/sandbox/ignore-source.js +221 -0
  186. package/dist/sandbox/ignore-source.js.map +1 -0
  187. package/dist/sandbox/provider/local.d.ts.map +1 -1
  188. package/dist/sandbox/provider/local.js +11 -1
  189. package/dist/sandbox/provider/local.js.map +1 -1
  190. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  191. package/dist/scheduler/completion-inbox.js +1 -0
  192. package/dist/scheduler/completion-inbox.js.map +1 -1
  193. package/dist/session/log-hash.d.ts.map +1 -1
  194. package/dist/session/log-hash.js +18 -1
  195. package/dist/session/log-hash.js.map +1 -1
  196. package/dist/store/memory/disk.d.ts.map +1 -1
  197. package/dist/store/memory/disk.js +1 -1
  198. package/dist/store/memory/disk.js.map +1 -1
  199. package/dist/store/memory/markdown.d.ts.map +1 -1
  200. package/dist/store/memory/markdown.js +1 -1
  201. package/dist/store/memory/markdown.js.map +1 -1
  202. package/dist/store/memory/operation-lock.d.ts +20 -4
  203. package/dist/store/memory/operation-lock.d.ts.map +1 -1
  204. package/dist/store/memory/operation-lock.js +235 -58
  205. package/dist/store/memory/operation-lock.js.map +1 -1
  206. package/dist/store/session-index/sqlite.d.ts.map +1 -1
  207. package/dist/store/session-index/sqlite.js +169 -16
  208. package/dist/store/session-index/sqlite.js.map +1 -1
  209. package/dist/tools/builtins/bash.d.ts.map +1 -1
  210. package/dist/tools/builtins/bash.js +10 -4
  211. package/dist/tools/builtins/bash.js.map +1 -1
  212. package/dist/tools/builtins/computer-use.d.ts +35 -0
  213. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  214. package/dist/tools/builtins/computer-use.js +512 -67
  215. package/dist/tools/builtins/computer-use.js.map +1 -1
  216. package/dist/tools/builtins/glob.d.ts +1 -0
  217. package/dist/tools/builtins/glob.d.ts.map +1 -1
  218. package/dist/tools/builtins/glob.js +65 -28
  219. package/dist/tools/builtins/glob.js.map +1 -1
  220. package/dist/tools/builtins/grep.d.ts +2 -0
  221. package/dist/tools/builtins/grep.d.ts.map +1 -1
  222. package/dist/tools/builtins/grep.js +94 -40
  223. package/dist/tools/builtins/grep.js.map +1 -1
  224. package/dist/tools/builtins/job.d.ts +1 -1
  225. package/dist/tools/builtins/job.d.ts.map +1 -1
  226. package/dist/tools/builtins/job.js +34 -7
  227. package/dist/tools/builtins/job.js.map +1 -1
  228. package/dist/tools/builtins/search-support.d.ts +44 -0
  229. package/dist/tools/builtins/search-support.d.ts.map +1 -0
  230. package/dist/tools/builtins/search-support.js +89 -0
  231. package/dist/tools/builtins/search-support.js.map +1 -0
  232. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  233. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  234. package/dist/tools/builtins/wait-for-job-bounds.js +3 -1
  235. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  236. package/dist/tools/builtins/wait-for-job.d.ts +1 -1
  237. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  238. package/dist/tools/builtins/wait-for-job.js +13 -2
  239. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  240. package/dist/tools/command-shell.d.ts.map +1 -1
  241. package/dist/tools/command-shell.js +14 -5
  242. package/dist/tools/command-shell.js.map +1 -1
  243. package/dist/turn/reporter.d.ts.map +1 -1
  244. package/dist/turn/reporter.js +11 -0
  245. package/dist/turn/reporter.js.map +1 -1
  246. package/dist/types/agent/query.d.ts +2 -0
  247. package/dist/types/agent/query.d.ts.map +1 -1
  248. package/dist/types/computer-use/index.d.ts +129 -13
  249. package/dist/types/computer-use/index.d.ts.map +1 -1
  250. package/dist/types/computer-use/index.js.map +1 -1
  251. package/dist/types/message/index.d.ts +1 -1
  252. package/dist/types/message/index.d.ts.map +1 -1
  253. package/dist/types/message/index.js +1 -0
  254. package/dist/types/message/index.js.map +1 -1
  255. package/dist/types/plugin/index.d.ts +24 -0
  256. package/dist/types/plugin/index.d.ts.map +1 -1
  257. package/dist/types/plugin/index.js +4 -0
  258. package/dist/types/plugin/index.js.map +1 -1
  259. package/dist/types/provider/chat.d.ts +19 -0
  260. package/dist/types/provider/chat.d.ts.map +1 -1
  261. package/dist/types/provider/config.d.ts +7 -0
  262. package/dist/types/provider/config.d.ts.map +1 -1
  263. package/dist/types/provider/index.d.ts +1 -1
  264. package/dist/types/provider/index.d.ts.map +1 -1
  265. package/dist/types/provider/interface.d.ts +15 -0
  266. package/dist/types/provider/interface.d.ts.map +1 -1
  267. package/dist/types/provider/stream.d.ts +6 -0
  268. package/dist/types/provider/stream.d.ts.map +1 -1
  269. package/dist/types/sandbox/index.d.ts +38 -1
  270. package/dist/types/sandbox/index.d.ts.map +1 -1
  271. package/dist/types/sandbox/index.js.map +1 -1
  272. package/dist/types/session/events.d.ts +34 -0
  273. package/dist/types/session/events.d.ts.map +1 -1
  274. package/dist/types/session/events.js.map +1 -1
  275. package/dist/types/session/records.d.ts +298 -34
  276. package/dist/types/session/records.d.ts.map +1 -1
  277. package/dist/types/session/records.js +35 -1
  278. package/dist/types/session/records.js.map +1 -1
  279. package/dist/types/session/stop-reason.d.ts +11 -0
  280. package/dist/types/session/stop-reason.d.ts.map +1 -1
  281. package/dist/types/tool/index.d.ts +30 -0
  282. package/dist/types/tool/index.d.ts.map +1 -1
  283. package/dist/types/tool/index.js.map +1 -1
  284. package/dist/types/tool/presentation.d.ts +8 -0
  285. package/dist/types/tool/presentation.d.ts.map +1 -1
  286. package/package.json +1 -1
  287. package/src/agents/QueryAgent.ts +1 -0
  288. package/src/bridge/a2a/mapper.ts +19 -0
  289. package/src/bridge/acp/update.ts +6 -1
  290. package/src/bridge/sse/mapper.ts +13 -0
  291. package/src/compaction/context-window.ts +163 -2
  292. package/src/constants/continuation.ts +13 -0
  293. package/src/contracts/session/api.ts +6 -0
  294. package/src/execution/workflow/index.ts +14 -1
  295. package/src/execution/workflow/journal.ts +161 -11
  296. package/src/execution/workflow/prelude.ts +51 -8
  297. package/src/execution/workflow/resume.ts +313 -0
  298. package/src/execution/workflow/runtime.ts +127 -9
  299. package/src/execution/workflow/types.ts +109 -1
  300. package/src/index.ts +17 -0
  301. package/src/manager/session/turn-recorder.ts +1 -0
  302. package/src/plugin/compat.ts +173 -0
  303. package/src/plugin/loader.ts +7 -1
  304. package/src/pricing/index.ts +2 -1
  305. package/src/process/kill-tree.ts +106 -4
  306. package/src/prompt/coding-agent-doctrine.ts +9 -1
  307. package/src/provider/collect-chat-completion.ts +3 -0
  308. package/src/provider/fallback.ts +17 -0
  309. package/src/provider/idle-timeout.ts +9 -0
  310. package/src/provider/mock.ts +19 -9
  311. package/src/provider/model-window-suffix.ts +85 -0
  312. package/src/provider/retry.ts +9 -0
  313. package/src/public-runtime.ts +21 -2
  314. package/src/public-types.ts +1 -0
  315. package/src/registry/command/kernel-commands.ts +1 -32
  316. package/src/runtime/jobs/awaited-jobs.ts +11 -0
  317. package/src/runtime/jobs/host-exit-finalizer.ts +67 -0
  318. package/src/runtime/jobs/liveness.ts +144 -0
  319. package/src/runtime/jobs/registry.ts +114 -2
  320. package/src/runtime/jobs/wake-budget.ts +55 -0
  321. package/src/runtime/query/detached-calls.ts +135 -0
  322. package/src/runtime/query/executor.ts +92 -10
  323. package/src/runtime/query/index.ts +65 -7
  324. package/src/runtime/query/iteration/effort-clamp.ts +46 -0
  325. package/src/runtime/query/iteration/index.ts +260 -6
  326. package/src/runtime/query/iteration/outstanding-work.ts +12 -3
  327. package/src/runtime/query/iteration/phases/context.ts +9 -0
  328. package/src/runtime/query/iteration/phases/tool-review.ts +73 -8
  329. package/src/runtime/query/iteration/stream-turn.ts +5 -0
  330. package/src/runtime/query/session-storage.ts +8 -3
  331. package/src/runtime/query/steering.ts +77 -6
  332. package/src/runtime/query/tooling.ts +2 -0
  333. package/src/runtime/system-events.ts +12 -1
  334. package/src/sandbox/denial.ts +79 -0
  335. package/src/sandbox/file-walk-program.ts +32 -13
  336. package/src/sandbox/file-walk.ts +75 -12
  337. package/src/sandbox/ignore-matcher.ts +46 -0
  338. package/src/sandbox/ignore-source.ts +220 -0
  339. package/src/sandbox/provider/local.ts +11 -1
  340. package/src/scheduler/completion-inbox.ts +1 -0
  341. package/src/session/log-hash.ts +21 -0
  342. package/src/store/memory/disk.ts +1 -0
  343. package/src/store/memory/markdown.ts +1 -0
  344. package/src/store/memory/operation-lock.ts +288 -57
  345. package/src/store/session-index/sqlite.ts +171 -16
  346. package/src/tools/builtins/bash.ts +11 -4
  347. package/src/tools/builtins/computer-use.ts +593 -68
  348. package/src/tools/builtins/glob.ts +79 -32
  349. package/src/tools/builtins/grep.ts +107 -43
  350. package/src/tools/builtins/job.ts +42 -12
  351. package/src/tools/builtins/search-support.ts +107 -0
  352. package/src/tools/builtins/wait-for-job-bounds.ts +5 -1
  353. package/src/tools/builtins/wait-for-job.ts +14 -2
  354. package/src/tools/command-shell.ts +13 -5
  355. package/src/turn/reporter.ts +12 -0
  356. package/src/types/agent/query.ts +2 -0
  357. package/src/types/computer-use/index.ts +157 -15
  358. package/src/types/message/index.ts +5 -3
  359. package/src/types/plugin/index.ts +8 -0
  360. package/src/types/provider/chat.ts +20 -0
  361. package/src/types/provider/config.ts +7 -0
  362. package/src/types/provider/index.ts +1 -0
  363. package/src/types/provider/interface.ts +20 -0
  364. package/src/types/provider/stream.ts +6 -0
  365. package/src/types/sandbox/index.ts +40 -1
  366. package/src/types/session/events.ts +65 -5
  367. package/src/types/session/records.ts +39 -2
  368. package/src/types/session/stop-reason.ts +11 -0
  369. package/src/types/tool/index.ts +30 -0
  370. package/src/types/tool/presentation.ts +8 -0
@@ -29,6 +29,94 @@
29
29
  * accumulates every release. Until a driver does that, an entry here is
30
30
  * only ever as fresh as the day someone checked it.
31
31
  */
32
+ /** The window an id declares with the `[1m]` suffix, and the ceiling `NAMZU_AUTO_COMPACT_WINDOW` accepts. */
33
+ export const ONE_MILLION_WINDOW_TOKENS = 1_000_000;
34
+ /** The window a model is held to when `NAMZU_DISABLE_1M_CONTEXT` is on. */
35
+ export const DISABLED_ONE_MILLION_WINDOW_CAP_TOKENS = 200_000;
36
+ const WINDOW_SUFFIX = /\[1m\]$/i;
37
+ /**
38
+ * A model id may end in `[1m]` (any case) to declare a one-million-token
39
+ * window, whether or not the id is recognised. The suffix is a marker for
40
+ * Namzu, never part of the vendor's name: strip it with this before an id
41
+ * reaches a driver or a wire.
42
+ */
43
+ export function splitModelWindowSuffix(model) {
44
+ const match = WINDOW_SUFFIX.exec(model);
45
+ if (!match)
46
+ return { model, declaresOneMillion: false };
47
+ return { model: model.slice(0, match.index), declaresOneMillion: true };
48
+ }
49
+ /** The id with any `[1m]` suffix removed. */
50
+ export function stripModelWindowSuffix(model) {
51
+ return splitModelWindowSuffix(model).model;
52
+ }
53
+ /**
54
+ * `NAMZU_DISABLE_1M_CONTEXT` (1, true, yes or on): the suffix is still
55
+ * stripped but declares nothing, and no window above 200,000 tokens is
56
+ * assumed for a model whose window comes from a driver or the table.
57
+ */
58
+ export function oneMillionWindowDisabled(env = process.env) {
59
+ const value = env.NAMZU_DISABLE_1M_CONTEXT?.trim().toLowerCase();
60
+ return value === '1' || value === 'true' || value === 'yes' || value === 'on';
61
+ }
62
+ /** Smallest and largest window `NAMZU_AUTO_COMPACT_WINDOW` can name. */
63
+ export const AUTO_COMPACT_WINDOW_MIN_TOKENS = 100_000;
64
+ export const AUTO_COMPACT_WINDOW_MAX_TOKENS = ONE_MILLION_WINDOW_TOKENS;
65
+ /**
66
+ * Read an automatic-summary window the way people write one: a plain number
67
+ * (`200000`) or one with a `k` or `m` suffix (`786k`, `1m`, `1.5m`). Anything
68
+ * under 100,000 is `below_minimum`, over 1,000,000 `above_maximum`, and
69
+ * something that is not a size at all `unusable`.
70
+ */
71
+ export function parseAutoCompactWindow(raw) {
72
+ const text = raw.trim();
73
+ const last = text.slice(-1).toLowerCase();
74
+ const scale = last === 'm' ? 1_000_000 : last === 'k' ? 1_000 : undefined;
75
+ const digits = scale === undefined ? text : text.slice(0, -1);
76
+ const valid = scale === undefined ? /^\+?\d+$/ : /^\+?\d+(\.\d+)?$/;
77
+ const value = valid.test(digits) ? Number(digits) * (scale ?? 1) : Number.NaN;
78
+ if (Number.isNaN(value) || value < 1)
79
+ return { kind: 'unusable' };
80
+ if (value < AUTO_COMPACT_WINDOW_MIN_TOKENS)
81
+ return {
82
+ kind: 'below_minimum',
83
+ tokens: Math.min(AUTO_COMPACT_WINDOW_MIN_TOKENS - 1, Math.round(value)),
84
+ };
85
+ if (value > AUTO_COMPACT_WINDOW_MAX_TOKENS)
86
+ return { kind: 'above_maximum' };
87
+ return { kind: 'in_range', tokens: Math.round(value) };
88
+ }
89
+ /**
90
+ * The window to use for a written size, and a one-line warning when what was
91
+ * written had to be changed: below 100,000 reads as 100,000, above 1,000,000
92
+ * as 1,000,000, and a non-size is ignored (`tokens` undefined). `source`
93
+ * names where it was written, e.g. `NAMZU_AUTO_COMPACT_WINDOW`.
94
+ */
95
+ export function resolveAutoCompactWindowSetting(raw, source) {
96
+ const text = String(raw);
97
+ const parsed = parseAutoCompactWindow(text);
98
+ const shown = `${source}="${text.slice(0, 32).replace(/[^\w.,+ $%{}=;-]+/g, '?')}${text.length > 32 ? '\u2026' : ''}"`;
99
+ const advice = 'Set it to a size from 100k to 1M, such as 200k or 200000, or unset it.';
100
+ switch (parsed.kind) {
101
+ case 'in_range':
102
+ return { tokens: parsed.tokens };
103
+ case 'below_minimum':
104
+ return {
105
+ tokens: AUTO_COMPACT_WINDOW_MIN_TOKENS,
106
+ warning: `${shown} reads as ${parsed.tokens.toLocaleString('en-US')} tokens, so Namzu treats it as the 100k minimum. ${advice}`,
107
+ };
108
+ case 'above_maximum':
109
+ return {
110
+ tokens: AUTO_COMPACT_WINDOW_MAX_TOKENS,
111
+ warning: `${shown} is too large, so Namzu treats it as the 1M maximum. ${advice}`,
112
+ };
113
+ case 'unusable':
114
+ return {
115
+ tokens: undefined,
116
+ warning: `${shown} isn't a usable size, so Namzu ignores it. ${advice}`,
117
+ };
118
+ }
119
+ }
32
120
  /**
33
121
  * Conservative default for a model we do not recognise.
34
122
  *
@@ -83,8 +171,29 @@ const WINDOWS = [
83
171
  ['qwen', 32_768],
84
172
  ['mistral-large', 128_000],
85
173
  ['mixtral', 32_768],
174
+ // The current DeepSeek models document a 1M window
175
+ // (https://api-docs.deepseek.com/quick_start/pricing), listed per id: a
176
+ // gateway can serve a derivative under a name that merely starts like one
177
+ // (a fine-tune, a distill), and nothing says it keeps the parent's window.
178
+ // Over-estimating ends a turn on a provider rejection; under-estimating
179
+ // costs a summary. So an id not named here falls to the bare `deepseek`
180
+ // row below, the 64k the older ids (chat, reasoner, R1 distills) had. The
181
+ // three ids are matched whole (see `DEEPSEEK_ONE_MILLION_IDS`), never by
182
+ // substring.
86
183
  ['deepseek', 64_000],
87
184
  ];
185
+ /** DeepSeek ids documented at a 1M window; matched exactly, not by substring. */
186
+ const DEEPSEEK_ONE_MILLION_IDS = new Set([
187
+ 'deepseek-v4-flash',
188
+ 'deepseek-v4-pro',
189
+ 'deepseek-flash',
190
+ ]);
191
+ /** The id with a gateway prefix (`deepseek/`) and a `:tag` (`:free`) removed. */
192
+ function bareModelName(id) {
193
+ const afterSlash = id.slice(id.lastIndexOf('/') + 1);
194
+ const colon = afterSlash.indexOf(':');
195
+ return colon === -1 ? afterSlash : afterSlash.slice(0, colon);
196
+ }
88
197
  const SORTED = [...WINDOWS].sort((a, b) => b[0].length - a[0].length);
89
198
  /**
90
199
  * Best-effort context window for a model id, or `undefined` when the id is
@@ -95,7 +204,20 @@ const SORTED = [...WINDOWS].sort((a, b) => b[0].length - a[0].length);
95
204
  export function lookupContextWindow(model) {
96
205
  if (!model)
97
206
  return undefined;
98
- const id = model.toLowerCase();
207
+ const { declaresOneMillion } = splitModelWindowSuffix(model);
208
+ const known = lookupBareContextWindow(model);
209
+ if (declaresOneMillion && !oneMillionWindowDisabled()) {
210
+ return Math.max(known ?? 0, ONE_MILLION_WINDOW_TOKENS);
211
+ }
212
+ return known;
213
+ }
214
+ /** The table's answer for an id with any `[1m]` suffix ignored. */
215
+ function lookupBareContextWindow(model) {
216
+ if (!model)
217
+ return undefined;
218
+ const id = stripModelWindowSuffix(model).toLowerCase();
219
+ if (DEEPSEEK_ONE_MILLION_IDS.has(bareModelName(id)))
220
+ return ONE_MILLION_WINDOW_TOKENS;
99
221
  for (const [prefix, tokens] of SORTED) {
100
222
  if (id.includes(prefix))
101
223
  return tokens;
@@ -162,13 +284,30 @@ providerReported) {
162
284
  if (configured !== undefined && configured > 0) {
163
285
  return { tokens: configured, source: 'config' };
164
286
  }
287
+ const { declaresOneMillion } = splitModelWindowSuffix(model ?? '');
288
+ const disabled = oneMillionWindowDisabled();
289
+ const base = resolveUndeclaredWindow(model, providerReported);
290
+ // `[1m]` raises the window to at least a million (reported as 'model-table':
291
+ // the id itself is the fact), never lowers one a
292
+ // driver or the table already puts higher.
293
+ if (declaresOneMillion && !disabled && base.tokens < ONE_MILLION_WINDOW_TOKENS) {
294
+ return { tokens: ONE_MILLION_WINDOW_TOKENS, source: 'model-table' };
295
+ }
296
+ // With the million-token window switched off, nothing assumed or reported
297
+ // for a model counts for more than 200,000.
298
+ if (disabled && base.tokens > DISABLED_ONE_MILLION_WINDOW_CAP_TOKENS) {
299
+ return { tokens: DISABLED_ONE_MILLION_WINDOW_CAP_TOKENS, source: base.source };
300
+ }
301
+ return base;
302
+ }
303
+ function resolveUndeclaredWindow(model, providerReported) {
165
304
  if (providerReported !== undefined && providerReported > 0) {
166
305
  return { tokens: providerReported, source: 'provider' };
167
306
  }
168
307
  // A driver that resolved `undefined` falls through to HERE, not to the
169
308
  // default. "I asked and it does not know" leaves the table exactly as
170
309
  // authoritative as it was before anyone asked.
171
- const known = lookupContextWindow(model);
310
+ const known = lookupBareContextWindow(model);
172
311
  if (known !== undefined) {
173
312
  return { tokens: known, source: 'model-table' };
174
313
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context-window.js","sourceRoot":"","sources":["../../src/compaction/context-window.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-window.js","sourceRoot":"","sources":["../../src/compaction/context-window.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,13 @@ export declare const AUTO_CONTINUATION_USER_MESSAGE = "Continue exactly where yo
26
26
  * result is assembled.
27
27
  */
28
28
  export declare const REASONING_CUT_USER_MESSAGE = "The output limit was reached while you were still reasoning, before any text or tool call. Continue from the conversation above: think much more briefly and give your answer or next tool call well within the limit.";
29
+ /**
30
+ * What the model is told when its previous reply was stopped by a safety
31
+ * classifier part-way and the same request is sent again on the same model.
32
+ * The stopped reply stays in the conversation so the model can see what to
33
+ * avoid; any call in it that had not finished did not run.
34
+ */
35
+ export declare const REFUSED_REPLY_RETRY_MESSAGE = "Your previous response was stopped by a safety classifier. This is not a tool or API error. The rest of it was withheld, and any tool calls in it that had not finished did not run. Do not produce that content again, even reworded. Continue with the task without it.";
36
+ /** The result recorded for a call that was in a reply the classifier stopped. */
37
+ export declare const REFUSED_REPLY_CALL_RESULT = "This call did not run: the response that contained it was stopped by a safety classifier.";
29
38
  //# sourceMappingURL=continuation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/constants/continuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,mHACiE,CAAA;AAE5G;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,2NACkL,CAAA"}
1
+ {"version":3,"file":"continuation.d.ts","sourceRoot":"","sources":["../../src/constants/continuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,8BAA8B,mHACiE,CAAA;AAE5G;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,2NACkL,CAAA;AAEzN;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,8QACoO,CAAA;AAE5Q,iFAAiF;AACjF,eAAO,MAAM,yBAAyB,8FACsD,CAAA"}
@@ -26,4 +26,13 @@ export const AUTO_CONTINUATION_USER_MESSAGE = 'Continue exactly where you left o
26
26
  * result is assembled.
27
27
  */
28
28
  export const REASONING_CUT_USER_MESSAGE = 'The output limit was reached while you were still reasoning, before any text or tool call. Continue from the conversation above: think much more briefly and give your answer or next tool call well within the limit.';
29
+ /**
30
+ * What the model is told when its previous reply was stopped by a safety
31
+ * classifier part-way and the same request is sent again on the same model.
32
+ * The stopped reply stays in the conversation so the model can see what to
33
+ * avoid; any call in it that had not finished did not run.
34
+ */
35
+ export const REFUSED_REPLY_RETRY_MESSAGE = 'Your previous response was stopped by a safety classifier. This is not a tool or API error. The rest of it was withheld, and any tool calls in it that had not finished did not run. Do not produce that content again, even reworded. Continue with the task without it.';
36
+ /** The result recorded for a call that was in a reply the classifier stopped. */
37
+ export const REFUSED_REPLY_CALL_RESULT = 'This call did not run: the response that contained it was stopped by a safety classifier.';
29
38
  //# sourceMappingURL=continuation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"continuation.js","sourceRoot":"","sources":["../../src/constants/continuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAC1C,2GAA2G,CAAA;AAE5G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACtC,wNAAwN,CAAA"}
1
+ {"version":3,"file":"continuation.js","sourceRoot":"","sources":["../../src/constants/continuation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAC1C,2GAA2G,CAAA;AAE5G;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GACtC,wNAAwN,CAAA;AAEzN;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GACvC,2QAA2Q,CAAA;AAE5Q,iFAAiF;AACjF,MAAM,CAAC,MAAM,yBAAyB,GACrC,2FAA2F,CAAA"}
@@ -67,7 +67,13 @@ export type SessionStreamEventType = TurnStreamEventType | 'iteration.started' |
67
67
  * over. Without it a client cannot know the answer it is reading came from
68
68
  * a provider it did not ask for, at a different price.
69
69
  */
70
- | 'provider.fallback' | 'tool.executing'
70
+ | 'provider.fallback'
71
+ /**
72
+ * The model declined to answer, and what the turn did about it: moved to
73
+ * another model, retried once, or gave up. Without it a client cannot tell
74
+ * a declined request from an empty answer.
75
+ */
76
+ | 'model.refusal' | 'tool.executing'
71
77
  /** Ephemeral progress from a long-running tool. Not in the transcript. */
72
78
  | 'tool.progress' | 'tool.completed' | 'tool.error' | 'tool.input_started' | 'tool.input_delta' | 'tool.input_completed' | 'token.usage' | 'message.created' | 'message.delta' | 'message.completed'
73
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/contracts/session/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8GAO1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAC/B,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB;AACvB;;;;;;;GAOG;GACD,yBAAyB;AAC3B;;;;GAIG;GACD,sBAAsB;AACxB,6EAA6E;GAC3E,iCAAiC,GACjC,qBAAqB,GACrB,uBAAuB,GACvB,eAAe,GACf,oBAAoB,GACpB,mBAAmB;AACrB,iDAAiD;GAC/C,qBAAqB;AACvB;;;GAGG;GACD,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB;AACvB;;;;GAIG;GACD,gBAAgB,GAChB,aAAa;AACf;;;;GAIG;GACD,mBAAmB,GACnB,gBAAgB;AAClB,0EAA0E;GACxE,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,mBAAmB;AACrB;;;GAGG;GACD,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,uBAAuB,GACvB,uBAAuB,GACvB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,CAAA;AAEtB,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IAC1D,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,mBAAmB,CAAA;CACzB"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/contracts/session/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC5B;AAED,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,8GAO1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,uDAAuD;AACvD,MAAM,MAAM,sBAAsB,GAC/B,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB;AACvB;;;;;;;GAOG;GACD,yBAAyB;AAC3B;;;;GAIG;GACD,sBAAsB;AACxB,6EAA6E;GAC3E,iCAAiC,GACjC,qBAAqB,GACrB,uBAAuB,GACvB,eAAe,GACf,oBAAoB,GACpB,mBAAmB;AACrB,iDAAiD;GAC/C,qBAAqB;AACvB;;;GAGG;GACD,mBAAmB,GACnB,iBAAiB,GACjB,qBAAqB;AACvB;;;;GAIG;GACD,gBAAgB,GAChB,aAAa;AACf;;;;GAIG;GACD,mBAAmB;AACrB;;;;GAIG;GACD,eAAe,GACf,gBAAgB;AAClB,0EAA0E;GACxE,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,mBAAmB;AACrB;;;GAGG;GACD,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,oBAAoB,GACpB,kBAAkB,GAClB,kBAAkB,GAClB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,gBAAgB,GAChB,aAAa,GACb,eAAe,GACf,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,uBAAuB,GACvB,uBAAuB,GACvB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,CAAA;AAEtB,qCAAqC;AACrC,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,sBAAsB,CAAA;IAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,SAAS,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAgB,SAAQ,kBAAkB;IAC1D,KAAK,EAAE,mBAAmB,CAAA;IAC1B,IAAI,EAAE,mBAAmB,CAAA;CACzB"}
@@ -1,9 +1,11 @@
1
1
  export { WorkflowScriptError } from './errors.js';
2
2
  export { FileWorkflowJournal } from './journal.js';
3
3
  export { parseWorkflowMeta } from './meta.js';
4
+ export { formatWorkflowJournalLine, loadWorkflowResume, readWorkflowJournalChecked, workflowCallKey, workflowJournalLineHash, workflowJournalSeed, } from './resume.js';
5
+ export type { WorkflowCallIdentity } from './resume.js';
4
6
  export { summarizeWorkflowPhases } from './phases.js';
5
7
  export type { PhaseAgentView, PhaseRecord } from './phases.js';
6
- export { resolveWorkflowLimits, WORKFLOW_HOST_CALL, WorkflowRuntime } from './runtime.js';
8
+ export { resolveWorkflowLimits, WORKFLOW_HOST_CALL, WorkflowRuntime, } from './runtime.js';
7
9
  export type { WorkflowRuntimeOptions } from './runtime.js';
8
10
  export type * from './types.js';
9
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACzF,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,mBAAmB,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EACN,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACnB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9D,OAAO,EACN,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GACf,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,mBAAmB,YAAY,CAAA"}
@@ -1,6 +1,7 @@
1
1
  export { WorkflowScriptError } from './errors.js';
2
2
  export { FileWorkflowJournal } from './journal.js';
3
3
  export { parseWorkflowMeta } from './meta.js';
4
+ export { formatWorkflowJournalLine, loadWorkflowResume, readWorkflowJournalChecked, workflowCallKey, workflowJournalLineHash, workflowJournalSeed, } from './resume.js';
4
5
  export { summarizeWorkflowPhases } from './phases.js';
5
- export { resolveWorkflowLimits, WORKFLOW_HOST_CALL, WorkflowRuntime } from './runtime.js';
6
+ export { resolveWorkflowLimits, WORKFLOW_HOST_CALL, WorkflowRuntime, } from './runtime.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/workflow/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,EACN,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACnB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD,OAAO,EACN,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,GACf,MAAM,cAAc,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { WorkflowJournal, WorkflowJournalRecord } from './types.js';
1
+ import type { CheckedWorkflowJournal, WorkflowJournal, WorkflowJournalReader, WorkflowJournalRecord } from './types.js';
2
2
  export declare function sha256(text: string): string;
3
3
  /** The first `max` UTF-16 units of `text`, never ending inside a surrogate pair. */
4
4
  export declare function preview(text: string, max?: number): string;
@@ -6,13 +6,33 @@ export declare function preview(text: string, max?: number): string;
6
6
  * A journal in a directory: `script.js` (the exact script text, mode 0600)
7
7
  * and `journal.jsonl` (one JSON record per line, append-only). The caller
8
8
  * chooses the directory, normally `<session>/runs/<runId>/workflow/`.
9
+ *
10
+ * Every line carries `seq` and `prev` (the hash of the line before it, the
11
+ * first chaining from a seed bound to the run id), so a line that was edited,
12
+ * removed or cut short is found when the journal is read back. One writer per
13
+ * file serves the whole process: a resumed pass and a late agent of the pass
14
+ * before it append through the same queue and the same chain, and nothing is
15
+ * appended after a pass's `run_finished` until the next pass starts. This
16
+ * assumes one process writes the file at a time, which the session lease
17
+ * already guarantees. A chain proves the file was not damaged or edited by
18
+ * accident; someone who can rewrite the whole file can rewrite the chain too.
9
19
  */
10
- export declare class FileWorkflowJournal implements WorkflowJournal {
20
+ export declare class FileWorkflowJournal implements WorkflowJournal, WorkflowJournalReader {
11
21
  private readonly dir;
22
+ private readonly options;
12
23
  private ready;
13
- constructor(dir: string);
24
+ private readonly file;
25
+ constructor(dir: string, options?: {
26
+ readonly runId?: string;
27
+ /** A secret that signs every line; see `readWorkflowJournalChecked`. */
28
+ readonly key?: string | Uint8Array;
29
+ });
14
30
  private ensure;
15
- writeScript(source: string): Promise<void>;
31
+ /** The run id of the file's first line, learned from the file or from the first `run_started` written. */
32
+ private learned;
33
+ private runId;
34
+ writeScript(source: string, _sha256?: string, pass?: number): Promise<void>;
35
+ read(): Promise<CheckedWorkflowJournal>;
16
36
  append(record: WorkflowJournalRecord): Promise<void>;
17
37
  }
18
38
  //# sourceMappingURL=journal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/journal.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAExE,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAMvD;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,eAAe;IAG9C,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,KAAK,CAA2B;gBAEX,GAAG,EAAE,MAAM;IAExC,OAAO,CAAC,MAAM;IAKR,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1C,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CAM1D"}
1
+ {"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/journal.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACX,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,YAAY,CAAA;AAEnB,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAMvD;AA2BD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,mBAAoB,YAAW,eAAe,EAAE,qBAAqB;IAKhF,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALzB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAGX,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;QACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,wEAAwE;QACxE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;KAC7B;IAKP,OAAO,CAAC,MAAM;IAKd,0GAA0G;IAC1G,OAAO,CAAC,OAAO,CAAoB;IAEnC,OAAO,CAAC,KAAK;IAmBP,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAa7C,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgEpD"}
@@ -1,6 +1,7 @@
1
1
  import { createHash } from 'node:crypto';
2
- import { appendFile, mkdir, writeFile } from 'node:fs/promises';
3
- import { join } from 'node:path';
2
+ import { mkdir, open, readFile, stat, writeFile } from 'node:fs/promises';
3
+ import { basename, dirname, join, resolve } from 'node:path';
4
+ import { formatWorkflowJournalLine, readWorkflowJournalChecked, workflowJournalLineHash, workflowJournalSeed, } from './resume.js';
4
5
  export function sha256(text) {
5
6
  return createHash('sha256').update(text).digest('hex');
6
7
  }
@@ -14,30 +15,151 @@ export function preview(text, max = 500) {
14
15
  end--;
15
16
  return `${text.slice(0, end)}…`;
16
17
  }
18
+ const chains = new Map();
19
+ /** Records after which a crash must not lose the line: a saved result, the end of a pass, the start of one. */
20
+ function mustSurviveCrash(record) {
21
+ return (record.type === 'run_finished' ||
22
+ record.type === 'run_started' ||
23
+ (record.type === 'agent_outcome' && Object.hasOwn(record, 'result')));
24
+ }
17
25
  /**
18
26
  * A journal in a directory: `script.js` (the exact script text, mode 0600)
19
27
  * and `journal.jsonl` (one JSON record per line, append-only). The caller
20
28
  * chooses the directory, normally `<session>/runs/<runId>/workflow/`.
29
+ *
30
+ * Every line carries `seq` and `prev` (the hash of the line before it, the
31
+ * first chaining from a seed bound to the run id), so a line that was edited,
32
+ * removed or cut short is found when the journal is read back. One writer per
33
+ * file serves the whole process: a resumed pass and a late agent of the pass
34
+ * before it append through the same queue and the same chain, and nothing is
35
+ * appended after a pass's `run_finished` until the next pass starts. This
36
+ * assumes one process writes the file at a time, which the session lease
37
+ * already guarantees. A chain proves the file was not damaged or edited by
38
+ * accident; someone who can rewrite the whole file can rewrite the chain too.
21
39
  */
22
40
  export class FileWorkflowJournal {
23
41
  dir;
42
+ options;
24
43
  ready;
25
- constructor(dir) {
44
+ file;
45
+ constructor(dir, options = {}) {
26
46
  this.dir = dir;
47
+ this.options = options;
48
+ this.file = resolve(dir, 'journal.jsonl');
27
49
  }
28
50
  ensure() {
29
51
  this.ready ??= mkdir(this.dir, { recursive: true, mode: 0o700 }).then(() => undefined);
30
52
  return this.ready;
31
53
  }
32
- async writeScript(source) {
33
- await this.ensure();
34
- await writeFile(join(this.dir, 'script.js'), source, { mode: 0o600 });
54
+ /** The run id of the file's first line, learned from the file or from the first `run_started` written. */
55
+ learned;
56
+ runId(record, text) {
57
+ if (this.options.runId !== undefined)
58
+ return this.options.runId;
59
+ if (record?.type === 'run_started')
60
+ this.learned = record.runId;
61
+ if (this.learned !== undefined)
62
+ return this.learned;
63
+ const first = text?.slice(0, text.indexOf('\n') < 0 ? undefined : text.indexOf('\n'));
64
+ if (first) {
65
+ try {
66
+ const parsed = JSON.parse(first);
67
+ if (parsed.type === 'run_started' && typeof parsed.runId === 'string') {
68
+ this.learned = parsed.runId;
69
+ return parsed.runId;
70
+ }
71
+ }
72
+ catch {
73
+ // Not a record: fall back to the folder name below.
74
+ }
75
+ }
76
+ return basename(dirname(resolve(this.dir)));
35
77
  }
36
- async append(record) {
78
+ async writeScript(source, _sha256, pass = 1) {
37
79
  await this.ensure();
38
- await appendFile(join(this.dir, 'journal.jsonl'), `${JSON.stringify(record)}\n`, {
39
- mode: 0o600,
80
+ const name = pass <= 1 ? 'script.js' : `script.${pass}.js`;
81
+ await writeFile(join(this.dir, name), source, { mode: 0o600 });
82
+ }
83
+ async read() {
84
+ let text;
85
+ try {
86
+ text = await readFile(this.file, 'utf8');
87
+ }
88
+ catch (error) {
89
+ if (error.code !== 'ENOENT')
90
+ throw error;
91
+ text = '';
92
+ }
93
+ return readWorkflowJournalChecked(text, this.runId(undefined, text), {
94
+ ...(this.options.key !== undefined ? { key: this.options.key } : {}),
95
+ });
96
+ }
97
+ append(record) {
98
+ let state = chains.get(this.file);
99
+ if (state === undefined) {
100
+ state = {
101
+ queue: Promise.resolve(),
102
+ loaded: false,
103
+ seq: 0,
104
+ prev: '',
105
+ needsNewline: false,
106
+ finished: false,
107
+ size: 0,
108
+ pending: 0,
109
+ };
110
+ chains.set(this.file, state);
111
+ }
112
+ const chain = state;
113
+ chain.pending++;
114
+ const run = chain.queue.then(async () => {
115
+ await this.ensure();
116
+ const onDisk = await stat(this.file).then((info) => info.size, () => 0);
117
+ if (!chain.loaded || onDisk !== chain.size) {
118
+ const checked = await this.read();
119
+ chain.seq = checked.lastSeq;
120
+ chain.prev = checked.lastHash;
121
+ chain.needsNewline = !checked.endsWithNewline;
122
+ chain.finished = checked.records.at(-1)?.type === 'run_finished';
123
+ chain.loaded = true;
124
+ chain.size = onDisk;
125
+ }
126
+ if (record.type === 'run_started')
127
+ chain.finished = false;
128
+ // Nothing belongs after the pass's end; a late agent of that pass is dropped here.
129
+ else if (chain.finished)
130
+ return;
131
+ if (chain.seq === 0)
132
+ chain.prev = workflowJournalSeed(this.runId(record));
133
+ const seq = chain.seq + 1;
134
+ const line = formatWorkflowJournalLine(record, seq, chain.prev, this.options.key);
135
+ const handle = await open(this.file, 'a', 0o600);
136
+ try {
137
+ const text = `${chain.needsNewline ? '\n' : ''}${line}\n`;
138
+ await handle.appendFile(text);
139
+ chain.size += Buffer.byteLength(text);
140
+ if (mustSurviveCrash(record))
141
+ await handle.datasync();
142
+ }
143
+ finally {
144
+ await handle.close();
145
+ }
146
+ chain.needsNewline = false;
147
+ chain.seq = seq;
148
+ chain.prev = workflowJournalLineHash(line);
149
+ if (record.type === 'run_finished')
150
+ chain.finished = true;
151
+ });
152
+ chain.queue = run
153
+ .catch(() => undefined)
154
+ .then(() => {
155
+ chain.pending--;
156
+ // A finished run keeps no state: the next append reads the file again, and
157
+ // what it finds (a last `run_finished`) is the same thing the state held.
158
+ if (chain.pending === 0 && chain.finished && chains.get(this.file) === chain) {
159
+ chains.delete(this.file);
160
+ }
40
161
  });
162
+ return run;
41
163
  }
42
164
  }
43
165
  //# sourceMappingURL=journal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../../src/execution/workflow/journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,MAAM,UAAU,MAAM,CAAC,IAAY;IAClC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACvD,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IAC9C,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,IAAI,CAAA;IACnC,IAAI,GAAG,GAAG,GAAG,CAAA;IACb,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;IACrC,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM;QAAE,GAAG,EAAE,CAAA;IAC3C,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAGF;IAFrB,KAAK,CAA2B;IAExC,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAEpC,MAAM;QACb,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACtF,OAAO,IAAI,CAAC,KAAK,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAc;QAC/B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAA6B;QACzC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;YAChF,IAAI,EAAE,KAAK;SACX,CAAC,CAAA;IACH,CAAC;CACD"}
1
+ {"version":3,"file":"journal.js","sourceRoot":"","sources":["../../../src/execution/workflow/journal.ts"],"names":[],"mappings":"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"}
@@ -6,10 +6,12 @@
6
6
  export declare function preludeLineCount(config: {
7
7
  args: unknown;
8
8
  tokenLimit: number | null;
9
+ deterministic?: boolean;
9
10
  }): number;
10
11
  /** Source that installs the workflow globals, ready to prepend to a script body. */
11
12
  export declare function buildPrelude(config: {
12
13
  args: unknown;
13
14
  tokenLimit: number | null;
15
+ deterministic?: boolean;
14
16
  }): string;
15
17
  //# sourceMappingURL=prelude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prelude.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/prelude.ts"],"names":[],"mappings":"AAiJA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,GAAG,MAAM,CAET;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB,GAAG,MAAM,CAOT"}
1
+ {"version":3,"file":"prelude.d.ts","sourceRoot":"","sources":["../../../src/execution/workflow/prelude.ts"],"names":[],"mappings":"AA0LA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,MAAM,CAET;AAED,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,MAAM,EAAE;IACpC,IAAI,EAAE,OAAO,CAAA;IACb,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,MAAM,CAOT"}