@inflexa-ai/harness 0.45.1 → 0.46.2

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 (790) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +9 -3
  3. package/dist/agents/conversation-agent.js +34 -33
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +12 -14
  9. package/dist/agents/sandbox/shared.js +18 -12
  10. package/dist/agents/sandbox/types.d.ts +4 -4
  11. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  12. package/dist/agents/sandbox/validate-skills.js +3 -1
  13. package/dist/agents/sandbox-catalog.d.ts +2 -2
  14. package/dist/agents/sandbox-catalog.js +3 -3
  15. package/dist/agents/system-prompt.d.ts +2 -2
  16. package/dist/app/chat-turn-workflow.d.ts +114 -0
  17. package/dist/app/chat-turn-workflow.js +306 -0
  18. package/dist/app/chat-turn.d.ts +85 -57
  19. package/dist/app/chat-turn.js +123 -100
  20. package/dist/app/data-profile-orientation.js +10 -8
  21. package/dist/app/data-profile-view.d.ts +4 -4
  22. package/dist/app/data-profile-view.js +9 -8
  23. package/dist/app/in-process-turn.d.ts +42 -0
  24. package/dist/app/in-process-turn.js +139 -0
  25. package/dist/app/message-assembly.d.ts +10 -4
  26. package/dist/app/message-assembly.js +13 -8
  27. package/dist/app/report-session-runtime.d.ts +4 -4
  28. package/dist/app/report-session-runtime.js +36 -21
  29. package/dist/app/spawn-report-session.d.ts +33 -28
  30. package/dist/app/spawn-report-session.js +25 -40
  31. package/dist/app/synthesize-run.d.ts +22 -16
  32. package/dist/app/synthesize-run.js +41 -35
  33. package/dist/app/work.d.ts +96 -0
  34. package/dist/app/work.js +147 -0
  35. package/dist/auth/local-auth-context.d.ts +1 -3
  36. package/dist/auth/local-auth-context.js +1 -3
  37. package/dist/auth/local-run-authorizer.d.ts +1 -1
  38. package/dist/auth/local-run-authorizer.js +5 -3
  39. package/dist/auth/types.d.ts +26 -26
  40. package/dist/billing/cached-resolver.d.ts +4 -4
  41. package/dist/billing/run-charge.d.ts +5 -8
  42. package/dist/billing/run-charge.js +2 -2
  43. package/dist/billing/usage-recorder.d.ts +9 -9
  44. package/dist/citations/aggregate.js +1 -1
  45. package/dist/citations/clients/arxiv.d.ts +2 -2
  46. package/dist/citations/clients/arxiv.js +12 -4
  47. package/dist/citations/clients/common.js +4 -2
  48. package/dist/citations/clients/crossref.d.ts +2 -2
  49. package/dist/citations/clients/crossref.js +37 -37
  50. package/dist/citations/clients/doi-registry.js +15 -16
  51. package/dist/citations/clients/pubmed.d.ts +2 -2
  52. package/dist/citations/clients/pubmed.js +20 -13
  53. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  54. package/dist/citations/clients/semantic-scholar.js +9 -9
  55. package/dist/citations/compare.js +2 -2
  56. package/dist/citations/match.d.ts +2 -2
  57. package/dist/citations/match.js +12 -7
  58. package/dist/citations/normalize.js +35 -26
  59. package/dist/citations/plan.js +6 -2
  60. package/dist/citations/resolve.d.ts +6 -6
  61. package/dist/citations/resolve.js +34 -25
  62. package/dist/citations/types.d.ts +77 -77
  63. package/dist/config/environment-stores.d.ts +6 -6
  64. package/dist/config/resource-limits.js +1 -3
  65. package/dist/contracts/analogy-report.d.ts +7 -7
  66. package/dist/contracts/analogy-report.js +2 -2
  67. package/dist/contracts/chat-events.d.ts +38 -24
  68. package/dist/contracts/chat-frame.d.ts +15 -5
  69. package/dist/contracts/chat-frame.js +64 -41
  70. package/dist/contracts/chat-parts.d.ts +130 -67
  71. package/dist/contracts/chat-parts.js +1 -0
  72. package/dist/contracts/content-url.js +16 -2
  73. package/dist/contracts/data-profile.d.ts +38 -38
  74. package/dist/contracts/index.d.ts +2 -2
  75. package/dist/contracts/index.js +1 -1
  76. package/dist/contracts/message.d.ts +6 -6
  77. package/dist/contracts/organ-system.d.ts +11 -11
  78. package/dist/contracts/part-registry.d.ts +5 -4
  79. package/dist/contracts/part-registry.js +5 -0
  80. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  81. package/dist/contracts/profile-vocabulary.js +10 -3
  82. package/dist/contracts/report-blocks.d.ts +329 -329
  83. package/dist/contracts/report-reference.d.ts +105 -81
  84. package/dist/contracts/report-reference.js +30 -13
  85. package/dist/contracts/schemas/chat-events.d.ts +30 -16
  86. package/dist/contracts/schemas/chat-events.js +15 -6
  87. package/dist/contracts/schemas/chat-parts.d.ts +175 -102
  88. package/dist/contracts/schemas/chat-parts.js +33 -7
  89. package/dist/contracts/severity.d.ts +1 -1
  90. package/dist/contracts/structure-source.d.ts +3 -3
  91. package/dist/contracts/structure-source.js +6 -2
  92. package/dist/contracts/subagent-activity.d.ts +2 -2
  93. package/dist/contracts/subagent-activity.js +5 -3
  94. package/dist/contracts/usage.d.ts +2 -2
  95. package/dist/data/safety-panel-schema.d.ts +25 -25
  96. package/dist/data/safety-panel-schema.js +13 -4
  97. package/dist/execution/artifact-metadata.d.ts +23 -15
  98. package/dist/execution/artifact-metadata.js +33 -10
  99. package/dist/execution/artifact-record.d.ts +2 -2
  100. package/dist/execution/artifact-registration.d.ts +5 -5
  101. package/dist/execution/artifact-registry.d.ts +8 -8
  102. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  103. package/dist/execution/dbos-run-launcher.js +58 -4
  104. package/dist/execution/dbos-workflow-purger.d.ts +5 -6
  105. package/dist/execution/dbos-workflow-purger.js +8 -7
  106. package/dist/execution/input-signature.d.ts +2 -2
  107. package/dist/execution/post-step-pipeline.d.ts +9 -9
  108. package/dist/execution/post-step-pipeline.js +1 -1
  109. package/dist/execution/post-step.js +2 -2
  110. package/dist/execution/reconcile-manifest.d.ts +4 -4
  111. package/dist/execution/reconcile-manifest.js +3 -2
  112. package/dist/execution/run-authorizer.d.ts +46 -37
  113. package/dist/execution/run-authorizer.js +8 -8
  114. package/dist/execution/run-canceler.d.ts +7 -7
  115. package/dist/execution/run-canceler.js +14 -7
  116. package/dist/execution/run-end-record.d.ts +2 -3
  117. package/dist/execution/run-event-parts.d.ts +0 -8
  118. package/dist/execution/run-event-parts.js +29 -24
  119. package/dist/execution/run-event-stream.d.ts +8 -8
  120. package/dist/execution/run-event-stream.js +3 -4
  121. package/dist/execution/run-launcher.d.ts +4 -4
  122. package/dist/execution/run-synthesis.d.ts +49 -48
  123. package/dist/execution/run-synthesis.js +96 -255
  124. package/dist/execution/staged-input.d.ts +2 -2
  125. package/dist/execution/step-summary.d.ts +6 -6
  126. package/dist/execution/step-summary.js +4 -8
  127. package/dist/execution/topo-sort.js +4 -3
  128. package/dist/execution/workflow-purger.d.ts +2 -2
  129. package/dist/index.d.ts +17 -20
  130. package/dist/index.js +25 -36
  131. package/dist/input-sanitization.js +9 -2
  132. package/dist/input-scan/clustering.d.ts +6 -6
  133. package/dist/input-scan/clustering.js +11 -5
  134. package/dist/input-scan/companions.js +3 -2
  135. package/dist/input-scan/detect-sets.d.ts +2 -2
  136. package/dist/input-scan/detect-sets.js +25 -21
  137. package/dist/input-scan/enrich.d.ts +6 -6
  138. package/dist/input-scan/enrich.js +29 -12
  139. package/dist/input-scan/formats.d.ts +2 -2
  140. package/dist/input-scan/formats.js +8 -2
  141. package/dist/input-scan/markers.d.ts +2 -2
  142. package/dist/input-scan/markers.js +14 -5
  143. package/dist/input-scan/menu.d.ts +10 -10
  144. package/dist/input-scan/menu.js +0 -0
  145. package/dist/input-scan/quarantine.d.ts +2 -2
  146. package/dist/input-scan/quarantine.js +23 -18
  147. package/dist/input-scan/readout-budget.d.ts +2 -2
  148. package/dist/input-scan/readout-budget.js +1 -1
  149. package/dist/input-scan/readout.d.ts +2 -2
  150. package/dist/input-scan/readout.js +47 -34
  151. package/dist/input-scan/scan.d.ts +2 -2
  152. package/dist/input-scan/scan.js +7 -5
  153. package/dist/input-scan/set-types.d.ts +28 -28
  154. package/dist/input-scan/shapes.d.ts +4 -4
  155. package/dist/input-scan/shapes.js +0 -0
  156. package/dist/input-scan/templates.d.ts +10 -10
  157. package/dist/input-scan/templates.js +30 -22
  158. package/dist/input-scan/tokens.d.ts +6 -4
  159. package/dist/input-scan/tokens.js +100 -38
  160. package/dist/input-scan/types.d.ts +22 -22
  161. package/dist/lib/async-utils.d.ts +3 -7
  162. package/dist/lib/async-utils.js +5 -9
  163. package/dist/lib/cache.js +1 -1
  164. package/dist/lib/chrome.d.ts +46 -6
  165. package/dist/lib/console-logger.js +2 -2
  166. package/dist/lib/db-result.d.ts +22 -6
  167. package/dist/lib/db-result.js +9 -13
  168. package/dist/lib/eyes.d.ts +4 -4
  169. package/dist/lib/eyes.js +1 -1
  170. package/dist/lib/fs-helpers.js +18 -6
  171. package/dist/lib/fs-result.d.ts +1 -0
  172. package/dist/lib/fs-result.js +5 -6
  173. package/dist/lib/hooks.d.ts +32 -7
  174. package/dist/lib/hooks.js +22 -3
  175. package/dist/lib/host-concurrency.js +3 -2
  176. package/dist/lib/logger.d.ts +2 -2
  177. package/dist/lib/logger.js +2 -1
  178. package/dist/lib/metrics.d.ts +1 -1
  179. package/dist/lib/null-proto.d.ts +6 -0
  180. package/dist/lib/null-proto.js +17 -0
  181. package/dist/lib/otel-spans.d.ts +1 -1
  182. package/dist/lib/otel-spans.js +9 -5
  183. package/dist/lib/otel.d.ts +4 -2
  184. package/dist/lib/otel.js +10 -2
  185. package/dist/lib/page-capture.d.ts +8 -8
  186. package/dist/lib/page-capture.js +9 -4
  187. package/dist/lib/parse-json.d.ts +5 -0
  188. package/dist/lib/parse-json.js +12 -0
  189. package/dist/lib/present.d.ts +12 -0
  190. package/dist/lib/present.js +39 -0
  191. package/dist/lib/rate-limit.d.ts +4 -4
  192. package/dist/lib/rate-limit.js +12 -13
  193. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  194. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  195. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  196. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  197. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  198. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  199. package/dist/lib/regulatory-corpus.d.ts +10 -10
  200. package/dist/lib/regulatory-corpus.js +3 -1
  201. package/dist/lib/result.d.ts +10 -11
  202. package/dist/lib/result.js +15 -13
  203. package/dist/lib/storage.d.ts +2 -2
  204. package/dist/lib/test/async-iterable.d.ts +9 -0
  205. package/dist/lib/test/async-iterable.js +28 -0
  206. package/dist/lib/test/request-url.d.ts +5 -0
  207. package/dist/lib/test/request-url.js +7 -0
  208. package/dist/lib/test/result-assert.d.ts +12 -0
  209. package/dist/lib/test/result-assert.js +17 -0
  210. package/dist/lib/test/text-shapes.d.ts +24 -0
  211. package/dist/lib/test/text-shapes.js +63 -0
  212. package/dist/lib/text.d.ts +22 -0
  213. package/dist/lib/text.js +68 -0
  214. package/dist/lib/thrown.d.ts +18 -0
  215. package/dist/lib/thrown.js +30 -0
  216. package/dist/lib/unknown-array.d.ts +6 -0
  217. package/dist/lib/unknown-array.js +8 -0
  218. package/dist/lib/unknown-containers.d.ts +14 -0
  219. package/dist/lib/unknown-containers.js +17 -0
  220. package/dist/lib/unknown-text.d.ts +8 -0
  221. package/dist/lib/unknown-text.js +28 -0
  222. package/dist/lib/zod-issue-shape.d.ts +1 -1
  223. package/dist/lib/zod-issue-shape.js +31 -31
  224. package/dist/lib/zod-issues.d.ts +3 -3
  225. package/dist/lib/zod-issues.js +30 -17
  226. package/dist/literature/sources/arxiv.d.ts +6 -6
  227. package/dist/literature/sources/arxiv.js +92 -35
  228. package/dist/literature/sources/http.d.ts +2 -2
  229. package/dist/literature/sources/http.js +16 -15
  230. package/dist/literature/sources/pubmed.d.ts +16 -16
  231. package/dist/literature/sources/pubmed.js +96 -61
  232. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  233. package/dist/literature/sources/semantic-scholar.js +22 -13
  234. package/dist/loop/accounting.d.ts +63 -0
  235. package/dist/loop/accounting.js +141 -0
  236. package/dist/loop/call-policy.d.ts +73 -0
  237. package/dist/loop/call-policy.js +109 -0
  238. package/dist/loop/chat-stream.d.ts +62 -0
  239. package/dist/loop/chat-stream.js +237 -0
  240. package/dist/loop/compaction.d.ts +9 -9
  241. package/dist/loop/compaction.js +1 -1
  242. package/dist/loop/metrics.d.ts +12 -15
  243. package/dist/loop/metrics.js +14 -26
  244. package/dist/loop/run-loop.d.ts +233 -0
  245. package/dist/loop/run-loop.js +770 -0
  246. package/dist/loop/sub-agent.d.ts +61 -0
  247. package/dist/loop/sub-agent.js +160 -0
  248. package/dist/loop/tool-adapter.d.ts +98 -0
  249. package/dist/loop/tool-adapter.js +364 -0
  250. package/dist/loop/tool-detail.d.ts +1 -1
  251. package/dist/loop/tool-detail.js +6 -5
  252. package/dist/loop/tool-outcome.d.ts +1 -1
  253. package/dist/loop/tool-output.d.ts +4 -4
  254. package/dist/loop/tool-output.js +2 -2
  255. package/dist/loop/turn-credentials.d.ts +39 -0
  256. package/dist/loop/turn-credentials.js +90 -0
  257. package/dist/loop/types.d.ts +29 -38
  258. package/dist/loop/types.js +2 -7
  259. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  260. package/dist/memory/ai-sdk-message-storage.js +13 -11
  261. package/dist/memory/card-builders.d.ts +14 -14
  262. package/dist/memory/card-builders.js +19 -15
  263. package/dist/memory/conversation-display-recorder.d.ts +22 -4
  264. package/dist/memory/conversation-display-recorder.js +43 -24
  265. package/dist/memory/conversation-display-replay.js +3 -2
  266. package/dist/memory/conversation-display-storage.d.ts +15 -7
  267. package/dist/memory/conversation-display-storage.js +141 -36
  268. package/dist/memory/conversation-view.d.ts +4 -4
  269. package/dist/memory/conversation-view.js +5 -4
  270. package/dist/memory/count-tokens.js +10 -8
  271. package/dist/memory/derive-thread-title.d.ts +0 -13
  272. package/dist/memory/derive-thread-title.js +2 -1
  273. package/dist/memory/message-backfill.d.ts +12 -5
  274. package/dist/memory/message-backfill.js +5 -3
  275. package/dist/memory/thread-history.d.ts +36 -21
  276. package/dist/memory/thread-history.js +78 -54
  277. package/dist/memory/thread-store.d.ts +26 -17
  278. package/dist/memory/thread-store.js +15 -9
  279. package/dist/memory/tool-call-integrity.d.ts +2 -2
  280. package/dist/memory/tool-call-integrity.js +4 -3
  281. package/dist/memory/working-memory.d.ts +16 -12
  282. package/dist/memory/working-memory.js +72 -61
  283. package/dist/prompts/briefing.d.ts +12 -12
  284. package/dist/prompts/briefing.js +1 -1
  285. package/dist/prompts/synthesis-agent.d.ts +1 -1
  286. package/dist/prompts/synthesis-agent.js +6 -14
  287. package/dist/provenance/collector.d.ts +6 -6
  288. package/dist/provenance/collector.js +15 -8
  289. package/dist/provenance/exec-frame.d.ts +2 -2
  290. package/dist/provenance/exec-frame.js +6 -1
  291. package/dist/provenance/seam.d.ts +1 -4
  292. package/dist/provenance/types.d.ts +6 -6
  293. package/dist/providers/ai-sdk.d.ts +113 -62
  294. package/dist/providers/ai-sdk.js +283 -518
  295. package/dist/providers/embedding.d.ts +2 -2
  296. package/dist/providers/embedding.js +1 -1
  297. package/dist/providers/errors.d.ts +22 -2
  298. package/dist/providers/errors.js +98 -50
  299. package/dist/providers/prompt-cache.d.ts +8 -8
  300. package/dist/providers/prompt-cache.js +13 -11
  301. package/dist/providers/reasoning.d.ts +2 -2
  302. package/dist/providers/reasoning.js +2 -2
  303. package/dist/providers/request-headers.js +12 -3
  304. package/dist/providers/types.d.ts +55 -94
  305. package/dist/reference-data/catalog.d.ts +2 -15
  306. package/dist/reference-data/catalog.js +25 -8
  307. package/dist/reference-data/receipt.d.ts +2 -2
  308. package/dist/report-model/assert-rules.js +1 -1
  309. package/dist/report-model/authoring-grammar.d.ts +211 -233
  310. package/dist/report-model/block-walk.d.ts +10 -10
  311. package/dist/report-model/block-walk.js +2 -0
  312. package/dist/report-model/draft-finish.d.ts +8 -8
  313. package/dist/report-model/draft-finish.js +1 -1
  314. package/dist/report-model/draft-hash.js +8 -7
  315. package/dist/report-model/draft-operations.d.ts +22 -10
  316. package/dist/report-model/draft-operations.js +48 -30
  317. package/dist/report-model/draft-read.d.ts +19 -7
  318. package/dist/report-model/draft-read.js +16 -6
  319. package/dist/report-model/draft.d.ts +844 -2
  320. package/dist/report-model/draft.js +3 -1
  321. package/dist/report-model/fixture-resolver.js +39 -16
  322. package/dist/report-model/pin-snapshot.d.ts +2 -2
  323. package/dist/report-model/pin-snapshot.js +15 -15
  324. package/dist/report-model/production-resolver.d.ts +18 -18
  325. package/dist/report-model/production-resolver.js +50 -42
  326. package/dist/report-model/reference-resolver.d.ts +26 -10
  327. package/dist/report-model/reference-resolver.js +68 -5
  328. package/dist/report-model/reference-stamp.js +30 -38
  329. package/dist/report-model/structural-validation.js +12 -4
  330. package/dist/report-model/validate.d.ts +7 -7
  331. package/dist/report-model/validate.js +6 -6
  332. package/dist/report-render/assets.d.ts +2 -2
  333. package/dist/report-render/assets.js +27 -3
  334. package/dist/report-render/chart-export.d.ts +10 -2
  335. package/dist/report-render/chart-export.js +37 -11
  336. package/dist/report-render/chart-presets.d.ts +8 -8
  337. package/dist/report-render/chart-presets.js +3 -3
  338. package/dist/report-render/chart-renderers.d.ts +23 -16
  339. package/dist/report-render/chart-renderers.js +74 -53
  340. package/dist/report-render/chart-toolbox.d.ts +2 -2
  341. package/dist/report-render/chart-toolbox.js +7 -6
  342. package/dist/report-render/chart.d.ts +15 -16
  343. package/dist/report-render/chart.js +369 -252
  344. package/dist/report-render/design.d.ts +36 -297
  345. package/dist/report-render/design.js +0 -12
  346. package/dist/report-render/figures/common.d.ts +12 -12
  347. package/dist/report-render/figures/common.js +42 -31
  348. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  349. package/dist/report-render/figures/dendrogram.js +10 -10
  350. package/dist/report-render/figures/dense.js +15 -8
  351. package/dist/report-render/figures/dotplot.js +46 -33
  352. package/dist/report-render/figures/embedding.js +52 -43
  353. package/dist/report-render/figures/equal-units.d.ts +10 -10
  354. package/dist/report-render/figures/equal-units.js +27 -27
  355. package/dist/report-render/figures/forest.js +9 -7
  356. package/dist/report-render/figures/gsea.js +21 -11
  357. package/dist/report-render/figures/heatmap.js +13 -9
  358. package/dist/report-render/figures/index.d.ts +10 -10
  359. package/dist/report-render/figures/index.js +4 -2
  360. package/dist/report-render/figures/km.js +10 -9
  361. package/dist/report-render/figures/label-room.d.ts +12 -12
  362. package/dist/report-render/figures/label-room.js +7 -2
  363. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  364. package/dist/report-render/figures/locuszoom.js +59 -31
  365. package/dist/report-render/figures/lollipop.js +3 -2
  366. package/dist/report-render/figures/ma.js +8 -4
  367. package/dist/report-render/figures/manhattan.d.ts +1 -2
  368. package/dist/report-render/figures/manhattan.js +52 -34
  369. package/dist/report-render/figures/oncoprint.js +4 -5
  370. package/dist/report-render/figures/pca.js +25 -11
  371. package/dist/report-render/figures/qq.js +20 -9
  372. package/dist/report-render/figures/roc.js +1 -1
  373. package/dist/report-render/figures/sankey.d.ts +2 -2
  374. package/dist/report-render/figures/sankey.js +11 -10
  375. package/dist/report-render/figures/upset.d.ts +6 -6
  376. package/dist/report-render/figures/upset.js +7 -4
  377. package/dist/report-render/figures/volcano.js +12 -10
  378. package/dist/report-render/hybrid-svg.d.ts +4 -4
  379. package/dist/report-render/hybrid-svg.js +7 -5
  380. package/dist/report-render/number-format.d.ts +4 -4
  381. package/dist/report-render/number-format.js +62 -27
  382. package/dist/report-render/page.js +2 -1
  383. package/dist/report-render/provenance-data.d.ts +2 -2
  384. package/dist/report-render/references.d.ts +4 -4
  385. package/dist/report-render/render.d.ts +2 -2
  386. package/dist/report-render/render.js +10 -11
  387. package/dist/report-render/script-json.js +1 -1
  388. package/dist/report-render/table-data.d.ts +6 -6
  389. package/dist/report-render/test/options.d.ts +49 -0
  390. package/dist/report-render/test/options.js +143 -0
  391. package/dist/report-render/test/page-function.d.ts +19 -0
  392. package/dist/report-render/test/page-function.js +33 -0
  393. package/dist/report-render/types.d.ts +10 -10
  394. package/dist/report-render/value-bridge.d.ts +4 -4
  395. package/dist/report-render/value-bridge.js +27 -14
  396. package/dist/report-render/views/chart-view.d.ts +2 -2
  397. package/dist/report-render/views/chart-view.js +2 -2
  398. package/dist/report-render/views/lineage.d.ts +6 -6
  399. package/dist/report-render/views/lineage.js +2 -0
  400. package/dist/report-render/views/page-view.d.ts +2 -2
  401. package/dist/report-render/views/page-view.js +1 -0
  402. package/dist/report-render/views/prose.js +25 -8
  403. package/dist/report-render/views/references-view.js +12 -1
  404. package/dist/report-render/views/values.js +1 -1
  405. package/dist/runtime/assemble.d.ts +53 -26
  406. package/dist/runtime/assemble.js +103 -56
  407. package/dist/runtime/boot.d.ts +8 -7
  408. package/dist/runtime/boot.js +1 -1
  409. package/dist/runtime/connection-budget.d.ts +6 -6
  410. package/dist/runtime/connection-budget.js +1 -1
  411. package/dist/runtime/dbos.d.ts +29 -19
  412. package/dist/runtime/dbos.js +35 -20
  413. package/dist/runtime/result-serialization.js +18 -5
  414. package/dist/runtime/shutdown.d.ts +2 -2
  415. package/dist/sandbox/client.d.ts +7 -3
  416. package/dist/sandbox/cpu-files.d.ts +2 -2
  417. package/dist/sandbox/cpu-files.js +21 -4
  418. package/dist/sandbox/create-sandbox.d.ts +7 -8
  419. package/dist/sandbox/create-sandbox.js +6 -12
  420. package/dist/sandbox/docker-client.d.ts +48 -3
  421. package/dist/sandbox/docker-client.js +10 -6
  422. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  423. package/dist/sandbox/exec-outcome.d.ts +2 -2
  424. package/dist/sandbox/exec-outcome.js +1 -1
  425. package/dist/sandbox/exec.d.ts +10 -6
  426. package/dist/sandbox/exec.js +27 -12
  427. package/dist/sandbox/execution-id.js +14 -6
  428. package/dist/sandbox/farm.d.ts +2 -2
  429. package/dist/sandbox/farm.js +22 -27
  430. package/dist/sandbox/identity.d.ts +7 -0
  431. package/dist/sandbox/identity.js +14 -3
  432. package/dist/sandbox/image-packages.js +15 -27
  433. package/dist/sandbox/k8s-client.d.ts +35 -8
  434. package/dist/sandbox/k8s-client.js +6 -5
  435. package/dist/sandbox/labels.js +1 -0
  436. package/dist/sandbox/liveness.js +3 -1
  437. package/dist/sandbox/mount-plan.d.ts +10 -10
  438. package/dist/sandbox/mount-plan.js +13 -14
  439. package/dist/sandbox/notification-sweep.d.ts +4 -4
  440. package/dist/sandbox/notification-sweep.js +4 -7
  441. package/dist/sandbox/package-identity.d.ts +6 -13
  442. package/dist/sandbox/package-identity.js +46 -28
  443. package/dist/sandbox/reaper.d.ts +10 -10
  444. package/dist/sandbox/reaper.js +4 -6
  445. package/dist/sandbox/sandbox-error.d.ts +2 -9
  446. package/dist/sandbox/sandbox-error.js +21 -8
  447. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  448. package/dist/sandbox/sandbox-step-translate.js +22 -8
  449. package/dist/sandbox/step-sandbox.d.ts +47 -0
  450. package/dist/sandbox/step-sandbox.js +53 -0
  451. package/dist/sandbox/types.d.ts +18 -19
  452. package/dist/sandbox/types.js +1 -1
  453. package/dist/schemas/artifact-manifest.d.ts +4 -4
  454. package/dist/schemas/data-profile-schemas.d.ts +343 -298
  455. package/dist/schemas/file-metadata.js +2 -4
  456. package/dist/schemas/plan-schemas.d.ts +31 -31
  457. package/dist/schemas/run-synthesis.d.ts +95 -26
  458. package/dist/schemas/run-synthesis.js +3 -1
  459. package/dist/schemas/validate-plan.d.ts +4 -4
  460. package/dist/schemas/validate-plan.js +17 -5
  461. package/dist/schemas/workflow-state.d.ts +19 -19
  462. package/dist/schemas/workflow-state.js +2 -2
  463. package/dist/state/active-turns.d.ts +36 -0
  464. package/dist/state/active-turns.js +67 -0
  465. package/dist/state/analyses-metrics.d.ts +8 -8
  466. package/dist/state/analyses-metrics.js +4 -4
  467. package/dist/state/analyses.d.ts +0 -14
  468. package/dist/state/analyses.js +0 -32
  469. package/dist/state/artifacts.d.ts +32 -19
  470. package/dist/state/artifacts.js +28 -5
  471. package/dist/state/data-profile.d.ts +2 -2
  472. package/dist/state/db.d.ts +12 -2
  473. package/dist/state/db.js +5 -0
  474. package/dist/state/edit-intents.d.ts +4 -0
  475. package/dist/state/edit-intents.js +71 -0
  476. package/dist/state/index.d.ts +4 -4
  477. package/dist/state/index.js +2 -2
  478. package/dist/state/init.d.ts +2 -1
  479. package/dist/state/init.js +5 -2
  480. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  481. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  482. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  483. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  484. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  485. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  486. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  487. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  488. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  489. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  490. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  491. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  492. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  493. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  494. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  495. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  496. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  497. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  498. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  499. package/dist/state/migrations/index.js +18 -0
  500. package/dist/state/paused-work.d.ts +52 -0
  501. package/dist/state/paused-work.js +105 -0
  502. package/dist/state/plans.d.ts +27 -8
  503. package/dist/state/plans.js +14 -11
  504. package/dist/state/purge-analysis.d.ts +6 -6
  505. package/dist/state/purge-analysis.js +10 -2
  506. package/dist/state/report-session-state.d.ts +43 -18
  507. package/dist/state/report-session-state.js +43 -4
  508. package/dist/state/report-versions.d.ts +16 -11
  509. package/dist/state/report-versions.js +5 -3
  510. package/dist/state/runs.d.ts +30 -19
  511. package/dist/state/runs.js +43 -51
  512. package/dist/state/schema.d.ts +18 -21
  513. package/dist/state/schema.js +4 -5
  514. package/dist/state/snapshot-parse.d.ts +2 -2
  515. package/dist/state/snapshot-parse.js +14 -8
  516. package/dist/state/step-executions.d.ts +20 -8
  517. package/dist/state/step-executions.js +6 -4
  518. package/dist/state/tool-outputs.d.ts +2 -2
  519. package/dist/state/tool-outputs.js +2 -1
  520. package/dist/state/vector-store.d.ts +16 -16
  521. package/dist/state/vector-store.js +11 -7
  522. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  523. package/dist/tasks/data-profile-absorb.js +21 -16
  524. package/dist/tasks/data-profile-activity.d.ts +5 -5
  525. package/dist/tasks/data-profile-activity.js +5 -5
  526. package/dist/tasks/data-profile-index.d.ts +4 -4
  527. package/dist/tasks/data-profile-index.js +32 -17
  528. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  529. package/dist/tasks/data-profile-resolve.js +88 -62
  530. package/dist/tasks/data-profile.d.ts +40 -31
  531. package/dist/tasks/data-profile.js +138 -95
  532. package/dist/tasks/extract-values.d.ts +26 -79
  533. package/dist/tasks/extract-values.js +48 -108
  534. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  535. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  536. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  537. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  538. package/dist/testing.d.ts +62 -0
  539. package/dist/testing.js +101 -0
  540. package/dist/tools/ad-hoc-router.d.ts +9 -9
  541. package/dist/tools/ad-hoc-router.js +65 -52
  542. package/dist/tools/analysis-invocation.d.ts +7 -0
  543. package/dist/tools/analysis-invocation.js +29 -5
  544. package/dist/tools/approval/contract.d.ts +8 -52
  545. package/dist/tools/approval/contract.js +7 -36
  546. package/dist/tools/approval/gateway.d.ts +27 -28
  547. package/dist/tools/approval/gateway.js +33 -130
  548. package/dist/tools/approval/queries.d.ts +6 -11
  549. package/dist/tools/approval/queries.js +43 -29
  550. package/dist/tools/approval/uuidv7.js +2 -2
  551. package/dist/tools/bio/chembl.d.ts +3 -3
  552. package/dist/tools/bio/chembl.js +10 -0
  553. package/dist/tools/bio/comptox.d.ts +25 -8
  554. package/dist/tools/bio/comptox.js +4 -2
  555. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  556. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  557. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  558. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  559. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  560. package/dist/tools/bio/keys.d.ts +2 -2
  561. package/dist/tools/bio/keys.js +3 -3
  562. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  563. package/dist/tools/bio/lookup-annotation.js +3 -0
  564. package/dist/tools/bio/opentargets.d.ts +1 -1
  565. package/dist/tools/bio/opentargets.js +6 -0
  566. package/dist/tools/bio/pubchem.d.ts +2 -2
  567. package/dist/tools/bio/pubchem.js +6 -0
  568. package/dist/tools/bio/pubmed.d.ts +26 -16
  569. package/dist/tools/bio/pubmed.js +9 -3
  570. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  571. package/dist/tools/bio/search-clinical-trials.js +5 -1
  572. package/dist/tools/bio/search-faers.d.ts +2 -2
  573. package/dist/tools/bio/search-faers.js +1 -1
  574. package/dist/tools/bio/search-gene.d.ts +2 -2
  575. package/dist/tools/bio/search-gene.js +1 -0
  576. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  577. package/dist/tools/bio/search-geo-datasets.js +5 -5
  578. package/dist/tools/bio/search-interactions.d.ts +1 -1
  579. package/dist/tools/bio/search-patents.d.ts +28 -22
  580. package/dist/tools/bio/search-patents.js +20 -17
  581. package/dist/tools/bio/search-protein.d.ts +2 -2
  582. package/dist/tools/bio/search-protein.js +1 -1
  583. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  584. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  585. package/dist/tools/bio/target-safety.d.ts +8 -8
  586. package/dist/tools/bio/target-safety.js +11 -6
  587. package/dist/tools/capability-data.d.ts +9 -5
  588. package/dist/tools/capability-data.js +2 -1
  589. package/dist/tools/define-tool.d.ts +55 -46
  590. package/dist/tools/define-tool.js +39 -27
  591. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  592. package/dist/tools/display/normalize-echart-spec.js +51 -27
  593. package/dist/tools/display/show-user.d.ts +2 -2
  594. package/dist/tools/display/show-user.js +1 -1
  595. package/dist/tools/execute-analysis.d.ts +19 -10
  596. package/dist/tools/execute-analysis.js +83 -62
  597. package/dist/tools/knowledge/check.d.ts +166 -44
  598. package/dist/tools/knowledge/check.js +5 -3
  599. package/dist/tools/knowledge/client.d.ts +31 -62
  600. package/dist/tools/knowledge/client.js +44 -27
  601. package/dist/tools/knowledge/environment.d.ts +6 -6
  602. package/dist/tools/knowledge/environment.js +18 -7
  603. package/dist/tools/knowledge/index.d.ts +2 -2
  604. package/dist/tools/knowledge/index.js +9 -9
  605. package/dist/tools/knowledge/local-slots.d.ts +4 -4
  606. package/dist/tools/knowledge/local-slots.js +11 -4
  607. package/dist/tools/knowledge/pin.d.ts +2 -2
  608. package/dist/tools/knowledge/recommend.d.ts +20 -45
  609. package/dist/tools/knowledge/recommend.js +27 -19
  610. package/dist/tools/knowledge/situation.d.ts +40 -40
  611. package/dist/tools/knowledge/situation.js +2 -9
  612. package/dist/tools/knowledge/skeleton.d.ts +4 -4
  613. package/dist/tools/knowledge/skeleton.js +10 -11
  614. package/dist/tools/knowledge/template.d.ts +20 -18
  615. package/dist/tools/knowledge/template.js +38 -32
  616. package/dist/tools/lib/alphafold-client.js +2 -1
  617. package/dist/tools/lib/amass-client.d.ts +28 -28
  618. package/dist/tools/lib/amass-client.js +20 -10
  619. package/dist/tools/lib/api-utils.d.ts +13 -3
  620. package/dist/tools/lib/api-utils.js +17 -3
  621. package/dist/tools/lib/bgee-client.d.ts +6 -6
  622. package/dist/tools/lib/bgee-client.js +16 -10
  623. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  624. package/dist/tools/lib/cbioportal-client.js +9 -8
  625. package/dist/tools/lib/chembl-client.d.ts +14 -14
  626. package/dist/tools/lib/chembl-client.js +11 -4
  627. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  628. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  629. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  630. package/dist/tools/lib/clinical-trials-client.js +10 -10
  631. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  632. package/dist/tools/lib/clinvar-client.js +6 -6
  633. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  634. package/dist/tools/lib/ctx-ops.js +13 -10
  635. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  636. package/dist/tools/lib/dgidb-client.js +10 -12
  637. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  638. package/dist/tools/lib/ema-client.d.ts +2 -2
  639. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  640. package/dist/tools/lib/ensembl-client.js +5 -4
  641. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  642. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  643. package/dist/tools/lib/html-text.d.ts +6 -0
  644. package/dist/tools/lib/html-text.js +9 -0
  645. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  646. package/dist/tools/lib/identifier-resolver.js +7 -3
  647. package/dist/tools/lib/impc-client.d.ts +8 -8
  648. package/dist/tools/lib/impc-client.js +46 -35
  649. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  650. package/dist/tools/lib/iuphar-client.js +7 -16
  651. package/dist/tools/lib/monarch-client.d.ts +4 -4
  652. package/dist/tools/lib/openfda-client.d.ts +22 -22
  653. package/dist/tools/lib/openfda-client.js +23 -22
  654. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  655. package/dist/tools/lib/pathway-client.d.ts +4 -4
  656. package/dist/tools/lib/pathway-client.js +15 -19
  657. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  658. package/dist/tools/lib/pharmgkb-client.js +1 -1
  659. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  660. package/dist/tools/lib/protein-family-modality.js +0 -2
  661. package/dist/tools/lib/protein-family-normalize.js +7 -0
  662. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  663. package/dist/tools/lib/pubchem-client.js +1 -0
  664. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  665. package/dist/tools/lib/pubchem-ops.js +8 -0
  666. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  667. package/dist/tools/lib/pubmed-client.js +1 -1
  668. package/dist/tools/lib/string-client.d.ts +6 -6
  669. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  670. package/dist/tools/lib/uniprot-client.js +5 -1
  671. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  672. package/dist/tools/memory/update-working-memory.js +21 -3
  673. package/dist/tools/read-tool-output.js +8 -2
  674. package/dist/tools/registry.d.ts +2 -2
  675. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  676. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  677. package/dist/tools/report-session/derive-table.d.ts +19 -59
  678. package/dist/tools/report-session/derive-table.js +120 -122
  679. package/dist/tools/report-session/examine-page.d.ts +6 -6
  680. package/dist/tools/report-session/examine-page.js +14 -12
  681. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  682. package/dist/tools/report-session/list-artifacts.js +5 -5
  683. package/dist/tools/report-session/page-faults.d.ts +6 -6
  684. package/dist/tools/report-session/page-faults.js +3 -1
  685. package/dist/tools/report-session/preview-report.d.ts +4 -3
  686. package/dist/tools/report-session/preview-report.js +26 -7
  687. package/dist/tools/report-session/record-version.d.ts +9 -4
  688. package/dist/tools/report-session/record-version.js +16 -9
  689. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  690. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  691. package/dist/tools/research/generate-analogy-report.js +80 -76
  692. package/dist/tools/research/generate-plan.d.ts +16 -16
  693. package/dist/tools/research/generate-plan.js +410 -374
  694. package/dist/tools/research/guarded-address.js +3 -2
  695. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  696. package/dist/tools/research/inspect-data-profile.js +26 -25
  697. package/dist/tools/research/inspect-run.d.ts +54 -27
  698. package/dist/tools/research/inspect-run.js +50 -40
  699. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  700. package/dist/tools/research/literature-reviewer.js +29 -28
  701. package/dist/tools/research/search-arxiv.d.ts +1 -1
  702. package/dist/tools/research/search-arxiv.js +1 -1
  703. package/dist/tools/research/search-github-repos.d.ts +10 -7
  704. package/dist/tools/research/search-github-repos.js +25 -22
  705. package/dist/tools/research/search-semantic-scholar.js +1 -1
  706. package/dist/tools/research/searxng-engine.d.ts +2 -2
  707. package/dist/tools/research/searxng-engine.js +6 -4
  708. package/dist/tools/research/web-fetch.d.ts +24 -21
  709. package/dist/tools/research/web-fetch.js +65 -74
  710. package/dist/tools/research/web-search.d.ts +26 -17
  711. package/dist/tools/research/web-search.js +26 -21
  712. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  713. package/dist/tools/sandbox/link-packages.js +11 -8
  714. package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
  715. package/dist/tools/sandbox/list-available-packages.js +31 -25
  716. package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
  717. package/dist/tools/sandbox/list-available-refs.js +61 -36
  718. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  719. package/dist/tools/sandbox/report-blocker.js +23 -73
  720. package/dist/tools/sandbox/skills.d.ts +16 -12
  721. package/dist/tools/sandbox/skills.js +16 -12
  722. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  723. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  724. package/dist/tools/start-report-session.d.ts +13 -5
  725. package/dist/tools/start-report-session.js +35 -8
  726. package/dist/tools/terminal-text.d.ts +5 -2
  727. package/dist/tools/terminal-text.js +35 -3
  728. package/dist/tools/workspace/decision-record.d.ts +4 -4
  729. package/dist/tools/workspace/decision-record.js +23 -13
  730. package/dist/tools/workspace/edit-file.d.ts +59 -20
  731. package/dist/tools/workspace/edit-file.js +81 -16
  732. package/dist/tools/workspace/execute-command.d.ts +15 -13
  733. package/dist/tools/workspace/execute-command.js +11 -9
  734. package/dist/tools/workspace/file-stat.d.ts +6 -3
  735. package/dist/tools/workspace/grep.d.ts +10 -7
  736. package/dist/tools/workspace/grep.js +9 -3
  737. package/dist/tools/workspace/list-files.d.ts +6 -3
  738. package/dist/tools/workspace/mutator.d.ts +28 -15
  739. package/dist/tools/workspace/mutator.js +107 -53
  740. package/dist/tools/workspace/read-file.d.ts +8 -5
  741. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  742. package/dist/tools/workspace/result-bounds.js +4 -2
  743. package/dist/tools/workspace/run-exec.d.ts +2 -2
  744. package/dist/tools/workspace/run-exec.js +3 -3
  745. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  746. package/dist/tools/workspace/scan-inputs.js +17 -5
  747. package/dist/tools/workspace/show-file.d.ts +1 -1
  748. package/dist/tools/workspace/show-file.js +2 -1
  749. package/dist/tools/workspace/show-plan.d.ts +8 -5
  750. package/dist/tools/workspace/show-plan.js +9 -8
  751. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  752. package/dist/tools/workspace/workspace-search.js +27 -14
  753. package/dist/tools/workspace/write-file.d.ts +9 -7
  754. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  755. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  756. package/dist/workflows/execute-analysis.d.ts +46 -62
  757. package/dist/workflows/execute-analysis.js +137 -219
  758. package/dist/workflows/pause.d.ts +71 -0
  759. package/dist/workflows/pause.js +173 -0
  760. package/dist/workflows/sandbox-step.d.ts +38 -61
  761. package/dist/workflows/sandbox-step.js +99 -106
  762. package/dist/workflows/test/sql-writes.d.ts +21 -0
  763. package/dist/workflows/test/sql-writes.js +36 -0
  764. package/dist/workspace/filesystem.d.ts +6 -6
  765. package/dist/workspace/filesystem.js +10 -8
  766. package/dist/workspace/paths.d.ts +1 -1
  767. package/dist/workspace/paths.js +15 -4
  768. package/dist/workspace/search-config.d.ts +2 -2
  769. package/dist/workspace/search-config.js +1 -1
  770. package/package.json +21 -22
  771. package/dist/loop/call-guard.d.ts +0 -50
  772. package/dist/loop/call-guard.js +0 -90
  773. package/dist/loop/continue-agent.d.ts +0 -40
  774. package/dist/loop/continue-agent.js +0 -38
  775. package/dist/loop/genai-spans.d.ts +0 -47
  776. package/dist/loop/genai-spans.js +0 -134
  777. package/dist/loop/run-agent.d.ts +0 -245
  778. package/dist/loop/run-agent.js +0 -1124
  779. package/dist/loop/run-step.d.ts +0 -29
  780. package/dist/loop/run-step.js +0 -34
  781. package/dist/loop/run-to-terminal.d.ts +0 -66
  782. package/dist/loop/run-to-terminal.js +0 -93
  783. package/dist/loop/tool-mask.d.ts +0 -23
  784. package/dist/loop/tool-mask.js +0 -46
  785. package/dist/providers/streaming-chat.d.ts +0 -32
  786. package/dist/providers/streaming-chat.js +0 -91
  787. package/dist/tasks/derive-table-exec.d.ts +0 -54
  788. package/dist/tasks/derive-table-exec.js +0 -86
  789. package/dist/workflows/suspension.d.ts +0 -32
  790. package/dist/workflows/suspension.js +0 -38
