@inflexa-ai/harness 0.45.0 → 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 (802) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +19 -3
  3. package/dist/agents/conversation-agent.js +49 -30
  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 +35 -16
  9. package/dist/agents/sandbox/shared.js +63 -24
  10. package/dist/agents/sandbox/translational-safety-agent.js +26 -0
  11. package/dist/agents/sandbox/types.d.ts +26 -3
  12. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  13. package/dist/agents/sandbox/validate-skills.js +3 -1
  14. package/dist/agents/sandbox-catalog.d.ts +16 -2
  15. package/dist/agents/sandbox-catalog.js +22 -3
  16. package/dist/agents/system-prompt.d.ts +2 -2
  17. package/dist/app/approve-plan.d.ts +5 -2
  18. package/dist/app/approve-plan.js +1 -1
  19. package/dist/app/chat-turn-workflow.d.ts +114 -0
  20. package/dist/app/chat-turn-workflow.js +307 -0
  21. package/dist/app/chat-turn.d.ts +85 -57
  22. package/dist/app/chat-turn.js +125 -99
  23. package/dist/app/data-profile-orientation.js +10 -8
  24. package/dist/app/data-profile-view.d.ts +4 -4
  25. package/dist/app/data-profile-view.js +9 -8
  26. package/dist/app/in-process-turn.d.ts +42 -0
  27. package/dist/app/in-process-turn.js +139 -0
  28. package/dist/app/message-assembly.d.ts +10 -4
  29. package/dist/app/message-assembly.js +13 -8
  30. package/dist/app/report-session-runtime.d.ts +4 -4
  31. package/dist/app/report-session-runtime.js +36 -21
  32. package/dist/app/spawn-report-session.d.ts +33 -28
  33. package/dist/app/spawn-report-session.js +25 -40
  34. package/dist/app/synthesize-run.d.ts +22 -16
  35. package/dist/app/synthesize-run.js +41 -35
  36. package/dist/app/work.d.ts +96 -0
  37. package/dist/app/work.js +147 -0
  38. package/dist/auth/local-auth-context.d.ts +1 -3
  39. package/dist/auth/local-auth-context.js +1 -3
  40. package/dist/auth/local-run-authorizer.d.ts +1 -1
  41. package/dist/auth/local-run-authorizer.js +5 -3
  42. package/dist/auth/types.d.ts +26 -26
  43. package/dist/billing/cached-resolver.d.ts +4 -4
  44. package/dist/billing/run-charge.d.ts +5 -8
  45. package/dist/billing/run-charge.js +2 -2
  46. package/dist/billing/usage-recorder.d.ts +9 -9
  47. package/dist/citations/aggregate.js +1 -1
  48. package/dist/citations/clients/arxiv.d.ts +2 -2
  49. package/dist/citations/clients/arxiv.js +12 -4
  50. package/dist/citations/clients/common.js +4 -2
  51. package/dist/citations/clients/crossref.d.ts +2 -2
  52. package/dist/citations/clients/crossref.js +37 -37
  53. package/dist/citations/clients/doi-registry.js +15 -16
  54. package/dist/citations/clients/pubmed.d.ts +2 -2
  55. package/dist/citations/clients/pubmed.js +20 -13
  56. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  57. package/dist/citations/clients/semantic-scholar.js +9 -9
  58. package/dist/citations/compare.js +2 -2
  59. package/dist/citations/match.d.ts +2 -2
  60. package/dist/citations/match.js +12 -7
  61. package/dist/citations/normalize.js +35 -26
  62. package/dist/citations/plan.js +6 -2
  63. package/dist/citations/resolve.d.ts +6 -6
  64. package/dist/citations/resolve.js +34 -25
  65. package/dist/citations/types.d.ts +77 -77
  66. package/dist/config/environment-stores.d.ts +10 -8
  67. package/dist/config/resource-limits.js +1 -3
  68. package/dist/contracts/analogy-report.d.ts +7 -7
  69. package/dist/contracts/analogy-report.js +2 -2
  70. package/dist/contracts/chat-events.d.ts +46 -22
  71. package/dist/contracts/chat-events.js +1 -1
  72. package/dist/contracts/chat-frame.d.ts +15 -5
  73. package/dist/contracts/chat-frame.js +67 -40
  74. package/dist/contracts/chat-parts.d.ts +130 -67
  75. package/dist/contracts/chat-parts.js +1 -0
  76. package/dist/contracts/content-url.js +16 -2
  77. package/dist/contracts/data-profile.d.ts +38 -38
  78. package/dist/contracts/index.d.ts +3 -3
  79. package/dist/contracts/index.js +1 -1
  80. package/dist/contracts/message.d.ts +6 -6
  81. package/dist/contracts/organ-system.d.ts +11 -11
  82. package/dist/contracts/part-registry.d.ts +5 -4
  83. package/dist/contracts/part-registry.js +5 -0
  84. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  85. package/dist/contracts/profile-vocabulary.js +10 -3
  86. package/dist/contracts/report-blocks.d.ts +329 -329
  87. package/dist/contracts/report-reference.d.ts +105 -81
  88. package/dist/contracts/report-reference.js +30 -13
  89. package/dist/contracts/schemas/chat-events.d.ts +45 -6
  90. package/dist/contracts/schemas/chat-events.js +16 -0
  91. package/dist/contracts/schemas/chat-parts.d.ts +214 -102
  92. package/dist/contracts/schemas/chat-parts.js +50 -7
  93. package/dist/contracts/schemas/index.d.ts +1 -1
  94. package/dist/contracts/schemas/index.js +1 -1
  95. package/dist/contracts/severity.d.ts +1 -1
  96. package/dist/contracts/structure-source.d.ts +3 -3
  97. package/dist/contracts/structure-source.js +6 -2
  98. package/dist/contracts/subagent-activity.d.ts +2 -2
  99. package/dist/contracts/subagent-activity.js +5 -3
  100. package/dist/contracts/usage.d.ts +2 -2
  101. package/dist/data/safety-panel-schema.d.ts +25 -25
  102. package/dist/data/safety-panel-schema.js +13 -4
  103. package/dist/execution/artifact-metadata.d.ts +23 -15
  104. package/dist/execution/artifact-metadata.js +33 -10
  105. package/dist/execution/artifact-record.d.ts +2 -2
  106. package/dist/execution/artifact-registration.d.ts +5 -5
  107. package/dist/execution/artifact-registry.d.ts +8 -8
  108. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  109. package/dist/execution/dbos-run-launcher.js +58 -4
  110. package/dist/execution/dbos-workflow-purger.d.ts +7 -6
  111. package/dist/execution/dbos-workflow-purger.js +29 -21
  112. package/dist/execution/input-signature.d.ts +2 -2
  113. package/dist/execution/post-step-pipeline.d.ts +9 -9
  114. package/dist/execution/post-step-pipeline.js +1 -1
  115. package/dist/execution/post-step.js +2 -2
  116. package/dist/execution/reconcile-manifest.d.ts +4 -4
  117. package/dist/execution/reconcile-manifest.js +3 -2
  118. package/dist/execution/run-authorizer.d.ts +46 -37
  119. package/dist/execution/run-authorizer.js +8 -8
  120. package/dist/execution/run-canceler.d.ts +39 -17
  121. package/dist/execution/run-canceler.js +137 -28
  122. package/dist/execution/run-end-record.d.ts +29 -0
  123. package/dist/execution/run-end-record.js +27 -0
  124. package/dist/execution/run-event-parts.d.ts +0 -8
  125. package/dist/execution/run-event-parts.js +29 -24
  126. package/dist/execution/run-event-stream.d.ts +8 -8
  127. package/dist/execution/run-event-stream.js +3 -4
  128. package/dist/execution/run-launcher.d.ts +4 -4
  129. package/dist/execution/run-synthesis.d.ts +49 -48
  130. package/dist/execution/run-synthesis.js +96 -255
  131. package/dist/execution/staged-input.d.ts +2 -2
  132. package/dist/execution/step-summary.d.ts +6 -6
  133. package/dist/execution/step-summary.js +4 -8
  134. package/dist/execution/topo-sort.js +4 -3
  135. package/dist/execution/workflow-purger.d.ts +2 -2
  136. package/dist/index.d.ts +25 -24
  137. package/dist/index.js +36 -37
  138. package/dist/input-sanitization.js +9 -2
  139. package/dist/input-scan/clustering.d.ts +6 -6
  140. package/dist/input-scan/clustering.js +11 -5
  141. package/dist/input-scan/companions.js +3 -2
  142. package/dist/input-scan/detect-sets.d.ts +2 -2
  143. package/dist/input-scan/detect-sets.js +25 -21
  144. package/dist/input-scan/enrich.d.ts +6 -6
  145. package/dist/input-scan/enrich.js +29 -12
  146. package/dist/input-scan/formats.d.ts +2 -2
  147. package/dist/input-scan/formats.js +8 -2
  148. package/dist/input-scan/markers.d.ts +2 -2
  149. package/dist/input-scan/markers.js +14 -5
  150. package/dist/input-scan/menu.d.ts +10 -10
  151. package/dist/input-scan/menu.js +0 -0
  152. package/dist/input-scan/quarantine.d.ts +2 -2
  153. package/dist/input-scan/quarantine.js +23 -18
  154. package/dist/input-scan/readout-budget.d.ts +2 -2
  155. package/dist/input-scan/readout-budget.js +1 -1
  156. package/dist/input-scan/readout.d.ts +2 -2
  157. package/dist/input-scan/readout.js +47 -34
  158. package/dist/input-scan/scan.d.ts +2 -2
  159. package/dist/input-scan/scan.js +7 -5
  160. package/dist/input-scan/set-types.d.ts +28 -28
  161. package/dist/input-scan/shapes.d.ts +4 -4
  162. package/dist/input-scan/shapes.js +0 -0
  163. package/dist/input-scan/templates.d.ts +10 -10
  164. package/dist/input-scan/templates.js +30 -22
  165. package/dist/input-scan/tokens.d.ts +6 -4
  166. package/dist/input-scan/tokens.js +100 -38
  167. package/dist/input-scan/types.d.ts +22 -22
  168. package/dist/lib/async-utils.d.ts +3 -7
  169. package/dist/lib/async-utils.js +5 -9
  170. package/dist/lib/cache.js +1 -1
  171. package/dist/lib/chrome.d.ts +46 -6
  172. package/dist/lib/console-logger.js +2 -2
  173. package/dist/lib/db-result.d.ts +22 -6
  174. package/dist/lib/db-result.js +9 -13
  175. package/dist/lib/eyes.d.ts +4 -4
  176. package/dist/lib/eyes.js +1 -1
  177. package/dist/lib/fs-helpers.js +18 -6
  178. package/dist/lib/fs-result.d.ts +1 -0
  179. package/dist/lib/fs-result.js +5 -6
  180. package/dist/lib/hooks.d.ts +23 -7
  181. package/dist/lib/hooks.js +17 -3
  182. package/dist/lib/host-concurrency.js +3 -2
  183. package/dist/lib/logger.d.ts +2 -2
  184. package/dist/lib/logger.js +2 -1
  185. package/dist/lib/metrics.d.ts +1 -1
  186. package/dist/lib/null-proto.d.ts +6 -0
  187. package/dist/lib/null-proto.js +17 -0
  188. package/dist/lib/otel-spans.d.ts +1 -1
  189. package/dist/lib/otel-spans.js +9 -5
  190. package/dist/lib/otel.d.ts +4 -2
  191. package/dist/lib/otel.js +10 -2
  192. package/dist/lib/page-capture.d.ts +8 -8
  193. package/dist/lib/page-capture.js +9 -4
  194. package/dist/lib/parse-json.d.ts +5 -0
  195. package/dist/lib/parse-json.js +12 -0
  196. package/dist/lib/present.d.ts +12 -0
  197. package/dist/lib/present.js +39 -0
  198. package/dist/lib/rate-limit.d.ts +4 -4
  199. package/dist/lib/rate-limit.js +12 -13
  200. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  201. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  202. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  203. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  204. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  205. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  206. package/dist/lib/regulatory-corpus.d.ts +10 -10
  207. package/dist/lib/regulatory-corpus.js +3 -1
  208. package/dist/lib/result.d.ts +10 -11
  209. package/dist/lib/result.js +15 -13
  210. package/dist/lib/storage.d.ts +2 -2
  211. package/dist/lib/test/async-iterable.d.ts +9 -0
  212. package/dist/lib/test/async-iterable.js +28 -0
  213. package/dist/lib/test/request-url.d.ts +5 -0
  214. package/dist/lib/test/request-url.js +7 -0
  215. package/dist/lib/test/result-assert.d.ts +12 -0
  216. package/dist/lib/test/result-assert.js +17 -0
  217. package/dist/lib/test/text-shapes.d.ts +24 -0
  218. package/dist/lib/test/text-shapes.js +63 -0
  219. package/dist/lib/text.d.ts +22 -0
  220. package/dist/lib/text.js +68 -0
  221. package/dist/lib/thrown.d.ts +18 -0
  222. package/dist/lib/thrown.js +30 -0
  223. package/dist/lib/unknown-array.d.ts +6 -0
  224. package/dist/lib/unknown-array.js +8 -0
  225. package/dist/lib/unknown-containers.d.ts +14 -0
  226. package/dist/lib/unknown-containers.js +17 -0
  227. package/dist/lib/unknown-text.d.ts +8 -0
  228. package/dist/lib/unknown-text.js +28 -0
  229. package/dist/lib/zod-issue-shape.d.ts +1 -1
  230. package/dist/lib/zod-issue-shape.js +31 -31
  231. package/dist/lib/zod-issues.d.ts +3 -3
  232. package/dist/lib/zod-issues.js +30 -17
  233. package/dist/literature/sources/arxiv.d.ts +6 -6
  234. package/dist/literature/sources/arxiv.js +92 -35
  235. package/dist/literature/sources/http.d.ts +2 -2
  236. package/dist/literature/sources/http.js +16 -15
  237. package/dist/literature/sources/pubmed.d.ts +16 -16
  238. package/dist/literature/sources/pubmed.js +96 -61
  239. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  240. package/dist/literature/sources/semantic-scholar.js +22 -13
  241. package/dist/loop/accounting.d.ts +63 -0
  242. package/dist/loop/accounting.js +141 -0
  243. package/dist/loop/call-policy.d.ts +73 -0
  244. package/dist/loop/call-policy.js +109 -0
  245. package/dist/loop/chat-stream.d.ts +62 -0
  246. package/dist/loop/chat-stream.js +237 -0
  247. package/dist/loop/compaction.d.ts +14 -9
  248. package/dist/loop/compaction.js +17 -0
  249. package/dist/loop/metrics.d.ts +12 -15
  250. package/dist/loop/metrics.js +14 -26
  251. package/dist/loop/run-loop.d.ts +233 -0
  252. package/dist/loop/run-loop.js +770 -0
  253. package/dist/loop/sub-agent.d.ts +61 -0
  254. package/dist/loop/sub-agent.js +161 -0
  255. package/dist/loop/tool-adapter.d.ts +98 -0
  256. package/dist/loop/tool-adapter.js +364 -0
  257. package/dist/loop/tool-detail.d.ts +1 -1
  258. package/dist/loop/tool-detail.js +6 -5
  259. package/dist/loop/tool-outcome.d.ts +1 -1
  260. package/dist/loop/tool-output.d.ts +4 -4
  261. package/dist/loop/tool-output.js +2 -2
  262. package/dist/loop/turn-credentials.d.ts +34 -0
  263. package/dist/loop/turn-credentials.js +73 -0
  264. package/dist/loop/types.d.ts +34 -37
  265. package/dist/loop/types.js +2 -7
  266. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  267. package/dist/memory/ai-sdk-message-storage.js +13 -11
  268. package/dist/memory/card-builders.d.ts +14 -14
  269. package/dist/memory/card-builders.js +19 -15
  270. package/dist/memory/conversation-display-recorder.d.ts +22 -6
  271. package/dist/memory/conversation-display-recorder.js +64 -20
  272. package/dist/memory/conversation-display-replay.js +3 -2
  273. package/dist/memory/conversation-display-storage.d.ts +15 -7
  274. package/dist/memory/conversation-display-storage.js +141 -36
  275. package/dist/memory/conversation-view.d.ts +4 -4
  276. package/dist/memory/conversation-view.js +5 -4
  277. package/dist/memory/count-tokens.js +10 -8
  278. package/dist/memory/derive-thread-title.d.ts +0 -13
  279. package/dist/memory/derive-thread-title.js +2 -1
  280. package/dist/memory/message-backfill.d.ts +12 -5
  281. package/dist/memory/message-backfill.js +5 -3
  282. package/dist/memory/thread-history.d.ts +66 -24
  283. package/dist/memory/thread-history.js +212 -79
  284. package/dist/memory/thread-store.d.ts +26 -17
  285. package/dist/memory/thread-store.js +15 -9
  286. package/dist/memory/tool-call-integrity.d.ts +2 -2
  287. package/dist/memory/tool-call-integrity.js +4 -3
  288. package/dist/memory/working-memory.d.ts +16 -12
  289. package/dist/memory/working-memory.js +72 -61
  290. package/dist/prompts/briefing.d.ts +63 -9
  291. package/dist/prompts/briefing.js +130 -3
  292. package/dist/prompts/planner.js +13 -2
  293. package/dist/prompts/synthesis-agent.d.ts +1 -1
  294. package/dist/prompts/synthesis-agent.js +6 -14
  295. package/dist/provenance/collector.d.ts +6 -6
  296. package/dist/provenance/collector.js +15 -8
  297. package/dist/provenance/exec-frame.d.ts +2 -2
  298. package/dist/provenance/exec-frame.js +6 -1
  299. package/dist/provenance/seam.d.ts +24 -19
  300. package/dist/provenance/seam.js +7 -5
  301. package/dist/provenance/types.d.ts +6 -6
  302. package/dist/providers/ai-sdk.d.ts +113 -62
  303. package/dist/providers/ai-sdk.js +303 -458
  304. package/dist/providers/embedding.d.ts +2 -2
  305. package/dist/providers/embedding.js +1 -1
  306. package/dist/providers/errors.d.ts +22 -2
  307. package/dist/providers/errors.js +98 -50
  308. package/dist/providers/prompt-cache.d.ts +8 -8
  309. package/dist/providers/prompt-cache.js +13 -11
  310. package/dist/providers/reasoning.d.ts +2 -2
  311. package/dist/providers/reasoning.js +2 -2
  312. package/dist/providers/types.d.ts +59 -92
  313. package/dist/reference-data/catalog.d.ts +2 -15
  314. package/dist/reference-data/catalog.js +166 -10
  315. package/dist/reference-data/receipt.d.ts +2 -2
  316. package/dist/report-model/assert-rules.js +1 -1
  317. package/dist/report-model/authoring-grammar.d.ts +209 -231
  318. package/dist/report-model/block-walk.d.ts +10 -10
  319. package/dist/report-model/block-walk.js +2 -0
  320. package/dist/report-model/draft-finish.d.ts +8 -8
  321. package/dist/report-model/draft-finish.js +1 -1
  322. package/dist/report-model/draft-hash.js +8 -7
  323. package/dist/report-model/draft-operations.d.ts +22 -10
  324. package/dist/report-model/draft-operations.js +48 -30
  325. package/dist/report-model/draft-read.d.ts +19 -7
  326. package/dist/report-model/draft-read.js +16 -6
  327. package/dist/report-model/draft.d.ts +844 -2
  328. package/dist/report-model/draft.js +3 -1
  329. package/dist/report-model/fixture-resolver.js +39 -16
  330. package/dist/report-model/pin-snapshot.d.ts +2 -2
  331. package/dist/report-model/pin-snapshot.js +15 -15
  332. package/dist/report-model/production-resolver.d.ts +18 -18
  333. package/dist/report-model/production-resolver.js +50 -42
  334. package/dist/report-model/reference-resolver.d.ts +26 -10
  335. package/dist/report-model/reference-resolver.js +68 -5
  336. package/dist/report-model/reference-stamp.js +30 -38
  337. package/dist/report-model/structural-validation.js +12 -4
  338. package/dist/report-model/validate.d.ts +7 -7
  339. package/dist/report-model/validate.js +6 -6
  340. package/dist/report-render/assets.d.ts +2 -2
  341. package/dist/report-render/assets.js +27 -3
  342. package/dist/report-render/chart-export.d.ts +10 -2
  343. package/dist/report-render/chart-export.js +37 -11
  344. package/dist/report-render/chart-presets.d.ts +8 -8
  345. package/dist/report-render/chart-presets.js +3 -3
  346. package/dist/report-render/chart-renderers.d.ts +23 -16
  347. package/dist/report-render/chart-renderers.js +74 -53
  348. package/dist/report-render/chart-toolbox.d.ts +2 -2
  349. package/dist/report-render/chart-toolbox.js +7 -6
  350. package/dist/report-render/chart.d.ts +15 -16
  351. package/dist/report-render/chart.js +369 -252
  352. package/dist/report-render/design.d.ts +36 -297
  353. package/dist/report-render/design.js +0 -12
  354. package/dist/report-render/figures/common.d.ts +12 -12
  355. package/dist/report-render/figures/common.js +42 -31
  356. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  357. package/dist/report-render/figures/dendrogram.js +10 -10
  358. package/dist/report-render/figures/dense.js +15 -8
  359. package/dist/report-render/figures/dotplot.js +46 -33
  360. package/dist/report-render/figures/embedding.js +52 -43
  361. package/dist/report-render/figures/equal-units.d.ts +10 -10
  362. package/dist/report-render/figures/equal-units.js +27 -27
  363. package/dist/report-render/figures/forest.js +9 -7
  364. package/dist/report-render/figures/gsea.js +21 -11
  365. package/dist/report-render/figures/heatmap.js +13 -9
  366. package/dist/report-render/figures/index.d.ts +10 -10
  367. package/dist/report-render/figures/index.js +4 -2
  368. package/dist/report-render/figures/km.js +10 -9
  369. package/dist/report-render/figures/label-room.d.ts +12 -12
  370. package/dist/report-render/figures/label-room.js +7 -2
  371. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  372. package/dist/report-render/figures/locuszoom.js +59 -31
  373. package/dist/report-render/figures/lollipop.js +3 -2
  374. package/dist/report-render/figures/ma.js +8 -4
  375. package/dist/report-render/figures/manhattan.d.ts +1 -2
  376. package/dist/report-render/figures/manhattan.js +52 -34
  377. package/dist/report-render/figures/oncoprint.js +4 -5
  378. package/dist/report-render/figures/pca.js +25 -11
  379. package/dist/report-render/figures/qq.js +20 -9
  380. package/dist/report-render/figures/roc.js +1 -1
  381. package/dist/report-render/figures/sankey.d.ts +2 -2
  382. package/dist/report-render/figures/sankey.js +11 -10
  383. package/dist/report-render/figures/upset.d.ts +6 -6
  384. package/dist/report-render/figures/upset.js +7 -4
  385. package/dist/report-render/figures/volcano.js +12 -10
  386. package/dist/report-render/hybrid-svg.d.ts +4 -4
  387. package/dist/report-render/hybrid-svg.js +7 -5
  388. package/dist/report-render/number-format.d.ts +4 -4
  389. package/dist/report-render/number-format.js +62 -27
  390. package/dist/report-render/page.js +2 -1
  391. package/dist/report-render/provenance-data.d.ts +2 -2
  392. package/dist/report-render/references.d.ts +4 -4
  393. package/dist/report-render/render.d.ts +2 -2
  394. package/dist/report-render/render.js +10 -11
  395. package/dist/report-render/script-json.js +1 -1
  396. package/dist/report-render/table-data.d.ts +6 -6
  397. package/dist/report-render/test/options.d.ts +49 -0
  398. package/dist/report-render/test/options.js +143 -0
  399. package/dist/report-render/test/page-function.d.ts +19 -0
  400. package/dist/report-render/test/page-function.js +33 -0
  401. package/dist/report-render/types.d.ts +10 -10
  402. package/dist/report-render/value-bridge.d.ts +4 -4
  403. package/dist/report-render/value-bridge.js +27 -14
  404. package/dist/report-render/views/chart-view.d.ts +2 -2
  405. package/dist/report-render/views/chart-view.js +2 -2
  406. package/dist/report-render/views/lineage.d.ts +6 -6
  407. package/dist/report-render/views/lineage.js +2 -0
  408. package/dist/report-render/views/page-view.d.ts +2 -2
  409. package/dist/report-render/views/page-view.js +1 -0
  410. package/dist/report-render/views/prose.js +25 -8
  411. package/dist/report-render/views/references-view.js +12 -1
  412. package/dist/report-render/views/values.js +1 -1
  413. package/dist/runtime/assemble.d.ts +53 -26
  414. package/dist/runtime/assemble.js +103 -56
  415. package/dist/runtime/boot.d.ts +8 -7
  416. package/dist/runtime/boot.js +1 -1
  417. package/dist/runtime/connection-budget.d.ts +6 -6
  418. package/dist/runtime/connection-budget.js +1 -1
  419. package/dist/runtime/dbos.d.ts +29 -19
  420. package/dist/runtime/dbos.js +35 -20
  421. package/dist/runtime/result-serialization.js +18 -5
  422. package/dist/runtime/shutdown.d.ts +2 -2
  423. package/dist/sandbox/client.d.ts +7 -3
  424. package/dist/sandbox/cpu-files.d.ts +2 -2
  425. package/dist/sandbox/cpu-files.js +21 -4
  426. package/dist/sandbox/create-sandbox.d.ts +7 -8
  427. package/dist/sandbox/create-sandbox.js +6 -12
  428. package/dist/sandbox/docker-client.d.ts +48 -3
  429. package/dist/sandbox/docker-client.js +10 -6
  430. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  431. package/dist/sandbox/exec-outcome.d.ts +2 -2
  432. package/dist/sandbox/exec-outcome.js +1 -1
  433. package/dist/sandbox/exec.d.ts +10 -6
  434. package/dist/sandbox/exec.js +27 -12
  435. package/dist/sandbox/execution-id.js +14 -6
  436. package/dist/sandbox/farm.d.ts +2 -2
  437. package/dist/sandbox/farm.js +22 -27
  438. package/dist/sandbox/identity.d.ts +7 -0
  439. package/dist/sandbox/identity.js +14 -3
  440. package/dist/sandbox/image-packages.d.ts +26 -4
  441. package/dist/sandbox/image-packages.js +29 -27
  442. package/dist/sandbox/k8s-client.d.ts +35 -8
  443. package/dist/sandbox/k8s-client.js +6 -5
  444. package/dist/sandbox/labels.js +1 -0
  445. package/dist/sandbox/liveness.js +3 -1
  446. package/dist/sandbox/mount-plan.d.ts +10 -10
  447. package/dist/sandbox/mount-plan.js +13 -14
  448. package/dist/sandbox/notification-sweep.d.ts +4 -4
  449. package/dist/sandbox/notification-sweep.js +4 -7
  450. package/dist/sandbox/package-identity.d.ts +6 -13
  451. package/dist/sandbox/package-identity.js +46 -28
  452. package/dist/sandbox/reaper.d.ts +10 -10
  453. package/dist/sandbox/reaper.js +4 -6
  454. package/dist/sandbox/sandbox-error.d.ts +2 -9
  455. package/dist/sandbox/sandbox-error.js +21 -8
  456. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  457. package/dist/sandbox/sandbox-step-translate.js +22 -8
  458. package/dist/sandbox/step-sandbox.d.ts +47 -0
  459. package/dist/sandbox/step-sandbox.js +53 -0
  460. package/dist/sandbox/types.d.ts +18 -19
  461. package/dist/sandbox/types.js +1 -1
  462. package/dist/schemas/artifact-manifest.d.ts +4 -4
  463. package/dist/schemas/data-profile-schemas.d.ts +351 -306
  464. package/dist/schemas/file-metadata.js +2 -4
  465. package/dist/schemas/plan-schemas.d.ts +79 -25
  466. package/dist/schemas/plan-schemas.js +1 -1
  467. package/dist/schemas/run-synthesis.d.ts +95 -26
  468. package/dist/schemas/run-synthesis.js +3 -1
  469. package/dist/schemas/validate-plan.d.ts +4 -4
  470. package/dist/schemas/validate-plan.js +17 -5
  471. package/dist/schemas/workflow-state.d.ts +127 -14
  472. package/dist/schemas/workflow-state.js +56 -2
  473. package/dist/state/active-turns.d.ts +36 -0
  474. package/dist/state/active-turns.js +67 -0
  475. package/dist/state/analyses-metrics.d.ts +8 -8
  476. package/dist/state/analyses-metrics.js +4 -4
  477. package/dist/state/analyses.d.ts +0 -14
  478. package/dist/state/analyses.js +0 -32
  479. package/dist/state/artifacts.d.ts +47 -18
  480. package/dist/state/artifacts.js +48 -7
  481. package/dist/state/data-profile.d.ts +2 -2
  482. package/dist/state/db.d.ts +12 -2
  483. package/dist/state/db.js +5 -0
  484. package/dist/state/edit-intents.d.ts +4 -0
  485. package/dist/state/edit-intents.js +71 -0
  486. package/dist/state/index.d.ts +5 -5
  487. package/dist/state/index.js +3 -3
  488. package/dist/state/init.d.ts +2 -1
  489. package/dist/state/init.js +5 -2
  490. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  491. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  492. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  493. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  494. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  495. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  496. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  497. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  498. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  499. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  500. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  501. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  502. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  503. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  504. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  505. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  506. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  507. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  508. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  509. package/dist/state/migrations/index.js +18 -0
  510. package/dist/state/paused-work.d.ts +52 -0
  511. package/dist/state/paused-work.js +105 -0
  512. package/dist/state/plans.d.ts +27 -8
  513. package/dist/state/plans.js +14 -11
  514. package/dist/state/purge-analysis.d.ts +6 -6
  515. package/dist/state/purge-analysis.js +10 -2
  516. package/dist/state/report-session-state.d.ts +43 -18
  517. package/dist/state/report-session-state.js +43 -4
  518. package/dist/state/report-versions.d.ts +16 -11
  519. package/dist/state/report-versions.js +5 -3
  520. package/dist/state/runs.d.ts +70 -25
  521. package/dist/state/runs.js +127 -64
  522. package/dist/state/schema.d.ts +18 -21
  523. package/dist/state/schema.js +4 -5
  524. package/dist/state/snapshot-parse.d.ts +2 -2
  525. package/dist/state/snapshot-parse.js +14 -8
  526. package/dist/state/step-executions.d.ts +29 -8
  527. package/dist/state/step-executions.js +28 -4
  528. package/dist/state/tool-outputs.d.ts +2 -2
  529. package/dist/state/tool-outputs.js +2 -1
  530. package/dist/state/vector-store.d.ts +16 -16
  531. package/dist/state/vector-store.js +11 -7
  532. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  533. package/dist/tasks/data-profile-absorb.js +21 -16
  534. package/dist/tasks/data-profile-activity.d.ts +5 -5
  535. package/dist/tasks/data-profile-activity.js +5 -5
  536. package/dist/tasks/data-profile-index.d.ts +4 -4
  537. package/dist/tasks/data-profile-index.js +32 -17
  538. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  539. package/dist/tasks/data-profile-resolve.js +88 -62
  540. package/dist/tasks/data-profile.d.ts +40 -31
  541. package/dist/tasks/data-profile.js +138 -95
  542. package/dist/tasks/extract-values.d.ts +26 -79
  543. package/dist/tasks/extract-values.js +48 -108
  544. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  545. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  546. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  547. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  548. package/dist/testing.d.ts +60 -0
  549. package/dist/testing.js +96 -0
  550. package/dist/tools/ad-hoc-router.d.ts +11 -9
  551. package/dist/tools/ad-hoc-router.js +80 -51
  552. package/dist/tools/analysis-invocation.d.ts +7 -0
  553. package/dist/tools/analysis-invocation.js +29 -5
  554. package/dist/tools/approval/contract.d.ts +8 -52
  555. package/dist/tools/approval/contract.js +7 -36
  556. package/dist/tools/approval/gateway.d.ts +27 -28
  557. package/dist/tools/approval/gateway.js +33 -130
  558. package/dist/tools/approval/queries.d.ts +6 -11
  559. package/dist/tools/approval/queries.js +43 -29
  560. package/dist/tools/approval/uuidv7.js +2 -2
  561. package/dist/tools/bio/chembl.d.ts +3 -3
  562. package/dist/tools/bio/chembl.js +10 -0
  563. package/dist/tools/bio/comptox.d.ts +25 -8
  564. package/dist/tools/bio/comptox.js +4 -2
  565. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  566. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  567. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  568. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  569. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  570. package/dist/tools/bio/keys.d.ts +2 -2
  571. package/dist/tools/bio/keys.js +3 -3
  572. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  573. package/dist/tools/bio/lookup-annotation.js +3 -0
  574. package/dist/tools/bio/opentargets.d.ts +1 -1
  575. package/dist/tools/bio/opentargets.js +6 -0
  576. package/dist/tools/bio/pubchem.d.ts +2 -2
  577. package/dist/tools/bio/pubchem.js +6 -0
  578. package/dist/tools/bio/pubmed.d.ts +26 -16
  579. package/dist/tools/bio/pubmed.js +9 -3
  580. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  581. package/dist/tools/bio/search-clinical-trials.js +5 -1
  582. package/dist/tools/bio/search-faers.d.ts +2 -2
  583. package/dist/tools/bio/search-faers.js +1 -1
  584. package/dist/tools/bio/search-gene.d.ts +2 -2
  585. package/dist/tools/bio/search-gene.js +1 -0
  586. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  587. package/dist/tools/bio/search-geo-datasets.js +5 -5
  588. package/dist/tools/bio/search-interactions.d.ts +1 -1
  589. package/dist/tools/bio/search-patents.d.ts +28 -22
  590. package/dist/tools/bio/search-patents.js +20 -17
  591. package/dist/tools/bio/search-protein.d.ts +2 -2
  592. package/dist/tools/bio/search-protein.js +1 -1
  593. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  594. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  595. package/dist/tools/bio/target-safety.d.ts +8 -8
  596. package/dist/tools/bio/target-safety.js +11 -6
  597. package/dist/tools/capability-data.d.ts +40 -0
  598. package/dist/tools/capability-data.js +74 -0
  599. package/dist/tools/define-tool.d.ts +55 -46
  600. package/dist/tools/define-tool.js +39 -27
  601. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  602. package/dist/tools/display/normalize-echart-spec.js +51 -27
  603. package/dist/tools/display/show-user.d.ts +2 -2
  604. package/dist/tools/display/show-user.js +1 -1
  605. package/dist/tools/execute-analysis.d.ts +54 -17
  606. package/dist/tools/execute-analysis.js +193 -62
  607. package/dist/tools/knowledge/check.d.ts +182 -0
  608. package/dist/tools/knowledge/check.js +94 -0
  609. package/dist/tools/knowledge/client.d.ts +351 -0
  610. package/dist/tools/knowledge/client.js +319 -0
  611. package/dist/tools/knowledge/environment.d.ts +78 -0
  612. package/dist/tools/knowledge/environment.js +116 -0
  613. package/dist/tools/knowledge/index.d.ts +49 -0
  614. package/dist/tools/knowledge/index.js +70 -0
  615. package/dist/tools/knowledge/local-slots.d.ts +62 -0
  616. package/dist/tools/knowledge/local-slots.js +184 -0
  617. package/dist/tools/knowledge/pin.d.ts +14 -0
  618. package/dist/tools/knowledge/pin.js +17 -0
  619. package/dist/tools/knowledge/recommend.d.ts +67 -0
  620. package/dist/tools/knowledge/recommend.js +106 -0
  621. package/dist/tools/knowledge/situation.d.ts +143 -0
  622. package/dist/tools/knowledge/situation.js +157 -0
  623. package/dist/tools/knowledge/skeleton.d.ts +69 -0
  624. package/dist/tools/knowledge/skeleton.js +201 -0
  625. package/dist/tools/knowledge/template.d.ts +139 -0
  626. package/dist/tools/knowledge/template.js +273 -0
  627. package/dist/tools/lib/alphafold-client.js +2 -1
  628. package/dist/tools/lib/amass-client.d.ts +28 -28
  629. package/dist/tools/lib/amass-client.js +20 -10
  630. package/dist/tools/lib/api-utils.d.ts +13 -3
  631. package/dist/tools/lib/api-utils.js +17 -3
  632. package/dist/tools/lib/bgee-client.d.ts +6 -6
  633. package/dist/tools/lib/bgee-client.js +16 -10
  634. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  635. package/dist/tools/lib/cbioportal-client.js +9 -8
  636. package/dist/tools/lib/chembl-client.d.ts +14 -14
  637. package/dist/tools/lib/chembl-client.js +11 -4
  638. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  639. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  640. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  641. package/dist/tools/lib/clinical-trials-client.js +10 -10
  642. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  643. package/dist/tools/lib/clinvar-client.js +6 -6
  644. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  645. package/dist/tools/lib/ctx-ops.js +13 -10
  646. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  647. package/dist/tools/lib/dgidb-client.js +10 -12
  648. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  649. package/dist/tools/lib/ema-client.d.ts +2 -2
  650. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  651. package/dist/tools/lib/ensembl-client.js +5 -4
  652. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  653. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  654. package/dist/tools/lib/html-text.d.ts +6 -0
  655. package/dist/tools/lib/html-text.js +9 -0
  656. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  657. package/dist/tools/lib/identifier-resolver.js +7 -3
  658. package/dist/tools/lib/impc-client.d.ts +8 -8
  659. package/dist/tools/lib/impc-client.js +46 -35
  660. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  661. package/dist/tools/lib/iuphar-client.js +7 -16
  662. package/dist/tools/lib/monarch-client.d.ts +4 -4
  663. package/dist/tools/lib/openfda-client.d.ts +22 -22
  664. package/dist/tools/lib/openfda-client.js +23 -22
  665. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  666. package/dist/tools/lib/pathway-client.d.ts +4 -4
  667. package/dist/tools/lib/pathway-client.js +15 -19
  668. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  669. package/dist/tools/lib/pharmgkb-client.js +1 -1
  670. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  671. package/dist/tools/lib/protein-family-modality.js +0 -2
  672. package/dist/tools/lib/protein-family-normalize.js +7 -0
  673. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  674. package/dist/tools/lib/pubchem-client.js +1 -0
  675. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  676. package/dist/tools/lib/pubchem-ops.js +8 -0
  677. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  678. package/dist/tools/lib/pubmed-client.js +1 -1
  679. package/dist/tools/lib/string-client.d.ts +6 -6
  680. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  681. package/dist/tools/lib/uniprot-client.js +5 -1
  682. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  683. package/dist/tools/memory/update-working-memory.js +21 -3
  684. package/dist/tools/read-tool-output.js +8 -2
  685. package/dist/tools/registry.d.ts +2 -2
  686. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  687. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  688. package/dist/tools/report-session/derive-table.d.ts +19 -59
  689. package/dist/tools/report-session/derive-table.js +120 -122
  690. package/dist/tools/report-session/examine-page.d.ts +6 -6
  691. package/dist/tools/report-session/examine-page.js +14 -12
  692. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  693. package/dist/tools/report-session/list-artifacts.js +5 -5
  694. package/dist/tools/report-session/page-faults.d.ts +6 -6
  695. package/dist/tools/report-session/page-faults.js +3 -1
  696. package/dist/tools/report-session/preview-report.d.ts +4 -3
  697. package/dist/tools/report-session/preview-report.js +26 -7
  698. package/dist/tools/report-session/record-version.d.ts +9 -4
  699. package/dist/tools/report-session/record-version.js +16 -9
  700. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  701. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  702. package/dist/tools/research/generate-analogy-report.js +80 -76
  703. package/dist/tools/research/generate-plan.d.ts +39 -16
  704. package/dist/tools/research/generate-plan.js +565 -338
  705. package/dist/tools/research/guarded-address.d.ts +20 -0
  706. package/dist/tools/research/guarded-address.js +149 -0
  707. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  708. package/dist/tools/research/inspect-data-profile.js +26 -25
  709. package/dist/tools/research/inspect-run.d.ts +54 -27
  710. package/dist/tools/research/inspect-run.js +50 -40
  711. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  712. package/dist/tools/research/literature-reviewer.js +29 -28
  713. package/dist/tools/research/search-arxiv.d.ts +1 -1
  714. package/dist/tools/research/search-arxiv.js +1 -1
  715. package/dist/tools/research/search-github-repos.d.ts +10 -7
  716. package/dist/tools/research/search-github-repos.js +25 -22
  717. package/dist/tools/research/search-semantic-scholar.js +1 -1
  718. package/dist/tools/research/searxng-engine.d.ts +40 -0
  719. package/dist/tools/research/searxng-engine.js +122 -0
  720. package/dist/tools/research/web-fetch.d.ts +127 -0
  721. package/dist/tools/research/web-fetch.js +618 -0
  722. package/dist/tools/research/web-search.d.ts +84 -0
  723. package/dist/tools/research/web-search.js +117 -0
  724. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  725. package/dist/tools/sandbox/link-packages.js +11 -8
  726. package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
  727. package/dist/tools/sandbox/list-available-packages.js +43 -29
  728. package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
  729. package/dist/tools/sandbox/list-available-refs.js +119 -37
  730. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  731. package/dist/tools/sandbox/report-blocker.js +22 -68
  732. package/dist/tools/sandbox/skills.d.ts +16 -12
  733. package/dist/tools/sandbox/skills.js +16 -12
  734. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  735. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  736. package/dist/tools/start-report-session.d.ts +13 -5
  737. package/dist/tools/start-report-session.js +35 -8
  738. package/dist/tools/terminal-text.d.ts +14 -0
  739. package/dist/tools/terminal-text.js +51 -0
  740. package/dist/tools/workspace/decision-record.d.ts +81 -0
  741. package/dist/tools/workspace/decision-record.js +127 -0
  742. package/dist/tools/workspace/edit-file.d.ts +59 -18
  743. package/dist/tools/workspace/edit-file.js +98 -15
  744. package/dist/tools/workspace/execute-command.d.ts +31 -12
  745. package/dist/tools/workspace/execute-command.js +37 -8
  746. package/dist/tools/workspace/file-stat.d.ts +6 -3
  747. package/dist/tools/workspace/grep.d.ts +10 -7
  748. package/dist/tools/workspace/grep.js +9 -3
  749. package/dist/tools/workspace/index.d.ts +1 -0
  750. package/dist/tools/workspace/index.js +1 -0
  751. package/dist/tools/workspace/list-files.d.ts +6 -3
  752. package/dist/tools/workspace/mutator.d.ts +28 -15
  753. package/dist/tools/workspace/mutator.js +107 -53
  754. package/dist/tools/workspace/read-file.d.ts +8 -5
  755. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  756. package/dist/tools/workspace/result-bounds.js +4 -2
  757. package/dist/tools/workspace/run-exec.d.ts +2 -2
  758. package/dist/tools/workspace/run-exec.js +3 -3
  759. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  760. package/dist/tools/workspace/scan-inputs.js +17 -5
  761. package/dist/tools/workspace/show-file.d.ts +1 -1
  762. package/dist/tools/workspace/show-file.js +2 -1
  763. package/dist/tools/workspace/show-plan.d.ts +8 -5
  764. package/dist/tools/workspace/show-plan.js +9 -8
  765. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  766. package/dist/tools/workspace/workspace-search.js +27 -14
  767. package/dist/tools/workspace/write-file.d.ts +9 -7
  768. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  769. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  770. package/dist/workflows/execute-analysis.d.ts +100 -76
  771. package/dist/workflows/execute-analysis.js +380 -247
  772. package/dist/workflows/pause.d.ts +71 -0
  773. package/dist/workflows/pause.js +173 -0
  774. package/dist/workflows/sandbox-step.d.ts +50 -61
  775. package/dist/workflows/sandbox-step.js +99 -106
  776. package/dist/workflows/test/sql-writes.d.ts +21 -0
  777. package/dist/workflows/test/sql-writes.js +36 -0
  778. package/dist/workspace/filesystem.d.ts +6 -6
  779. package/dist/workspace/filesystem.js +10 -8
  780. package/dist/workspace/paths.d.ts +1 -1
  781. package/dist/workspace/paths.js +15 -4
  782. package/dist/workspace/search-config.d.ts +2 -2
  783. package/dist/workspace/search-config.js +1 -1
  784. package/package.json +25 -22
  785. package/dist/loop/continue-agent.d.ts +0 -40
  786. package/dist/loop/continue-agent.js +0 -38
  787. package/dist/loop/genai-spans.d.ts +0 -47
  788. package/dist/loop/genai-spans.js +0 -134
  789. package/dist/loop/run-agent.d.ts +0 -236
  790. package/dist/loop/run-agent.js +0 -1110
  791. package/dist/loop/run-step.d.ts +0 -29
  792. package/dist/loop/run-step.js +0 -34
  793. package/dist/loop/run-to-terminal.d.ts +0 -66
  794. package/dist/loop/run-to-terminal.js +0 -90
  795. package/dist/loop/tool-mask.d.ts +0 -23
  796. package/dist/loop/tool-mask.js +0 -46
  797. package/dist/providers/streaming-chat.d.ts +0 -32
  798. package/dist/providers/streaming-chat.js +0 -91
  799. package/dist/tasks/derive-table-exec.d.ts +0 -54
  800. package/dist/tasks/derive-table-exec.js +0 -86
  801. package/dist/workflows/suspension.d.ts +0 -32
  802. 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,12 +31,14 @@ 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";
