@inflexa-ai/harness 0.45.1 → 0.46.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 (789) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +9 -3
  3. package/dist/agents/conversation-agent.js +34 -33
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +12 -14
  9. package/dist/agents/sandbox/shared.js +18 -12
  10. package/dist/agents/sandbox/types.d.ts +4 -4
  11. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  12. package/dist/agents/sandbox/validate-skills.js +3 -1
  13. package/dist/agents/sandbox-catalog.d.ts +2 -2
  14. package/dist/agents/sandbox-catalog.js +3 -3
  15. package/dist/agents/system-prompt.d.ts +2 -2
  16. package/dist/app/chat-turn-workflow.d.ts +114 -0
  17. package/dist/app/chat-turn-workflow.js +307 -0
  18. package/dist/app/chat-turn.d.ts +85 -57
  19. package/dist/app/chat-turn.js +123 -100
  20. package/dist/app/data-profile-orientation.js +10 -8
  21. package/dist/app/data-profile-view.d.ts +4 -4
  22. package/dist/app/data-profile-view.js +9 -8
  23. package/dist/app/in-process-turn.d.ts +42 -0
  24. package/dist/app/in-process-turn.js +139 -0
  25. package/dist/app/message-assembly.d.ts +10 -4
  26. package/dist/app/message-assembly.js +13 -8
  27. package/dist/app/report-session-runtime.d.ts +4 -4
  28. package/dist/app/report-session-runtime.js +36 -21
  29. package/dist/app/spawn-report-session.d.ts +33 -28
  30. package/dist/app/spawn-report-session.js +25 -40
  31. package/dist/app/synthesize-run.d.ts +22 -16
  32. package/dist/app/synthesize-run.js +41 -35
  33. package/dist/app/work.d.ts +96 -0
  34. package/dist/app/work.js +147 -0
  35. package/dist/auth/local-auth-context.d.ts +1 -3
  36. package/dist/auth/local-auth-context.js +1 -3
  37. package/dist/auth/local-run-authorizer.d.ts +1 -1
  38. package/dist/auth/local-run-authorizer.js +5 -3
  39. package/dist/auth/types.d.ts +26 -26
  40. package/dist/billing/cached-resolver.d.ts +4 -4
  41. package/dist/billing/run-charge.d.ts +5 -8
  42. package/dist/billing/run-charge.js +2 -2
  43. package/dist/billing/usage-recorder.d.ts +9 -9
  44. package/dist/citations/aggregate.js +1 -1
  45. package/dist/citations/clients/arxiv.d.ts +2 -2
  46. package/dist/citations/clients/arxiv.js +12 -4
  47. package/dist/citations/clients/common.js +4 -2
  48. package/dist/citations/clients/crossref.d.ts +2 -2
  49. package/dist/citations/clients/crossref.js +37 -37
  50. package/dist/citations/clients/doi-registry.js +15 -16
  51. package/dist/citations/clients/pubmed.d.ts +2 -2
  52. package/dist/citations/clients/pubmed.js +20 -13
  53. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  54. package/dist/citations/clients/semantic-scholar.js +9 -9
  55. package/dist/citations/compare.js +2 -2
  56. package/dist/citations/match.d.ts +2 -2
  57. package/dist/citations/match.js +12 -7
  58. package/dist/citations/normalize.js +35 -26
  59. package/dist/citations/plan.js +6 -2
  60. package/dist/citations/resolve.d.ts +6 -6
  61. package/dist/citations/resolve.js +34 -25
  62. package/dist/citations/types.d.ts +77 -77
  63. package/dist/config/environment-stores.d.ts +6 -6
  64. package/dist/config/resource-limits.js +1 -3
  65. package/dist/contracts/analogy-report.d.ts +7 -7
  66. package/dist/contracts/analogy-report.js +2 -2
  67. package/dist/contracts/chat-events.d.ts +38 -24
  68. package/dist/contracts/chat-frame.d.ts +15 -5
  69. package/dist/contracts/chat-frame.js +64 -41
  70. package/dist/contracts/chat-parts.d.ts +130 -67
  71. package/dist/contracts/chat-parts.js +1 -0
  72. package/dist/contracts/content-url.js +16 -2
  73. package/dist/contracts/data-profile.d.ts +38 -38
  74. package/dist/contracts/index.d.ts +2 -2
  75. package/dist/contracts/index.js +1 -1
  76. package/dist/contracts/message.d.ts +6 -6
  77. package/dist/contracts/organ-system.d.ts +11 -11
  78. package/dist/contracts/part-registry.d.ts +5 -4
  79. package/dist/contracts/part-registry.js +5 -0
  80. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  81. package/dist/contracts/profile-vocabulary.js +10 -3
  82. package/dist/contracts/report-blocks.d.ts +329 -329
  83. package/dist/contracts/report-reference.d.ts +105 -81
  84. package/dist/contracts/report-reference.js +30 -13
  85. package/dist/contracts/schemas/chat-events.d.ts +30 -16
  86. package/dist/contracts/schemas/chat-events.js +15 -6
  87. package/dist/contracts/schemas/chat-parts.d.ts +175 -102
  88. package/dist/contracts/schemas/chat-parts.js +33 -7
  89. package/dist/contracts/severity.d.ts +1 -1
  90. package/dist/contracts/structure-source.d.ts +3 -3
  91. package/dist/contracts/structure-source.js +6 -2
  92. package/dist/contracts/subagent-activity.d.ts +2 -2
  93. package/dist/contracts/subagent-activity.js +5 -3
  94. package/dist/contracts/usage.d.ts +2 -2
  95. package/dist/data/safety-panel-schema.d.ts +25 -25
  96. package/dist/data/safety-panel-schema.js +13 -4
  97. package/dist/execution/artifact-metadata.d.ts +23 -15
  98. package/dist/execution/artifact-metadata.js +33 -10
  99. package/dist/execution/artifact-record.d.ts +2 -2
  100. package/dist/execution/artifact-registration.d.ts +5 -5
  101. package/dist/execution/artifact-registry.d.ts +8 -8
  102. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  103. package/dist/execution/dbos-run-launcher.js +58 -4
  104. package/dist/execution/dbos-workflow-purger.d.ts +5 -6
  105. package/dist/execution/dbos-workflow-purger.js +8 -7
  106. package/dist/execution/input-signature.d.ts +2 -2
  107. package/dist/execution/post-step-pipeline.d.ts +9 -9
  108. package/dist/execution/post-step-pipeline.js +1 -1
  109. package/dist/execution/post-step.js +2 -2
  110. package/dist/execution/reconcile-manifest.d.ts +4 -4
  111. package/dist/execution/reconcile-manifest.js +3 -2
  112. package/dist/execution/run-authorizer.d.ts +46 -37
  113. package/dist/execution/run-authorizer.js +8 -8
  114. package/dist/execution/run-canceler.d.ts +7 -7
  115. package/dist/execution/run-canceler.js +14 -7
  116. package/dist/execution/run-end-record.d.ts +2 -3
  117. package/dist/execution/run-event-parts.d.ts +0 -8
  118. package/dist/execution/run-event-parts.js +29 -24
  119. package/dist/execution/run-event-stream.d.ts +8 -8
  120. package/dist/execution/run-event-stream.js +3 -4
  121. package/dist/execution/run-launcher.d.ts +4 -4
  122. package/dist/execution/run-synthesis.d.ts +49 -48
  123. package/dist/execution/run-synthesis.js +96 -255
  124. package/dist/execution/staged-input.d.ts +2 -2
  125. package/dist/execution/step-summary.d.ts +6 -6
  126. package/dist/execution/step-summary.js +4 -8
  127. package/dist/execution/topo-sort.js +4 -3
  128. package/dist/execution/workflow-purger.d.ts +2 -2
  129. package/dist/index.d.ts +17 -20
  130. package/dist/index.js +25 -36
  131. package/dist/input-sanitization.js +9 -2
  132. package/dist/input-scan/clustering.d.ts +6 -6
  133. package/dist/input-scan/clustering.js +11 -5
  134. package/dist/input-scan/companions.js +3 -2
  135. package/dist/input-scan/detect-sets.d.ts +2 -2
  136. package/dist/input-scan/detect-sets.js +25 -21
  137. package/dist/input-scan/enrich.d.ts +6 -6
  138. package/dist/input-scan/enrich.js +29 -12
  139. package/dist/input-scan/formats.d.ts +2 -2
  140. package/dist/input-scan/formats.js +8 -2
  141. package/dist/input-scan/markers.d.ts +2 -2
  142. package/dist/input-scan/markers.js +14 -5
  143. package/dist/input-scan/menu.d.ts +10 -10
  144. package/dist/input-scan/menu.js +0 -0
  145. package/dist/input-scan/quarantine.d.ts +2 -2
  146. package/dist/input-scan/quarantine.js +23 -18
  147. package/dist/input-scan/readout-budget.d.ts +2 -2
  148. package/dist/input-scan/readout-budget.js +1 -1
  149. package/dist/input-scan/readout.d.ts +2 -2
  150. package/dist/input-scan/readout.js +47 -34
  151. package/dist/input-scan/scan.d.ts +2 -2
  152. package/dist/input-scan/scan.js +7 -5
  153. package/dist/input-scan/set-types.d.ts +28 -28
  154. package/dist/input-scan/shapes.d.ts +4 -4
  155. package/dist/input-scan/shapes.js +0 -0
  156. package/dist/input-scan/templates.d.ts +10 -10
  157. package/dist/input-scan/templates.js +30 -22
  158. package/dist/input-scan/tokens.d.ts +6 -4
  159. package/dist/input-scan/tokens.js +100 -38
  160. package/dist/input-scan/types.d.ts +22 -22
  161. package/dist/lib/async-utils.d.ts +3 -7
  162. package/dist/lib/async-utils.js +5 -9
  163. package/dist/lib/cache.js +1 -1
  164. package/dist/lib/chrome.d.ts +46 -6
  165. package/dist/lib/console-logger.js +2 -2
  166. package/dist/lib/db-result.d.ts +22 -6
  167. package/dist/lib/db-result.js +9 -13
  168. package/dist/lib/eyes.d.ts +4 -4
  169. package/dist/lib/eyes.js +1 -1
  170. package/dist/lib/fs-helpers.js +18 -6
  171. package/dist/lib/fs-result.d.ts +1 -0
  172. package/dist/lib/fs-result.js +5 -6
  173. package/dist/lib/hooks.d.ts +23 -7
  174. package/dist/lib/hooks.js +17 -3
  175. package/dist/lib/host-concurrency.js +3 -2
  176. package/dist/lib/logger.d.ts +2 -2
  177. package/dist/lib/logger.js +2 -1
  178. package/dist/lib/metrics.d.ts +1 -1
  179. package/dist/lib/null-proto.d.ts +6 -0
  180. package/dist/lib/null-proto.js +17 -0
  181. package/dist/lib/otel-spans.d.ts +1 -1
  182. package/dist/lib/otel-spans.js +9 -5
  183. package/dist/lib/otel.d.ts +4 -2
  184. package/dist/lib/otel.js +10 -2
  185. package/dist/lib/page-capture.d.ts +8 -8
  186. package/dist/lib/page-capture.js +9 -4
  187. package/dist/lib/parse-json.d.ts +5 -0
  188. package/dist/lib/parse-json.js +12 -0
  189. package/dist/lib/present.d.ts +12 -0
  190. package/dist/lib/present.js +39 -0
  191. package/dist/lib/rate-limit.d.ts +4 -4
  192. package/dist/lib/rate-limit.js +12 -13
  193. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  194. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  195. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  196. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  197. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  198. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  199. package/dist/lib/regulatory-corpus.d.ts +10 -10
  200. package/dist/lib/regulatory-corpus.js +3 -1
  201. package/dist/lib/result.d.ts +10 -11
  202. package/dist/lib/result.js +15 -13
  203. package/dist/lib/storage.d.ts +2 -2
  204. package/dist/lib/test/async-iterable.d.ts +9 -0
  205. package/dist/lib/test/async-iterable.js +28 -0
  206. package/dist/lib/test/request-url.d.ts +5 -0
  207. package/dist/lib/test/request-url.js +7 -0
  208. package/dist/lib/test/result-assert.d.ts +12 -0
  209. package/dist/lib/test/result-assert.js +17 -0
  210. package/dist/lib/test/text-shapes.d.ts +24 -0
  211. package/dist/lib/test/text-shapes.js +63 -0
  212. package/dist/lib/text.d.ts +22 -0
  213. package/dist/lib/text.js +68 -0
  214. package/dist/lib/thrown.d.ts +18 -0
  215. package/dist/lib/thrown.js +30 -0
  216. package/dist/lib/unknown-array.d.ts +6 -0
  217. package/dist/lib/unknown-array.js +8 -0
  218. package/dist/lib/unknown-containers.d.ts +14 -0
  219. package/dist/lib/unknown-containers.js +17 -0
  220. package/dist/lib/unknown-text.d.ts +8 -0
  221. package/dist/lib/unknown-text.js +28 -0
  222. package/dist/lib/zod-issue-shape.d.ts +1 -1
  223. package/dist/lib/zod-issue-shape.js +31 -31
  224. package/dist/lib/zod-issues.d.ts +3 -3
  225. package/dist/lib/zod-issues.js +30 -17
  226. package/dist/literature/sources/arxiv.d.ts +6 -6
  227. package/dist/literature/sources/arxiv.js +92 -35
  228. package/dist/literature/sources/http.d.ts +2 -2
  229. package/dist/literature/sources/http.js +16 -15
  230. package/dist/literature/sources/pubmed.d.ts +16 -16
  231. package/dist/literature/sources/pubmed.js +96 -61
  232. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  233. package/dist/literature/sources/semantic-scholar.js +22 -13
  234. package/dist/loop/accounting.d.ts +63 -0
  235. package/dist/loop/accounting.js +141 -0
  236. package/dist/loop/call-policy.d.ts +73 -0
  237. package/dist/loop/call-policy.js +109 -0
  238. package/dist/loop/chat-stream.d.ts +62 -0
  239. package/dist/loop/chat-stream.js +237 -0
  240. package/dist/loop/compaction.d.ts +9 -9
  241. package/dist/loop/compaction.js +1 -1
  242. package/dist/loop/metrics.d.ts +12 -15
  243. package/dist/loop/metrics.js +14 -26
  244. package/dist/loop/run-loop.d.ts +233 -0
  245. package/dist/loop/run-loop.js +770 -0
  246. package/dist/loop/sub-agent.d.ts +61 -0
  247. package/dist/loop/sub-agent.js +161 -0
  248. package/dist/loop/tool-adapter.d.ts +98 -0
  249. package/dist/loop/tool-adapter.js +364 -0
  250. package/dist/loop/tool-detail.d.ts +1 -1
  251. package/dist/loop/tool-detail.js +6 -5
  252. package/dist/loop/tool-outcome.d.ts +1 -1
  253. package/dist/loop/tool-output.d.ts +4 -4
  254. package/dist/loop/tool-output.js +2 -2
  255. package/dist/loop/turn-credentials.d.ts +34 -0
  256. package/dist/loop/turn-credentials.js +73 -0
  257. package/dist/loop/types.d.ts +29 -38
  258. package/dist/loop/types.js +2 -7
  259. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  260. package/dist/memory/ai-sdk-message-storage.js +13 -11
  261. package/dist/memory/card-builders.d.ts +14 -14
  262. package/dist/memory/card-builders.js +19 -15
  263. package/dist/memory/conversation-display-recorder.d.ts +22 -4
  264. package/dist/memory/conversation-display-recorder.js +43 -24
  265. package/dist/memory/conversation-display-replay.js +3 -2
  266. package/dist/memory/conversation-display-storage.d.ts +15 -7
  267. package/dist/memory/conversation-display-storage.js +141 -36
  268. package/dist/memory/conversation-view.d.ts +4 -4
  269. package/dist/memory/conversation-view.js +5 -4
  270. package/dist/memory/count-tokens.js +10 -8
  271. package/dist/memory/derive-thread-title.d.ts +0 -13
  272. package/dist/memory/derive-thread-title.js +2 -1
  273. package/dist/memory/message-backfill.d.ts +12 -5
  274. package/dist/memory/message-backfill.js +5 -3
  275. package/dist/memory/thread-history.d.ts +36 -21
  276. package/dist/memory/thread-history.js +78 -54
  277. package/dist/memory/thread-store.d.ts +26 -17
  278. package/dist/memory/thread-store.js +15 -9
  279. package/dist/memory/tool-call-integrity.d.ts +2 -2
  280. package/dist/memory/tool-call-integrity.js +4 -3
  281. package/dist/memory/working-memory.d.ts +16 -12
  282. package/dist/memory/working-memory.js +72 -61
  283. package/dist/prompts/briefing.d.ts +12 -12
  284. package/dist/prompts/briefing.js +1 -1
  285. package/dist/prompts/synthesis-agent.d.ts +1 -1
  286. package/dist/prompts/synthesis-agent.js +6 -14
  287. package/dist/provenance/collector.d.ts +6 -6
  288. package/dist/provenance/collector.js +15 -8
  289. package/dist/provenance/exec-frame.d.ts +2 -2
  290. package/dist/provenance/exec-frame.js +6 -1
  291. package/dist/provenance/seam.d.ts +1 -4
  292. package/dist/provenance/types.d.ts +6 -6
  293. package/dist/providers/ai-sdk.d.ts +113 -62
  294. package/dist/providers/ai-sdk.js +283 -518
  295. package/dist/providers/embedding.d.ts +2 -2
  296. package/dist/providers/embedding.js +1 -1
  297. package/dist/providers/errors.d.ts +22 -2
  298. package/dist/providers/errors.js +98 -50
  299. package/dist/providers/prompt-cache.d.ts +8 -8
  300. package/dist/providers/prompt-cache.js +13 -11
  301. package/dist/providers/reasoning.d.ts +2 -2
  302. package/dist/providers/reasoning.js +2 -2
  303. package/dist/providers/types.d.ts +55 -94
  304. package/dist/reference-data/catalog.d.ts +2 -15
  305. package/dist/reference-data/catalog.js +25 -8
  306. package/dist/reference-data/receipt.d.ts +2 -2
  307. package/dist/report-model/assert-rules.js +1 -1
  308. package/dist/report-model/authoring-grammar.d.ts +211 -233
  309. package/dist/report-model/block-walk.d.ts +10 -10
  310. package/dist/report-model/block-walk.js +2 -0
  311. package/dist/report-model/draft-finish.d.ts +8 -8
  312. package/dist/report-model/draft-finish.js +1 -1
  313. package/dist/report-model/draft-hash.js +8 -7
  314. package/dist/report-model/draft-operations.d.ts +22 -10
  315. package/dist/report-model/draft-operations.js +48 -30
  316. package/dist/report-model/draft-read.d.ts +19 -7
  317. package/dist/report-model/draft-read.js +16 -6
  318. package/dist/report-model/draft.d.ts +844 -2
  319. package/dist/report-model/draft.js +3 -1
  320. package/dist/report-model/fixture-resolver.js +39 -16
  321. package/dist/report-model/pin-snapshot.d.ts +2 -2
  322. package/dist/report-model/pin-snapshot.js +15 -15
  323. package/dist/report-model/production-resolver.d.ts +18 -18
  324. package/dist/report-model/production-resolver.js +50 -42
  325. package/dist/report-model/reference-resolver.d.ts +26 -10
  326. package/dist/report-model/reference-resolver.js +68 -5
  327. package/dist/report-model/reference-stamp.js +30 -38
  328. package/dist/report-model/structural-validation.js +12 -4
  329. package/dist/report-model/validate.d.ts +7 -7
  330. package/dist/report-model/validate.js +6 -6
  331. package/dist/report-render/assets.d.ts +2 -2
  332. package/dist/report-render/assets.js +27 -3
  333. package/dist/report-render/chart-export.d.ts +10 -2
  334. package/dist/report-render/chart-export.js +37 -11
  335. package/dist/report-render/chart-presets.d.ts +8 -8
  336. package/dist/report-render/chart-presets.js +3 -3
  337. package/dist/report-render/chart-renderers.d.ts +23 -16
  338. package/dist/report-render/chart-renderers.js +74 -53
  339. package/dist/report-render/chart-toolbox.d.ts +2 -2
  340. package/dist/report-render/chart-toolbox.js +7 -6
  341. package/dist/report-render/chart.d.ts +15 -16
  342. package/dist/report-render/chart.js +369 -252
  343. package/dist/report-render/design.d.ts +36 -297
  344. package/dist/report-render/design.js +0 -12
  345. package/dist/report-render/figures/common.d.ts +12 -12
  346. package/dist/report-render/figures/common.js +42 -31
  347. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  348. package/dist/report-render/figures/dendrogram.js +10 -10
  349. package/dist/report-render/figures/dense.js +15 -8
  350. package/dist/report-render/figures/dotplot.js +46 -33
  351. package/dist/report-render/figures/embedding.js +52 -43
  352. package/dist/report-render/figures/equal-units.d.ts +10 -10
  353. package/dist/report-render/figures/equal-units.js +27 -27
  354. package/dist/report-render/figures/forest.js +9 -7
  355. package/dist/report-render/figures/gsea.js +21 -11
  356. package/dist/report-render/figures/heatmap.js +13 -9
  357. package/dist/report-render/figures/index.d.ts +10 -10
  358. package/dist/report-render/figures/index.js +4 -2
  359. package/dist/report-render/figures/km.js +10 -9
  360. package/dist/report-render/figures/label-room.d.ts +12 -12
  361. package/dist/report-render/figures/label-room.js +7 -2
  362. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  363. package/dist/report-render/figures/locuszoom.js +59 -31
  364. package/dist/report-render/figures/lollipop.js +3 -2
  365. package/dist/report-render/figures/ma.js +8 -4
  366. package/dist/report-render/figures/manhattan.d.ts +1 -2
  367. package/dist/report-render/figures/manhattan.js +52 -34
  368. package/dist/report-render/figures/oncoprint.js +4 -5
  369. package/dist/report-render/figures/pca.js +25 -11
  370. package/dist/report-render/figures/qq.js +20 -9
  371. package/dist/report-render/figures/roc.js +1 -1
  372. package/dist/report-render/figures/sankey.d.ts +2 -2
  373. package/dist/report-render/figures/sankey.js +11 -10
  374. package/dist/report-render/figures/upset.d.ts +6 -6
  375. package/dist/report-render/figures/upset.js +7 -4
  376. package/dist/report-render/figures/volcano.js +12 -10
  377. package/dist/report-render/hybrid-svg.d.ts +4 -4
  378. package/dist/report-render/hybrid-svg.js +7 -5
  379. package/dist/report-render/number-format.d.ts +4 -4
  380. package/dist/report-render/number-format.js +62 -27
  381. package/dist/report-render/page.js +2 -1
  382. package/dist/report-render/provenance-data.d.ts +2 -2
  383. package/dist/report-render/references.d.ts +4 -4
  384. package/dist/report-render/render.d.ts +2 -2
  385. package/dist/report-render/render.js +10 -11
  386. package/dist/report-render/script-json.js +1 -1
  387. package/dist/report-render/table-data.d.ts +6 -6
  388. package/dist/report-render/test/options.d.ts +49 -0
  389. package/dist/report-render/test/options.js +143 -0
  390. package/dist/report-render/test/page-function.d.ts +19 -0
  391. package/dist/report-render/test/page-function.js +33 -0
  392. package/dist/report-render/types.d.ts +10 -10
  393. package/dist/report-render/value-bridge.d.ts +4 -4
  394. package/dist/report-render/value-bridge.js +27 -14
  395. package/dist/report-render/views/chart-view.d.ts +2 -2
  396. package/dist/report-render/views/chart-view.js +2 -2
  397. package/dist/report-render/views/lineage.d.ts +6 -6
  398. package/dist/report-render/views/lineage.js +2 -0
  399. package/dist/report-render/views/page-view.d.ts +2 -2
  400. package/dist/report-render/views/page-view.js +1 -0
  401. package/dist/report-render/views/prose.js +25 -8
  402. package/dist/report-render/views/references-view.js +12 -1
  403. package/dist/report-render/views/values.js +1 -1
  404. package/dist/runtime/assemble.d.ts +53 -26
  405. package/dist/runtime/assemble.js +103 -56
  406. package/dist/runtime/boot.d.ts +8 -7
  407. package/dist/runtime/boot.js +1 -1
  408. package/dist/runtime/connection-budget.d.ts +6 -6
  409. package/dist/runtime/connection-budget.js +1 -1
  410. package/dist/runtime/dbos.d.ts +29 -19
  411. package/dist/runtime/dbos.js +35 -20
  412. package/dist/runtime/result-serialization.js +18 -5
  413. package/dist/runtime/shutdown.d.ts +2 -2
  414. package/dist/sandbox/client.d.ts +7 -3
  415. package/dist/sandbox/cpu-files.d.ts +2 -2
  416. package/dist/sandbox/cpu-files.js +21 -4
  417. package/dist/sandbox/create-sandbox.d.ts +7 -8
  418. package/dist/sandbox/create-sandbox.js +6 -12
  419. package/dist/sandbox/docker-client.d.ts +48 -3
  420. package/dist/sandbox/docker-client.js +10 -6
  421. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  422. package/dist/sandbox/exec-outcome.d.ts +2 -2
  423. package/dist/sandbox/exec-outcome.js +1 -1
  424. package/dist/sandbox/exec.d.ts +10 -6
  425. package/dist/sandbox/exec.js +27 -12
  426. package/dist/sandbox/execution-id.js +14 -6
  427. package/dist/sandbox/farm.d.ts +2 -2
  428. package/dist/sandbox/farm.js +22 -27
  429. package/dist/sandbox/identity.d.ts +7 -0
  430. package/dist/sandbox/identity.js +14 -3
  431. package/dist/sandbox/image-packages.js +15 -27
  432. package/dist/sandbox/k8s-client.d.ts +35 -8
  433. package/dist/sandbox/k8s-client.js +6 -5
  434. package/dist/sandbox/labels.js +1 -0
  435. package/dist/sandbox/liveness.js +3 -1
  436. package/dist/sandbox/mount-plan.d.ts +10 -10
  437. package/dist/sandbox/mount-plan.js +13 -14
  438. package/dist/sandbox/notification-sweep.d.ts +4 -4
  439. package/dist/sandbox/notification-sweep.js +4 -7
  440. package/dist/sandbox/package-identity.d.ts +6 -13
  441. package/dist/sandbox/package-identity.js +46 -28
  442. package/dist/sandbox/reaper.d.ts +10 -10
  443. package/dist/sandbox/reaper.js +4 -6
  444. package/dist/sandbox/sandbox-error.d.ts +2 -9
  445. package/dist/sandbox/sandbox-error.js +21 -8
  446. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  447. package/dist/sandbox/sandbox-step-translate.js +22 -8
  448. package/dist/sandbox/step-sandbox.d.ts +47 -0
  449. package/dist/sandbox/step-sandbox.js +53 -0
  450. package/dist/sandbox/types.d.ts +18 -19
  451. package/dist/sandbox/types.js +1 -1
  452. package/dist/schemas/artifact-manifest.d.ts +4 -4
  453. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  454. package/dist/schemas/file-metadata.js +2 -4
  455. package/dist/schemas/plan-schemas.d.ts +31 -31
  456. package/dist/schemas/run-synthesis.d.ts +95 -26
  457. package/dist/schemas/run-synthesis.js +3 -1
  458. package/dist/schemas/validate-plan.d.ts +4 -4
  459. package/dist/schemas/validate-plan.js +17 -5
  460. package/dist/schemas/workflow-state.d.ts +19 -19
  461. package/dist/schemas/workflow-state.js +2 -2
  462. package/dist/state/active-turns.d.ts +36 -0
  463. package/dist/state/active-turns.js +67 -0
  464. package/dist/state/analyses-metrics.d.ts +8 -8
  465. package/dist/state/analyses-metrics.js +4 -4
  466. package/dist/state/analyses.d.ts +0 -14
  467. package/dist/state/analyses.js +0 -32
  468. package/dist/state/artifacts.d.ts +32 -19
  469. package/dist/state/artifacts.js +28 -5
  470. package/dist/state/data-profile.d.ts +2 -2
  471. package/dist/state/db.d.ts +12 -2
  472. package/dist/state/db.js +5 -0
  473. package/dist/state/edit-intents.d.ts +4 -0
  474. package/dist/state/edit-intents.js +71 -0
  475. package/dist/state/index.d.ts +4 -4
  476. package/dist/state/index.js +2 -2
  477. package/dist/state/init.d.ts +2 -1
  478. package/dist/state/init.js +5 -2
  479. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  480. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  482. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  484. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  486. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  488. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  490. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  492. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  494. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  496. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  498. package/dist/state/migrations/index.js +18 -0
  499. package/dist/state/paused-work.d.ts +52 -0
  500. package/dist/state/paused-work.js +105 -0
  501. package/dist/state/plans.d.ts +27 -8
  502. package/dist/state/plans.js +14 -11
  503. package/dist/state/purge-analysis.d.ts +6 -6
  504. package/dist/state/purge-analysis.js +10 -2
  505. package/dist/state/report-session-state.d.ts +43 -18
  506. package/dist/state/report-session-state.js +43 -4
  507. package/dist/state/report-versions.d.ts +16 -11
  508. package/dist/state/report-versions.js +5 -3
  509. package/dist/state/runs.d.ts +30 -19
  510. package/dist/state/runs.js +43 -51
  511. package/dist/state/schema.d.ts +18 -21
  512. package/dist/state/schema.js +4 -5
  513. package/dist/state/snapshot-parse.d.ts +2 -2
  514. package/dist/state/snapshot-parse.js +14 -8
  515. package/dist/state/step-executions.d.ts +20 -8
  516. package/dist/state/step-executions.js +6 -4
  517. package/dist/state/tool-outputs.d.ts +2 -2
  518. package/dist/state/tool-outputs.js +2 -1
  519. package/dist/state/vector-store.d.ts +16 -16
  520. package/dist/state/vector-store.js +11 -7
  521. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  522. package/dist/tasks/data-profile-absorb.js +21 -16
  523. package/dist/tasks/data-profile-activity.d.ts +5 -5
  524. package/dist/tasks/data-profile-activity.js +5 -5
  525. package/dist/tasks/data-profile-index.d.ts +4 -4
  526. package/dist/tasks/data-profile-index.js +32 -17
  527. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  528. package/dist/tasks/data-profile-resolve.js +88 -62
  529. package/dist/tasks/data-profile.d.ts +40 -31
  530. package/dist/tasks/data-profile.js +138 -95
  531. package/dist/tasks/extract-values.d.ts +26 -79
  532. package/dist/tasks/extract-values.js +48 -108
  533. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  534. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  535. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  536. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  537. package/dist/testing.d.ts +60 -0
  538. package/dist/testing.js +96 -0
  539. package/dist/tools/ad-hoc-router.d.ts +9 -9
  540. package/dist/tools/ad-hoc-router.js +65 -52
  541. package/dist/tools/analysis-invocation.d.ts +7 -0
  542. package/dist/tools/analysis-invocation.js +29 -5
  543. package/dist/tools/approval/contract.d.ts +8 -52
  544. package/dist/tools/approval/contract.js +7 -36
  545. package/dist/tools/approval/gateway.d.ts +27 -28
  546. package/dist/tools/approval/gateway.js +33 -130
  547. package/dist/tools/approval/queries.d.ts +6 -11
  548. package/dist/tools/approval/queries.js +43 -29
  549. package/dist/tools/approval/uuidv7.js +2 -2
  550. package/dist/tools/bio/chembl.d.ts +3 -3
  551. package/dist/tools/bio/chembl.js +10 -0
  552. package/dist/tools/bio/comptox.d.ts +25 -8
  553. package/dist/tools/bio/comptox.js +4 -2
  554. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  555. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  556. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  557. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  558. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  559. package/dist/tools/bio/keys.d.ts +2 -2
  560. package/dist/tools/bio/keys.js +3 -3
  561. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  562. package/dist/tools/bio/lookup-annotation.js +3 -0
  563. package/dist/tools/bio/opentargets.d.ts +1 -1
  564. package/dist/tools/bio/opentargets.js +6 -0
  565. package/dist/tools/bio/pubchem.d.ts +2 -2
  566. package/dist/tools/bio/pubchem.js +6 -0
  567. package/dist/tools/bio/pubmed.d.ts +26 -16
  568. package/dist/tools/bio/pubmed.js +9 -3
  569. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  570. package/dist/tools/bio/search-clinical-trials.js +5 -1
  571. package/dist/tools/bio/search-faers.d.ts +2 -2
  572. package/dist/tools/bio/search-faers.js +1 -1
  573. package/dist/tools/bio/search-gene.d.ts +2 -2
  574. package/dist/tools/bio/search-gene.js +1 -0
  575. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  576. package/dist/tools/bio/search-geo-datasets.js +5 -5
  577. package/dist/tools/bio/search-interactions.d.ts +1 -1
  578. package/dist/tools/bio/search-patents.d.ts +28 -22
  579. package/dist/tools/bio/search-patents.js +20 -17
  580. package/dist/tools/bio/search-protein.d.ts +2 -2
  581. package/dist/tools/bio/search-protein.js +1 -1
  582. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  583. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  584. package/dist/tools/bio/target-safety.d.ts +8 -8
  585. package/dist/tools/bio/target-safety.js +11 -6
  586. package/dist/tools/capability-data.d.ts +9 -5
  587. package/dist/tools/capability-data.js +2 -1
  588. package/dist/tools/define-tool.d.ts +55 -46
  589. package/dist/tools/define-tool.js +39 -27
  590. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  591. package/dist/tools/display/normalize-echart-spec.js +51 -27
  592. package/dist/tools/display/show-user.d.ts +2 -2
  593. package/dist/tools/display/show-user.js +1 -1
  594. package/dist/tools/execute-analysis.d.ts +19 -10
  595. package/dist/tools/execute-analysis.js +83 -62
  596. package/dist/tools/knowledge/check.d.ts +166 -44
  597. package/dist/tools/knowledge/check.js +5 -3
  598. package/dist/tools/knowledge/client.d.ts +31 -62
  599. package/dist/tools/knowledge/client.js +44 -27
  600. package/dist/tools/knowledge/environment.d.ts +6 -6
  601. package/dist/tools/knowledge/environment.js +18 -7
  602. package/dist/tools/knowledge/index.d.ts +2 -2
  603. package/dist/tools/knowledge/index.js +9 -9
  604. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  605. package/dist/tools/knowledge/local-slots.js +11 -4
  606. package/dist/tools/knowledge/pin.d.ts +2 -2
  607. package/dist/tools/knowledge/recommend.d.ts +20 -45
  608. package/dist/tools/knowledge/recommend.js +27 -19
  609. package/dist/tools/knowledge/situation.d.ts +40 -40
  610. package/dist/tools/knowledge/situation.js +2 -9
  611. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  612. package/dist/tools/knowledge/skeleton.js +10 -11
  613. package/dist/tools/knowledge/template.d.ts +20 -18
  614. package/dist/tools/knowledge/template.js +38 -32
  615. package/dist/tools/lib/alphafold-client.js +2 -1
  616. package/dist/tools/lib/amass-client.d.ts +28 -28
  617. package/dist/tools/lib/amass-client.js +20 -10
  618. package/dist/tools/lib/api-utils.d.ts +13 -3
  619. package/dist/tools/lib/api-utils.js +17 -3
  620. package/dist/tools/lib/bgee-client.d.ts +6 -6
  621. package/dist/tools/lib/bgee-client.js +16 -10
  622. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  623. package/dist/tools/lib/cbioportal-client.js +9 -8
  624. package/dist/tools/lib/chembl-client.d.ts +14 -14
  625. package/dist/tools/lib/chembl-client.js +11 -4
  626. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  628. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  629. package/dist/tools/lib/clinical-trials-client.js +10 -10
  630. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  631. package/dist/tools/lib/clinvar-client.js +6 -6
  632. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  633. package/dist/tools/lib/ctx-ops.js +13 -10
  634. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  635. package/dist/tools/lib/dgidb-client.js +10 -12
  636. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  637. package/dist/tools/lib/ema-client.d.ts +2 -2
  638. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  639. package/dist/tools/lib/ensembl-client.js +5 -4
  640. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  641. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  642. package/dist/tools/lib/html-text.d.ts +6 -0
  643. package/dist/tools/lib/html-text.js +9 -0
  644. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  645. package/dist/tools/lib/identifier-resolver.js +7 -3
  646. package/dist/tools/lib/impc-client.d.ts +8 -8
  647. package/dist/tools/lib/impc-client.js +46 -35
  648. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  649. package/dist/tools/lib/iuphar-client.js +7 -16
  650. package/dist/tools/lib/monarch-client.d.ts +4 -4
  651. package/dist/tools/lib/openfda-client.d.ts +22 -22
  652. package/dist/tools/lib/openfda-client.js +23 -22
  653. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  654. package/dist/tools/lib/pathway-client.d.ts +4 -4
  655. package/dist/tools/lib/pathway-client.js +15 -19
  656. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  657. package/dist/tools/lib/pharmgkb-client.js +1 -1
  658. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  659. package/dist/tools/lib/protein-family-modality.js +0 -2
  660. package/dist/tools/lib/protein-family-normalize.js +7 -0
  661. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  662. package/dist/tools/lib/pubchem-client.js +1 -0
  663. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  664. package/dist/tools/lib/pubchem-ops.js +8 -0
  665. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  666. package/dist/tools/lib/pubmed-client.js +1 -1
  667. package/dist/tools/lib/string-client.d.ts +6 -6
  668. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  669. package/dist/tools/lib/uniprot-client.js +5 -1
  670. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  671. package/dist/tools/memory/update-working-memory.js +21 -3
  672. package/dist/tools/read-tool-output.js +8 -2
  673. package/dist/tools/registry.d.ts +2 -2
  674. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  675. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  676. package/dist/tools/report-session/derive-table.d.ts +19 -59
  677. package/dist/tools/report-session/derive-table.js +120 -122
  678. package/dist/tools/report-session/examine-page.d.ts +6 -6
  679. package/dist/tools/report-session/examine-page.js +14 -12
  680. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  681. package/dist/tools/report-session/list-artifacts.js +5 -5
  682. package/dist/tools/report-session/page-faults.d.ts +6 -6
  683. package/dist/tools/report-session/page-faults.js +3 -1
  684. package/dist/tools/report-session/preview-report.d.ts +4 -3
  685. package/dist/tools/report-session/preview-report.js +26 -7
  686. package/dist/tools/report-session/record-version.d.ts +9 -4
  687. package/dist/tools/report-session/record-version.js +16 -9
  688. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  689. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  690. package/dist/tools/research/generate-analogy-report.js +80 -76
  691. package/dist/tools/research/generate-plan.d.ts +16 -16
  692. package/dist/tools/research/generate-plan.js +410 -374
  693. package/dist/tools/research/guarded-address.js +3 -2
  694. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  695. package/dist/tools/research/inspect-data-profile.js +26 -25
  696. package/dist/tools/research/inspect-run.d.ts +54 -27
  697. package/dist/tools/research/inspect-run.js +50 -40
  698. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  699. package/dist/tools/research/literature-reviewer.js +29 -28
  700. package/dist/tools/research/search-arxiv.d.ts +1 -1
  701. package/dist/tools/research/search-arxiv.js +1 -1
  702. package/dist/tools/research/search-github-repos.d.ts +10 -7
  703. package/dist/tools/research/search-github-repos.js +25 -22
  704. package/dist/tools/research/search-semantic-scholar.js +1 -1
  705. package/dist/tools/research/searxng-engine.d.ts +2 -2
  706. package/dist/tools/research/searxng-engine.js +6 -4
  707. package/dist/tools/research/web-fetch.d.ts +24 -21
  708. package/dist/tools/research/web-fetch.js +65 -74
  709. package/dist/tools/research/web-search.d.ts +26 -17
  710. package/dist/tools/research/web-search.js +26 -21
  711. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  712. package/dist/tools/sandbox/link-packages.js +11 -8
  713. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  714. package/dist/tools/sandbox/list-available-packages.js +31 -25
  715. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  716. package/dist/tools/sandbox/list-available-refs.js +61 -36
  717. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  718. package/dist/tools/sandbox/report-blocker.js +23 -73
  719. package/dist/tools/sandbox/skills.d.ts +16 -12
  720. package/dist/tools/sandbox/skills.js +16 -12
  721. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  722. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  723. package/dist/tools/start-report-session.d.ts +13 -5
  724. package/dist/tools/start-report-session.js +35 -8
  725. package/dist/tools/terminal-text.d.ts +5 -2
  726. package/dist/tools/terminal-text.js +35 -3
  727. package/dist/tools/workspace/decision-record.d.ts +4 -4
  728. package/dist/tools/workspace/decision-record.js +23 -13
  729. package/dist/tools/workspace/edit-file.d.ts +59 -20
  730. package/dist/tools/workspace/edit-file.js +81 -16
  731. package/dist/tools/workspace/execute-command.d.ts +15 -13
  732. package/dist/tools/workspace/execute-command.js +11 -9
  733. package/dist/tools/workspace/file-stat.d.ts +6 -3
  734. package/dist/tools/workspace/grep.d.ts +10 -7
  735. package/dist/tools/workspace/grep.js +9 -3
  736. package/dist/tools/workspace/list-files.d.ts +6 -3
  737. package/dist/tools/workspace/mutator.d.ts +28 -15
  738. package/dist/tools/workspace/mutator.js +107 -53
  739. package/dist/tools/workspace/read-file.d.ts +8 -5
  740. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  741. package/dist/tools/workspace/result-bounds.js +4 -2
  742. package/dist/tools/workspace/run-exec.d.ts +2 -2
  743. package/dist/tools/workspace/run-exec.js +3 -3
  744. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  745. package/dist/tools/workspace/scan-inputs.js +17 -5
  746. package/dist/tools/workspace/show-file.d.ts +1 -1
  747. package/dist/tools/workspace/show-file.js +2 -1
  748. package/dist/tools/workspace/show-plan.d.ts +8 -5
  749. package/dist/tools/workspace/show-plan.js +9 -8
  750. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  751. package/dist/tools/workspace/workspace-search.js +27 -14
  752. package/dist/tools/workspace/write-file.d.ts +9 -7
  753. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  754. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  755. package/dist/workflows/execute-analysis.d.ts +46 -62
  756. package/dist/workflows/execute-analysis.js +137 -219
  757. package/dist/workflows/pause.d.ts +71 -0
  758. package/dist/workflows/pause.js +173 -0
  759. package/dist/workflows/sandbox-step.d.ts +38 -61
  760. package/dist/workflows/sandbox-step.js +99 -106
  761. package/dist/workflows/test/sql-writes.d.ts +21 -0
  762. package/dist/workflows/test/sql-writes.js +36 -0
  763. package/dist/workspace/filesystem.d.ts +6 -6
  764. package/dist/workspace/filesystem.js +10 -8
  765. package/dist/workspace/paths.d.ts +1 -1
  766. package/dist/workspace/paths.js +15 -4
  767. package/dist/workspace/search-config.d.ts +2 -2
  768. package/dist/workspace/search-config.js +1 -1
  769. package/package.json +21 -22
  770. package/dist/loop/call-guard.d.ts +0 -50
  771. package/dist/loop/call-guard.js +0 -90
  772. package/dist/loop/continue-agent.d.ts +0 -40
  773. package/dist/loop/continue-agent.js +0 -38
  774. package/dist/loop/genai-spans.d.ts +0 -47
  775. package/dist/loop/genai-spans.js +0 -134
  776. package/dist/loop/run-agent.d.ts +0 -245
  777. package/dist/loop/run-agent.js +0 -1124
  778. package/dist/loop/run-step.d.ts +0 -29
  779. package/dist/loop/run-step.js +0 -34
  780. package/dist/loop/run-to-terminal.d.ts +0 -66
  781. package/dist/loop/run-to-terminal.js +0 -93
  782. package/dist/loop/tool-mask.d.ts +0 -23
  783. package/dist/loop/tool-mask.js +0 -46
  784. package/dist/providers/streaming-chat.d.ts +0 -32
  785. package/dist/providers/streaming-chat.js +0 -91
  786. package/dist/tasks/derive-table-exec.d.ts +0 -54
  787. package/dist/tasks/derive-table-exec.js +0 -86
  788. package/dist/workflows/suspension.d.ts +0 -32
  789. package/dist/workflows/suspension.js +0 -38
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @inflexa-ai/harness
2
2
 
