@draht/agent-core 2026.9.5-1 → 2026.10.4-3

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 (456) hide show
  1. package/dist/agent-loop.d.ts +27 -2
  2. package/dist/agent-loop.d.ts.map +1 -1
  3. package/dist/agent-loop.js +167 -62
  4. package/dist/agent-loop.js.map +1 -1
  5. package/dist/agent.d.ts +14 -4
  6. package/dist/agent.d.ts.map +1 -1
  7. package/dist/agent.js +65 -19
  8. package/dist/agent.js.map +1 -1
  9. package/dist/harness/agent-harness.d.ts +713 -91
  10. package/dist/harness/agent-harness.d.ts.map +1 -1
  11. package/dist/harness/agent-harness.js +5 -950
  12. package/dist/harness/agent-harness.js.map +1 -1
  13. package/dist/harness/compaction/branch-summarization.d.ts +23 -10
  14. package/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
  15. package/dist/harness/compaction/branch-summarization.js +39 -36
  16. package/dist/harness/compaction/branch-summarization.js.map +1 -1
  17. package/dist/harness/compaction/compaction.d.ts +37 -18
  18. package/dist/harness/compaction/compaction.d.ts.map +1 -1
  19. package/dist/harness/compaction/compaction.js +74 -97
  20. package/dist/harness/compaction/compaction.js.map +1 -1
  21. package/dist/harness/config.d.ts +9 -0
  22. package/dist/harness/config.d.ts.map +1 -0
  23. package/dist/harness/config.js +35 -0
  24. package/dist/harness/config.js.map +1 -0
  25. package/dist/harness/context.d.ts +9 -0
  26. package/dist/harness/context.d.ts.map +1 -0
  27. package/dist/harness/context.js +13 -0
  28. package/dist/harness/context.js.map +1 -0
  29. package/dist/harness/env/nodejs.d.ts +25 -27
  30. package/dist/harness/env/nodejs.d.ts.map +1 -1
  31. package/dist/harness/env/nodejs.js +336 -103
  32. package/dist/harness/env/nodejs.js.map +1 -1
  33. package/dist/harness/events.d.ts +24 -0
  34. package/dist/harness/events.d.ts.map +1 -0
  35. package/dist/harness/events.js +233 -0
  36. package/dist/harness/events.js.map +1 -0
  37. package/dist/harness/execution/assistant.d.ts +42 -0
  38. package/dist/harness/execution/assistant.d.ts.map +1 -0
  39. package/dist/harness/execution/assistant.js +82 -0
  40. package/dist/harness/execution/assistant.js.map +1 -0
  41. package/dist/harness/execution/effect-gate.d.ts +22 -0
  42. package/dist/harness/execution/effect-gate.d.ts.map +1 -0
  43. package/dist/harness/execution/effect-gate.js +49 -0
  44. package/dist/harness/execution/effect-gate.js.map +1 -0
  45. package/dist/harness/execution/tools.d.ts +67 -0
  46. package/dist/harness/execution/tools.d.ts.map +1 -0
  47. package/dist/harness/execution/tools.js +119 -0
  48. package/dist/harness/execution/tools.js.map +1 -0
  49. package/dist/harness/hooks.d.ts +38 -0
  50. package/dist/harness/hooks.d.ts.map +1 -0
  51. package/dist/harness/hooks.js +406 -0
  52. package/dist/harness/hooks.js.map +1 -0
  53. package/dist/harness/messages.d.ts +4 -4
  54. package/dist/harness/messages.d.ts.map +1 -1
  55. package/dist/harness/messages.js +4 -3
  56. package/dist/harness/messages.js.map +1 -1
  57. package/dist/harness/pico3/bash.d.ts +10 -0
  58. package/dist/harness/pico3/bash.d.ts.map +1 -0
  59. package/dist/harness/pico3/bash.js +25 -0
  60. package/dist/harness/pico3/bash.js.map +1 -0
  61. package/dist/harness/pico3/bounded.d.ts +21 -0
  62. package/dist/harness/pico3/bounded.d.ts.map +1 -0
  63. package/dist/harness/pico3/bounded.js +98 -0
  64. package/dist/harness/pico3/bounded.js.map +1 -0
  65. package/dist/harness/pico3/chord.d.ts +41 -0
  66. package/dist/harness/pico3/chord.d.ts.map +1 -0
  67. package/dist/harness/pico3/chord.js +147 -0
  68. package/dist/harness/pico3/chord.js.map +1 -0
  69. package/dist/harness/pico3/context.d.ts +16 -0
  70. package/dist/harness/pico3/context.d.ts.map +1 -0
  71. package/dist/harness/pico3/context.js +88 -0
  72. package/dist/harness/pico3/context.js.map +1 -0
  73. package/dist/harness/pico3/harness.d.ts +198 -0
  74. package/dist/harness/pico3/harness.d.ts.map +1 -0
  75. package/dist/harness/pico3/harness.js +654 -0
  76. package/dist/harness/pico3/harness.js.map +1 -0
  77. package/dist/harness/pico3/hooks.d.ts +10 -0
  78. package/dist/harness/pico3/hooks.d.ts.map +1 -0
  79. package/dist/harness/pico3/hooks.js +33 -0
  80. package/dist/harness/pico3/hooks.js.map +1 -0
  81. package/dist/harness/pico3/index.d.ts +19 -0
  82. package/dist/harness/pico3/index.d.ts.map +1 -0
  83. package/dist/harness/pico3/index.js +15 -0
  84. package/dist/harness/pico3/index.js.map +1 -0
  85. package/dist/harness/pico3/jsonl.d.ts +58 -0
  86. package/dist/harness/pico3/jsonl.d.ts.map +1 -0
  87. package/dist/harness/pico3/jsonl.js +325 -0
  88. package/dist/harness/pico3/jsonl.js.map +1 -0
  89. package/dist/harness/pico3/kinds/collapse.d.ts +49 -0
  90. package/dist/harness/pico3/kinds/collapse.d.ts.map +1 -0
  91. package/dist/harness/pico3/kinds/collapse.js +191 -0
  92. package/dist/harness/pico3/kinds/collapse.js.map +1 -0
  93. package/dist/harness/pico3/kinds/entries.d.ts +78 -0
  94. package/dist/harness/pico3/kinds/entries.d.ts.map +1 -0
  95. package/dist/harness/pico3/kinds/entries.js +13 -0
  96. package/dist/harness/pico3/kinds/entries.js.map +1 -0
  97. package/dist/harness/pico3/kinds/frames.d.ts +9 -0
  98. package/dist/harness/pico3/kinds/frames.d.ts.map +1 -0
  99. package/dist/harness/pico3/kinds/frames.js +75 -0
  100. package/dist/harness/pico3/kinds/frames.js.map +1 -0
  101. package/dist/harness/pico3/kinds/generation.d.ts +94 -0
  102. package/dist/harness/pico3/kinds/generation.d.ts.map +1 -0
  103. package/dist/harness/pico3/kinds/generation.js +504 -0
  104. package/dist/harness/pico3/kinds/generation.js.map +1 -0
  105. package/dist/harness/pico3/kinds/job.d.ts +44 -0
  106. package/dist/harness/pico3/kinds/job.d.ts.map +1 -0
  107. package/dist/harness/pico3/kinds/job.js +143 -0
  108. package/dist/harness/pico3/kinds/job.js.map +1 -0
  109. package/dist/harness/pico3/kinds/plugin.d.ts +15 -0
  110. package/dist/harness/pico3/kinds/plugin.d.ts.map +1 -0
  111. package/dist/harness/pico3/kinds/plugin.js +35 -0
  112. package/dist/harness/pico3/kinds/plugin.js.map +1 -0
  113. package/dist/harness/pico3/kinds/post-tools.d.ts +22 -0
  114. package/dist/harness/pico3/kinds/post-tools.d.ts.map +1 -0
  115. package/dist/harness/pico3/kinds/post-tools.js +145 -0
  116. package/dist/harness/pico3/kinds/post-tools.js.map +1 -0
  117. package/dist/harness/pico3/kinds/task-api.d.ts +3 -0
  118. package/dist/harness/pico3/kinds/task-api.d.ts.map +1 -0
  119. package/dist/harness/pico3/kinds/task-api.js +45 -0
  120. package/dist/harness/pico3/kinds/task-api.js.map +1 -0
  121. package/dist/harness/pico3/kinds/tool.d.ts +43 -0
  122. package/dist/harness/pico3/kinds/tool.d.ts.map +1 -0
  123. package/dist/harness/pico3/kinds/tool.js +373 -0
  124. package/dist/harness/pico3/kinds/tool.js.map +1 -0
  125. package/dist/harness/pico3/legacy-tracker.d.ts +11 -0
  126. package/dist/harness/pico3/legacy-tracker.d.ts.map +1 -0
  127. package/dist/harness/pico3/legacy-tracker.js +41 -0
  128. package/dist/harness/pico3/legacy-tracker.js.map +1 -0
  129. package/dist/harness/pico3/membrane.d.ts +23 -0
  130. package/dist/harness/pico3/membrane.d.ts.map +1 -0
  131. package/dist/harness/pico3/membrane.js +141 -0
  132. package/dist/harness/pico3/membrane.js.map +1 -0
  133. package/dist/harness/pico3/memory.d.ts +53 -0
  134. package/dist/harness/pico3/memory.d.ts.map +1 -0
  135. package/dist/harness/pico3/memory.js +264 -0
  136. package/dist/harness/pico3/memory.js.map +1 -0
  137. package/dist/harness/pico3/scheduler.d.ts +49 -0
  138. package/dist/harness/pico3/scheduler.d.ts.map +1 -0
  139. package/dist/harness/pico3/scheduler.js +438 -0
  140. package/dist/harness/pico3/scheduler.js.map +1 -0
  141. package/dist/harness/pico3/session.d.ts +264 -0
  142. package/dist/harness/pico3/session.d.ts.map +1 -0
  143. package/dist/harness/pico3/session.js +1348 -0
  144. package/dist/harness/pico3/session.js.map +1 -0
  145. package/dist/harness/pico3/system.d.ts +126 -0
  146. package/dist/harness/pico3/system.d.ts.map +1 -0
  147. package/dist/harness/pico3/system.js +244 -0
  148. package/dist/harness/pico3/system.js.map +1 -0
  149. package/dist/harness/pico3/types.d.ts +973 -0
  150. package/dist/harness/pico3/types.d.ts.map +1 -0
  151. package/dist/harness/pico3/types.js +106 -0
  152. package/dist/harness/pico3/types.js.map +1 -0
  153. package/dist/harness/pico3/view.d.ts +34 -0
  154. package/dist/harness/pico3/view.d.ts.map +1 -0
  155. package/dist/harness/pico3/view.js +411 -0
  156. package/dist/harness/pico3/view.js.map +1 -0
  157. package/dist/harness/prompt-templates.d.ts +3 -2
  158. package/dist/harness/prompt-templates.d.ts.map +1 -1
  159. package/dist/harness/prompt-templates.js +18 -23
  160. package/dist/harness/prompt-templates.js.map +1 -1
  161. package/dist/harness/result.d.ts +133 -0
  162. package/dist/harness/result.d.ts.map +1 -0
  163. package/dist/harness/result.js +81 -0
  164. package/dist/harness/result.js.map +1 -0
  165. package/dist/harness/runtime/drive/boundary.d.ts +28 -0
  166. package/dist/harness/runtime/drive/boundary.d.ts.map +1 -0
  167. package/dist/harness/runtime/drive/boundary.js +173 -0
  168. package/dist/harness/runtime/drive/boundary.js.map +1 -0
  169. package/dist/harness/runtime/drive/checkpoint.d.ts +8 -0
  170. package/dist/harness/runtime/drive/checkpoint.d.ts.map +1 -0
  171. package/dist/harness/runtime/drive/checkpoint.js +133 -0
  172. package/dist/harness/runtime/drive/checkpoint.js.map +1 -0
  173. package/dist/harness/runtime/drive/deferred.d.ts +15 -0
  174. package/dist/harness/runtime/drive/deferred.d.ts.map +1 -0
  175. package/dist/harness/runtime/drive/deferred.js +179 -0
  176. package/dist/harness/runtime/drive/deferred.js.map +1 -0
  177. package/dist/harness/runtime/drive/generation.d.ts +8 -0
  178. package/dist/harness/runtime/drive/generation.d.ts.map +1 -0
  179. package/dist/harness/runtime/drive/generation.js +205 -0
  180. package/dist/harness/runtime/drive/generation.js.map +1 -0
  181. package/dist/harness/runtime/drive/reconcile.d.ts +5 -0
  182. package/dist/harness/runtime/drive/reconcile.d.ts.map +1 -0
  183. package/dist/harness/runtime/drive/reconcile.js +140 -0
  184. package/dist/harness/runtime/drive/reconcile.js.map +1 -0
  185. package/dist/harness/runtime/drive/recovery.d.ts +8 -0
  186. package/dist/harness/runtime/drive/recovery.d.ts.map +1 -0
  187. package/dist/harness/runtime/drive/recovery.js +85 -0
  188. package/dist/harness/runtime/drive/recovery.js.map +1 -0
  189. package/dist/harness/runtime/drive/response.d.ts +23 -0
  190. package/dist/harness/runtime/drive/response.d.ts.map +1 -0
  191. package/dist/harness/runtime/drive/response.js +394 -0
  192. package/dist/harness/runtime/drive/response.js.map +1 -0
  193. package/dist/harness/runtime/drive/retry.d.ts +4 -0
  194. package/dist/harness/runtime/drive/retry.d.ts.map +1 -0
  195. package/dist/harness/runtime/drive/retry.js +34 -0
  196. package/dist/harness/runtime/drive/retry.js.map +1 -0
  197. package/dist/harness/runtime/drive/structural.d.ts +32 -0
  198. package/dist/harness/runtime/drive/structural.d.ts.map +1 -0
  199. package/dist/harness/runtime/drive/structural.js +929 -0
  200. package/dist/harness/runtime/drive/structural.js.map +1 -0
  201. package/dist/harness/runtime/drive/terminal.d.ts +7 -0
  202. package/dist/harness/runtime/drive/terminal.d.ts.map +1 -0
  203. package/dist/harness/runtime/drive/terminal.js +49 -0
  204. package/dist/harness/runtime/drive/terminal.js.map +1 -0
  205. package/dist/harness/runtime/drive/tool-placement.d.ts +14 -0
  206. package/dist/harness/runtime/drive/tool-placement.d.ts.map +1 -0
  207. package/dist/harness/runtime/drive/tool-placement.js +219 -0
  208. package/dist/harness/runtime/drive/tool-placement.js.map +1 -0
  209. package/dist/harness/runtime/drive/tools.d.ts +6 -0
  210. package/dist/harness/runtime/drive/tools.d.ts.map +1 -0
  211. package/dist/harness/runtime/drive/tools.js +449 -0
  212. package/dist/harness/runtime/drive/tools.js.map +1 -0
  213. package/dist/harness/runtime/drive.d.ts +6 -0
  214. package/dist/harness/runtime/drive.d.ts.map +1 -0
  215. package/dist/harness/runtime/drive.js +93 -0
  216. package/dist/harness/runtime/drive.js.map +1 -0
  217. package/dist/harness/runtime/harness.d.ts +59 -0
  218. package/dist/harness/runtime/harness.d.ts.map +1 -0
  219. package/dist/harness/runtime/harness.js +311 -0
  220. package/dist/harness/runtime/harness.js.map +1 -0
  221. package/dist/harness/runtime/index.d.ts +2 -0
  222. package/dist/harness/runtime/index.d.ts.map +1 -0
  223. package/dist/harness/runtime/index.js +2 -0
  224. package/dist/harness/runtime/index.js.map +1 -0
  225. package/dist/harness/runtime/lane.d.ts +118 -0
  226. package/dist/harness/runtime/lane.d.ts.map +1 -0
  227. package/dist/harness/runtime/lane.js +1575 -0
  228. package/dist/harness/runtime/lane.js.map +1 -0
  229. package/dist/harness/runtime/progress.d.ts +15 -0
  230. package/dist/harness/runtime/progress.d.ts.map +1 -0
  231. package/dist/harness/runtime/progress.js +66 -0
  232. package/dist/harness/runtime/progress.js.map +1 -0
  233. package/dist/harness/runtime/reducer.d.ts +5 -0
  234. package/dist/harness/runtime/reducer.d.ts.map +1 -0
  235. package/dist/harness/runtime/reducer.js +240 -0
  236. package/dist/harness/runtime/reducer.js.map +1 -0
  237. package/dist/harness/runtime/restore.d.ts +24 -0
  238. package/dist/harness/runtime/restore.d.ts.map +1 -0
  239. package/dist/harness/runtime/restore.js +117 -0
  240. package/dist/harness/runtime/restore.js.map +1 -0
  241. package/dist/harness/runtime/transcript.d.ts +21 -0
  242. package/dist/harness/runtime/transcript.d.ts.map +1 -0
  243. package/dist/harness/runtime/transcript.js +72 -0
  244. package/dist/harness/runtime/transcript.js.map +1 -0
  245. package/dist/harness/runtime/types.d.ts +105 -0
  246. package/dist/harness/runtime/types.d.ts.map +1 -0
  247. package/dist/harness/runtime/types.js +61 -0
  248. package/dist/harness/runtime/types.js.map +1 -0
  249. package/dist/harness/session/commit.d.ts +53 -0
  250. package/dist/harness/session/commit.d.ts.map +1 -0
  251. package/dist/harness/session/commit.js +57 -0
  252. package/dist/harness/session/commit.js.map +1 -0
  253. package/dist/harness/session/context.d.ts +10 -0
  254. package/dist/harness/session/context.d.ts.map +1 -0
  255. package/dist/harness/session/context.js +49 -0
  256. package/dist/harness/session/context.js.map +1 -0
  257. package/dist/harness/session/fork-policy.d.ts +21 -0
  258. package/dist/harness/session/fork-policy.d.ts.map +1 -0
  259. package/dist/harness/session/fork-policy.js +55 -0
  260. package/dist/harness/session/fork-policy.js.map +1 -0
  261. package/dist/harness/session/fork.d.ts +16 -0
  262. package/dist/harness/session/fork.d.ts.map +1 -0
  263. package/dist/harness/session/fork.js +79 -0
  264. package/dist/harness/session/fork.js.map +1 -0
  265. package/dist/harness/session/in-memory-storage-state.d.ts +39 -0
  266. package/dist/harness/session/in-memory-storage-state.d.ts.map +1 -0
  267. package/dist/harness/session/in-memory-storage-state.js +276 -0
  268. package/dist/harness/session/in-memory-storage-state.js.map +1 -0
  269. package/dist/harness/session/index.d.ts +11 -0
  270. package/dist/harness/session/index.d.ts.map +1 -0
  271. package/dist/harness/session/index.js +9 -0
  272. package/dist/harness/session/index.js.map +1 -0
  273. package/dist/harness/session/jsonl/codec.d.ts +21 -0
  274. package/dist/harness/session/jsonl/codec.d.ts.map +1 -0
  275. package/dist/harness/session/jsonl/codec.js +45 -0
  276. package/dist/harness/session/jsonl/codec.js.map +1 -0
  277. package/dist/harness/session/jsonl/fork.d.ts +38 -0
  278. package/dist/harness/session/jsonl/fork.d.ts.map +1 -0
  279. package/dist/harness/session/jsonl/fork.js +264 -0
  280. package/dist/harness/session/jsonl/fork.js.map +1 -0
  281. package/dist/harness/session/jsonl/index.d.ts +4 -0
  282. package/dist/harness/session/jsonl/index.d.ts.map +1 -0
  283. package/dist/harness/session/jsonl/index.js +4 -0
  284. package/dist/harness/session/jsonl/index.js.map +1 -0
  285. package/dist/harness/session/jsonl/io.d.ts +14 -0
  286. package/dist/harness/session/jsonl/io.d.ts.map +1 -0
  287. package/dist/harness/session/jsonl/io.js +86 -0
  288. package/dist/harness/session/jsonl/io.js.map +1 -0
  289. package/dist/harness/session/jsonl/legacy-v3.d.ts +44 -0
  290. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +1 -0
  291. package/dist/harness/session/jsonl/legacy-v3.js +462 -0
  292. package/dist/harness/session/jsonl/legacy-v3.js.map +1 -0
  293. package/dist/harness/session/jsonl/repo.d.ts +35 -0
  294. package/dist/harness/session/jsonl/repo.d.ts.map +1 -0
  295. package/dist/harness/session/jsonl/repo.js +301 -0
  296. package/dist/harness/session/jsonl/repo.js.map +1 -0
  297. package/dist/harness/session/jsonl/storage.d.ts +41 -0
  298. package/dist/harness/session/jsonl/storage.d.ts.map +1 -0
  299. package/dist/harness/session/jsonl/storage.js +200 -0
  300. package/dist/harness/session/jsonl/storage.js.map +1 -0
  301. package/dist/harness/session/jsonl/types.d.ts +39 -0
  302. package/dist/harness/session/jsonl/types.d.ts.map +1 -0
  303. package/dist/harness/session/jsonl/types.js +3 -0
  304. package/dist/harness/session/jsonl/types.js.map +1 -0
  305. package/dist/harness/session/memory.d.ts +48 -0
  306. package/dist/harness/session/memory.d.ts.map +1 -0
  307. package/dist/harness/session/memory.js +369 -0
  308. package/dist/harness/session/memory.js.map +1 -0
  309. package/dist/harness/session/mutation-line.d.ts +8 -0
  310. package/dist/harness/session/mutation-line.d.ts.map +1 -0
  311. package/dist/harness/session/mutation-line.js +21 -0
  312. package/dist/harness/session/mutation-line.js.map +1 -0
  313. package/dist/harness/session/session.d.ts +79 -46
  314. package/dist/harness/session/session.d.ts.map +1 -1
  315. package/dist/harness/session/session.js +320 -220
  316. package/dist/harness/session/session.js.map +1 -1
  317. package/dist/harness/session/testing/benchmark/datasets.d.ts +12 -0
  318. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +1 -0
  319. package/dist/harness/session/testing/benchmark/datasets.js +24 -0
  320. package/dist/harness/session/testing/benchmark/datasets.js.map +1 -0
  321. package/dist/harness/session/testing/benchmark/session-repo.d.ts +42 -0
  322. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +1 -0
  323. package/dist/harness/session/testing/benchmark/session-repo.js +127 -0
  324. package/dist/harness/session/testing/benchmark/session-repo.js.map +1 -0
  325. package/dist/harness/session/testing/benchmark/storage.d.ts +25 -0
  326. package/dist/harness/session/testing/benchmark/storage.d.ts.map +1 -0
  327. package/dist/harness/session/testing/benchmark/storage.js +114 -0
  328. package/dist/harness/session/testing/benchmark/storage.js.map +1 -0
  329. package/dist/harness/session/testing/conformance/session-repo.d.ts +23 -0
  330. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +1 -0
  331. package/dist/harness/session/testing/conformance/session-repo.js +809 -0
  332. package/dist/harness/session/testing/conformance/session-repo.js.map +1 -0
  333. package/dist/harness/session/testing/conformance/storage.d.ts +4 -0
  334. package/dist/harness/session/testing/conformance/storage.d.ts.map +1 -0
  335. package/dist/harness/session/testing/conformance/storage.js +600 -0
  336. package/dist/harness/session/testing/conformance/storage.js.map +1 -0
  337. package/dist/harness/session/testing/gating-storage.d.ts +26 -0
  338. package/dist/harness/session/testing/gating-storage.d.ts.map +1 -0
  339. package/dist/harness/session/testing/gating-storage.js +100 -0
  340. package/dist/harness/session/testing/gating-storage.js.map +1 -0
  341. package/dist/harness/session/testing/index.d.ts +10 -0
  342. package/dist/harness/session/testing/index.d.ts.map +1 -0
  343. package/dist/harness/session/testing/index.js +9 -0
  344. package/dist/harness/session/testing/index.js.map +1 -0
  345. package/dist/harness/session/testing/instrumented-storage.d.ts +11 -0
  346. package/dist/harness/session/testing/instrumented-storage.d.ts.map +1 -0
  347. package/dist/harness/session/testing/instrumented-storage.js +16 -0
  348. package/dist/harness/session/testing/instrumented-storage.js.map +1 -0
  349. package/dist/harness/session/testing/storage-decorator.d.ts +20 -0
  350. package/dist/harness/session/testing/storage-decorator.d.ts.map +1 -0
  351. package/dist/harness/session/testing/storage-decorator.js +41 -0
  352. package/dist/harness/session/testing/storage-decorator.js.map +1 -0
  353. package/dist/harness/session/testing/types.d.ts +12 -0
  354. package/dist/harness/session/testing/types.d.ts.map +1 -0
  355. package/dist/harness/session/testing/types.js +2 -0
  356. package/dist/harness/session/testing/types.js.map +1 -0
  357. package/dist/harness/session/types.d.ts +512 -0
  358. package/dist/harness/session/types.d.ts.map +1 -0
  359. package/dist/harness/session/types.js +9 -0
  360. package/dist/harness/session/types.js.map +1 -0
  361. package/dist/harness/session/values.d.ts +95 -0
  362. package/dist/harness/session/values.d.ts.map +1 -0
  363. package/dist/harness/session/values.js +81 -0
  364. package/dist/harness/session/values.js.map +1 -0
  365. package/dist/harness/skills.d.ts +6 -4
  366. package/dist/harness/skills.d.ts.map +1 -1
  367. package/dist/harness/skills.js +59 -44
  368. package/dist/harness/skills.js.map +1 -1
  369. package/dist/harness/telemetry.d.ts +1242 -0
  370. package/dist/harness/telemetry.d.ts.map +1 -0
  371. package/dist/harness/telemetry.js +527 -0
  372. package/dist/harness/telemetry.js.map +1 -0
  373. package/dist/harness/tools/bash.d.ts +4 -4
  374. package/dist/harness/tools/bash.d.ts.map +1 -1
  375. package/dist/harness/tools/bash.js +66 -93
  376. package/dist/harness/tools/bash.js.map +1 -1
  377. package/dist/harness/tools/edit.d.ts.map +1 -1
  378. package/dist/harness/tools/edit.js +10 -10
  379. package/dist/harness/tools/edit.js.map +1 -1
  380. package/dist/harness/tools/file-mutation-queue.d.ts +2 -1
  381. package/dist/harness/tools/file-mutation-queue.d.ts.map +1 -1
  382. package/dist/harness/tools/file-mutation-queue.js +5 -5
  383. package/dist/harness/tools/file-mutation-queue.js.map +1 -1
  384. package/dist/harness/tools/image.js +1 -1
  385. package/dist/harness/tools/image.js.map +1 -1
  386. package/dist/harness/tools/path-utils.d.ts +3 -2
  387. package/dist/harness/tools/path-utils.d.ts.map +1 -1
  388. package/dist/harness/tools/path-utils.js +5 -5
  389. package/dist/harness/tools/path-utils.js.map +1 -1
  390. package/dist/harness/tools/read.d.ts +2 -1
  391. package/dist/harness/tools/read.d.ts.map +1 -1
  392. package/dist/harness/tools/read.js +4 -6
  393. package/dist/harness/tools/read.js.map +1 -1
  394. package/dist/harness/tools/write.d.ts.map +1 -1
  395. package/dist/harness/tools/write.js +7 -7
  396. package/dist/harness/tools/write.js.map +1 -1
  397. package/dist/harness/types.d.ts +126 -502
  398. package/dist/harness/types.d.ts.map +1 -1
  399. package/dist/harness/types.js +10 -16
  400. package/dist/harness/types.js.map +1 -1
  401. package/dist/harness/utils/adaptive-publisher.d.ts +24 -0
  402. package/dist/harness/utils/adaptive-publisher.d.ts.map +1 -0
  403. package/dist/harness/utils/adaptive-publisher.js +79 -0
  404. package/dist/harness/utils/adaptive-publisher.js.map +1 -0
  405. package/dist/harness/utils/output-capture.d.ts +31 -0
  406. package/dist/harness/utils/output-capture.d.ts.map +1 -0
  407. package/dist/harness/utils/output-capture.js +217 -0
  408. package/dist/harness/utils/output-capture.js.map +1 -0
  409. package/dist/harness/utils/shell-output.d.ts +12 -5
  410. package/dist/harness/utils/shell-output.d.ts.map +1 -1
  411. package/dist/harness/utils/shell-output.js +64 -174
  412. package/dist/harness/utils/shell-output.js.map +1 -1
  413. package/dist/harness/utils/truncate.d.ts +1 -0
  414. package/dist/harness/utils/truncate.d.ts.map +1 -1
  415. package/dist/harness/utils/truncate.js +1 -1
  416. package/dist/harness/utils/truncate.js.map +1 -1
  417. package/dist/harness/utils/usage.d.ts +4 -0
  418. package/dist/harness/utils/usage.d.ts.map +1 -0
  419. package/dist/harness/utils/usage.js +33 -0
  420. package/dist/harness/utils/usage.js.map +1 -0
  421. package/dist/index.d.ts +13 -9
  422. package/dist/index.d.ts.map +1 -1
  423. package/dist/index.js +9 -13
  424. package/dist/index.js.map +1 -1
  425. package/dist/proxy.d.ts +6 -3
  426. package/dist/proxy.d.ts.map +1 -1
  427. package/dist/proxy.js +8 -0
  428. package/dist/proxy.js.map +1 -1
  429. package/dist/search/index.d.ts +29 -0
  430. package/dist/search/index.d.ts.map +1 -0
  431. package/dist/search/index.js +2 -0
  432. package/dist/search/index.js.map +1 -0
  433. package/dist/types.d.ts +107 -31
  434. package/dist/types.d.ts.map +1 -1
  435. package/dist/types.js.map +1 -1
  436. package/package.json +50 -4
  437. package/dist/harness/session/jsonl-repo.d.ts +0 -26
  438. package/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  439. package/dist/harness/session/jsonl-repo.js +0 -100
  440. package/dist/harness/session/jsonl-repo.js.map +0 -1
  441. package/dist/harness/session/jsonl-storage.d.ts +0 -42
  442. package/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  443. package/dist/harness/session/jsonl-storage.js +0 -286
  444. package/dist/harness/session/jsonl-storage.js.map +0 -1
  445. package/dist/harness/session/memory-repo.d.ts +0 -18
  446. package/dist/harness/session/memory-repo.d.ts.map +0 -1
  447. package/dist/harness/session/memory-repo.js +0 -44
  448. package/dist/harness/session/memory-repo.js.map +0 -1
  449. package/dist/harness/session/memory-storage.d.ts +0 -33
  450. package/dist/harness/session/memory-storage.d.ts.map +0 -1
  451. package/dist/harness/session/memory-storage.js +0 -163
  452. package/dist/harness/session/memory-storage.js.map +0 -1
  453. package/dist/harness/session/repo-utils.d.ts +0 -11
  454. package/dist/harness/session/repo-utils.d.ts.map +0 -1
  455. package/dist/harness/session/repo-utils.js +0 -39
  456. package/dist/harness/session/repo-utils.js.map +0 -1