37
38
  import type { WorkspaceFilesystem } from "../workspace/filesystem.js";
38
39
  import type { ResolveWorkspaceRoot } from "../workspace/paths.js";
39
40
  import { type BioToolKeys } from "../tools/bio/keys.js";
41
+ import type { KnowledgeClient } from "../tools/knowledge/index.js";
40
42
  import type { EnvironmentStorePaths } from "../config/environment-stores.js";
41
43
  import type { RunAuthorizer } from "../execution/run-authorizer.js";
42
44
  import type { RunLauncher } from "../execution/run-launcher.js";
@@ -44,6 +46,7 @@ import type { ProvenanceSeam } from "../provenance/seam.js";
44
46
  import type { Logger } from "../lib/logger.js";
45
47
  import type { UsageRecorder } from "../billing/usage-recorder.js";
46
48
  import type { CitationResolver } from "../citations/types.js";
49
+ import { type WebSearchEngine } from "../tools/research/web-search.js";
47
50
  /** Canonical agent id — the single source of truth. */
48
51
  export declare const CONVERSATION_AGENT_ID: "conversation-agent";
49
52
  /**
@@ -52,7 +55,7 @@ export declare const CONVERSATION_AGENT_ID: "conversation-agent";
52
55
  * what is importable that a sandbox agent has — read host-side, so answering
53
56
  * "does this environment have X?" costs a lookup rather than a container.
54
57
  */