3
- `@inflexa-ai/harness` is the host-agnostic agent harness — the `runAgent` loop, durable workflows, the sandbox submit and poll protocol, and the provider interfaces. It is a **library, not a server**: it ships everything that does not depend on a particular host, and an embedder supplies the composition root, transport, and any non-local seam realizations.
3
+ `@inflexa-ai/harness` is the host-agnostic agent harness — the agent loop on the AI SDK, durable workflows, the sandbox submit and poll protocol, and the provider interfaces. It is a **library, not a server**: it ships everything that does not depend on a particular host, and an embedder supplies the composition root, transport, and any non-local seam realizations.
4
4
 
5
5
  ## Run locally
6
6
 
@@ -42,11 +42,14 @@ import {
42
42
  createNoopLogger, // Logger — discards (the fallback when none is wired)
43
43
  defaultErrorFields, // the shipped `Logger.errorFields` mapping
44
44
  defineTool,
45
- runAgent,
46
45
  makeLocalAuth,
47
46
  } from "@inflexa-ai/harness";
48
47
  ```
49
48
 
49
+ No embedder drives the agent loop. A host opens a chat turn with the `open` of `CoreRuntime.chatTurns`, and it reads the frames of the turn with `read`. The harness runs the turn as a durable workflow, and it makes the model, the usage recorder, and the approval binding of the turn from its runtime. A test of an embedder gets a scripted model (`scriptedModel`) and the chat turns of a runtime with no workflow engine (`inProcessChatTurns`) from the test kit `@inflexa-ai/harness/testing`.
50
+
51
+ A failure that a person or time can repair pauses a turn, a run, or a data profile, and the work does not fail. Examples are a billing refusal of the host, a provider outage, and a missing credential. A host lists the active work of an analysis with `CoreRuntime.work`. It stops a work in each state, and it resumes or holds paused work.
52
+
50
53
  `assembleCoreRuntime` is the single composition point: it registers the durable workflows and builds the conversation agent over them. The harness declares **four capability seams** an embedder wires — `RunAuthorizer`, `ArtifactRegistry`, `RunCharge`, `UsageRecorder` — plus the **shared `RunLauncher`** (one host-neutral realization, `createDbosRunLauncher`). Local, dependency-free realizations of all four ship from the barrel; an embedder constructs them (or its own) and passes them in. The harness only ever sees the interface. Two optional hooks go into the component that uses their values: `resolveRequestHeaders` into each provider, and `resolveSandboxLabels` into the sandbox client config.
51
54
 
52
55
  ## Logging
@@ -96,7 +99,7 @@ function pinoAsHarnessLogger(p: pino.Logger, names: readonly string[] = []): Log
96
99
 
97
100
  ## How it executes
98
101
 
99
- Chat is a plain in-process turn. A turn is `runChatTurn`, and the harness stores the opening, each round, and the outcome of the turn. The harness ships no HTTP layer, thus the host owns the route. Compute-heavy work runs as **durable workflows** — `executeAnalysis` starts a child workflow per plan step once its dependencies have completed, and each step drives a sandbox agent inside a container. The same `runAgent` primitive runs in both modes; durability and the event sink are injected, so the loop body is identical.
102
+ A chat turn is a **durable workflow**. The harness stores the opening, each round, and the outcome of the turn, and a recovery continues a turn from its checkpoints. The harness ships no HTTP layer, thus the host owns the route. Compute-heavy work runs as durable workflows too — `executeAnalysis` starts a child workflow per plan step once its dependencies have completed, and each step drives a sandbox agent inside a container. The same `runLoop` primitive runs in each workflow, and each model call and each tool call is a durable step.
100
103
 
101
104
  The sandbox protocol is submit-then-poll, which lets a long run survive a host restart. Each exec runs inside one durable step: the host submits the command with `POST /exec`, and then it polls `GET /exec/{execId}?since={cursor}` until the result. A recovered step submits the same exec id again, and the sandbox gives the existing record, thus the command does not run again. The sandbox initiates nothing and has no egress, and confinement keeps each other peer away from its exec port. Refer to the [`harness-sandbox-exec`](./openspec/specs/harness-sandbox-exec/) spec.
102
105
 
@@ -5,7 +5,7 @@
5
5
  * (see the harness-durable-runtime spec): it receives the shared deps once — `ChatProvider`, `Pool`,
6
6
  * `EmbeddingProvider`, the model id — and hands each tool exactly what it
7
7
  * needs. Pure leaf tools take nothing; dependency-bearing tools get their
8
- * factory inputs. By the time `runAgent` sees a tool it is fully dep-bound;
8
+ * factory inputs. By the time `runLoop` sees a tool it is fully dep-bound;
9
9
  * the wiring lines below *are* the dependency graph, made visible.
10
10
  *
11
11
  * The system prompt is static composition — SOUL kernel + SOUL conversational
@@ -31,6 +31,7 @@ import type { ChromeConfig } from "../lib/chrome.js";
31
31
  import type { AcquireEyes } from "../lib/eyes.js";
32
32
  import type { ToolOutputStore } from "../loop/tool-output.js";
33
33
  import type { AgentDefinition } from "../loop/types.js";
34
+ import type { SubAgentRegistrar } from "../loop/sub-agent.js";
34
35
  import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
35
36
  import type { Tool } from "../tools/define-tool.js";
36
37
  import type { ExtendAnalysisFarm } from "../sandbox/types.js";
@@ -54,7 +55,7 @@ export declare const CONVERSATION_AGENT_ID: "conversation-agent";
54
55
  * what is importable that a sandbox agent has — read host-side, so answering
55
56
  * "does this environment have X?" costs a lookup rather than a container.
56
57
  */
57
- export interface ConversationAgentDeps extends EnvironmentStorePaths {
58
+ export type ConversationAgentDeps = EnvironmentStorePaths & {
58
59
  /** Operational logging seam; omitted falls back to no-op. */
59
60
  readonly logger?: Logger;
60
61
  /**
@@ -71,6 +72,11 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
71
72
  readonly citationResolver: CitationResolver;
72
73
  /** The LLM seam every loop-driving tool runs its sub-agent on. */
73
74
  readonly provider: ChatProvider;
75
+ /**
76
+ * Makes the function of each sub-agent of the agent: the planner and the analogy reporter. The assembly gives
77
+ * `registerSubAgent`, thus a sub-agent of a turn workflow runs as a child workflow. A test gives `inProcessSubAgent`.
78
+ */
79
+ readonly registerSubAgent: SubAgentRegistrar;
74
80
  /** Postgres pool — plan persistence, run inspection, workspace index, working memory. */
75
81
  readonly pool: Pool;
76
82
  /** Embedding seam — workspace semantic search. */
@@ -157,6 +163,6 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
157
163
  * it, the link pass returns at once.
158
164
  */
159
165
  readonly extendAnalysisFarm?: ExtendAnalysisFarm;
160
- }
166
+ };
161
167
  /** Build the conversation `AgentDefinition` with every tool fully dep-bound. */
162
168
  export declare function createConversationAgent(deps: ConversationAgentDeps): AgentDefinition;
@@ -5,7 +5,7 @@
5
5
  * (see the harness-durable-runtime spec): it receives the shared deps once — `ChatProvider`, `Pool`,
6
6
  * `EmbeddingProvider`, the model id — and hands each tool exactly what it
7
7
  * needs. Pure leaf tools take nothing; dependency-bearing tools get their
8
- * factory inputs. By the time `runAgent` sees a tool it is fully dep-bound;
8
+ * factory inputs. By the time `runLoop` sees a tool it is fully dep-bound;
9
9
  * the wiring lines below *are* the dependency graph, made visible.
10
10
  *
11
11
  * The system prompt is static composition — SOUL kernel + SOUL conversational
@@ -25,6 +25,7 @@
25
25
  */
26
26
  import { createReadToolOutputTool } from "../tools/read-tool-output.js";
27
27
  import { createWorkingMemory } from "../memory/working-memory.js";
28
+ import { createEditIntentStore } from "../state/edit-intents.js";
28
29
  import { conversationPrompt } from "../prompts/conversation.js";
29
30
  import { composeSystemPrompt } from "./system-prompt.js";
30
31
  // Bio-lookup leaf tools (pure — no dependencies).
@@ -54,15 +55,15 @@ export function createConversationAgent(deps) {
54
55
  const { provider, pool, embedding, workspaceFs, model, utilityProvider, utilityModel, executeAnalysisWorkflow, runAuthorizer, runLauncher, bioKeys, chrome, resourcePolicy, hostTools, refStorePath, farmLockFile, imagePackagesFile, readPoolInventory, usageRecorder, toolOutputStore, citationResolver, webSearch, } = deps;
55
56
  const workingMemory = createWorkingMemory(pool);
56
57
  const ncbi = createNcbiTools(bioKeys);
57
- const chemDb = createChemDbTools(bioKeys, { ...(deps.logger ? { logger: deps.logger } : {}) });
58
+ const chemDb = createChemDbTools(bioKeys, { logger: deps.logger });
58
59
  const amass = createAmassTools(bioKeys);
59
60
  // The write path of this agent: coordinates resolve per call from the
60
61
  // session's analysis scope, the write prefix is the analysis root, and
61
62
  // every successful write emits a `write-file` provenance session event.
62
63
  const mutator = createSessionWorkspaceMutator({
63
64
  resolveWorkspaceRoot: deps.resolveWorkspaceRoot,
64
- ...(deps.provenance ? { provenance: deps.provenance } : {}),
65
- ...(deps.logger ? { logger: deps.logger } : {}),
65
+ provenance: deps.provenance,
66
+ logger: deps.logger,
66
67
  });
67
68
  const tools = [
68
69
  // Identifier resolution — the ENSG most other bio tools key off, and the
@@ -82,13 +83,13 @@ export function createConversationAgent(deps) {
82
83
  createResolveCitationTool(citationResolver),
83
84
  // Literature outside PubMed. A question about a method, a model or a
84
85
  // preprint has no MEDLINE record, thus PubMed alone cannot answer it.
85
- createSearchSemanticScholarTool({ ...(bioKeys.semanticScholar === undefined ? {} : { apiKey: bioKeys.semanticScholar }) }),
86
+ createSearchSemanticScholarTool({ apiKey: bioKeys.semanticScholar }),
86
87
  searchArxivTool,
87
88
  // The web step of research — the injected web-search engine (the CLI runs
88
89
  // SearXNG and binds its realization), then the guarded page fetch that
89
90
  // reads what the search found.
90
91
  ...(webSearch ? [createWebSearchTool({ engine: webSearch })] : []),
91
- createWebFetchTool({ ...(toolOutputStore ? { toolOutputStore } : {}) }),
92
+ createWebFetchTool({ toolOutputStore }),
92
93
  // ChEMBL (compounds / drug / mechanism / bioactivity / targets behind one action).
93
94
  chemblTool,
94
95
  // PubChem (compound / crossrefs / assays behind one action).
@@ -116,21 +117,21 @@ export function createConversationAgent(deps) {
116
117
  // and a host that does asks the user to approve the download. Deciding that
117
118
  // blind is how a user gets asked to download something already installed, or
118
119
  // told nothing is missing when it is; this is the only tool that can tell.
119
- createListAvailableRefsTool({ ...(refStorePath ? { refStorePath } : {}) }),
120
+ createListAvailableRefsTool({ refStorePath }),
120
121
  // Which datasets a specialist capability cannot run without. `list_available_refs` answers
121
122
  // what the store HOLDS; this answers what a capability WANTS, which no prompt may name and
122
123
  // only a skill otherwise records — and a skill is read by a step agent, not here. Without
123
124
  // it this agent meets an absent source as a dead end and designs around it.
124
- createInspectCapabilityDataTool({ ...(refStorePath ? { refStorePath } : {}) }),
125
+ createInspectCapabilityDataTool({ refStorePath }),
125
126
  // What the STORE holds, pool-scope where the embedder binds the reader:
126
127
  // the ask flow of this agent marks the packages the pool does not hold,
127
128
  // and the farm of a new analysis is empty — a farm view here would read
128
129
  // every pool package as absent. The farm-lock fallback keeps a host
129
130
  // with no pool reader on the old answer.
130
131
  createListAvailablePackagesTool({
131
- ...(farmLockFile ? { farmLockFile } : {}),
132
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
133
- ...(readPoolInventory ? { readPoolInventory } : {}),
132
+ farmLockFile,
133
+ imagePackagesFile,
134
+ readPoolInventory,
134
135
  }),
135
136
  // Execution.
136
137
  createInspectRunTool(pool),
@@ -141,15 +142,15 @@ export function createConversationAgent(deps) {
141
142
  pool,
142
143
  resourcePolicy,
143
144
  usageRecorder,
144
- ...(toolOutputStore ? { toolOutputStore } : {}),
145
+ toolOutputStore,
145
146
  bioKeys,
146
- ...(deps.knowledge ? { knowledge: deps.knowledge } : {}),
147
- ...(refStorePath ? { refStorePath } : {}),
148
- ...(farmLockFile ? { farmLockFile } : {}),
149
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
150
- ...(readPoolInventory ? { readPoolInventory } : {}),
151
- ...(deps.logger ? { logger: deps.logger } : {}),
152
- }),
147
+ knowledge: deps.knowledge,
148
+ refStorePath,
149
+ farmLockFile,
150
+ imagePackagesFile,
151
+ readPoolInventory,
152
+ logger: deps.logger,
153
+ }, deps.registerSubAgent),
153
154
  createExecuteAnalysisTool({
154
155
  pool,
155
156
  executeAnalysisWorkflow,
@@ -158,16 +159,16 @@ export function createConversationAgent(deps) {
158
159
  resourcePolicy,
159
160
  utilityProvider,
160
161
  utilityModel,
161
- ...(farmLockFile ? { farmLockFile } : {}),
162
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
163
- ...(readPoolInventory ? { readPoolInventory } : {}),
162
+ farmLockFile,
163
+ imagePackagesFile,
164
+ readPoolInventory,
164
165
  // The pre-launch pass resolves the declared reference data of a capability against the
165
166
  // store. Without this path it would read the CONTAINER path, which no host holds, and
166
167
  // refuse every launch of a plan that declares one.
167
- ...(refStorePath ? { refStorePath } : {}),
168
- ...(deps.extendAnalysisFarm ? { extendAnalysisFarm: deps.extendAnalysisFarm } : {}),
169
- ...(deps.logger ? { logger: deps.logger } : {}),
170
- ...(usageRecorder ? { usageRecorder } : {}),
168
+ refStorePath,
169
+ extendAnalysisFarm: deps.extendAnalysisFarm,
170
+ logger: deps.logger,
171
+ usageRecorder,
171
172
  }),
172
173
  // The one report path. The tool starts a report thread as a child of the
173
174
  // conversation, and the user composes the report there with the Report
@@ -176,9 +177,9 @@ export function createConversationAgent(deps) {
176
177
  pool,
177
178
  chrome,
178
179
  anchorSession: deps.anchorReportSession,
179
- ...(deps.eyes ? { eyes: deps.eyes } : {}),
180
- ...(deps.provenance ? { provenance: deps.provenance } : {}),
181
- ...(deps.logger ? { logger: deps.logger } : {}),
180
+ eyes: deps.eyes,
181
+ provenance: deps.provenance,
182
+ logger: deps.logger,
182
183
  }),
183
184
  // Display.
184
185
  showUserTool,
@@ -190,9 +191,9 @@ export function createConversationAgent(deps) {
190
191
  model,
191
192
  bioKeys,
192
193
  usageRecorder,
193
- ...(toolOutputStore ? { toolOutputStore } : {}),
194
- ...(deps.logger ? { logger: deps.logger } : {}),
195
- }),
194
+ toolOutputStore,
195
+ logger: deps.logger,
196
+ }, deps.registerSubAgent),
196
197
  // Workspace semantic search + raw read/grep over the read seam.
197
198
  createWorkspaceSearchTool(pool, embedding),
198
199
  createReadFileTool(workspaceFs),
@@ -206,7 +207,7 @@ export function createConversationAgent(deps) {
206
207
  // a symlink escape stay refused. No sandbox is involved — the mutator
207
208
  // writes host-side, exactly as it does for a sandbox agent.
208
209
  createWriteFileTool({ mutator }),
209
- createEditFileTool({ mutator, workspaceFilesystem: workspaceFs }),
210
+ createEditFileTool({ mutator, workspaceFilesystem: workspaceFs, intents: createEditIntentStore(pool) }),
210
211
  // Working memory.
211
212
  createUpdateWorkingMemoryTool(workingMemory, pool),
212
213
  // Host-contributed tools ride the same context and dispatch path as the
@@ -23,13 +23,12 @@
23
23
  * across threads, and the provider cache reuses it.
24
24
  */
25
25
  import type { Pool } from "pg";
26
- import type { AuthContext } from "../auth/types.js";
27
- import type { RunAuthorizer } from "../execution/run-authorizer.js";
26
+ import type { AuthContext, Identity } from "../auth/types.js";
28
27
  import type { ToolOutputStore } from "../loop/tool-output.js";
29
28
  import type { AgentDefinition } from "../loop/types.js";
30
- import type { DeriveTableRunner } from "../tools/report-session/derive-table.js";
29
+ import type { SandboxClient } from "../sandbox/client.js";
31
30
  import type { ReportSessionStateStore } from "../state/report-session-state.js";
32
- import type { EmbeddingProvider } from "../providers/types.js";
31
+ import type { EmbeddingProvider, ProviderOptions } from "../providers/types.js";
33
32
  import type { WorkspaceFilesystem } from "../workspace/filesystem.js";
34
33
  import type { ResolveWorkspaceRoot } from "../workspace/paths.js";
35
34
  import type { ChromeConfig } from "../lib/chrome.js";
@@ -43,13 +42,18 @@ import type { ProvenanceSeam } from "../provenance/seam.js";
43
42
  import { type MakeSessionPagePublisher, type ResolvePageAsset, type ResolvePageUrl } from "../tools/report-session/index.js";
44
43
  /** Canonical agent id -- distinct from the id of the old templating agent. */
45
44
  export declare const REPORT_SESSION_AGENT_ID: "report-session";
45
+ /**
46
+ * One tool call for each reply. Each authoring tool edits the one draft of the thread, and the calls of
47
+ * one reply run at the same time, thus two edits in one round can land in either order.
48
+ */
49
+ export declare const REPORT_SESSION_PROVIDER_OPTIONS: ProviderOptions;
46
50
  /**
47
51
  * The shared dependencies of the report agent. The gateway binds the per-session
48
52
  * state to the thread, thus every tool that touches the state gets the same
49
53
  * gateway. The resolver factory is optional, because a resolver realization can be
50
54
  * absent, and the preview tool and the record tool degrade as data when it is.
51
55
  */
52
- export interface ReportSessionAgentDeps {
56
+ export type ReportSessionAgentDeps = {
53
57
  /** Model id -- the provenance and metric label. The provider owns the wire model. */
54
58
  readonly model: string;
55
59
  /** Postgres pool -- workspace index, run inspection, and data-profile inspection. */
@@ -67,16 +71,11 @@ export interface ReportSessionAgentDeps {
67
71
  /** Derivation ledger -- the derivation tool appends one record for each derived table. */
68
72
  readonly derivations: Pick<ReportSessionStateStore, "appendDerivation">;
69
73
  /**
70
- * Derivation-exec seam -- the derivation tool runs one ephemeral container for each derived table, and
71
- * the composition realizes this seam over a registered workflow. Omitted, the tool reports that the
72
- * composition gives no sandbox, and it derives nothing.
73
- */
74
- readonly runDerivation?: DeriveTableRunner;
75
- /**
76
- * Run-authorization seam -- the derivation tool authorizes the exec and revokes on every terminal path.
77
- * Omitted, the tool derives nothing, the same as an absent sandbox client.
74
+ * Sandbox client -- the derivation tool runs one ephemeral container for each derived table, inside the
75
+ * step of its call. Omitted, the tool reports that the composition gives no sandbox, and it derives
76
+ * nothing.
78
77
  */
79
- readonly runAuthorizer?: RunAuthorizer;
78
+ readonly sandboxClient?: SandboxClient;
80
79
  /** Thread store -- the record tool reads the anchor of the report thread, and the preview tool names it. */
81
80
  readonly threads: Pick<ThreadStore, "getThread" | "setAutoTitle">;
82
81
  /** Headless-Chrome config -- the eyes tool opens the rendered page. */
@@ -93,6 +92,7 @@ export interface ReportSessionAgentDeps {
93
92
  */
94
93
  readonly makeResolver?: (scope: {
95
94
  analysisId: string;
95
+ identity: Identity;
96
96
  auth: AuthContext;
97
97
  }) => Promise<ReferenceResolver>;
98
98
  /**
@@ -128,6 +128,6 @@ export interface ReportSessionAgentDeps {
128
128
  readonly logger?: Logger;
129
129
  /** Adds `read_tool_output`. The loop of a report turn must keep its texts in the same store. */
130
130
  readonly toolOutputStore?: ToolOutputStore;
131
- }
131
+ };
132
132
  /** Build the report `AgentDefinition` with every tool bound to its deps. */
133
133
  export declare function createReportSessionAgent(deps: ReportSessionAgentDeps): AgentDefinition;
@@ -39,14 +39,22 @@ export const REPORT_SESSION_AGENT_ID = "report-session";
39
39
  const REPORT_SESSION_MAX_ITERATIONS = 200;
40
40
  /** A session is one long turn that holds page captures, thus it compacts only during the turn, at a higher budget. */
41
41
  const REPORT_SESSION_COMPACTION = { budget: 250_000 };
42
+ /**
43
+ * One tool call for each reply. Each authoring tool edits the one draft of the thread, and the calls of
44
+ * one reply run at the same time, thus two edits in one round can land in either order.
45
+ */
46
+ export const REPORT_SESSION_PROVIDER_OPTIONS = {
47
+ anthropic: { disableParallelToolUse: true },
48
+ openai: { parallelToolCalls: false },
49
+ };
42
50
  /** Build the report `AgentDefinition` with every tool bound to its deps. */
43
51
  export function createReportSessionAgent(deps) {
44
52
  const { model, pool, embedding, workspaceFs, gateway, resolveWorkspaceRoot, store, threads, chrome, eyes, makeResolver, resolvePageAsset, logger } = deps;
45
- const { derivations, runDerivation, runAuthorizer, makeSessionPages, resolvePageUrl, provenance } = deps;
53
+ const { derivations, sandboxClient, makeSessionPages, resolvePageUrl, provenance } = deps;
46
54
  // The seam rides into each tool that lands an act of the session, thus the composition binds it one
47
55
  // time and no tool reads a second source.
48
56
  const observation = provenance ? { provenance } : {};
49
- const authoring = createReportAuthoringTools(gateway, { ...observation, ...(logger ? { logger } : {}) });
57
+ const authoring = createReportAuthoringTools(gateway, { ...observation, logger });
50
58
  const tools = [
51
59
  // The read surface toward the analysis. It roams the tree read-only.
52
60
  createReadFileTool(workspaceFs),
@@ -72,7 +80,7 @@ export function createReportSessionAgent(deps) {
72
80
  createListPinnedArtifactsTool({
73
81
  gateway,
74
82
  resolveWorkspaceRoot,
75
- ...(logger ? { logger } : {}),
83
+ logger,
76
84
  }),
77
85
  // The derivation tool. It reshapes the pinned evidence into one table under the
78
86
  // session directory, on the sandbox rails of the value tier.
@@ -80,32 +88,31 @@ export function createReportSessionAgent(deps) {
80
88
  gateway,
81
89
  resolveWorkspaceRoot,
82
90
  derivations,
83
- ...(runDerivation ? { runDerivation } : {}),
84
- ...(runAuthorizer ? { runAuthorizer } : {}),
91
+ sandboxClient,
85
92
  ...observation,
86
- ...(logger ? { logger } : {}),
93
+ logger,
87
94
  }),
88
95
  // The render-and-preview tool. It resolves the page root per call.
89
96
  createPreviewReportTool({
90
97
  gateway,
91
98
  resolveWorkspaceRoot,
92
99
  threads,
93
- ...(makeResolver ? { makeResolver } : {}),
94
- ...(resolvePageAsset ? { resolvePageAsset } : {}),
95
- ...(makeSessionPages ? { makeSessionPages } : {}),
100
+ makeResolver,
101
+ resolvePageAsset,
102
+ makeSessionPages,
96
103
  // The preview is the one site that carries the document into the page, thus the read member
97
104
  // reaches this tool alone.
98
105
  ...observation,
99
- ...(logger ? { logger } : {}),
106
+ logger,
100
107
  }),
101
108
  // The eyes tool. It opens the rendered page in headless Chrome.
102
109
  createExaminePageTool({
103
110
  gateway,
104
111
  resolveWorkspaceRoot,
105
112
  chrome,
106
- ...(eyes ? { eyes } : {}),
107
- ...(resolvePageUrl ? { resolvePageUrl } : {}),
108
- ...(logger ? { logger } : {}),
113
+ eyes,
114
+ resolvePageUrl,
115
+ logger,
109
116
  }),
110
117
  // The record tool. It gates the whole document, records one version, then prunes each
111
118
  // derived table that the recorded document does not bind.
@@ -114,9 +121,9 @@ export function createReportSessionAgent(deps) {
114
121
  store,
115
122
  threads,
116
123
  resolveWorkspaceRoot,
117
- ...(makeResolver ? { makeResolver } : {}),
124
+ makeResolver,
118
125
  ...observation,
119
- ...(logger ? { logger } : {}),
126
+ logger,
120
127
  }),
121
128
  ];
122
129
  return {
@@ -126,5 +133,6 @@ export function createReportSessionAgent(deps) {
126
133
  tools,
127
134
  maxIterations: REPORT_SESSION_MAX_ITERATIONS,
128
135
  compaction: REPORT_SESSION_COMPACTION,
136
+ providerOptions: REPORT_SESSION_PROVIDER_OPTIONS,
129
137
  };
130
138
  }
@@ -26,6 +26,6 @@ export { SANDBOX_AGENT_DEFAULT_MAX_ITERATIONS } from "./types.js";
26
26
  export declare const SANDBOX_AGENT_META: Readonly<Record<string, AgentMeta>>;
27
27
  /**
28
28
  * Build every sandbox `AgentDefinition` from the shared deps. The returned
29
- * record's keys are the agent ids; `runAgent` consumes each value.
29
+ * record's keys are the agent ids; `runLoop` consumes each value.
30
30
  */
31
31
  export declare function createSandboxAgents(deps: SandboxAgentDeps): Record<string, AgentDefinition>;
@@ -64,7 +64,7 @@ export const SANDBOX_AGENT_META = {
64
64
  };
65
65
  /**
66
66
  * Build every sandbox `AgentDefinition` from the shared deps. The returned
67
- * record's keys are the agent ids; `runAgent` consumes each value.
67
+ * record's keys are the agent ids; `runLoop` consumes each value.
68
68
  */
69
69
  export function createSandboxAgents(deps) {
70
70
  return {
@@ -16,7 +16,7 @@
16
16
  * must map to a concrete `Tool`; unknown names throw at composition time
17
17
  * so misconfigured agents fail at startup, not at the first LLM call.
18
18
  */
19
- import type { Pool } from "pg";
19
+ import type { Querier } from "../../state/db.js";
20
20
  import type { ToolOutputStore } from "../../loop/tool-output.js";
21
21
  import type { AgentDefinition } from "../../loop/types.js";
22
22
  import type { ChatProvider, EmbeddingProvider } from "../../providers/types.js";
@@ -25,7 +25,6 @@ import type { ExtendAnalysisFarm, SandboxRef } from "../../sandbox/types.js";
25
25
  import type { WorkspaceFilesystem } from "../../workspace/filesystem.js";
26
26
  import type { ProvenanceCollector as LineageCollector } from "../../provenance/collector.js";
27
27
  import { type BioToolKeys } from "../../tools/bio/keys.js";
28
- import { type BlockerHolder } from "../../tools/sandbox/report-blocker.js";
29
28
  import { type FileMetadataCell } from "../../tools/sandbox/submit-file-metadata.js";
30
29
  import type { AgentMeta, SandboxToolName } from "./types.js";
31
30
  import type { EnvironmentStorePaths } from "../../config/environment-stores.js";
@@ -47,7 +46,7 @@ import { type KnowledgeClient, type TemplateBinding } from "../../tools/knowledg
47
46
  */
48
47
  export declare const BASE_SANDBOX_TOOLS: readonly SandboxToolName[];
49
48
  /** Per-step coordinates the composition root threads through every mutate tool. */
50
- export interface SandboxStepCoords {
49
+ export type SandboxStepCoords = {
51
50
  readonly sandbox: SandboxRef;
52
51
  /** Absolute host root of this analysis's workspace tree (resolved at the workflow body). */
53
52
  readonly workspaceRoot: string;
@@ -62,13 +61,13 @@ export interface SandboxStepCoords {
62
61
  * grounds on no template, or when the host bound nothing.
63
62
  */
64
63
  readonly templateBinding?: TemplateBinding;
65
- }
64
+ };
66
65
  /** The shared dependency graph every sandbox agent draws from. */
67
- export interface SandboxAgentDeps extends EnvironmentStorePaths {
66
+ export type SandboxAgentDeps = EnvironmentStorePaths & {
68
67
  /** Operational logging seam; omitted falls back to no-op. */
69
68
  readonly logger?: Logger;
70
69
  readonly provider: ChatProvider;
71
- readonly pool: Pool;
70
+ readonly pool: Querier;
72
71
  readonly sandboxClient: SandboxClient;
73
72
  readonly workspaceFs: WorkspaceFilesystem;
74
73
  /** Embedding provider for in-sandbox semantic `workspace_search`. Omit to skip that tool. */
@@ -90,12 +89,11 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
90
89
  /** Shared resolver. Required only when `meta.tools` declares `resolve_citation`. */
91
90
  readonly citationResolver?: CitationResolver;
92
91
  /**
93
- * Per-run blocker cell (see the harness-sandbox-agents spec). When present, the agent gets a
94
- * `report_blocker` tool that records `{ kind: "blocker", reason }` into it;
95
- * the sandbox-step body reads the blocker from the transcript, falling back to
96
- * the cell. Omit for agents that have no terminal status to declare (such as the data profiler).
92
+ * The agent gets a `report_blocker` tool (see the harness-sandbox-agents spec), and the
93
+ * sandbox-step body selects the blocker from the recorded calls of the run. Omit for agents that
94
+ * have no terminal status to declare (such as the data profiler).
97
95
  */
98
- readonly blockerHolder?: BlockerHolder;
96
+ readonly reportsBlocker?: boolean;
99
97
  /**
100
98
  * When present, the agent declares `submit_file_metadata` from its first request so the
101
99
  * tool list stays stable across continuations; the task masks it, the continuation unmasks it.
@@ -116,9 +114,9 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
116
114
  * of the open-source host and never an error.
117
115
  */
118
116
  readonly knowledge?: KnowledgeClient;
119
- }
117
+ };
120
118
  /** Per-agent override for the prompt composition and tool surface. */
121
- export interface SandboxAgentPromptOptions {
119
+ export type SandboxAgentPromptOptions = {
122
120
  /** Append `sandboxAnalysisStepStandardsPrompt`. Defaults to true. */
123
121
  readonly appendAnalysisStepStandards?: boolean;
124
122
  /**
@@ -128,7 +126,7 @@ export interface SandboxAgentPromptOptions {
128
126
  * exists outside container-local `/tmp`. Defaults to false.
129
127
  */
130
128
  readonly readOnly?: boolean;
131
- }
129
+ };
132
130
  /**
133
131
  * Build one sandbox `AgentDefinition`. The system prompt is composed once
134
132
  * (SOUL execution core + agent body + sandbox standards) — no processors, and
@@ -16,6 +16,7 @@
16
16
  * must map to a concrete `Tool`; unknown names throw at composition time
17
17
  * so misconfigured agents fail at startup, not at the first LLM call.
18
18
  */
19
+ import { createEditIntentStore } from "../../state/edit-intents.js";
19
20
  import { sandboxOrientCorePromptFor, sandboxPackageLinkPrompt, sandboxAnalysisStepStandardsPrompt } from "../../prompts/sandbox-standards.js";
20
21
  import { composeSystemPrompt } from "../system-prompt.js";
21
22
  // Sandbox-environment introspection, plus the farm-extension seam face.
@@ -71,20 +72,20 @@ export const BASE_SANDBOX_TOOLS = [
71
72
  */
72
73
  function resolveSandboxTools(deps, tools, mutator) {
73
74
  const ncbi = createNcbiTools(deps.bioKeys);
74
- const chemDb = createChemDbTools(deps.bioKeys, { ...(deps.logger ? { logger: deps.logger } : {}) });
75
+ const chemDb = createChemDbTools(deps.bioKeys, { logger: deps.logger });
75
76
  const amass = createAmassTools(deps.bioKeys);
76
77
  if (tools.includes("resolve_citation") && deps.citationResolver === undefined) {
77
78
  throw new Error('createSandboxAgent: SandboxToolName "resolve_citation" requires a CitationResolver dependency.');
78
79
  }
79
80
  const registry = {
80
81
  listAvailablePackages: createListAvailablePackagesTool({
81
- ...(deps.farmLockFile ? { farmLockFile: deps.farmLockFile } : {}),
82
- ...(deps.imagePackagesFile ? { imagePackagesFile: deps.imagePackagesFile } : {}),
82
+ farmLockFile: deps.farmLockFile,
83
+ imagePackagesFile: deps.imagePackagesFile,
83
84
  // The bound seam adds `link_packages` below, and the description of
84
85
  // the listing must then stop at "absent", not at "missing".
85
86
  linkToolPresent: deps.extendAnalysisFarm !== undefined,
86
87
  }),
87
- listAvailableRefs: createListAvailableRefsTool({ ...(deps.refStorePath ? { refStorePath: deps.refStorePath } : {}) }),
88
+ listAvailableRefs: createListAvailableRefsTool({ refStorePath: deps.refStorePath }),
88
89
  scanInputs: createScanInputsTool({
89
90
  workspaceFs: deps.workspaceFs,
90
91
  analysisId: deps.step.analysisId,
@@ -116,9 +117,9 @@ function resolveSandboxTools(deps, tools, mutator) {
116
117
  ? createKnowledgeTemplateTool({
117
118
  client: deps.knowledge,
118
119
  mutator,
119
- ...(deps.farmLockFile ? { farmLockFile: deps.farmLockFile } : {}),
120
- ...(deps.imagePackagesFile ? { imagePackagesFile: deps.imagePackagesFile } : {}),
121
- ...(deps.step.templateBinding ? { binding: deps.step.templateBinding } : {}),
120
+ farmLockFile: deps.farmLockFile,
121
+ imagePackagesFile: deps.imagePackagesFile,
122
+ binding: deps.step.templateBinding,
122
123
  })
123
124
  : undefined,
124
125
  };
@@ -160,10 +161,13 @@ function buildWorkspaceTools(deps, readOnly) {
160
161
  workspaceRoot: step.workspaceRoot,
161
162
  analysisId: step.analysisId,
162
163
  workingDir: hostWorkingDir,
163
- ...(lineageCollector ? { lineageCollector } : {}),
164
+ lineageCollector,
164
165
  });
165
166
  const mutateTools = mutator
166
- ? [createWriteFileTool({ mutator }), createEditFileTool({ mutator, workspaceFilesystem: workspaceFs, workingDir: hostWorkingDir })]
167
+ ? [
168
+ createWriteFileTool({ mutator }),
169
+ createEditFileTool({ mutator, workspaceFilesystem: workspaceFs, workingDir: hostWorkingDir, intents: createEditIntentStore(pool) }),
170
+ ]
167
171
  : [];
168
172
  const tools = [
169
173
  createExecuteCommandTool({
@@ -171,8 +175,10 @@ function buildWorkspaceTools(deps, readOnly) {
171
175
  sandbox: step.sandbox,
172
176
  deadlineMs: step.deadlineMs,
173
177
  defaultCwd: sandboxWorkingDir,
174
- ...(lineageCollector ? { lineageCollector, mountRoot: `/${step.analysisId}` } : {}),
175
- ...(mutator ? { workspaceFilesystem: workspaceFs, mutator } : {}),
178
+ lineageCollector,
179
+ mountRoot: `/${step.analysisId}`,
180
+ workspaceFilesystem: workspaceFs,
181
+ mutator,
176
182
  }),
177
183
  ...mutateTools,
178
184
  createReadFileTool(workspaceFs, hostWorkingDir),
@@ -233,7 +239,7 @@ export function createSandboxAgent(deps, meta, body, opts = {}) {
233
239
  ...(deps.extendAnalysisFarm ? [createLinkPackagesTool({ extendAnalysisFarm: deps.extendAnalysisFarm, analysisId: deps.step.analysisId })] : []),
234
240
  ...skillTools,
235
241
  ...resolveSandboxTools(deps, meta.tools, workspace.mutator),
236
- ...(deps.blockerHolder ? [createReportBlockerTool(deps.blockerHolder)] : []),
242
+ ...(deps.reportsBlocker === true ? [createReportBlockerTool()] : []),
237
243
  ...(deps.fileMetadata ? [createSubmitFileMetadataTool(deps.fileMetadata)] : []),
238
244
  ];
239
245
  return {
@@ -21,14 +21,14 @@ export type SandboxToolName = "listAvailablePackages" | "listAvailableRefs" | "s
21
21
  * The skill of the agent still states what the data IS and how to use it. This states which catalog
22
22
  * entry carries it, in a form a test can pin.
23
23
  */
24
- export interface CapabilityDataRequirement {
24
+ export type CapabilityDataRequirement = {
25
25
  /** One phrase of the same agent's `capabilities`, verbatim — the step copies it from the catalog. */
26
26
  readonly capability: string;
27
27
  /** Reference-catalog dataset ids. Declare only an opt-in dataset: a recommended one is already in a default store. */
28
28
  readonly datasets: readonly string[];
29
- }
29
+ };
30
30
  /** Planner-facing metadata + tool allowlist for one sandbox agent. */
31
- export interface AgentMeta {
31
+ export type AgentMeta = {
32
32
  /** Stable agent id — also the key in the catalog and the `AgentDefinition.id`. */
33
33
  readonly id: string;
34
34
  /** Capabilities surfaced to the planner. */
@@ -52,6 +52,6 @@ export interface AgentMeta {
52
52
  * a prompt names no dataset, so the ids reach a caller through a tool and the launch through here.
53
53
  */
54
54
  readonly dataRequirements?: readonly CapabilityDataRequirement[];
55
- }
55
+ };
56
56
  /** Default runaway-guard for sandbox agents. */
57
57
  export declare const SANDBOX_AGENT_DEFAULT_MAX_ITERATIONS = 200;
@@ -10,9 +10,9 @@
10
10
  * for the per-agent skill list. Declared structurally so `AgentMeta` types
11
11
  * with `readonly` arrays work without a cast at the call site.
12
12
  */
13
- interface AgentMetaLike {
13
+ type AgentMetaLike = {
14
14
  readonly id: string;
15
15
  readonly skills: readonly string[];
16
- }
16
+ };
17
17
  export declare function validateAgentSkills(skillsDir: string, catalog: Readonly<Record<string, AgentMetaLike>>): void;
18
18
  export {};