@@ -24,7 +24,9 @@
24
24
  * — an accession of that corpus — marks the others `not_applicable` rather
25
25
  * than sending them a query they cannot read.
26
26
  */
27
+ import { z } from "zod";
27
28
  import type { Logger } from "../../lib/logger.js";
29
+ import { type Tool } from "../define-tool.js";
28
30
  import { type MutationFrequency } from "../lib/cbioportal-client.js";
29
31
  import { type ClinvarVariant } from "../lib/clinvar-client.js";
30
32
  import { type Gda } from "../lib/disgenet-client.js";
@@ -39,14 +41,68 @@ type QueryType = (typeof QUERY_TYPES)[number];
39
41
  * normal states the caller must be able to tell apart from genuine no-data —
40
42
  * otherwise an unkeyed DisGeNET reads as "no genetic support".
41
43
  */
42
- interface SourceOutcome {
44
+ type SourceOutcome = {
43
45
  source: Source;
44
46
  status: "ok" | "no_data" | "unavailable" | "not_applicable";
45
47
  returned: number;
46
48
  totalFound?: number;
47
49
  detail?: string;
48
- }
49
- interface GeneDiseaseEvidenceOutput {
50
+ };
51
+ declare const inputSchema: z.ZodObject<{
52
+ query: z.ZodString;
53
+ queryType: z.ZodEnum<{
54
+ clinvar_accession: "clinvar_accession";
55
+ disease: "disease";
56
+ gene: "gene";
57
+ gwas_study: "gwas_study";
58
+ variant: "variant";
59
+ }>;
60
+ sources: z.ZodOptional<z.ZodArray<z.ZodEnum<{
61
+ cbioportal: "cbioportal";
62
+ clinvar: "clinvar";
63
+ disgenet: "disgenet";
64
+ gwas: "gwas";
65
+ }>>>;
66
+ limit: z.ZodOptional<z.ZodNumber>;
67
+ pValueThreshold: z.ZodOptional<z.ZodNumber>;
68
+ minScore: z.ZodOptional<z.ZodNumber>;
69
+ disgenetSource: z.ZodOptional<z.ZodEnum<{
70
+ ALL: "ALL";
71
+ BIOBANK: "BIOBANK";
72
+ CHEMBL: "CHEMBL";
73
+ CLINGEN: "CLINGEN";
74
+ CLINICALTRIALS: "CLINICALTRIALS";
75
+ CLINPGX: "CLINPGX";
76
+ CLINVAR: "CLINVAR";
77
+ CURATED: "CURATED";
78
+ FINNGEN: "FINNGEN";
79
+ GENCC: "GENCC";
80
+ GWASCAT: "GWASCAT";
81
+ HPO: "HPO";
82
+ INFERRED: "INFERRED";
83
+ MGD_HUMAN: "MGD_HUMAN";
84
+ MGD_MOUSE: "MGD_MOUSE";
85
+ MODELS: "MODELS";
86
+ ORPHANET: "ORPHANET";
87
+ PHEWASCAT: "PHEWASCAT";
88
+ PSYGENET: "PSYGENET";
89
+ RGD_HUMAN: "RGD_HUMAN";
90
+ RGD_RAT: "RGD_RAT";
91
+ TEXTMINING_HUMAN: "TEXTMINING_HUMAN";
92
+ TEXTMINING_MODELS: "TEXTMINING_MODELS";
93
+ UKBIOBANK: "UKBIOBANK";
94
+ UNIPROT: "UNIPROT";
95
+ }>>;
96
+ clinicalSignificance: z.ZodOptional<z.ZodEnum<{
97
+ benign: "benign";
98
+ "likely-benign": "likely-benign";
99
+ "likely-pathogenic": "likely-pathogenic";
100
+ pathogenic: "pathogenic";
101
+ uncertain: "uncertain";
102
+ }>>;
103
+ informativeOnly: z.ZodOptional<z.ZodBoolean>;
104
+ }, z.core.$strip>;
105
+ type GeneDiseaseEvidenceOutput = {
50
106
  query: string;
51
107
  queryType: QueryType;
52
108
  perSource: SourceOutcome[];
@@ -54,20 +110,10 @@ interface GeneDiseaseEvidenceOutput {
54
110
  disgenet?: Gda[];
55
111
  clinvar?: ClinvarVariant[];
56
112
  cbioportal?: MutationFrequency[];
57
- }
113
+ };
58
114
  export declare function createGeneDiseaseEvidenceTool(deps: {
59
115
  ncbiApiKey?: string;
60
116
  disgenetApiKey: string;
61
117
  logger?: Logger;
62
- }): import("../define-tool.js").Tool<{
63
- query: string;
64
- queryType: "gene" | "disease" | "variant" | "gwas_study" | "clinvar_accession";
65
- sources?: ("clinvar" | "gwas" | "disgenet" | "cbioportal")[] | undefined;
66
- limit?: number | undefined;
67
- pValueThreshold?: number | undefined;
68
- minScore?: number | undefined;
69
- disgenetSource?: "ALL" | "BIOBANK" | "CHEMBL" | "CLINICALTRIALS" | "CLINGEN" | "CLINPGX" | "CLINVAR" | "CURATED" | "FINNGEN" | "GENCC" | "GWASCAT" | "HPO" | "INFERRED" | "MGD_HUMAN" | "MGD_MOUSE" | "MODELS" | "ORPHANET" | "PHEWASCAT" | "PSYGENET" | "RGD_HUMAN" | "RGD_RAT" | "TEXTMINING_HUMAN" | "TEXTMINING_MODELS" | "UKBIOBANK" | "UNIPROT" | undefined;
70
- clinicalSignificance?: "pathogenic" | "likely-pathogenic" | "benign" | "likely-benign" | "uncertain" | undefined;
71
- informativeOnly?: boolean | undefined;
72
- }, GeneDiseaseEvidenceOutput>;
118
+ }): Tool<z.infer<typeof inputSchema>, GeneDiseaseEvidenceOutput>;
73
119
  export {};
