@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
@@ -15,20 +15,29 @@ import { z } from "zod";
15
15
  import { scopeResource } from "../../auth/types.js";
16
16
  import { tryQuery } from "../../lib/db-result.js";
17
17
  import { unwrapOrThrow } from "../../lib/result.js";
18
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
18
19
  import { defineTool } from "../define-tool.js";
19
20
  /** pgvector / Postgres "undefined_table" — the index has no rows indexed yet. */
20
21
  const UNDEFINED_TABLE = "42P01";
21
22
  /** True when a captured driver cause is the "undefined_table" SQLSTATE. */
23
+ const UndefinedTableCause = z.object({ code: z.literal(UNDEFINED_TABLE) });
22
24
  function isUndefinedTable(cause) {
23
- return !!cause && typeof cause === "object" && cause.code === UNDEFINED_TABLE;
25
+ return UndefinedTableCause.safeParse(cause).success;
24
26
  }
25
27
  function indexName(analysisId) {
26
- const name = `search_${analysisId.replace(/-/g, "_")}`;
27
- if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name)) {
28
+ const name = `search_${analysisId.replaceAll("-", "_")}`;
29
+ if (!isSqlIdentifier(name)) {
28
30
  throw new Error(`workspaceSearch: unusable analysis id "${analysisId}"`);
29
31
  }
30
32
  return name;
31
33
  }
34
+ function isSqlIdentifier(name) {
35
+ if (name.length === 0)
36
+ return false;
37
+ const isLetterOrUnderscore = (char) => (char >= "a" && char <= "z") || (char >= "A" && char <= "Z") || char === "_";
38
+ const isWordChar = (char) => isLetterOrUnderscore(char) || (char >= "0" && char <= "9");
39
+ return isLetterOrUnderscore(name.charAt(0)) && Array.from(name).every(isWordChar);
40
+ }
32
41
  /** Entry types that address a pattern spanning many files, never a single one. */
33
42
  const PATTERN_TYPES = new Set(["input-group", "input-dimension", "input-kind"]);
34
43
  /**
@@ -39,7 +48,7 @@ const PATTERN_TYPES = new Set(["input-group", "input-dimension", "input-kind"]);
39
48
  * segment. The consumer branches on presence, nothing else.
40
49
  */