55
- export interface ConversationAgentDeps extends EnvironmentStorePaths {
58
+ export type ConversationAgentDeps = EnvironmentStorePaths & {
56
59
  /** Operational logging seam; omitted falls back to no-op. */
57
60
  readonly logger?: Logger;
58
61
  /**
@@ -63,10 +66,17 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
63
66
  readonly usageRecorder?: UsageRecorder;
64
67
  /** Adds `read_tool_output`, and each loop-driving tool gives the same store to its sub-agent. */
65
68
  readonly toolOutputStore?: ToolOutputStore;
69
+ /** The web-search engine the embedder injected; set, `web_search` attaches, absent it does not. `web_fetch` attaches either way. */
70
+ readonly webSearch?: WebSearchEngine;
66
71
  /** Shared host-side bibliographic verification service. */
67
72
  readonly citationResolver: CitationResolver;
68
73
  /** The LLM seam every loop-driving tool runs its sub-agent on. */
69
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;
70
80
  /** Postgres pool — plan persistence, run inspection, workspace index, working memory. */
71
81
  readonly pool: Pool;
72
82
  /** Embedding seam — workspace semantic search. */
@@ -107,6 +117,12 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
107
117
  readonly runLauncher: RunLauncher;
108
118
  /** API keys for the external bio/chem data sources. */
109
119
  readonly bioKeys: BioToolKeys;
120
+ /**
121
+ * The knowledge service client, for the planner that `generate_plan` drives.
122
+ * Absent, the planner attaches no knowledge tool. The conversation agent
123
+ * itself gets `knowledge_recommend` through `hostTools`, from the embedder.
124
+ */
125
+ readonly knowledge?: KnowledgeClient;
110
126
  /** Skills root. No tool of the roster reads it. */
111
127
  readonly skillsDir: string;
112
128
  /** Headless-Chrome config for report snapshot/preview rendering. */
@@ -147,6 +163,6 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
147
163
  * it, the link pass returns at once.
148
164
  */
149
165
  readonly extendAnalysisFarm?: ExtendAnalysisFarm;
150
- }
166
+ };
151
167
  /** Build the conversation `AgentDefinition` with every tool fully dep-bound. */