@@ -24,6 +24,8 @@
24
24
  * — an accession of that corpus — marks the others `not_applicable` rather
25
25
  * than sending them a query they cannot read.
26
26
  */
27
+ import { errorMessageOf } from "../../lib/thrown.js";
28
+ import { textOf } from "../../lib/unknown-text.js";
27
29
  import { ok } from "neverthrow";
28
30
  import { z } from "zod";
29
31
  import { defineTool } from "../define-tool.js";
@@ -134,7 +136,7 @@ async function runSource(source, fetch) {
134
136
  source,
135
137
  status: records.length > 0 ? "ok" : "no_data",
136
138
  returned: records.length,
137
- ...(totalFound !== undefined ? { totalFound } : {}),
139
+ totalFound,
138
140
  },
139
141
  records,
140
142
  };
@@ -145,7 +147,7 @@ async function runSource(source, fetch) {
145
147
  source,
146
148
  status: "unavailable",
147
149
  returned: 0,
148
- detail: error instanceof Error ? error.message : String(error),
150
+ detail: errorMessageOf(error) ?? textOf(error),
149
151
  },
150
152
  records: [],
151
153
  };
@@ -190,9 +192,11 @@ export function createGeneDiseaseEvidenceTool(deps) {
190
192
  selected.includes("gwas")
191
193
  ? runSource("gwas", async () => {
192
194
  const searchType = GWAS_SEARCH_TYPES[input.queryType];
195
+ if (searchType === undefined)
196
+ throw new Error(`the gwas source has no search type for "${input.queryType}"`);
193
197
  const res = await searchGwasCatalog(input.query, searchType, {
194
198
  limit,
195
- ...(input.pValueThreshold !== undefined ? { pValueThreshold: input.pValueThreshold } : {}),
199
+ pValueThreshold: input.pValueThreshold,
196
200
  });
197
201
  return { records: res.associations, totalFound: res.totalFound };
198
202
  })
@@ -203,8 +207,8 @@ export function createGeneDiseaseEvidenceTool(deps) {
203
207
  throw new Error("DISGENET_API_KEY is not configured");
204
208
  return await searchDisgenet(deps.disgenetApiKey, input.query, input.queryType === "gene" ? "gene" : "disease", {
205
209
  limit,
206
- ...(input.minScore !== undefined ? { minScore: input.minScore } : {}),
207
- ...(input.disgenetSource !== undefined ? { source: input.disgenetSource } : {}),
210
+ minScore: input.minScore,
211
+ source: input.disgenetSource,
208
212
  }, deps.logger);
209
213
  })