@@ -1,7 +1,9 @@
1
- import type { ImageContent, Model, Models, RetryPolicy, SimpleStreamOptions, TextContent, Transport, Usage } from "@draht/ai";
1
+ import type { SimpleStreamOptions, Transport } from "@draht/ai";
2
2
  import type { Static, TSchema } from "typebox";
3
- import type { AgentEvent, AgentMessage, AgentTool, AgentToolResult, AgentToolUpdateCallback, QueueMode, ThinkingLevel } from "../index.ts";
4
- import type { Session } from "./session/session.ts";
3
+ import type { AgentTool, AgentToolResult } from "../types.ts";
4
+ import type { Context } from "./context.ts";
5
+ import type { JsonValue } from "./session/types.ts";
6
+ import type { TruncationResult } from "./utils/truncate.ts";
5
7
  /** Result of a fallible operation. Expected failures are returned as `ok: false` instead of thrown. */
6
8
  export type Result<TValue, TError> = {
7
9
  ok: true;
@@ -54,13 +56,31 @@ export interface AgentHarnessResources<TSkill extends Skill = Skill, TPromptTemp
54
56
  /** Skills available to the model and explicit skill invocation. */
55
57
  skills?: TSkill[];
56
58
  }
59
+ /** Options for one live harness tool progress update. */
60
+ export interface AgentHarnessToolUpdateOptions {
61
+ /** Request replacement of this invocation's durable recovery checkpoint. */
62
+ checkpoint?: true;
63
+ }
64
+ /** Synchronous full-snapshot progress callback supplied to harness-native tools. */
65
+ export type AgentHarnessToolUpdateCallback<TDetails> = (partialResult: AgentToolResult<TDetails>, options?: AgentHarnessToolUpdateOptions) => void;
66
+ /** Stable harness identity for one logical tool call, unchanged during safe replay. */
67
+ export interface AgentHarnessToolInvocation {
68
+ /** Opaque session-unique id equal to the call's reserved result-entry id. */
69
+ readonly invocationId: string;
70
+ readonly operationId: string;
71
+ readonly turnId: string;
72
+ /** Read one invocation-scoped durable replay memo. */
73
+ getMemo(name: string): Promise<JsonValue | undefined>;
74
+ /** Set or delete one invocation-scoped durable replay memo. */
75
+ setMemo(name: string, value: JsonValue | undefined): Promise<void>;
76
+ }
57
77
  /** Tool definition executed by an {@link AgentHarness} with an application-defined context. */