152
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).
@@ -36,10 +37,13 @@ import { createEditFileTool, createFileStatTool, createGrepTool, createListFiles
36
37
  import { showUserTool } from "../tools/display/index.js";
37
38
  import { createUpdateWorkingMemoryTool } from "../tools/memory/index.js";
38
39
  import { createListAvailablePackagesTool } from "../tools/sandbox/list-available-packages.js";
40
+ import { createInspectCapabilityDataTool } from "../tools/capability-data.js";
39
41
  import { createListAvailableRefsTool } from "../tools/sandbox/list-available-refs.js";
40
42
  import { createExecuteAnalysisTool } from "../tools/execute-analysis.js";
41
43
  import { createStartReportSessionTool } from "../tools/start-report-session.js";
42
44
  import { createResolveCitationTool } from "../tools/research/resolve-citation.js";
45
+ import { createWebFetchTool } from "../tools/research/web-fetch.js";
46
+ import { createWebSearchTool } from "../tools/research/web-search.js";
43
47
  /** Canonical agent id — the single source of truth. */
44
48
  export const CONVERSATION_AGENT_ID = "conversation-agent";
45
49
  /** Runaway guard — heavy tool-driving turns need generous headroom. */
@@ -48,18 +52,18 @@ const CONVERSATION_MAX_ITERATIONS = 200;
48
52
  const CONVERSATION_COMPACTION = { turnStartBudget: 150_000, budget: 200_000 };
49
53
  /** Build the conversation `AgentDefinition` with every tool fully dep-bound. */
50
54
  export function createConversationAgent(deps) {
51
- const { provider, pool, embedding, workspaceFs, model, utilityProvider, utilityModel, executeAnalysisWorkflow, runAuthorizer, runLauncher, bioKeys, chrome, resourcePolicy, hostTools, refStorePath, farmLockFile, imagePackagesFile, readPoolInventory, usageRecorder, toolOutputStore, citationResolver, } = deps;
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;
52
56
  const workingMemory = createWorkingMemory(pool);
53
57
  const ncbi = createNcbiTools(bioKeys);
54
- const chemDb = createChemDbTools(bioKeys, { ...(deps.logger ? { logger: deps.logger } : {}) });
58
+ const chemDb = createChemDbTools(bioKeys, { logger: deps.logger });
55
59
  const amass = createAmassTools(bioKeys);
56
60
  // The write path of this agent: coordinates resolve per call from the
57
61
  // session's analysis scope, the write prefix is the analysis root, and
58
62
  // every successful write emits a `write-file` provenance session event.
59
63
  const mutator = createSessionWorkspaceMutator({
60
64
  resolveWorkspaceRoot: deps.resolveWorkspaceRoot,
61
- ...(deps.provenance ? { provenance: deps.provenance } : {}),
62
- ...(deps.logger ? { logger: deps.logger } : {}),
65
+ provenance: deps.provenance,
66
+ logger: deps.logger,
63
67
  });
64
68
  const tools = [
65
69
  // Identifier resolution — the ENSG most other bio tools key off, and the
@@ -79,8 +83,13 @@ export function createConversationAgent(deps) {
79
83
  createResolveCitationTool(citationResolver),
80
84
  // Literature outside PubMed. A question about a method, a model or a
81
85
  // preprint has no MEDLINE record, thus PubMed alone cannot answer it.
82
- createSearchSemanticScholarTool({ ...(bioKeys.semanticScholar === undefined ? {} : { apiKey: bioKeys.semanticScholar }) }),
86
+ createSearchSemanticScholarTool({ apiKey: bioKeys.semanticScholar }),
83
87
  searchArxivTool,
88
+ // The web step of research — the injected web-search engine (the CLI runs
89
+ // SearXNG and binds its realization), then the guarded page fetch that
90
+ // reads what the search found.
91
+ ...(webSearch ? [createWebSearchTool({ engine: webSearch })] : []),
92
+ createWebFetchTool({ toolOutputStore }),
84
93
  // ChEMBL (compounds / drug / mechanism / bioactivity / targets behind one action).
85
94
  chemblTool,
86
95
  // PubChem (compound / crossrefs / assays behind one action).
@@ -108,16 +117,21 @@ export function createConversationAgent(deps) {
108
117
  // and a host that does asks the user to approve the download. Deciding that
109
118
  // blind is how a user gets asked to download something already installed, or
110
119
  // told nothing is missing when it is; this is the only tool that can tell.
111
- createListAvailableRefsTool({ ...(refStorePath ? { refStorePath } : {}) }),
120
+ createListAvailableRefsTool({ refStorePath }),
121
+ // Which datasets a specialist capability cannot run without. `list_available_refs` answers
122
+ // what the store HOLDS; this answers what a capability WANTS, which no prompt may name and
123
+ // only a skill otherwise records — and a skill is read by a step agent, not here. Without
124
+ // it this agent meets an absent source as a dead end and designs around it.
125
+ createInspectCapabilityDataTool({ refStorePath }),
112
126
  // What the STORE holds, pool-scope where the embedder binds the reader:
113
127
  // the ask flow of this agent marks the packages the pool does not hold,
114
128
  // and the farm of a new analysis is empty — a farm view here would read
115
129
  // every pool package as absent. The farm-lock fallback keeps a host
116
130
  // with no pool reader on the old answer.
117
131
  createListAvailablePackagesTool({
118
- ...(farmLockFile ? { farmLockFile } : {}),
119
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
120
- ...(readPoolInventory ? { readPoolInventory } : {}),
132
+ farmLockFile,
133
+ imagePackagesFile,
134
+ readPoolInventory,
121
135
  }),
122
136
  // Execution.
123
137
  createInspectRunTool(pool),
@@ -128,14 +142,15 @@ export function createConversationAgent(deps) {
128
142
  pool,
129
143
  resourcePolicy,
130
144
  usageRecorder,
131
- ...(toolOutputStore ? { toolOutputStore } : {}),
145
+ toolOutputStore,
132
146
  bioKeys,
133
- ...(refStorePath ? { refStorePath } : {}),
134
- ...(farmLockFile ? { farmLockFile } : {}),
135
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
136
- ...(readPoolInventory ? { readPoolInventory } : {}),
137
- ...(deps.logger ? { logger: deps.logger } : {}),
138
- }),
147
+ knowledge: deps.knowledge,
148
+ refStorePath,
149
+ farmLockFile,
150
+ imagePackagesFile,
151
+ readPoolInventory,
152
+ logger: deps.logger,
153
+ }, deps.registerSubAgent),
139
154
  createExecuteAnalysisTool({
140
155
  pool,
141
156
  executeAnalysisWorkflow,
@@ -144,12 +159,16 @@ export function createConversationAgent(deps) {
144
159
  resourcePolicy,
145
160
  utilityProvider,
146
161
  utilityModel,
147
- ...(farmLockFile ? { farmLockFile } : {}),
148
- ...(imagePackagesFile ? { imagePackagesFile } : {}),
149
- ...(readPoolInventory ? { readPoolInventory } : {}),
150
- ...(deps.extendAnalysisFarm ? { extendAnalysisFarm: deps.extendAnalysisFarm } : {}),
151
- ...(deps.logger ? { logger: deps.logger } : {}),
152
- ...(usageRecorder ? { usageRecorder } : {}),
162
+ farmLockFile,
163
+ imagePackagesFile,
164
+ readPoolInventory,
165
+ // The pre-launch pass resolves the declared reference data of a capability against the
166
+ // store. Without this path it would read the CONTAINER path, which no host holds, and
167
+ // refuse every launch of a plan that declares one.
168
+ refStorePath,
169
+ extendAnalysisFarm: deps.extendAnalysisFarm,
170
+ logger: deps.logger,
171
+ usageRecorder,
153
172
  }),
154
173
  // The one report path. The tool starts a report thread as a child of the
155
174
  // conversation, and the user composes the report there with the Report
@@ -158,9 +177,9 @@ export function createConversationAgent(deps) {
158
177
  pool,
159
178
  chrome,
160
179
  anchorSession: deps.anchorReportSession,
161
- ...(deps.eyes ? { eyes: deps.eyes } : {}),
162
- ...(deps.provenance ? { provenance: deps.provenance } : {}),
163
- ...(deps.logger ? { logger: deps.logger } : {}),
180
+ eyes: deps.eyes,
181
+ provenance: deps.provenance,
182
+ logger: deps.logger,
164
183
  }),
165
184
  // Display.
166
185
  showUserTool,
@@ -172,9 +191,9 @@ export function createConversationAgent(deps) {
172
191
  model,
173
192
  bioKeys,
174
193
  usageRecorder,
175
- ...(toolOutputStore ? { toolOutputStore } : {}),
176
- ...(deps.logger ? { logger: deps.logger } : {}),
177
- }),
194
+ toolOutputStore,
195
+ logger: deps.logger,
196
+ }, deps.registerSubAgent),
178
197
  // Workspace semantic search + raw read/grep over the read seam.