41
50
  export function fileTargetOf(id, metadata) {
42
- const meta = metadata && typeof metadata === "object" ? metadata : {};
51
+ const meta = parseUnknownRecord(metadata) ?? {};
43
52
  const type = typeof meta.type === "string" ? meta.type : undefined;
44
53
  if (type !== undefined && PATTERN_TYPES.has(type))
45
54
  return undefined;
@@ -47,8 +56,19 @@ export function fileTargetOf(id, metadata) {
47
56
  return undefined;
48
57
  if (typeof meta.path === "string")
49
58
  return meta.path;
50
- return id.replace(/^\/[^/]+\//, "");
59
+ if (!id.startsWith("/"))
60
+ return id;
61
+ const afterResource = id.indexOf("/", 1);
62
+ return afterResource === -1 ? id : id.slice(afterResource + 1);
51
63
  }
64
+ const WorkspaceSearchInputSchema = z.object({
65
+ query: z.string().min(1).describe("What to search for, in natural language"),
66
+ type: z
67
+ .enum(["input-group", "input-dimension", "input", "input-kind", "output", "summary", "synthesis"])
68
+ .optional()
69
+ .describe('Restrict results to one entry type: "input-group", "input-dimension", "input", "input-kind", "output", "summary", or "synthesis"'),
70
+ limit: z.number().int().min(1).max(50).default(8).describe("Maximum number of results to return"),
71
+ });
52
72
  export function createWorkspaceSearchTool(pool, embedding) {
53
73
  return defineTool({
54
74
  id: "workspace_search",
@@ -68,14 +88,7 @@ export function createWorkspaceSearchTool(pool, embedding) {
68
88
  "metadata, e.g. search input-group for a group's display pattern, then list the tree for " +
69
89
  "its members. Most input files carry no entry of their own — find them through their " +
70
90
  "group and the listing tools.",
71
- inputSchema: z.object({
72
- query: z.string().min(1).describe("What to search for, in natural language"),
73
- type: z
74
- .enum(["input-group", "input-dimension", "input", "input-kind", "output", "summary", "synthesis"])
75
- .optional()
76
- .describe('Restrict results to one entry type: "input-group", "input-dimension", "input", "input-kind", "output", "summary", or "synthesis"'),
77
- limit: z.number().int().min(1).max(50).default(8).describe("Maximum number of results to return"),
78
- }),
91
+ inputSchema: WorkspaceSearchInputSchema,
79
92
  describeCall: ({ query, type }) => (type === undefined ? query : `${query} (${type})`),
80
93
  execute: async ({ query, type, limit }, ctx) => {
81
94
  const [vector] = unwrapOrThrow(await embedding.embed([query], ctx.session));
@@ -108,7 +121,7 @@ export function createWorkspaceSearchTool(pool, embedding) {
108
121
  return {
109
122
  id: r.id,
110
123
  score: r.score,
111
- ...(path !== undefined ? { path } : {}),
124
+ path,
112
125
  metadata: r.metadata,
113
126
  };
114
127
  }),
@@ -7,7 +7,8 @@
7
7
  * declares the input schema, forwards the write, and carries the record of the
8
8
  * write to the fold. `edit_file` rides the same seam.
9
9
  */
10
- import { type WithToolCallRecord } from "../define-tool.js";
10
+ import { z } from "zod";
11
+ import { type Tool, type WithToolCallRecord } from "../define-tool.js";
11
12
  import type { WorkspaceMutator, WriteFileResult, WriteRecord } from "./mutator.js";
12
13
  /** The result of a `write_file` call: a success carries the record of the write for the fold. */
13
14
  type WriteFileToolResult = Exclude<WriteFileResult, {
@@ -15,11 +16,12 @@ type WriteFileToolResult = Exclude<WriteFileResult, {
15
16
  }> | WithToolCallRecord<Extract<WriteFileResult, {
16
17
  status: "ok";
17
18
  }>, WriteRecord>;
18
- export interface WriteFileDeps {
19
+ declare const WriteFileInputSchema: z.ZodObject<{
20
+ path: z.ZodString;
21
+ content: z.ZodString;
22
+ }, z.core.$strip>;
23
+ export type WriteFileDeps = {
19
24
  readonly mutator: WorkspaceMutator;
20
- }
21
- export declare function createWriteFileTool(deps: WriteFileDeps): import("../define-tool.js").Tool<{
22
- path: string;
23
- content: string;
24
- }, WriteFileToolResult>;
25
+ };
26
+ export declare function createWriteFileTool(deps: WriteFileDeps): Tool<z.infer<typeof WriteFileInputSchema>, WriteFileToolResult>;
25
27
  export {};
@@ -22,18 +22,18 @@ import type { MachineBudget, ResourceSpec } from "../config/resource-limits.js";
22
22
  * The minimum shape the scheduler needs from a plan step. Larger workflow-state
23
23
  * schemas are a superset of this, keeping the scheduler decoupled.
24
24
  */
25
- export interface PlanStep {
25
+ export type PlanStep = {
26
26
  readonly id: string;
27
27
  readonly depends_on: readonly string[];
28
- }
28
+ };
29
29
  /** Budget-admission inputs — the snapshotted machine budget from the workflow
30
30
  * input plus each step's plan-declared resources. */
31
- export interface BudgetAdmission {
31
+ export type BudgetAdmission = {
32
32
  readonly budget: MachineBudget;
33
33
  readonly resourcesByStepId: Readonly<Record<string, ResourceSpec>>;
34
- }
34
+ };
35
35
  /** Partition of the dependency-satisfied steps under budget admission. */
36
- export interface ScheduledSteps {
36
+ export type ScheduledSteps = {
37
37
  /** Steps to start now — they fit the remaining budget capacity. */
38
38
  readonly admit: readonly string[];
39
39
  /** Dependency-satisfied steps held until in-flight steps free capacity. */
@@ -41,7 +41,7 @@ export interface ScheduledSteps {
41
41
  /** Steps whose declared resources exceed the budget outright — they could
42
42
  * never be admitted even against an empty budget. */
43
43
  readonly neverFits: readonly string[];
44
- }
44
+ };
45
45
  /** Thrown when the plan DAG contains a dependency cycle. */
46
46
  export declare class CycleError extends Error {
47
47
  readonly involvedSteps: readonly string[];
@@ -80,8 +80,8 @@ export declare function validatePlanDag<S extends PlanStep>(steps: readonly S[])
80
80
  * not fit never blocks a later, smaller one. Determinism holds because every
81
81
  * input derives from the workflow input and checkpointed completion state.
82
82
  */
83
- export declare function scheduleReady<S extends PlanStep>(steps: readonly S[], completedSet: ReadonlySet<string>, startedSet?: ReadonlySet<string>): string[];
84
- export declare function scheduleReady<S extends PlanStep>(steps: readonly S[], completedSet: ReadonlySet<string>, startedSet: ReadonlySet<string>, admission: BudgetAdmission): ScheduledSteps;
83
+ export declare function scheduleReady(steps: readonly PlanStep[], completedSet: ReadonlySet<string>, startedSet?: ReadonlySet<string>): string[];
84
+ export declare function scheduleReady(steps: readonly PlanStep[], completedSet: ReadonlySet<string>, startedSet: ReadonlySet<string>, admission: BudgetAdmission): ScheduledSteps;
85
85
  /**
86
86
  * Compute a depth per step. A step with no dependencies is level 0; a step
87
87
  * with deps is `max(level(dep)) + 1`. Used by the UI for column layout in
@@ -91,4 +91,4 @@ export declare function scheduleReady<S extends PlanStep>(steps: readonly S[], c
91
91
  * Pre-condition: `validatePlanDag` has been called (no cycles, no missing
92
92
  * deps). Behaviour is undefined on an invalid DAG.
93
93
  */
94
- export declare function computeTopologicalLevels<S extends PlanStep>(steps: readonly S[]): Map<string, number>;
94
+ export declare function computeTopologicalLevels(steps: readonly PlanStep[]): Map<string, number>;
@@ -17,6 +17,7 @@
17
17
  * pure means parent recovery replays the same dispatch sequence given the
18
18
  * same persisted child outcomes.
19
19
  */
20
+ import { presentGet, presentLast } from "../lib/present.js";
20
21
  // ── Errors ───────────────────────────────────────────────────────────
21
22
  /** Thrown when the plan DAG contains a dependency cycle. */
22
23
  export class CycleError extends Error {
@@ -83,10 +84,12 @@ function detectCycle(steps) {
83
84
  if (state.get(start.id) === DONE)
84
85
  continue;
85
86
  // Iterative DFS — preserves the in-progress chain so we can report it.
86
- const stack = [{ id: start.id, iter: stepById.get(start.id).depends_on[Symbol.iterator]() }];
87
+ const stack = [
88
+ { id: start.id, iter: presentGet(stepById, start.id, "the step of the cycle walk").depends_on[Symbol.iterator]() },
89
+ ];
87
90
  state.set(start.id, VISITING);
88
91
  while (stack.length > 0) {
89
- const frame = stack[stack.length - 1];
92
+ const frame = presentLast(stack, "the top frame of the cycle walk");
90
93
  const next = frame.iter.next();
91
94
  if (next.done) {
92
95
  state.set(frame.id, DONE);
@@ -105,7 +108,7 @@ function detectCycle(steps) {
105
108
  state.set(childId, VISITING);
106
109
  stack.push({
107
110
  id: childId,
108
- iter: stepById.get(childId).depends_on[Symbol.iterator](),
111
+ iter: presentGet(stepById, childId, "the dependency step of the cycle walk").depends_on[Symbol.iterator](),
109
112
  });
110
113
  }
111
114
  }
@@ -39,64 +39,62 @@
39
39
  * `partial`).
40
40
  * - the halt cascade (cancel in-flight via
41
41
  * `Promise.allSettled(handles.map(h => DBOS.cancelWorkflow(h.workflowID)))`,
42
- * stop scheduling) survives only for a suspension of a child and the
43
- * `neverFits` plan-validation guard.
44
- * 4. Suspension cascade (workflow-suspension spec)
45
- * - a child that suspends sends a typed message on `CHILD_SUSPENDED_TOPIC`
46
- * and cancels itself. The parent reads the kind of the message, never a
47
- * reason string: it cancels the siblings, then self-cancels to
48
- * `CANCELLED` (NOT `ERROR` — ERROR isn't resumable; NOTES #3)
49
- * - a refusal of the `RunCharge.open` gate with the suspend flag suspends
50
- * the run before any step starts
51
- * - a `suspend` error of a synthesis model request suspends the run in
52
- * place of the synthesis failure
53
- * - the run row and the analysis flip to `suspended_insufficient_funds` in
54
- * `collectAndComplete`. The run status is terminal and does not block a
55
- * new run of the plan. The paused parent lands in `CANCELLED`, a
56
- * durably reschedulable state; re-driving it is a future enhancement,
57
- * not yet wired here. The reason of the host rides to the run row, the
58
- * charge close, the metric, and the terminal part, unread.
42
+ * stop scheduling) survives only for the `neverFits` plan-validation guard.
43
+ * 4. Pause (work-pause spec)
44
+ * - a step pauses in its own workflow, and the parent waits for its result as
45
+ * for a step that runs. The other steps go on, and the run row stays
46
+ * `running`
47
+ * - a refusal of the `RunCharge.open` gate with the suspend flag pauses the
48
+ * run before any step starts, and the charge opens again after the resume
49
+ * - a failed model request of the synthesis with a cause of a pause waits in
50
+ * the loop of the synthesizer
59
51
  * 5. `synthesizeFindings` (single sequential block, no sandbox)
60
52
  * 6. `collectAndComplete` (terminal — runs on ALL paths)
61
53
  * - determine final status from completed/cancelled/failed counts
62
- * - update `cortex_runs.status` + `error`, and inside that same step record
63
- * the run outcome metric plus the outcome of every settled step whose
64
- * child never wrote its own terminal row (a cancelled child, or one that
65
- * died before `failStep`)
66
- * - close running charge with matching reason
67
- * - revoke run authorization via the injected `runAuthorizer` seam
54
+ * - update `cortex_runs.status` + `error`. When the write changes the row,
55
+ * the same step emits `run_completed` before the commit, records the run
56
+ * outcome metric plus the outcome of every settled step whose child never
57
+ * wrote its own terminal row (a cancelled child, or one that died before
58
+ * `failStep`), closes the running charge with the matching outcome, and
59
+ * revokes the run authorization through the injected `runAuthorizer`
60
+ * - the write retries with backoff on a failed transaction. When the write is
61
+ * refused, or fails on each attempt, close and revoke in their own steps, then
62
+ * emit `run_completed`. After a failed write the row stays `running`, so the
63
+ * body records its run end as a workflow event for the run canceler
68
64
  * - emit terminal stream part
69
65
  * - WRITES NOTHING to the conversation thread (results are pull-only
70
66
  * via `inspectRun`)
71
67
  */
72
- import type { Pool } from "pg";
68
+ import type { Querier } from "../state/db.js";
73
69
  import type { MachineBudget, ResourceSpec } from "../config/resource-limits.js";
74
70
  import type { RunSession } from "../auth/types.js";
75
71
  import type { RunAuthorizer } from "../execution/run-authorizer.js";
76
72
  import type { Logger } from "../lib/logger.js";
77
73
  import type { UsageRecorder } from "../billing/usage-recorder.js";
78
- import type { CitationResolver } from "../citations/types.js";
74
+ import { type Connectable } from "../lib/db-result.js";
79
75
  import type { SynthesisStatus, UpdateStepExecutionInput } from "../state/index.js";
80
76
  import { type StepBriefing } from "../prompts/briefing.js";
81
77
  import type { WorkingMemoryStore } from "../memory/working-memory.js";
82
78
  import type { AnalysisStep } from "../schemas/workflow-state.js";
83
79
  import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
84
- import type { BioToolKeys } from "../tools/bio/keys.js";
80
+ import type { KnowledgeClient } from "../tools/knowledge/client.js";
81
+ import type { TemplateBinding } from "../tools/knowledge/template.js";
85
82
  import type { ProvenanceSeam } from "../provenance/seam.js";
86
83
  import type { ToolOutputStore } from "../loop/tool-output.js";
84
+ import type { Tool } from "../tools/define-tool.js";
87
85
  import type { RunCharge } from "../billing/run-charge.js";
88
86
  import { type ResolveWorkspaceRoot } from "../workspace/paths.js";
89
87
  import { type PlanStep } from "./execute-analysis-scheduler.js";
90
- import { type SandboxStepInput, type SandboxStepResult } from "./sandbox-step.js";
91
- import { type Suspension } from "./suspension.js";
88
+ import { type WorkPause } from "./pause.js";
89
+ import type { SandboxStepInput, SandboxStepResult } from "./sandbox-step.js";
92
90
  /** Registered child sandbox-step callable the parent's child-dispatch closes over. */
93
91
  type SandboxStepCallable = (input: SandboxStepInput) => Promise<SandboxStepResult>;
94
92
  /** Quick-display finding on the run-completed card. Mirrors the wire schema's RunCompletedFinding. */
95
- export interface RunFinding {
93
+ export type RunFinding = {
96
94
  readonly title: string;
97
95
  readonly confidence: "high" | "medium" | "low";
98
- }
99
- export interface ExecuteAnalysisInput {
96
+ };
97
+ export type ExecuteAnalysisInput = {
100
98
  readonly analysisId: string;
101
99
  /** Plan id — the dedup key for the partial-unique index on cortex_runs. */
102
100
  readonly planId: string;
@@ -145,31 +143,21 @@ export interface ExecuteAnalysisInput {
145
143
  * resume — no DB read, no in-process cache.
146
144
  */
147
145
  readonly runSession: RunSession;
148
- /**
149
- * True when Cortex owns the run-authorization lifecycle and therefore must
150
- * revoke it on the terminal path. The ownership decision is made by the
151
- * `RunAuthorizer` seam at the async edge (`executePlan`).
152
- *
153
- * Optional because a workflow persisted before this field existed (recovered
154
- * across the deploy that added it) deserializes without it; the body defaults
155
- * absent → true, matching the prior Cortex-owned behavior.
156
- */
157
- readonly ownsMandate?: boolean;
158
- }
146
+ };
159
147
  /**
160
148
  * Outcome of the trigger. `running` is what the dedup-collision recovery
161
149
  * path returns — the caller joined an in-flight run, no new workflow was
162
150
  * started. Every other variant is a terminal status the parent reached.
163
151
  */
164
- export type ExecuteAnalysisFinalStatus = "running" | "completed" | "partial" | "failed" | "canceled" | "suspended_insufficient_funds";
165
- export interface ExecuteAnalysisResult {
152
+ export type ExecuteAnalysisFinalStatus = "running" | "completed" | "partial" | "failed" | "canceled";
153
+ export type ExecuteAnalysisResult = {
166
154
  readonly runId: string;
167
155
  readonly workflowId: string;
168
156
  readonly status: ExecuteAnalysisFinalStatus;
169
157
  readonly completedSteps: readonly string[];
170
158
  readonly failedSteps: readonly string[];
171
159
  readonly canceledSteps: readonly string[];
172
- }
160
+ };
173
161
  /**
174
162
  * A step's in-run display state. Wider than the ledger's `StepExecutionStatus`: `queued` is a
175
163
  * scheduler-only condition (dependency-satisfied but held for budget capacity) that never reaches a
@@ -183,14 +171,14 @@ export type StepRuntimeStatus = "pending" | "queued" | "running" | "completed" |
183
171
  * that says what the step is FOR. `durationMs` and `error` appear only once the step has settled
184
172
  * in a way that produced them.
185
173
  */
186
- export interface RunStepObservation {
174
+ export type RunStepObservation = {
187
175
  readonly id: string;
188
176
  readonly name: string;
189
177
  readonly agent: string;
190
178
  readonly status: StepRuntimeStatus;
191
179
  readonly durationMs?: number;
192
180
  readonly error?: string;
193
- }
181
+ };
194
182
  /**
195
183
  * A whole-run snapshot handed to {@link ExecuteAnalysisDeps.observeRun}.
196
184
  *
@@ -205,14 +193,14 @@ export interface RunStepObservation {
205
193
  * computable from `steps` and recorded authoritatively on the run's ledger row; carrying them here
206
194
  * would mint a second source that can disagree with the ledger a host also reads.
207
195
  */
208
- export interface RunObservation {
196
+ export type RunObservation = {
209
197
  readonly runId: string;
210
198
  readonly analysisId: string;
211
199
  /** `running` for every mid-flight snapshot; the derived terminal status on the last one. */
212
200
  readonly status: ExecuteAnalysisFinalStatus;
213
201
  /** Every plan step, including ones that have not started — never a delta. */
214
202
  readonly steps: readonly RunStepObservation[];
215
- }
203
+ };
216
204
  /**
217
205
  * Construction-time deps for the parent workflow. The order-of-operations is
218
206
  * the body's own: it brackets the run, dispatches children, and synthesizes
@@ -221,10 +209,10 @@ export interface RunObservation {
221
209
  * registered sandbox-step callable — plus the construction inputs (provider,
222
210
  * embedder, model, keys, roots) the in-body synthesis needs.
223
211
  */
224
- export interface ExecuteAnalysisDeps {
212
+ export type ExecuteAnalysisDeps = {
225
213
  /** Operational logging seam; omitted falls back to no-op. */
226
214
  readonly logger?: Logger;
227
- readonly pool: Pool;
215
+ readonly pool: Querier & Connectable;
228
216
  /** Chat provider for the in-body literature-grounded synthesis. */
229
217
  readonly provider: ChatProvider;
230
218
  /** Write-side embedder for indexing the run synthesis. */
@@ -235,12 +223,12 @@ export interface ExecuteAnalysisDeps {
235
223
  readonly resolveWorkspaceRoot: ResolveWorkspaceRoot;
236
224
  /** Model id for the synthesizer agent loop. */
237
225
  readonly synthesisModel: string;
238
- /** API keys for the bio/chem tools the embedded literature reviewer uses. */
239
- readonly bioKeys: BioToolKeys;
240
- /** Shared resolver for the literature reviewer used during synthesis. */
241
- readonly citationResolver: CitationResolver;
226
+ /** The `literature_reviewer` tool of the synthesis. The runtime registers its sub-agent one time. */
227
+ readonly literatureReviewer: Tool;
242
228
  /** Run-level billing-bracket seam (managed: external bracket; OSS: no-op). */
243
229
  readonly runCharge: RunCharge;
230
+ /** The delays of the timer of an outage. Absent: the default of the pause. */
231
+ readonly pauseRetryDelaysMs?: readonly number[];
244
232
  /** Run-authorization seam — the terminal path revokes through `revoke`. */
245
233
  readonly runAuthorizer: RunAuthorizer;
246
234
  /**
@@ -256,16 +244,27 @@ export interface ExecuteAnalysisDeps {
256
244
  * carries the goal and the constraints as they are at the dispatch of that step.
257
245
  */
258
246
  readonly workingMemory: WorkingMemoryStore;
247
+ /**
248
+ * The knowledge client of the composition, when the embedder binds one.
249
+ * The seed composition reads the contract of the template a grounded step
250
+ * renders through it, and binds the plan settings to that contract.
251
+ * Absent, the seed says the contract was not retrieved, and the step agent
252
+ * learns the slots from the render answers alone.
253
+ */
254
+ readonly knowledge?: KnowledgeClient;
259
255
  /**
260
256
  * The provenance seam of the composition. The body reads its run emit member,
261
257
  * and it reads no other member.
262
258
  *
263
- * The emit is deliberately invoked directly in the workflow body (NOT wrapped
264
- * in `DBOS.runStep`) so that body re-execution on DBOS recovery re-fires it —
265
- * a cached step would suppress the recovery re-emission, defeating the
266
- * point. Idempotency is the consumer's job, achieved via the deterministic
267
- * identifiers the events carry, not via step caching. Every call site is
268
- * guarded so a throwing observer never fails the run.
259
+ * `run_started` and `step_completed` are emitted directly in the workflow body
260
+ * (NOT wrapped in `DBOS.runStep`) so that body re-execution on DBOS recovery
261
+ * re-fires them — a cached step would suppress the recovery re-emission.
262
+ * `run_completed` is emitted by the won `persist-final-status` step, or by the
263
+ * body after that step when the step did not emit in this execution (a refused
264
+ * or failed write, or a won step served from the DBOS cache), so a recovery
265
+ * replay still fires it. Idempotency is the consumer's job, achieved via the
266
+ * deterministic identifiers the events carry, not via step caching. Every call
267
+ * site is guarded so a throwing observer never fails the run.
269
268
  *
270
269
  * Events arrive with the run's `RunSession` from durable workflow input — a
271
270
  * persisting realization needs its credential, scope, and identity.
@@ -292,7 +291,7 @@ export interface ExecuteAnalysisDeps {
292
291
  * throwing observer never fails the run.
293
292
  */
294
293
  readonly observeRun?: (observation: RunObservation) => void;
295
- }
294
+ };
296
295
  /**
297
296
  * Project the sandbox-step input handed to each child. The parent owns the
298
297
  * level computation and the seed (`prompt`, composed by `composeStepSeed` at
@@ -305,8 +304,8 @@ export declare function buildChildInput(args: {
305
304
  stepId: string;
306
305
  level: number;
307
306
  runId: string;
308
- workflowId: string;
309
307
  prompt: string;
308
+ templateBinding?: TemplateBinding;
310
309
  }): Omit<SandboxStepInput, "runSession">;
311
310
  /**
312
311
  * Compose one step's seed — the user-content message its agent opens on.
@@ -317,17 +316,26 @@ export declare function buildChildInput(args: {
317
316
  * rendered any earlier (at plan submission, say) cannot mention them, and the
318
317
  * agent is left to rediscover its own upstream.
319
318
  *
320
- * REPLAY: the caller wraps this in a `DBOS.runStep`, so the composed string is
321
- * checkpointed and a replay returns it verbatim — the DB and disk are not read
322
- * again and cannot drift the seed under a recovered run. Never call it
323
- * unwrapped from the workflow body.
319
+ * The template contract of a grounded step is read with the package, and the
320
+ * plan settings are bound to it: the seed describes the binding, and the child
321
+ * input carries it, from one checkpoint. The child fetches nothing.
322
+ *
323
+ * REPLAY: the caller wraps this in a `DBOS.runStep`, so the composed seed is
324
+ * checkpointed and a replay returns it verbatim — the DB, the disk, and the
325
+ * knowledge service are not read again and cannot drift the seed under a
326
+ * recovered run. Never call it unwrapped from the workflow body.
324
327
  */
325
328
  export declare function composeStepSeed(args: {
326
329
  input: ExecuteAnalysisInput;
327
330
  stepId: string;
328
331
  runId: string;
329
332
  deps: ExecuteAnalysisDeps;
330
- }): Promise<string>;
333
+ }): Promise<StepSeed>;
334
+ /** What `gatherStepPackage` gives: the data of the seed, and the binding of the plan settings when one holds. */
335
+ export type StepPackage = {
336
+ readonly briefing: StepBriefing;
337
+ readonly templateBinding?: TemplateBinding;
338
+ };
331
339
  /**
332
340
  * Do every read of one step's package and give the data its seed is rendered
333
341
  * from. All reads live here, so `composeStepBriefing` stays a pure renderer.
@@ -340,6 +348,9 @@ export declare function composeStepSeed(args: {
340
348
  * so an edit during a run reaches each later step, and two steps of one run
341
349
  * can carry different copies.
342
350
  *
351
+ * The contract of the template a grounded step renders is read here too, from
352
+ * the knowledge client, and the plan settings are bound to it.
353
+ *
343
354
  * A read failure throws (house rules): a swallowed error would be frozen into
344
355
  * the checkpointed seed and served to every replay of this step.
345
356
  */
@@ -348,27 +359,38 @@ export declare function gatherStepPackage(args: {
348
359
  stepId: string;
349
360
  runId: string;
350
361
  deps: ExecuteAnalysisDeps;
351
- }): Promise<StepBriefing>;
362
+ }): Promise<StepPackage>;
363
+ /**
364
+ * What `composeStepSeed` checkpoints: the seed, and the binding of the plan
365
+ * settings to the template of the step when the contract was retrieved and
366
+ * its served version is the version the plan names. JSON-serialisable, as a
367
+ * durable step result must be.
368
+ */
369
+ export type StepSeed = {
370
+ readonly prompt: string;
371
+ readonly templateBinding?: TemplateBinding;
372
+ };
352
373
  /**
353
374
  * Project a classified synthesis outcome onto the run-phase `synthesis` ledger
354
375
  * row's terminal update (see the run-synthesis-outcome spec). The blocker keeps
355
376
  * its reason in `blockedReason` — an honest agent-declared blocker, not an
356
377
  * error — and a failure carries the same reason string
357
378
  * `persist-synthesis-outcome` writes to `cortex_runs.synthesis_reason`, so the
358
- * two ledgers cannot disagree about why synthesis died. A suspension is not an
359
- * outcome: the row is canceled, as the row of a suspended step. Exported for
360
- * the projection tests (the `buildChildInput` pattern).
379
+ * two ledgers cannot disagree about why synthesis died. Exported for the
380
+ * projection tests (the `buildChildInput` pattern).
361
381
  */
362
382
  export declare function synthesisRowUpdate(outcome: {
363
383
  status: SynthesisStatus;
364
384
  reason: string | null;
365
- } | Suspension, durationMs: number): UpdateStepExecutionInput;
385
+ }, durationMs: number): UpdateStepExecutionInput;
366
386
  /**
367
387
  * Run-level literature-grounded synthesis (no sandbox). Returns the
368
388
  * quick-display findings for the run-completed card; empty when synthesis is
369
- * skipped or produced no synthesizable content. A genuine failure re-throws
370
- * inside the caller's `DBOS.runStep`, failing the run (D10). Exported so
371
- * integration tests can drive the wired synthesis without a full parent body.
389
+ * skipped or produced no synthesizable content. A genuine failure re-throws,
390
+ * failing the run (D10). It runs in the body of the run workflow: each read and
391
+ * write is a step, each model call is a step, and each reviewer call starts a
392
+ * child workflow. Exported so integration tests can drive the wired synthesis
393
+ * without a full parent body.
372
394
  */
373
395
  export declare function synthesizeFindings(args: {
374
396
  analysisId: string;
@@ -376,6 +398,8 @@ export declare function synthesizeFindings(args: {
376
398
  completedSteps: readonly string[];
377
399
  session: RunSession;
378
400
  deps: ExecuteAnalysisDeps;
401
+ /** The pause of the run. The body of the run gives it, thus the synthesizer waits in place. */
402
+ pause?: WorkPause;
379
403
  }): Promise<{
380
404
  findings: readonly RunFinding[];
381
405
  synthesisStatus: Exclude<SynthesisStatus, "failed">;