58
78
  export type AgentHarnessTool<TContext extends object | undefined, TParameters extends TSchema = TSchema, TDetails = unknown> = Omit<AgentTool<TParameters, TDetails>, "execute"> & {
59
79
  /** Execute the tool call with the context resolved for the current turn snapshot. */
60
- execute(toolCallId: string, params: Static<TParameters>, signal: AbortSignal | undefined, onUpdate: AgentToolUpdateCallback<TDetails> | undefined, context: TContext): Promise<AgentToolResult<TDetails>>;
80
+ execute(toolCallId: string, params: Static<TParameters>, onUpdate: AgentHarnessToolUpdateCallback<TDetails>, toolContext: TContext, invocation: AgentHarnessToolInvocation, context: Context): Promise<AgentToolResult<TDetails>>;
61
81
  };
62
- /** Static tool context or zero-argument provider resolved for each turn snapshot. */
63
- export type AgentHarnessToolContextSource<TContext extends object | undefined> = TContext | (() => TContext | Promise<TContext>);
82
+ /** Static tool context or provider resolved for each turn snapshot. */
83
+ export type AgentHarnessToolContextSource<TContext extends object | undefined> = TContext | ((context: Context) => TContext | Promise<TContext>);
64
84
  /** Curated provider request options owned by the harness and snapshotted per turn. */