179
198
  createWorkspaceSearchTool(pool, embedding),
180
199
  createReadFileTool(workspaceFs),
@@ -188,7 +207,7 @@ export function createConversationAgent(deps) {
188
207
  // a symlink escape stay refused. No sandbox is involved — the mutator
189
208
  // writes host-side, exactly as it does for a sandbox agent.
190
209
  createWriteFileTool({ mutator }),
191
- createEditFileTool({ mutator, workspaceFilesystem: workspaceFs }),
210
+ createEditFileTool({ mutator, workspaceFilesystem: workspaceFs, intents: createEditIntentStore(pool) }),
192
211
  // Working memory.
193
212
  createUpdateWorkingMemoryTool(workingMemory, pool),
194
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,21 +25,28 @@ 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";
32
31
  import type { Logger } from "../../lib/logger.js";
33
32
  import type { CitationResolver } from "../../citations/types.js";
33
+ import { type KnowledgeClient, type TemplateBinding } from "../../tools/knowledge/index.js";
34
34
  /**
35
35
  * Tools every sandbox agent receives — sandbox-environment introspection,
36
- * library docs, and run inspection. Spread into each agent's
37
- * `meta.tools` so planner-facing metadata and the resolved tool record
36
+ * library docs, run inspection, and the knowledge template. Spread into each
37
+ * agent's `meta.tools` so planner-facing metadata and the resolved tool record
38
38
  * stay in sync. Keep minimal — only tools every agent genuinely needs.
39
+ *
40
+ * The knowledge template is here, not on a specialist, because the template
41
+ * follows the step: the planner binds a template to a step from the
42
+ * recommendation and routes that step to whichever specialist owns its data
43
+ * object. The tool acts only on the template the step grounding names, thus
44
+ * a step without a template costs nothing, and it attaches only when the
45
+ * embedder binds a knowledge client (see the registry below).
39
46
  */
40
47
  export declare const BASE_SANDBOX_TOOLS: readonly SandboxToolName[];
41
48
  /** Per-step coordinates the composition root threads through every mutate tool. */
42
- export interface SandboxStepCoords {
49
+ export type SandboxStepCoords = {
43
50
  readonly sandbox: SandboxRef;
44
51
  /** Absolute host root of this analysis's workspace tree (resolved at the workflow body). */
45
52
  readonly workspaceRoot: string;
@@ -48,13 +55,19 @@ export interface SandboxStepCoords {
48
55
  readonly allowedWritePrefix: string;
49
56
  /** Absolute unix-ms deadline of each exec. */
50
57
  readonly deadlineMs: () => number;
51
- }
58
+ /**
59
+ * The plan settings bound to the template of this step, from the durable
60
+ * step input. Reaches `knowledge_template` alone. Absent when the step
61
+ * grounds on no template, or when the host bound nothing.
62
+ */
63
+ readonly templateBinding?: TemplateBinding;
64
+ };
52
65
  /** The shared dependency graph every sandbox agent draws from. */
53
- export interface SandboxAgentDeps extends EnvironmentStorePaths {
66
+ export type SandboxAgentDeps = EnvironmentStorePaths & {
54
67
  /** Operational logging seam; omitted falls back to no-op. */
55
68
  readonly logger?: Logger;
56
69
  readonly provider: ChatProvider;
57
- readonly pool: Pool;
70
+ readonly pool: Querier;
58
71
  readonly sandboxClient: SandboxClient;
59
72
  readonly workspaceFs: WorkspaceFilesystem;
60
73
  /** Embedding provider for in-sandbox semantic `workspace_search`. Omit to skip that tool. */
@@ -76,12 +89,11 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
76
89
  /** Shared resolver. Required only when `meta.tools` declares `resolve_citation`. */
77
90
  readonly citationResolver?: CitationResolver;
78
91
  /**
79
- * Per-run blocker cell (see the harness-sandbox-agents spec). When present, the agent gets a
80
- * `report_blocker` tool that records `{ kind: "blocker", reason }` into it;
81
- * the sandbox-step body reads the blocker from the transcript, falling back to
82
- * 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).
83
95
  */
84
- readonly blockerHolder?: BlockerHolder;
96
+ readonly reportsBlocker?: boolean;
85
97
  /**
86
98
  * When present, the agent declares `submit_file_metadata` from its first request so the
87
99
  * tool list stays stable across continuations; the task masks it, the continuation unmasks it.
@@ -95,9 +107,16 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
95
107
  * and the package-link prompt layer appends. Without it, neither exists.
96
108
  */
97
109
  readonly extendAnalysisFarm?: ExtendAnalysisFarm;
98
- }
110
+ /**
111
+ * The knowledge service client. Bound, an agent that declares
112
+ * `knowledgeTemplate` gets the tool, over the same mutator as `write_file`.
113
+ * Absent, the declaration resolves to nothing, which is the default state
114
+ * of the open-source host and never an error.
115
+ */
116
+ readonly knowledge?: KnowledgeClient;
117
+ };
99
118
  /** Per-agent override for the prompt composition and tool surface. */
100
- export interface SandboxAgentPromptOptions {
119
+ export type SandboxAgentPromptOptions = {
101
120
  /** Append `sandboxAnalysisStepStandardsPrompt`. Defaults to true. */
102
121
  readonly appendAnalysisStepStandards?: boolean;
103
122
  /**
@@ -107,7 +126,7 @@ export interface SandboxAgentPromptOptions {
107
126
  * exists outside container-local `/tmp`. Defaults to false.
108
127
  */
109
128
  readonly readOnly?: boolean;
110
- }
129
+ };
111
130
  /**
112
131
  * Build one sandbox `AgentDefinition`. The system prompt is composed once
113
132
  * (SOUL execution core + agent body + sandbox standards) — no processors, and