210
214
  : null,
@@ -212,7 +216,7 @@ export function createGeneDiseaseEvidenceTool(deps) {
212
216
  ? runSource("clinvar", async () => {
213
217
  const res = await searchClinvar(deps.ncbiApiKey, input.query, {
214
218
  limit,
215
- ...(input.clinicalSignificance !== undefined ? { clinicalSignificance: input.clinicalSignificance } : {}),
219
+ clinicalSignificance: input.clinicalSignificance,
216
220
  });
217
221
  const variants = (input.informativeOnly ?? true) ? filterInformative(res.variants) : res.variants;
218
222
  return { records: variants, totalFound: res.totalFound };
@@ -17,7 +17,7 @@
17
17
  import { type SupportedSpecies, type TissueRow } from "../lib/bgee-client.js";
18
18
  import { type MpTerm, type ViabilityCall, type ViabilityCategory } from "../lib/impc-client.js";
19
19
  import { type MonarchPhenotypeAssociation } from "../lib/monarch-client.js";
20
- interface BoundedSpeciesEntry {
20
+ type BoundedSpeciesEntry = {
21
21
  species: SupportedSpecies;
22
22
  taxonId: number;
23
23
  ensemblId: string;
@@ -26,19 +26,19 @@ interface BoundedSpeciesEntry {
26
26
  tissueCount: number;
27
27
  /** Tissues that passed `minRank`, before `tissueLimit`. */
28
28
  tissuesAboveMinRank: number;
29
- }
30
- interface ExpressionHalf {
29
+ };
30
+ type ExpressionHalf = {
31
31
  humanEnsemblId: string | null;
32
32
  bySpecies: BoundedSpeciesEntry[];
33
33
  notFound: string[];
34
- }
34
+ };
35
35
  /**
36
36
  * One curated human phenotype. The HPO ancestor closure of the source record
37
37
  * is dropped here: it exists so a dossier collector can resolve an organ system
38
38
  * by identifier, and it runs to hundreds of ids that a reader never uses.
39
39
  */
40
40
  type HumanPhenotypeTerm = Omit<MonarchPhenotypeAssociation, "ancestorIds">;
41
- interface HumanPhenotypeHalf {
41
+ type HumanPhenotypeHalf = {
42
42
  /** The curie Monarch was queried by, e.g. `HGNC:1100`; null when the symbol did not anchor on HGNC. */
43
43
  geneCurie: string | null;
44
44
  hpoTerms: HumanPhenotypeTerm[];
@@ -46,8 +46,8 @@ interface HumanPhenotypeHalf {
46
46
  phenotypeCount: number;
47
47
  /** True when `phenotypeLimit` trimmed `hpoTerms`; `phenotypeCount` is the real total. */
48
48
  phenotypesTrimmed: boolean;
49
- }
50
- interface KnockoutHalf {
49
+ };
50
+ type KnockoutHalf = {
51
51
  mouseMarkerSymbol: string | null;
52
52
  mgiAccessionId: string | null;
53
53
  viability: ViabilityCategory;
@@ -58,7 +58,7 @@ interface KnockoutHalf {
58
58
  phenotypeCount: number;
59
59
  /** True when `phenotypeLimit` trimmed `mpTerms`; `phenotypeCount` is the real total. */
60
60
  phenotypesTrimmed: boolean;
61
- }
61
+ };
62
62
  type PreclinicalOutput = {
63
63
  geneSymbol: string;
64
64
  expression?: ExpressionHalf;
@@ -67,9 +67,9 @@ type PreclinicalOutput = {
67
67
  };
68
68
  export declare const genePreclinicalProfileTool: import("../define-tool.js").Tool<{
69
69
  geneSymbol: string;
70
- include?: ("phenotypes" | "expression" | "knockout")[] | undefined;
71
- species?: ("homo_sapiens" | "mus_musculus" | "rattus_norvegicus" | "canis_lupus_familiaris" | "macaca_mulatta")[] | undefined;
72
- minRank?: "low" | "medium" | "high" | "absent" | undefined;
70
+ include?: ("expression" | "knockout" | "phenotypes")[] | undefined;
71
+ species?: ("canis_lupus_familiaris" | "homo_sapiens" | "macaca_mulatta" | "mus_musculus" | "rattus_norvegicus")[] | undefined;
72
+ minRank?: "absent" | "high" | "low" | "medium" | undefined;
73
73
  tissueLimit?: number | undefined;
74
74
  phenotypeLimit?: number | undefined;
75
75
  }, PreclinicalOutput>;
@@ -7,7 +7,7 @@ import type { Tool } from "../define-tool.js";
7
7
  * may be empty when its source is unconfigured — the tool surfaces the
8
8
  * resulting auth failure as a normal tool error.
9
9
  */
10
- export interface BioToolKeys {
10
+ export type BioToolKeys = {
11
11
  readonly drugbank: string;
12
12
  readonly disgenet: string;
13
13
  readonly epaCcte: string;
@@ -15,7 +15,7 @@ export interface BioToolKeys {
15
15
  readonly github?: string;
16
16
  readonly semanticScholar?: string;
17
17
  readonly amass?: string;
18
- }
18
+ };
19
19
  /**
20
20
  * The NCBI-backed literature tool, built from the shared key slice.
21
21
  *
@@ -31,12 +31,12 @@ export function createChemDbTools(keys, deps = {}) {
31
31
  return {
32
32
  geneDiseaseEvidence: createGeneDiseaseEvidenceTool({
33
33
  disgenetApiKey: keys.disgenet,
34
- ...(keys.ncbi ? { ncbiApiKey: keys.ncbi } : {}),
35
- ...(deps.logger ? { logger: deps.logger } : {}),
34
+ ncbiApiKey: keys.ncbi,
35
+ logger: deps.logger,
36
36
  }),
37
37
  drugGeneInteractions: createDrugGeneInteractionsTool({
38
38
  drugbankApiKey: keys.drugbank,
39
- ...(deps.logger ? { logger: deps.logger } : {}),
39
+ logger: deps.logger,
40
40
  }),
41
41
  comptox: createComptoxTool({ apiKey: keys.epaCcte }),
42
42
  };
@@ -20,20 +20,20 @@
20
20
  */
21
21
  import { z } from "zod";
22
22
  import { type Pathway } from "../lib/pathway-client.js";
23
- interface GoTerm {
23
+ type GoTerm = {
24
24
  id: string;
25
25
  name: string;
26
26
  definition?: string;
27
27
  aspect?: string;
28
- }
29
- interface GoAnnotation {
28
+ };
29
+ type GoAnnotation = {
30
30
  geneProductId: string;
31
31
  goId: string;
32
32
  goName: string;
33
33
  aspect?: string;
34
34
  evidenceCode?: string;
35
35
  qualifier?: string;
36
- }
36
+ };
37
37
  export declare const GoTermResponseSchema: z.ZodPipe<z.ZodObject<{
38
38
  results: z.ZodOptional<z.ZodArray<z.ZodObject<{
39
39
  id: z.ZodOptional<z.ZodString>;
@@ -79,7 +79,7 @@ type AnnotationOutput = {
79
79
  pathways: Pathway[];
80
80
  };
81
81
  export declare const lookupAnnotationTool: import("../define-tool.js").Tool<{
82
- vocabulary: "kegg" | "reactome" | "go" | "pathways";
82
+ vocabulary: "go" | "kegg" | "pathways" | "reactome";
83
83
  query?: string | undefined;
84
84
  pathwayId?: string | undefined;
85
85
  goId?: string | undefined;
@@ -103,6 +103,7 @@ const inputSchema = z
103
103
  "or a KEGG pathway ID ('hsa04010'). The prefix picks the database, so `vocabulary` and `organism` are ignored for it."),
104
104
  goId: z
105
105
  .string()
106
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the GO term id shape: the GO: prefix plus seven digits.
106
107
  .regex(/^GO:\d{7}$/)
107
108
  .optional()
108
109
  .describe("'go' only. A specific GO term ID, e.g. 'GO:0008150'."),
@@ -163,6 +164,8 @@ export const lookupAnnotationTool = defineTool({
163
164
  const pathway = await getPathwayById(pathwayId);
164
165
  return ok({ pathways: pathway ? [pathway] : [] });
165
166
  }
167
+ if (query === undefined)
168
+ throw new Error("the pathways lookup requires query");
166
169
  const pathways = await searchPathways(query, {
167
170
  source: vocabulary === "pathways" ? "both" : vocabulary,
168
171
  organism: organism ?? "hsa",
@@ -33,7 +33,7 @@ type OpenTargetsOutput = {
33
33
  candidates: DiseaseCandidate[];
34
34
  };
35
35
  export declare const openTargetsTool: import("../define-tool.js").Tool<{
36
- action: "target" | "disease" | "resolve_disease";
36
+ action: "disease" | "resolve_disease" | "target";
37
37
  ensemblId?: string | undefined;
38
38
  efoId?: string | undefined;
39
39
  diseaseName?: string | undefined;
@@ -94,14 +94,20 @@ export const openTargetsTool = defineTool({
94
94
  const limit = input.limit ?? DEFAULT_LIMIT;
95
95
  switch (input.action) {
96
96
  case "target": {
97
+ if (input.ensemblId === undefined)
98
+ throw new Error("target requires ensemblId");
97
99
  const targetInfo = await searchTargetAssociations(input.ensemblId, limit);
98
100
  return ok({ targetInfo, associations: targetInfo?.associations ?? [] });
99
101
  }
100
102
  case "disease": {
103
+ if (input.efoId === undefined)
104
+ throw new Error("disease requires efoId");
101
105
  const associations = await searchDiseaseAssociations(input.efoId, limit);
102
106
  return ok({ associations });
103
107
  }
104
108
  case "resolve_disease": {
109
+ if (input.diseaseName === undefined)
110
+ throw new Error("resolve_disease requires diseaseName");
105
111
  const { total, candidates } = await searchDiseases(input.diseaseName, limit);
106
112
  return ok({ totalFound: total, candidates });
107
113
  }
@@ -19,9 +19,9 @@ type PubchemOutput = {
19
19
  assays: PubChemAssay[];
20
20
  };
21
21
  export declare const pubchemTool: import("../define-tool.js").Tool<{
22
- action: "compound" | "crossrefs" | "assays";
22
+ action: "assays" | "compound" | "crossrefs";
23
23
  query?: string | undefined;
24
- searchBy?: "name" | "smiles" | "inchikey" | "inchi" | "cid" | undefined;
24
+ searchBy?: "cid" | "inchi" | "inchikey" | "name" | "smiles" | undefined;
25
25
  cid?: number | undefined;
26
26
  activeOnly?: boolean | undefined;
27
27
  limit?: number | undefined;
@@ -87,10 +87,16 @@ export const pubchemTool = defineTool({
87
87
  execute: async (input) => {
88
88
  switch (input.action) {
89
89
  case "compound":
90
+ if (input.query === undefined || input.searchBy === undefined)
91
+ throw new Error("compound requires query and searchBy");
90
92
  return ok({ results: await fetchPubchemCompounds(input.query, input.searchBy) });
91
93
  case "crossrefs":
94
+ if (input.cid === undefined)
95
+ throw new Error("crossrefs requires cid");
92
96
  return ok({ crossRefs: await fetchPubchemCrossRefs(input.cid) });
93
97
  case "assays":
98
+ if (input.cid === undefined)
99
+ throw new Error("assays requires cid");
94
100
  return ok({
95
101
  assays: await fetchPubchemAssays(input.cid, {
96
102
  activeOnly: input.activeOnly ?? true,
@@ -24,7 +24,32 @@
24
24
  * sections up to a character budget and always returns the article's full
25
25
  * section outline so a follow-up can name what it wants.
26
26
  */
27
+ import { z } from "zod";
28
+ import { type Tool } from "../define-tool.js";
27
29
  import { type BoundedArticleDetail, type BoundedFullText, type PubMedSummary } from "../lib/pubmed-client.js";
30
+ declare const inputSchema: z.ZodObject<{
31
+ action: z.ZodEnum<{
32
+ details: "details";
33
+ fulltext: "fulltext";
34
+ search: "search";
35
+ }>;
36
+ query: z.ZodOptional<z.ZodString>;
37
+ maxResults: z.ZodOptional<z.ZodNumber>;
38
+ sort: z.ZodOptional<z.ZodEnum<{
39
+ date: "date";
40
+ relevance: "relevance";
41
+ }>>;
42
+ dateRange: z.ZodOptional<z.ZodObject<{
43
+ from: z.ZodString;
44
+ to: z.ZodString;
45
+ }, z.core.$strip>>;
46
+ pmids: z.ZodOptional<z.ZodArray<z.ZodString>>;
47
+ maxAuthors: z.ZodOptional<z.ZodNumber>;
48
+ maxMeshTerms: z.ZodOptional<z.ZodNumber>;
49
+ pmcId: z.ZodOptional<z.ZodString>;
50
+ sections: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ maxChars: z.ZodOptional<z.ZodNumber>;
52
+ }, z.core.$strip>;
28
53
  type PubMedOutput = {
29
54
  totalFound: number;
30
55
  results: PubMedSummary[];
@@ -40,20 +65,5 @@ type PubMedOutput = {
40
65
  } & Omit<BoundedFullText, "sections">);
41
66
  export declare function createPubMedTool(deps: {
42
67
  ncbiApiKey?: string;
43
- }): import("../define-tool.js").Tool<{
44
- action: "search" | "details" | "fulltext";
45
- query?: string | undefined;
46
- maxResults?: number | undefined;
47
- sort?: "date" | "relevance" | undefined;
48
- dateRange?: {
49
- from: string;
50
- to: string;
51
- } | undefined;
52
- pmids?: string[] | undefined;
53
- maxAuthors?: number | undefined;
54
- maxMeshTerms?: number | undefined;
55
- pmcId?: string | undefined;
56
- sections?: string[] | undefined;
57
- maxChars?: number | undefined;
58
- }, PubMedOutput>;
68
+ }): Tool<z.infer<typeof inputSchema>, PubMedOutput>;
59
69
  export {};
@@ -150,12 +150,16 @@ export function createPubMedTool(deps) {
150
150
  execute: async (input, context) => {
151
151
  switch (input.action) {
152
152
  case "search":
153
+ if (input.query === undefined)
154
+ throw new Error("search requires query");
153
155
  return ok(await searchPubmed(deps.ncbiApiKey, input.query, {
154
156
  maxResults: input.maxResults ?? DEFAULTS.searchResults,
155
- ...(input.sort ? { sort: input.sort } : {}),
156
- ...(input.dateRange ? { dateRange: input.dateRange } : {}),
157
+ sort: input.sort,
158
+ dateRange: input.dateRange,
157
159
  }, context.signal));
158
160
  case "details": {
161
+ if (input.pmids === undefined)
162
+ throw new Error("details requires pmids");
159
163
  const { articles, notFound } = await getArticleDetails(deps.ncbiApiKey, input.pmids, context.signal);
160
164
  return ok({
161
165
  articles: boundArticleDetails(articles, {
@@ -166,8 +170,10 @@ export function createPubMedTool(deps) {
166
170
  });
167
171
  }
168
172
  case "fulltext": {
173
+ if (input.pmcId === undefined)
174
+ throw new Error("fulltext requires pmcId");
169
175
  const parsed = await getArticleFullText(deps.ncbiApiKey, input.pmcId, {
170
- ...(input.sections ? { sections: input.sections } : {}),
176
+ sections: input.sections ? input.sections : undefined,
171
177
  maxChars: input.maxChars ?? DEFAULTS.maxChars,
172
178
  }, context.signal);
173
179
  // "Not open-access" is an expected outcome — a data variant, not an error.
@@ -20,12 +20,12 @@ type ClinicalTrialsOutput = {
20
20
  trials: TrialListRow[];
21
21
  };
22
22
  export declare const searchClinicalTrialsTool: import("../define-tool.js").Tool<{
23
- action: "search" | "details";
24
- limit: number;
25
- includeSummaries: boolean;
23
+ action: "details" | "search";
26
24
  query?: string | undefined;
27
25
  nctId?: string | undefined;
28
26
  phase?: "EARLY_PHASE1" | "PHASE1" | "PHASE2" | "PHASE3" | "PHASE4" | undefined;
29
- status?: "SUSPENDED" | "RECRUITING" | "ACTIVE_NOT_RECRUITING" | "COMPLETED" | "NOT_YET_RECRUITING" | "TERMINATED" | "WITHDRAWN" | undefined;
27
+ status?: "ACTIVE_NOT_RECRUITING" | "COMPLETED" | "NOT_YET_RECRUITING" | "RECRUITING" | "SUSPENDED" | "TERMINATED" | "WITHDRAWN" | undefined;
28
+ limit: number;
29
+ includeSummaries: boolean;
30
30
  }, ClinicalTrialsOutput>;
31
31
  export {};
@@ -77,10 +77,14 @@ export const searchClinicalTrialsTool = defineTool({
77
77
  path: ["nctId"],
78
78
  }),
79
79
  describeCall: "none",
80
- execute: async ({ action = "search", query, nctId, phase, status, limit = 10, includeSummaries = false, }) => {
80
+ execute: async ({ action, query, nctId, phase, status, limit, includeSummaries }) => {
81
81
  if (action === "details") {
82
+ if (nctId === undefined)
83
+ throw new Error("details requires nctId");
82
84
  return ok({ trial: await getTrialDetails(nctId) });
83
85
  }
86
+ if (query === undefined)
87
+ throw new Error("search requires query");
84
88
  const result = await searchTrials(query, { phase, status, limit });
85
89
  const trials = includeSummaries
86
90
  ? result.trials
@@ -23,9 +23,9 @@ type FaersOutput = {
23
23
  labels: DrugLabelAction[];
24
24
  };
25
25
  export declare const searchFaersTool: import("../define-tool.js").Tool<{
26
- action: "label" | "adverse_events" | "seriousness";
26
+ action: "adverse_events" | "label" | "seriousness";
27
27
  drugName: string;
28
- serious: boolean;
29
28
  limit?: number | undefined;
29
+ serious: boolean;
30
30
  }, FaersOutput>;
31
31
  export {};
@@ -71,7 +71,7 @@ export const searchFaersTool = defineTool({
71
71
  path: ["limit"],
72
72
  }),
73
73
  describeCall: "none",
74
- execute: async ({ action = "adverse_events", drugName, limit, serious = false }) => {
74
+ execute: async ({ action, drugName, limit, serious }) => {
75
75
  switch (action) {
76
76
  case "seriousness":
77
77
  return ok({ seriousness: await getFaersSeriousness(drugName) });
@@ -11,10 +11,10 @@
11
11
  */
12
12
  import { type GeneInfo } from "../lib/ensembl-client.js";
13
13
  /** One input that was not a symbol, beside the approved symbol it became. */
14
- interface ResolvedIdentifier {
14
+ type ResolvedIdentifier = {
15
15
  input: string;
16
16
  symbol: string;
17
- }
17
+ };
18
18
  export declare const searchGeneTool: import("../define-tool.js").Tool<{
19
19
  identifiers: string[];
20
20
  species: string;
@@ -24,6 +24,7 @@ const IDENTIFIERS_LISTED_IN_FULL = 8;
24
24
  * The identifier spaces that Ensembl cannot key on. Anything that matches none
25
25
  * of them is treated as a symbol and goes straight to Ensembl.
26
26
  */
27
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- each entry is the fixed issued shape of one identifier space (Ensembl, HGNC, ChEMBL, UniProt); the alternation of the four is what keys the resolver.
27
28
  const NON_SYMBOL_PATTERNS = [/^ENSG\d{11}$/, /^HGNC:\d+$/, /^CHEMBL\d+$/, /^[A-Z][0-9][A-Z0-9]{3}[0-9](-\d+)?$/];
28
29
  function isSymbol(identifier) {
29
30
  return !NON_SYMBOL_PATTERNS.some((pattern) => pattern.test(identifier));
@@ -9,7 +9,7 @@ export declare const GeoEsearchResponseSchema: z.ZodObject<{
9
9
  }, z.core.$strip>>;
10
10
  }, z.core.$strip>;
11
11
  /** One dataset row, as the tool returns it. */
12
- export interface GeoDataset {
12
+ export type GeoDataset = {
13
13
  accession: string;
14
14
  title: string;
15
15
  summary: string;
@@ -17,7 +17,7 @@ export interface GeoDataset {
17
17
  sampleCount: number | null;
18
18
  organism: string | null;
19
19
  pubmedIds: (string | number)[];
20
- }
20
+ };
21
21
  export declare const GeoEsummaryResponseSchema: z.ZodObject<{
22
22
  result: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCatch<z.ZodOptional<z.ZodObject<{
23
23
  accession: z.ZodOptional<z.ZodString>;
@@ -41,9 +41,9 @@ export declare const GeoEsummaryResponseSchema: z.ZodObject<{
41
41
  export declare function mapGeoDatasets(ids: string[], summary: z.infer<typeof GeoEsummaryResponseSchema>): GeoDataset[];
42
42
  export declare const searchGeoDatasetsTool: import("../define-tool.js").Tool<{
43
43
  query: string;
44
- datasetType: "gse" | "gds";
45
- limit: number;
46
44
  organism?: string | undefined;
45
+ datasetType: "gds" | "gse";
46
+ limit: number;
47
47
  }, {
48
48
  totalFound: number;
49
49
  datasets: GeoDataset[];
@@ -48,7 +48,7 @@ export const GeoEsummaryResponseSchema = z.object({
48
48
  * payload.
49
49
  */
50
50
  export function mapGeoDatasets(ids, summary) {
51
- const result = summary?.result ?? {};
51
+ const result = summary.result ?? {};
52
52
  const datasets = [];
53
53
  for (const id of ids) {
54
54
  const r = result[id];
@@ -101,13 +101,13 @@ export const searchGeoDatasetsTool = defineTool({
101
101
  .describe("Max datasets to return (default 10, max 50). totalFound reports the true match count regardless."),
102
102
  }),
103
103
  describeCall: "none",
104
- execute: async ({ query, organism, datasetType = "gse", limit = 10 }) => {
104
+ execute: async ({ query, organism, datasetType, limit }) => {
105
105
  let searchQuery = query;
106
106
  // Escape backslashes first, then quotes, so a `\` in the organism value
107
107
  // cannot smuggle an unescaped `"` past the escaping and break out of the
108
108
  // quoted Entrez phrase.
109
109
  if (organism)
110
- searchQuery += ` AND "${organism.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"[Organism]`;
110
+ searchQuery += ` AND "${organism.replaceAll("\\", "\\\\").replaceAll('"', '\\"')}"[Organism]`;
111
111
  const db = "gds";
112
112
  const typeFilter = datasetType === "gse" ? " AND gse[Entry Type]" : " AND gds[Entry Type]";
113
113
  searchQuery += typeFilter;
@@ -115,7 +115,7 @@ export const searchGeoDatasetsTool = defineTool({
115
115
  const searchRes = await apiFetchValidated(searchUrl, GeoEsearchResponseSchema);
116
116
  if (searchRes.isErr())
117
117
  throw new Error(describeApiError(searchRes.error));
118
- const ids = searchRes.value?.esearchresult?.idlist ?? [];
118
+ const ids = searchRes.value.esearchresult?.idlist ?? [];
119
119
  if (ids.length === 0)
120
120
  return ok({ totalFound: 0, datasets: [] });
121
121
  const summaryUrl = `${ESEARCH_BASE}/esummary.fcgi?db=${db}&id=${ids.join(",")}&retmode=json`;
@@ -123,7 +123,7 @@ export const searchGeoDatasetsTool = defineTool({
123
123
  if (summaryRes.isErr())
124
124
  throw new Error(describeApiError(summaryRes.error));
125
125
  const datasets = mapGeoDatasets(ids, summaryRes.value);
126
- const totalFound = Number(searchRes.value?.esearchresult?.count) || datasets.length;
126
+ const totalFound = Number(searchRes.value.esearchresult?.count) || datasets.length;
127
127
  return ok({ totalFound, datasets });
128
128
  },
129
129
  });
@@ -14,7 +14,7 @@ type InteractionsOutput = {
14
14
  export declare const searchInteractionsTool: import("../define-tool.js").Tool<{
15
15
  identifiers: string[];
16
16
  species: number;
17
- action: "enrichment" | "partners" | "network";
17
+ action: "enrichment" | "network" | "partners";
18
18
  minScore: number;
19
19
  limit: number;
20
20
  }, InteractionsOutput>;