65
85
  export interface AgentHarnessStreamOptions {
66
86
  /** Preferred transport forwarded to the stream function. */
@@ -77,6 +97,10 @@ export interface AgentHarnessStreamOptions {
77
97
  metadata?: SimpleStreamOptions["metadata"];
78
98
  /** Provider cache retention hint. */
79
99
  cacheRetention?: SimpleStreamOptions["cacheRetention"];
100
+ /** Ask a capable provider to continue generation asynchronously. */
101
+ deferred?: boolean | {
102
+ window?: "15m" | "1h" | "24h";
103
+ };
80
104
  }
81
105
  /** Per-request stream option patch returned by provider hooks. */
82
106
  export interface AgentHarnessStreamOptionsPatch extends Omit<Partial<AgentHarnessStreamOptions>, "headers" | "metadata"> {
@@ -106,7 +130,7 @@ export declare class ExecutionError extends Error {
106
130
  constructor(code: ExecutionErrorCode, message: string, cause?: Error);
107
131
  }
108
132
  /** Stable compaction error codes returned by compaction helpers. */
109
- export type CompactionErrorCode = "aborted" | "summarization_failed" | "invalid_session" | "unknown";
133
+ export type CompactionErrorCode = "aborted" | "summarization_failed";
110
134
  /** Error returned by compaction helpers. */
111
135
  export declare class CompactionError extends Error {
112
136
  /** Backend-independent error code. */
@@ -114,26 +138,13 @@ export declare class CompactionError extends Error {
114
138
  constructor(code: CompactionErrorCode, message: string, cause?: Error);
115
139
  }
116
140
  /** Stable branch-summary error codes returned by branch summarization helpers. */
117
- export type BranchSummaryErrorCode = "aborted" | "summarization_failed" | "invalid_session";
141
+ export type BranchSummaryErrorCode = "aborted" | "summarization_failed";
118
142
  /** Error returned by branch summarization helpers. */
119
143
  export declare class BranchSummaryError extends Error {
120
144
  /** Backend-independent error code. */
121
145
  code: BranchSummaryErrorCode;
122
146
  constructor(code: BranchSummaryErrorCode, message: string, cause?: Error);
123
147
  }
124
- export type SessionErrorCode = "not_found" | "invalid_session" | "invalid_entry" | "invalid_fork_target" | "storage" | "unknown";
125
- /** Error thrown by session storage, repositories, and session tree operations. */
126
- export declare class SessionError extends Error {
127
- /** Session subsystem error code. */
128
- code: SessionErrorCode;
129
- constructor(code: SessionErrorCode, message: string, cause?: Error);
130
- }
131
- export type AgentHarnessErrorCode = "busy" | "invalid_state" | "invalid_argument" | "session" | "hook" | "auth" | "compaction" | "branch_summary" | "unknown";
132
- /** Public AgentHarness failure with a stable top-level classification. */
133
- export declare class AgentHarnessError extends Error {
134
- code: AgentHarnessErrorCode;
135
- constructor(code: AgentHarnessErrorCode, message: string, cause?: Error);
136
- }
137
148
  /** Metadata for one filesystem object in a {@link FileSystem}. */
138
149
  export interface FileInfo {
139
150
  /** Basename of {@link path}. */
@@ -147,6 +158,18 @@ export interface FileInfo {
147
158
  /** Modification time as milliseconds since Unix epoch. */
148
159
  mtimeMs: number;
149
160
  }
161
+ /** One UTF-8 line read from a text file. */
162
+ export interface TextLine {
163
+ text: string;
164
+ /** Whether the line ended with `\n`; callers use this to discard a torn final record. */
165
+ terminated: boolean;
166
+ }
167
+ /** Pull-based UTF-8 line reader that preserves final-line termination. */
168
+ export interface TextLineReader {
169
+ readLine(context: Context): Promise<Result<TextLine | undefined, FileError>>;
170
+ /** Release the open file. Must be best-effort and must not throw or reject. */
171
+ close(context: Context): Promise<void>;
172
+ }
150
173
  /**
151
174
  * Filesystem capability used by the harness.
152
175
  *
@@ -160,51 +183,99 @@ export interface FileSystem {
160
183
  /** Current working directory for relative paths. */
161
184
  cwd: string;
162
185
  /** Return an absolute addressed path without requiring it to exist and without resolving symlinks. */
163
- absolutePath(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
186
+ absolutePath(path: string, context: Context): Promise<Result<string, FileError>>;
164
187
  /** Join path segments in the filesystem namespace without requiring the result to exist. */
165
- joinPath(parts: string[], abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
188
+ joinPath(parts: string[], context: Context): Promise<Result<string, FileError>>;
166
189
  /** Read a UTF-8 text file. */
167
- readTextFile(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
190
+ readTextFile(path: string, context: Context): Promise<Result<string, FileError>>;
191
+ /** Open a UTF-8 text file for pull-based line reading. */
192
+ openTextLineReader(path: string, context: Context): Promise<Result<TextLineReader, FileError>>;
168
193
  /** Read UTF-8 text lines. Implementations should stop once `maxLines` lines have been read. */
169
- readTextLines(path: string, options?: {
194
+ readTextLines(path: string, options: {
170
195
  maxLines?: number;
171
- abortSignal?: AbortSignal;
172
- }): Promise<Result<string[], FileError>>;
196
+ } | undefined, context: Context): Promise<Result<string[], FileError>>;
173
197
  /** Read a binary file. */
174
- readBinaryFile(path: string, abortSignal?: AbortSignal): Promise<Result<Uint8Array, FileError>>;
198
+ readBinaryFile(path: string, context: Context): Promise<Result<Uint8Array, FileError>>;
175
199
  /** Create or overwrite a file, creating parent directories when supported. */
176
- writeFile(path: string, content: string | Uint8Array, abortSignal?: AbortSignal): Promise<Result<void, FileError>>;
200
+ writeFile(path: string, content: string | Uint8Array, context: Context): Promise<Result<void, FileError>>;
177
201
  /** Create or append to a file, creating parent directories when supported. */
178
- appendFile(path: string, content: string | Uint8Array, abortSignal?: AbortSignal): Promise<Result<void, FileError>>;
202
+ appendFile(path: string, content: string | Uint8Array, context: Context): Promise<Result<void, FileError>>;
203
+ /** Atomically rename a file, replacing the destination when it exists. Does not copy across filesystems. */
204
+ renameFile(sourcePath: string, destinationPath: string, context: Context): Promise<Result<void, FileError>>;
179
205
  /** Return metadata for the addressed path without following symlinks. */
180
- fileInfo(path: string, abortSignal?: AbortSignal): Promise<Result<FileInfo, FileError>>;
206
+ fileInfo(path: string, context: Context): Promise<Result<FileInfo, FileError>>;
181
207
  /** List direct children of a directory without following symlinks. */
182
- listDir(path: string, abortSignal?: AbortSignal): Promise<Result<FileInfo[], FileError>>;
208
+ listDir(path: string, context: Context): Promise<Result<FileInfo[], FileError>>;
183
209
  /** Return the canonical path for an existing path, resolving symlinks where supported. */
184
- canonicalPath(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
210
+ canonicalPath(path: string, context: Context): Promise<Result<string, FileError>>;
185
211
  /** Return false for missing paths. Other errors, such as permission failures, return a {@link FileError}. */
186
- exists(path: string, abortSignal?: AbortSignal): Promise<Result<boolean, FileError>>;
187
- /** Create a directory. Defaults: `recursive: true`, no abort signal. */
188
- createDir(path: string, options?: {
212
+ exists(path: string, context: Context): Promise<Result<boolean, FileError>>;
213
+ /** Create a directory. Defaults to `recursive: true`. */
214
+ createDir(path: string, options: {
189
215
  recursive?: boolean;
190
- abortSignal?: AbortSignal;
191
- }): Promise<Result<void, FileError>>;
192
- /** Remove a file or directory. Defaults: `recursive: false`, `force: false`, no abort signal. */
193
- remove(path: string, options?: {
216
+ } | undefined, context: Context): Promise<Result<void, FileError>>;
217
+ /** Remove a file or directory. Defaults to `recursive: false` and `force: false`. */
218
+ remove(path: string, options: {
194
219
  recursive?: boolean;
195
220
  force?: boolean;
196
- abortSignal?: AbortSignal;
197
- }): Promise<Result<void, FileError>>;
198
- /** Create a temporary directory and return its absolute path. Defaults: `prefix: "tmp-"`, no abort signal. */
199
- createTempDir(prefix?: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
200
- /** Create a temporary file and return its absolute path. Defaults: `prefix: ""`, `suffix: ""`, no abort signal. */
201
- createTempFile(options?: {
221
+ } | undefined, context: Context): Promise<Result<void, FileError>>;
222
+ /** Create a temporary directory and return its absolute path. Defaults to `prefix: "tmp-"`. */
223
+ createTempDir(prefix: string | undefined, context: Context): Promise<Result<string, FileError>>;
224
+ /** Create a temporary file and return its absolute path. Defaults to `prefix: ""` and `suffix: ""`. */
225
+ createTempFile(options: {
202
226
  prefix?: string;
203
227
  suffix?: string;
204
- abortSignal?: AbortSignal;
205
- }): Promise<Result<string, FileError>>;
228
+ } | undefined, context: Context): Promise<Result<string, FileError>>;
206
229
  /** Release filesystem resources. Must be best-effort and must not throw or reject. */
207
- cleanup(): Promise<void>;
230
+ cleanup(context: Context): Promise<void>;
231
+ }
232
+ /** Which portion of bounded output survives after the limit is crossed. */
233
+ export type ShellOutputRetention = "head" | "tail";
234
+ /** Source-side limits for one combined shell output view. */
235
+ export interface ShellOutputLimits {
236
+ maxBytes: number;
237
+ maxLines: number;
238
+ /** Defaults to `"tail"`. */
239
+ retain?: ShellOutputRetention;
240
+ }
241
+ /** Bounded shell capture requested by the caller. */
242
+ export interface ShellOutputCaptureOptions {
243
+ limits: ShellOutputLimits;
244
+ /** Preserve complete output in an execution-environment-local file after the limits are crossed. */
245
+ spill?: boolean;
246
+ }
247
+ /** Truncation metadata without a duplicate copy of the retained text. */
248
+ export type ShellOutputTruncation = Omit<TruncationResult, "content">;
249
+ /** Metadata accompanying a bounded shell output view. */
250
+ export interface ShellOutputMetadata {
251
+ truncation: ShellOutputTruncation;
252
+ spillPath?: string;
253
+ lastLineBytes?: number;
254
+ }
255
+ /** Complete bounded shell output view. */
256
+ export interface ShellOutputView extends ShellOutputMetadata {
257
+ text: string;
258
+ }
259
+ /** Incremental source-side change to one bounded shell output view. */
260
+ export type ShellOutputUpdate = {
261
+ kind: "replace";
262
+ output: ShellOutputView;
263
+ } | {
264
+ kind: "append";
265
+ text: string;
266
+ metadata: ShellOutputMetadata;
267
+ } | {
268
+ kind: "slide";
269
+ drop: number;
270
+ text: string;
271
+ metadata: ShellOutputMetadata;
272
+ } | {
273
+ kind: "metadata";
274
+ metadata: ShellOutputMetadata;
275
+ };
276
+ /** Bounded shell completion. Output text is delivered through {@link ShellExecOptions.onUpdate}. */
277
+ export interface ShellExecResult extends ShellOutputMetadata {
278
+ exitCode: number;
208
279
  }
209
280
  /** Options for {@link Shell.exec}. */
210
281
  export interface ShellExecOptions {
@@ -216,466 +287,19 @@ export interface ShellExecOptions {
216
287
  inheritEnv?: boolean;
217
288
  /** Timeout in seconds. Implementations should return a timeout error when the command exceeds this duration. Defaults to no timeout. */
218
289
  timeout?: number;
219
- /** Abort signal used to terminate the command. Defaults to no abort signal. */
220
- abortSignal?: AbortSignal;
221
- /** Called with stdout chunks as they are produced. */
222
- onStdout?: (chunk: string) => void;
223
- /** Called with stderr chunks as they are produced. */
224
- onStderr?: (chunk: string) => void;
290
+ /** Source-side bounded capture. Output is discarded when this and `onUpdate` are both absent. */
291
+ capture?: ShellOutputCaptureOptions;
292
+ /** Called with bounded output changes. */
293
+ onUpdate?: (update: ShellOutputUpdate, context: Context) => void;
225
294
  }
226
295
  /** Shell execution capability used by the harness. */
227
296
  export interface Shell {
228
297
  /** Execute a shell command in {@link FileSystem.cwd} unless `options.cwd` is provided. */
229
- exec(command: string, options?: ShellExecOptions): Promise<Result<{
230
- stdout: string;
231
- stderr: string;
232
- exitCode: number;
233
- }, ExecutionError>>;
298
+ exec(command: string, options: ShellExecOptions | undefined, context: Context): Promise<Result<ShellExecResult, ExecutionError>>;
234
299
  /** Release shell resources. Must be best-effort and must not throw or reject. */
235
- cleanup(): Promise<void>;
300
+ cleanup(context: Context): Promise<void>;
236
301
  }
237
302
  /** Filesystem and process execution environment used by the harness. */
238
303
  export interface ExecutionEnv extends FileSystem, Shell {
239
304
  }
240
- export interface SessionTreeEntryBase {
241
- type: string;
242
- id: string;
243
- parentId: string | null;
244
- timestamp: string;
245
- }
246
- export interface MessageEntry extends SessionTreeEntryBase {
247
- type: "message";
248
- message: AgentMessage;
249
- }
250
- export interface ThinkingLevelChangeEntry extends SessionTreeEntryBase {
251
- type: "thinking_level_change";
252
- thinkingLevel: string;
253
- }
254
- export interface ModelChangeEntry extends SessionTreeEntryBase {
255
- type: "model_change";
256
- provider: string;
257
- modelId: string;
258
- }
259
- export interface ActiveToolsChangeEntry extends SessionTreeEntryBase {
260
- type: "active_tools_change";
261
- activeToolNames: string[];
262
- }
263
- export interface CompactionEntry<T = unknown> extends SessionTreeEntryBase {
264
- type: "compaction";
265
- summary: string;
266
- firstKeptEntryId?: string;
267
- tokensBefore: number;
268
- retainedTail?: AgentMessage[];
269
- details?: T;
270
- usage?: Usage;
271
- fromHook?: boolean;
272
- }
273
- export interface BranchSummaryEntry<T = unknown> extends SessionTreeEntryBase {
274
- type: "branch_summary";
275
- fromId: string;
276
- summary: string;
277
- details?: T;
278
- usage?: Usage;
279
- fromHook?: boolean;
280
- }
281
- export interface CustomEntry<T = unknown> extends SessionTreeEntryBase {
282
- type: "custom";
283
- customType: string;
284
- data?: T;
285
- }
286
- export interface CustomMessageEntry<T = unknown> extends SessionTreeEntryBase {
287
- type: "custom_message";
288
- customType: string;
289
- content: string | (TextContent | ImageContent)[];
290
- details?: T;
291
- display: boolean;
292
- }
293
- export interface LabelEntry extends SessionTreeEntryBase {
294
- type: "label";
295
- targetId: string;
296
- label: string | undefined;
297
- }
298
- export interface SessionInfoEntry extends SessionTreeEntryBase {
299
- type: "session_info";
300
- name?: string;
301
- }
302
- export interface LeafEntry extends SessionTreeEntryBase {
303
- type: "leaf";
304
- targetId: string | null;
305
- }
306
- export type SessionTreeEntry = MessageEntry | ThinkingLevelChangeEntry | ModelChangeEntry | ActiveToolsChangeEntry | CompactionEntry | BranchSummaryEntry | CustomEntry | CustomMessageEntry | LabelEntry | SessionInfoEntry | LeafEntry;
307
- export interface SessionContext {
308
- messages: AgentMessage[];
309
- thinkingLevel: string;
310
- model: {
311
- provider: string;
312
- modelId: string;
313
- } | null;
314
- activeToolNames: string[] | null;
315
- }
316
- export interface SessionStats {
317
- messageCount: number;
318
- cachedTokens: number;
319
- uncachedTokens: number;
320
- totalTokens: number;
321
- costTotal: number;
322
- }
323
- export interface SessionMetadata {
324
- id: string;
325
- createdAt: string;
326
- }
327
- export interface JsonlSessionMetadata extends SessionMetadata {
328
- cwd: string;
329
- path: string;
330
- parentSessionPath?: string;
331
- metadata?: Record<string, unknown>;
332
- }
333
- export interface SessionEntryCursorOptions {
334
- afterEntrySeq?: number;
335
- limit?: number;
336
- }
337
- export interface SessionStorage<TMetadata extends SessionMetadata = SessionMetadata> {
338
- getMetadata(): Promise<TMetadata>;
339
- getLeafId(): Promise<string | null>;
340
- /** Persist a leaf entry that records the active session-tree leaf. */
341
- setLeafId(leafId: string | null): Promise<void>;
342
- createEntryId(): Promise<string>;
343
- appendEntry(entry: SessionTreeEntry): Promise<void>;
344
- getEntry(id: string): Promise<SessionTreeEntry | undefined>;
345
- findEntries<TType extends SessionTreeEntry["type"]>(type: TType): Promise<Array<Extract<SessionTreeEntry, {
346
- type: TType;
347
- }>>>;
348
- getLabel(id: string): Promise<string | undefined>;
349
- getSessionName(): Promise<string | undefined>;
350
- getSessionStats(): Promise<SessionStats>;
351
- getPathToRootOrCompaction(leafId: string | null): Promise<SessionTreeEntry[]>;
352
- getEntries(options?: SessionEntryCursorOptions): Promise<SessionTreeEntry[]>;
353
- }
354
- export type { Session } from "./session/session.ts";
355
- export interface SessionCreateOptions {
356
- id?: string;
357
- }
358
- export interface SessionForkOptions {
359
- entryId?: string;
360
- position?: "before" | "at";
361
- id?: string;
362
- }
363
- export interface SessionRepo<TMetadata extends SessionMetadata = SessionMetadata, TCreateOptions extends SessionCreateOptions = SessionCreateOptions, TListOptions = void> {
364
- create(options: TCreateOptions): Promise<Session<TMetadata>>;
365
- open(metadata: TMetadata): Promise<Session<TMetadata>>;
366
- list(options?: TListOptions): Promise<TMetadata[]>;
367
- delete(metadata: TMetadata): Promise<void>;
368
- fork(source: TMetadata, options: SessionForkOptions & TCreateOptions): Promise<Session<TMetadata>>;
369
- }
370
- export interface JsonlSessionCreateOptions extends SessionCreateOptions {
371
- cwd: string;
372
- parentSessionPath?: string;
373
- metadata?: Record<string, unknown>;
374
- }
375
- export interface JsonlSessionListOptions {
376
- cwd?: string;
377
- }
378
- export interface JsonlSessionRepoApi extends SessionRepo<JsonlSessionMetadata, JsonlSessionCreateOptions, JsonlSessionListOptions> {
379
- }
380
- export type AgentHarnessPhase = "idle" | "turn" | "compaction" | "branch_summary" | "retry";
381
- export type PendingSessionWrite = SessionTreeEntry extends infer TEntry ? TEntry extends SessionTreeEntry ? Omit<TEntry, "id" | "parentId" | "timestamp"> : never : never;
382
- export interface QueueUpdateEvent {
383
- type: "queue_update";
384
- steer: AgentMessage[];
385
- followUp: AgentMessage[];
386
- nextTurn: AgentMessage[];
387
- }
388
- export interface SavePointEvent {
389
- type: "save_point";
390
- hadPendingMutations: boolean;
391
- }
392
- export interface AbortEvent {
393
- type: "abort";
394
- clearedSteer: AgentMessage[];
395
- clearedFollowUp: AgentMessage[];
396
- }
397
- export interface SettledEvent {
398
- type: "settled";
399
- nextTurnCount: number;
400
- }
401
- export interface BeforeAgentStartEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
402
- type: "before_agent_start";
403
- prompt: string;
404
- images?: ImageContent[];
405
- systemPrompt: string;
406
- resources: AgentHarnessResources<TSkill, TPromptTemplate>;
407
- }
408
- export interface ContextEvent {
409
- type: "context";
410
- messages: AgentMessage[];
411
- }
412
- export interface BeforeProviderRequestEvent {
413
- type: "before_provider_request";
414
- model: Model<any>;
415
- sessionId: string;
416
- streamOptions: AgentHarnessStreamOptions;
417
- }
418
- export interface BeforeProviderPayloadEvent {
419
- type: "before_provider_payload";
420
- model: Model<any>;
421
- payload: unknown;
422
- }
423
- export interface AfterProviderResponseEvent {
424
- type: "after_provider_response";
425
- status: number;
426
- headers: Record<string, string>;
427
- }
428
- export interface ToolCallEvent {
429
- type: "tool_call";
430
- toolCallId: string;
431
- toolName: string;
432
- input: Record<string, unknown>;
433
- }
434
- export interface ToolResultEvent {
435
- type: "tool_result";
436
- toolCallId: string;
437
- toolName: string;
438
- input: Record<string, unknown>;
439
- content: Array<TextContent | ImageContent>;
440
- details: unknown;
441
- isError: boolean;
442
- usage?: Usage;
443
- }
444
- export interface SessionBeforeCompactEvent {
445
- type: "session_before_compact";
446
- preparation: CompactionPreparation;
447
- branchEntries: SessionTreeEntry[];
448
- customInstructions?: string;
449
- signal: AbortSignal;
450
- }
451
- export interface SessionCompactEvent {
452
- type: "session_compact";
453
- compactionEntry: CompactionEntry;
454
- fromHook: boolean;
455
- }
456
- export interface SessionBeforeTreeEvent {
457
- type: "session_before_tree";
458
- preparation: TreePreparation;
459
- signal: AbortSignal;
460
- }
461
- export interface SessionTreeEvent {
462
- type: "session_tree";
463
- newLeafId: string | null;
464
- oldLeafId: string | null;
465
- summaryEntry?: BranchSummaryEntry;
466
- fromHook?: boolean;
467
- }
468
- export interface RetryScheduledEvent {
469
- type: "retry_scheduled";
470
- operation: "compaction" | "branch_summary";
471
- attempt: number;
472
- maxAttempts: number;
473
- delayMs: number;
474
- errorMessage: string;
475
- }
476
- export interface RetryAttemptStartEvent {
477
- type: "retry_attempt_start";
478
- operation: "compaction" | "branch_summary";
479
- }
480
- export interface RetryFinishedEvent {
481
- type: "retry_finished";
482
- operation: "compaction" | "branch_summary";
483
- }
484
- export interface ModelUpdateEvent {
485
- type: "model_update";
486
- model: Model<any>;
487
- previousModel: Model<any> | undefined;
488
- source: "set" | "restore";
489
- }
490
- export interface ThinkingLevelUpdateEvent {
491
- type: "thinking_level_update";
492
- level: ThinkingLevel;
493
- previousLevel: ThinkingLevel;
494
- }
495
- export interface ToolsUpdateEvent {
496
- type: "tools_update";
497
- toolNames: string[];
498
- previousToolNames: string[];
499
- activeToolNames: string[];
500
- previousActiveToolNames: string[];
501
- source: "set" | "restore";
502
- }
503
- export interface ResourcesUpdateEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> {
504
- type: "resources_update";
505
- resources: AgentHarnessResources<TSkill, TPromptTemplate>;
506
- previousResources: AgentHarnessResources<TSkill, TPromptTemplate>;
507
- }
508
- export type AgentHarnessOwnEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = QueueUpdateEvent | SavePointEvent | AbortEvent | SettledEvent | BeforeAgentStartEvent<TSkill, TPromptTemplate> | ContextEvent | BeforeProviderRequestEvent | BeforeProviderPayloadEvent | AfterProviderResponseEvent | ToolCallEvent | ToolResultEvent | SessionBeforeCompactEvent | SessionCompactEvent | SessionBeforeTreeEvent | SessionTreeEvent | RetryScheduledEvent | RetryAttemptStartEvent | RetryFinishedEvent | ModelUpdateEvent | ThinkingLevelUpdateEvent | ResourcesUpdateEvent<TSkill, TPromptTemplate> | ToolsUpdateEvent;
509
- export type AgentHarnessEvent<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = AgentEvent | AgentHarnessOwnEvent<TSkill, TPromptTemplate>;
510
- export interface BeforeAgentStartResult {
511
- messages?: AgentMessage[];
512
- systemPrompt?: string;
513
- }
514
- export interface ContextResult {
515
- messages: AgentMessage[];
516
- }
517
- export interface BeforeProviderRequestResult {
518
- streamOptions?: AgentHarnessStreamOptionsPatch;
519
- }
520
- export interface BeforeProviderPayloadResult {
521
- payload: unknown;
522
- }
523
- export interface ToolCallResult {
524
- block?: boolean;
525
- reason?: string;
526
- }
527
- export interface ToolResultPatch {
528
- content?: Array<TextContent | ImageContent>;
529
- details?: unknown;
530
- isError?: boolean;
531
- usage?: Usage;
532
- terminate?: boolean;
533
- }
534
- export interface SessionBeforeCompactResult {
535
- cancel?: boolean;
536
- compaction?: CompactResult;
537
- }
538
- export interface SessionBeforeTreeResult {
539
- cancel?: boolean;
540
- summary?: {
541
- summary: string;
542
- details?: unknown;
543
- /** Usage from the LLM call that generated this summary, if available. */
544
- usage?: Usage;
545
- };
546
- customInstructions?: string;
547
- replaceInstructions?: boolean;
548
- label?: string;
549
- }
550
- export type AgentHarnessEventResultMap = {
551
- before_agent_start: BeforeAgentStartResult | undefined;
552
- context: ContextResult | undefined;
553
- before_provider_request: BeforeProviderRequestResult | undefined;
554
- before_provider_payload: BeforeProviderPayloadResult | undefined;
555
- after_provider_response: undefined;
556
- tool_call: ToolCallResult | undefined;
557
- tool_result: ToolResultPatch | undefined;
558
- session_before_compact: SessionBeforeCompactResult | undefined;
559
- session_compact: undefined;
560
- session_before_tree: SessionBeforeTreeResult | undefined;
561
- session_tree: undefined;
562
- retry_scheduled: undefined;
563
- retry_attempt_start: undefined;
564
- retry_finished: undefined;
565
- model_update: undefined;
566
- thinking_level_update: undefined;
567
- resources_update: undefined;
568
- tools_update: undefined;
569
- queue_update: undefined;
570
- save_point: undefined;
571
- abort: undefined;
572
- settled: undefined;
573
- };
574
- export interface AgentHarnessPromptOptions {
575
- images?: ImageContent[];
576
- }
577
- export interface AbortResult {
578
- clearedSteer: AgentMessage[];
579
- clearedFollowUp: AgentMessage[];
580
- }
581
- export interface CompactResult {
582
- summary: string;
583
- firstKeptEntryId?: string;
584
- tokensBefore: number;
585
- /** Usage from the LLM call(s) that generated this summary, if available. */
586
- usage?: Usage;
587
- retainedTail?: AgentMessage[];
588
- details?: unknown;
589
- }
590
- export interface NavigateTreeResult {
591
- cancelled: boolean;
592
- editorText?: string;
593
- summaryEntry?: BranchSummaryEntry;
594
- }
595
- export interface CompactionSettings {
596
- enabled: boolean;
597
- reserveTokens: number;
598
- keepRecentTokens: number;
599
- }
600
- export interface CompactionPreparation {
601
- firstKeptEntryId: string;
602
- messagesToSummarize: AgentMessage[];
603
- turnPrefixMessages: AgentMessage[];
604
- retainedTail: AgentMessage[];
605
- isSplitTurn: boolean;
606
- tokensBefore: number;
607
- previousSummary?: string;
608
- fileOps: FileOperations;
609
- settings: CompactionSettings;
610
- }
611
- export interface FileOperations {
612
- read: Set<string>;
613
- written: Set<string>;
614
- edited: Set<string>;
615
- }
616
- export interface TreePreparation {
617
- targetId: string;
618
- oldLeafId: string | null;
619
- commonAncestorId: string | null;
620
- entriesToSummarize: SessionTreeEntry[];
621
- userWantsSummary: boolean;
622
- customInstructions?: string;
623
- replaceInstructions?: boolean;
624
- label?: string;
625
- }
626
- export interface GenerateBranchSummaryOptions {
627
- model: Model<any>;
628
- apiKey: string;
629
- headers?: Record<string, string>;
630
- signal: AbortSignal;
631
- customInstructions?: string;
632
- replaceInstructions?: boolean;
633
- reserveTokens?: number;
634
- }
635
- export interface BranchSummaryResult {
636
- summary: string;
637
- usage?: Usage;
638
- readFiles: string[];
639
- modifiedFiles: string[];
640
- }
641
- export type AgentHarnessSystemPrompt<TContext extends object | undefined = undefined, TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate, TTool extends AgentHarnessTool<TContext> = AgentHarnessTool<TContext>> = string | ((context: {
642
- session: Session;
643
- model: Model<any>;
644
- thinkingLevel: ThinkingLevel;
645
- activeTools: TTool[];
646
- resources: AgentHarnessResources<TSkill, TPromptTemplate>;
647
- }) => string | Promise<string>);
648
- interface AgentHarnessOptionsBase<TContext extends object | undefined, TSkill extends Skill, TPromptTemplate extends PromptTemplate, TTool extends AgentHarnessTool<TContext>> {
649
- session: Session;
650
- /**
651
- * Provider collection used for all model requests (turn streaming,
652
- * compaction, branch summarization). Auth resolves through the providers'
653
- * auth.
654
- */
655
- models: Models;
656
- tools?: TTool[];
657
- /**
658
- * Concrete resources available to explicit invocation methods and system-prompt callbacks.
659
- * Applications own loading/reloading resources and should call `setResources()` with new values.
660
- */
661
- resources?: AgentHarnessResources<TSkill, TPromptTemplate>;
662
- systemPrompt?: AgentHarnessSystemPrompt<TContext, TSkill, TPromptTemplate, TTool>;
663
- /** Curated stream/provider request options. Snapshotted at turn start. */
664
- streamOptions?: AgentHarnessStreamOptions;
665
- /** Optional retry policy for generated compaction and branch-summary requests. */
666
- retry?: RetryPolicy;
667
- model: Model<any>;
668
- thinkingLevel?: ThinkingLevel;
669
- activeToolNames?: string[];
670
- steeringMode?: QueueMode;
671
- followUpMode?: QueueMode;
672
- }
673
- export type AgentHarnessOptions<TContext extends object | undefined = undefined, TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate, TTool extends AgentHarnessTool<TContext> = AgentHarnessTool<TContext>> = AgentHarnessOptionsBase<TContext, TSkill, TPromptTemplate, TTool> & ([TContext] extends [undefined] ? {
674
- /** Context-free harnesses do not need a tool context. */
675
- toolContext?: undefined;
676
- } : {
677
- /** Static context or zero-argument context provider resolved for each turn snapshot. */
678
- toolContext: AgentHarnessToolContextSource<TContext>;
679
- });
680
- export type { AgentHarness } from "./agent-harness.ts";
681
305
  //# sourceMappingURL=types.d.ts.map