@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
@@ -9,24 +9,24 @@
9
9
  */
10
10
  import { z } from "zod";
11
11
  import type { Logger } from "../../lib/logger.js";
12
- export interface ChemblCompound {
12
+ export type ChemblCompound = {
13
13
  chemblId: string;
14
14
  preferredCompoundName: string | null;
15
15
  canonicalSmiles: string | null;
16
16
  molecularWeight: number | null;
17
17
  alogp: number | null;
18
18
  molecularFormula: string | null;
19
- }
19
+ };
20
20
  /** How `searchCompounds` interprets its query string. */
21
21
  export type CompoundSearchType = "target" | "compound" | "smiles";
22
- export interface ChemblTarget {
22
+ export type ChemblTarget = {
23
23
  targetChemblId: string;
24
24
  preferredName: string | null;
25
25
  targetType: string | null;
26
26
  organism: string | null;
27
27
  geneNames: string[];
28
- }
29
- export interface ChemblActivity {
28
+ };
29
+ export type ChemblActivity = {
30
30
  activityId: number | null;
31
31
  compoundChemblId: string;
32
32
  targetChemblId: string | null;
@@ -36,31 +36,31 @@ export interface ChemblActivity {
36
36
  assayChemblId: string | null;
37
37
  assayType: string | null;
38
38
  pchemblValue: number | null;
39
- }
40
- export interface ChemblMechanism {
39
+ };
40
+ export type ChemblMechanism = {
41
41
  mechanismOfAction: string | null;
42
42
  actionType: string | null;
43
43
  targetChemblId: string | null;
44
44
  targetName: string | null;
45
45
  moleculeChemblId: string;
46
- }
47
- export interface ChemblDrug {
46
+ };
47
+ export type ChemblDrug = {
48
48
  moleculeChemblId: string;
49
49
  preferredName: string | null;
50
50
  maxPhase: number | null;
51
51
  moleculeType: string | null;
52
52
  firstApproval: number | null;
53
53
  indication: string | null;
54
- }
55
- export interface ChemblModulator {
54
+ };
55
+ export type ChemblModulator = {
56
56
  moleculeChemblId: string;
57
57
  parentChemblId: string | null;
58
58
  preferredName: string | null;
59
59
  maxPhase: number | null;
60
60
  moleculeType: string | null;
61
61
  firstApproval: number | null;
62
- }
63
- export interface ChemblPolypharmHit {
62
+ };
63
+ export type ChemblPolypharmHit = {
64
64
  moleculeChemblId: string;
65
65
  targetChemblId: string;
66
66
  targetName: string | null;
@@ -70,7 +70,7 @@ export interface ChemblPolypharmHit {
70
70
  standardValue: number | null;
71
71
  standardUnits: string | null;
72
72
  pchemblValue: number | null;
73
- }
73
+ };
74
74
  export declare const TargetSearchResponseSchema: z.ZodObject<{
75
75
  targets: z.ZodOptional<z.ZodArray<z.ZodObject<{
76
76
  target_chembl_id: z.ZodOptional<z.ZodString>;
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { z } from "zod";
11
11
  import { createNoopLogger } from "../../lib/console-logger.js";
12
+ import { presentAt } from "../../lib/present.js";
12
13
  import { apiFetchValidated, describeApiError, isUnexpectedApiError, zWireNumber } from "./api-utils.js";
13
14
  import { CHEMBL_BASE, CHEMBL_HEADERS as HEADERS } from "./chembl-config.js";
14
15
  /** The `max_phase` of an approved drug. ChEMBL serializes it as the string "4.0". */
@@ -184,7 +185,8 @@ async function searchCompoundsByTarget(query, limit) {
184
185
  }
185
186
  if (!targetRes.value.targets?.length)
186
187
  return [];
187
- const targetChemblId = targetRes.value.targets[0].target_chembl_id;
188
+ const firstTarget = targetRes.value.targets[0];
189
+ const targetChemblId = firstTarget?.target_chembl_id;
188
190
  if (!targetChemblId)
189
191
  return [];
190
192
  const activityRes = await apiFetchValidated(`${CHEMBL_BASE}/activity.json?target_chembl_id=${targetChemblId}&limit=${limit}`, CompoundActivityIdResponseSchema, {
@@ -439,7 +441,10 @@ async function searchApprovedDrugsByName(query, limit) {
439
441
  const approved = (res.value.molecules ?? []).filter((mol) => mol.max_phase != null && mol.max_phase >= APPROVED_MAX_PHASE);
440
442
  if (approved.length === 0)
441
443
  return [];
442
- const moleculeChemblIds = approved.map((mol) => mol.molecule_chembl_id).filter((id) => id !== undefined && id.length > 0);
444
+ const moleculeChemblIds = approved.flatMap((mol) => {
445
+ const id = mol.molecule_chembl_id;
446
+ return id !== undefined && id.length > 0 ? [id] : [];
447
+ });
443
448
  const indications = await fetchIndicationsOf(moleculeChemblIds);
444
449
  return approved.map((raw) => mapDrug(raw, indications.get(raw.molecule_chembl_id ?? "") ?? null));
445
450
  }
@@ -559,7 +564,7 @@ export async function getModulatorPolypharmacology(moleculeChemblId, options = {
559
564
  for (const [idx, id] of batch.entries()) {
560
565
  const hit = hits.find((h) => h.targetChemblId === id);
561
566
  if (hit)
562
- hit.targetName = names[idx];
567
+ hit.targetName = names[idx] ?? null;
563
568
  }
564
569
  }
565
570
  return hits.sort((a, b) => (b.pchemblValue ?? 0) - (a.pchemblValue ?? 0));
@@ -587,7 +592,9 @@ export async function getModulatorOnTargetPchembl(modulatorChemblId, targetChemb
587
592
  return null;
588
593
  values.sort((a, b) => a - b);
589
594
  const mid = Math.floor(values.length / 2);
590
- return values.length % 2 === 1 ? values[mid] : (values[mid - 1] + values[mid]) / 2;
595
+ return values.length % 2 === 1
596
+ ? presentAt(values, mid, "the middle activity value")
597
+ : (presentAt(values, mid - 1, "the lower middle activity value") + presentAt(values, mid, "the middle activity value")) / 2;
591
598
  }
592
599
  /**
593
600
  * Secondary path: fetch clinical-stage small molecules via the activity table.
@@ -3,21 +3,21 @@
3
3
  * absent value. The bundled dataset gives each key, and `getBenchmarks` answers
4
4
  * with the "all" baseline for an unknown therapeutic area.
5
5
  */
6
- export interface PhaseTransitions {
6
+ export type PhaseTransitions = {
7
7
  phase1_to_phase2: number;
8
8
  phase2_to_phase3: number;
9
9
  phase3_to_nda: number;
10
10
  nda_to_approval: number;
11
11
  phase1_to_approval: number;
12
- }
13
- export interface BenchmarkResult {
12
+ };
13
+ export type BenchmarkResult = {
14
14
  therapeutic_area: string;
15
15
  source: "available" | "fallback";
16
16
  data_version: string;
17
17
  data_window: string;
18
18
  attribution: string;
19
19
  transitions: PhaseTransitions;
20
- }
20
+ };
21
21
  /**
22
22
  * Infer therapeutic area from a list of indication labels using the
23
23
  * dataset's pattern map. First match wins.
@@ -5,9 +5,6 @@
5
5
  */
6
6
  import benchmarksData from "../../data/clinical-benchmarks.json" with { type: "json" };
7
7
  const dataset = benchmarksData;
8
- if (!dataset.phase_transitions || !dataset.phase_transitions.all) {
9
- throw new Error("clinical-benchmarks.json is missing phase_transitions.all baseline");
10
- }
11
8
  function loadDataset() {
12
9
  return dataset;
13
10
  }
@@ -36,15 +33,15 @@ export function inferTherapeuticArea(indicationLabels) {
36
33
  */
37
34
  export function getBenchmarks(therapeuticArea) {
38
35
  const dataset = loadDataset();
39
- const useFallback = !therapeuticArea || !dataset.phase_transitions[therapeuticArea];
40
- const ta = useFallback ? "all" : therapeuticArea;
36
+ const requested = !therapeuticArea ? undefined : dataset.phase_transitions[therapeuticArea];
37
+ const ta = requested === undefined || therapeuticArea === null ? "all" : therapeuticArea;
41
38
  return {
42
39
  therapeutic_area: ta,
43
- source: useFallback ? "fallback" : "available",
40
+ source: requested === undefined ? "fallback" : "available",
44
41
  data_version: dataset.data_version,
45
42
  data_window: dataset.data_window,
46
43
  attribution: dataset.source,
47
- transitions: dataset.phase_transitions[ta],
44
+ transitions: requested ?? dataset.phase_transitions.all,
48
45
  };
49
46
  }
50
47
  /** Return the dataset's metadata for transparency. */
@@ -6,7 +6,7 @@
6
6
  * `.optional()`, not `.nullable()`.
7
7
  */
8
8
  import { z } from "zod";
9
- export interface ClinicalTrial {
9
+ export type ClinicalTrial = {
10
10
  nctId: string;
11
11
  title: string;
12
12
  officialTitle: string | null;
@@ -24,13 +24,13 @@ export interface ClinicalTrial {
24
24
  briefSummary: string | null;
25
25
  detailedDescription: string | null;
26
26
  sponsor: string | null;
27
- }
28
- export interface ClinicalTrialIntervention {
27
+ };
28
+ export type ClinicalTrialIntervention = {
29
29
  name: string;
30
30
  type: string | null;
31
31
  description: string | null;
32
32
  otherNames: string[];
33
- }
33
+ };
34
34
  export type OutcomeEffect = {
35
35
  kind: "quantitative";
36
36
  value: number;
@@ -41,46 +41,46 @@ export type OutcomeEffect = {
41
41
  kind: "not_extracted";
42
42
  reason: "ctgov_no_numeric_result" | "ctgov_no_result_groups";
43
43
  };
44
- export interface OutcomeMeasure {
44
+ export type OutcomeMeasure = {
45
45
  type: "primary" | "secondary" | "other";
46
46
  measure: string;
47
47
  description: string | null;
48
48
  timeFrame: string | null;
49
49
  effect: OutcomeEffect;
50
- }
51
- export interface AdverseEventGroup {
50
+ };
51
+ export type AdverseEventGroup = {
52
52
  groupId: string;
53
53
  title: string;
54
54
  description: string | null;
55
- }
56
- export interface AdverseEventCount {
55
+ };
56
+ export type AdverseEventCount = {
57
57
  groupId: string;
58
58
  numAffected: number | null;
59
59
  numAtRisk: number | null;
60
- }
61
- export interface AdverseEvent {
60
+ };
61
+ export type AdverseEvent = {
62
62
  serious: boolean;
63
63
  term: string;
64
64
  organSystem: string | null;
65
65
  counts: AdverseEventCount[];
66
- }
67
- export interface TrialDetails {
66
+ };
67
+ export type TrialDetails = {
68
68
  trial: ClinicalTrial;
69
69
  whyStopped: string | null;
70
70
  outcomes: OutcomeMeasure[];
71
71
  adverseEventGroups: AdverseEventGroup[];
72
72
  adverseEvents: AdverseEvent[];
73
- }
73
+ };
74
74
  /**
75
75
  * One phase token of `protocolSection.designModule.phases`. `NA` marks a study
76
76
  * that runs under no phase, such as an observational study.
77
77
  */
78
78
  export type TrialPhase = "EARLY_PHASE1" | "PHASE1" | "PHASE2" | "PHASE3" | "PHASE4" | "NA";
79
- export interface SearchOptions {
79
+ export type SearchOptions = {
80
80
  phase?: TrialPhase;
81
81
  status?: "RECRUITING" | "ACTIVE_NOT_RECRUITING" | "COMPLETED" | "NOT_YET_RECRUITING" | "TERMINATED" | "WITHDRAWN" | "SUSPENDED";
82
82
  limit?: number;
83
- }
83
+ };
84
84
  /** One study record. It is exported so that the golden-fixture table drives it. */
85
85
  export declare const CtStudySchema: z.ZodObject<{
86
86
  protocolSection: z.ZodOptional<z.ZodObject<{
@@ -121,7 +121,7 @@ export declare const CtStudySchema: z.ZodObject<{
121
121
  name: z.ZodOptional<z.ZodString>;
122
122
  type: z.ZodOptional<z.ZodString>;
123
123
  description: z.ZodOptional<z.ZodString>;
124
- otherNames: z.ZodOptional<z.ZodUnknown>;
124
+ otherNames: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodJSONSchema>, z.ZodTransform<string[], z.JSONType[]>>>;
125
125
  }, z.core.$strip>>>;
126
126
  }, z.core.$strip>>;
127
127
  sponsorCollaboratorsModule: z.ZodOptional<z.ZodObject<{
@@ -232,7 +232,7 @@ export declare const CtSearchResponseSchema: z.ZodObject<{
232
232
  name: z.ZodOptional<z.ZodString>;
233
233
  type: z.ZodOptional<z.ZodString>;
234
234
  description: z.ZodOptional<z.ZodString>;
235
- otherNames: z.ZodOptional<z.ZodUnknown>;
235
+ otherNames: z.ZodOptional<z.ZodPipe<z.ZodArray<z.ZodJSONSchema>, z.ZodTransform<string[], z.JSONType[]>>>;
236
236
  }, z.core.$strip>>>;
237
237
  }, z.core.$strip>>;
238
238
  sponsorCollaboratorsModule: z.ZodOptional<z.ZodObject<{
@@ -17,7 +17,11 @@ const CtInterventionSchema = z.object({
17
17
  name: z.string().optional(),
18
18
  type: z.string().optional(),
19
19
  description: z.string().optional(),
20
- otherNames: z.unknown().optional(),
20
+ // An alias is one name among others; a member that is not a string loses that name, never the study.
21
+ otherNames: z
22
+ .array(z.json())
23
+ .transform((names) => names.flatMap((name) => (typeof name === "string" ? [name] : [])))
24
+ .optional(),
21
25
  });
22
26
  const CtOutcomeSchema = z.object({
23
27
  measure: z.string().optional(),
@@ -140,7 +144,7 @@ export function mapClinicalTrialStudy(s) {
140
144
  name: i.name ?? "Unknown",
141
145
  type: i.type ?? null,
142
146
  description: i.description ?? null,
143
- otherNames: Array.isArray(i.otherNames) ? i.otherNames : [],
147
+ otherNames: i.otherNames ?? [],
144
148
  }));
145
149
  const interventions = interventionDetails.map((i) => i.name);
146
150
  const sponsor = proto.sponsorCollaboratorsModule?.leadSponsor?.name ?? null;
@@ -195,11 +199,11 @@ export async function searchTrials(query, options = {}) {
195
199
  });
196
200
  if (res.isErr())
197
201
  throw new Error(describeApiError(res.error));
198
- const studies = res.value?.studies ?? [];
202
+ const studies = res.value.studies ?? [];
199
203
  const phase = options.phase;
200
204
  const selected = phase ? studies.filter((study) => studyHasPhase(study, phase)) : studies;
201
205
  const trials = selected.slice(0, limit).map(mapClinicalTrialStudy);
202
- return { totalFound: res.value?.totalCount ?? trials.length, trials };
206
+ return { totalFound: res.value.totalCount ?? trials.length, trials };
203
207
  }
204
208
  /** Search trials whose intervention or condition mentions the gene/target. */
205
209
  export async function searchTrialsForTarget(symbol, options = {}) {
@@ -272,12 +276,8 @@ function extractEffect(resultsMeasure) {
272
276
  kind: "quantitative",
273
277
  value: num,
274
278
  units: resultsMeasure?.unitOfMeasure ?? "",
275
- ...(m.lowerLimit !== undefined && m.lowerLimit !== null && !isNaN(parseFloat(m.lowerLimit))
276
- ? { ci_low: parseFloat(m.lowerLimit) }
277
- : {}),
278
- ...(m.upperLimit !== undefined && m.upperLimit !== null && !isNaN(parseFloat(m.upperLimit))
279
- ? { ci_high: parseFloat(m.upperLimit) }
280
- : {}),
279
+ ci_low: m.lowerLimit !== undefined && !isNaN(parseFloat(m.lowerLimit)) ? parseFloat(m.lowerLimit) : undefined,
280
+ ci_high: m.upperLimit !== undefined && !isNaN(parseFloat(m.upperLimit)) ? parseFloat(m.upperLimit) : undefined,
281
281
  };
282
282
  }
283
283
  }
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { z } from "zod";
7
7
  export type ClinicalSignificance = "pathogenic" | "likely-pathogenic" | "benign" | "likely-benign" | "uncertain";
8
- export interface ClinvarVariant {
8
+ export type ClinvarVariant = {
9
9
  variationId: string;
10
10
  title: string;
11
11
  clinicalSignificance: string;
@@ -14,7 +14,7 @@ export interface ClinvarVariant {
14
14
  molecularConsequence: string;
15
15
  conditions: string[];
16
16
  accession: string;
17
- }
17
+ };
18
18
  export declare const ClinvarSearchResponseSchema: z.ZodObject<{
19
19
  esearchresult: z.ZodOptional<z.ZodObject<{
20
20
  idlist: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -53,10 +53,10 @@ const SIG_MAP = {
53
53
  };
54
54
  /** Filter out uninformative ClinVar entries (literal "not provided", placeholders). */
55
55
  export function filterInformative(variants) {
56
- const noise = /^(not provided|not specified|reclassified)$/i;
56
+ const noise = new Set(["not provided", "not specified", "reclassified"]);
57
57
  return variants.filter((v) => {
58
- const sig = (v.clinicalSignificance ?? "").trim();
59
- if (!sig || noise.test(sig))
58
+ const sig = v.clinicalSignificance.trim();
59
+ if (!sig || noise.has(sig.toLowerCase()))
60
60
  return false;
61
61
  return true;
62
62
  });
@@ -76,8 +76,8 @@ export async function searchClinvar(ncbiApiKey, query, options = {}) {
76
76
  const searchRes = await apiFetchValidated(searchUrl, ClinvarSearchResponseSchema);
77
77
  if (searchRes.isErr())
78
78
  throw new Error(describeApiError(searchRes.error));
79
- const ids = searchRes.value?.esearchresult?.idlist ?? [];
80
- const totalFound = Number(searchRes.value?.esearchresult?.count ?? ids.length);
79
+ const ids = searchRes.value.esearchresult?.idlist ?? [];
80
+ const totalFound = Number(searchRes.value.esearchresult?.count ?? ids.length);
81
81
  if (ids.length === 0)
82
82
  return { totalFound, variants: [] };
83
83
  const summaryUrl = ncbiUrl(ncbiApiKey, "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi", {
@@ -98,7 +98,7 @@ export async function searchClinvar(ncbiApiKey, query, options = {}) {
98
98
  * golden-fixture table exercises it against a stored payload.
99
99
  */
100
100
  export function mapClinvarVariants(ids, summary) {
101
- const result = summary?.result ?? {};
101
+ const result = summary.result ?? {};
102
102
  const rawUids = result.uids;
103
103
  const uids = Array.isArray(rawUids) ? rawUids : ids;
104
104
  return uids.map((uid) => {
@@ -22,11 +22,11 @@
22
22
  * `.nullable()` and `.optional()`.
23
23
  */
24
24
  import { z } from "zod";
25
- export interface CtxResolved {
25
+ export type CtxResolved = {
26
26
  dtxsid: string;
27
27
  preferredName: string;
28
28
  casrn: string | null;
29
- }
29
+ };
30
30
  export declare const CtxChemicalSearchRowSchema: z.ZodObject<{
31
31
  dtxsid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
32
  preferredName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -34,7 +34,7 @@ export declare const CtxChemicalSearchRowSchema: z.ZodObject<{
34
34
  }, z.core.$strip>;
35
35
  /** Resolve a DTXSID / CASRN / name to a chemical. `null` = no match (valid no-data). */
36
36
  export declare function resolveDtxsid(query: string, headers: Record<string, string>): Promise<CtxResolved | null>;
37
- export interface ToxcastAssayResult {
37
+ export type ToxcastAssayResult = {
38
38
  aeid: number;
39
39
  assayEndpoint: string;
40
40
  ac50: number | null;
@@ -42,13 +42,13 @@ export interface ToxcastAssayResult {
42
42
  maxMean: number | null;
43
43
  model: string;
44
44
  flags: string[];
45
- }
46
- export interface ToxcastBioactivity {
45
+ };
46
+ export type ToxcastBioactivity = {
47
47
  totalAssays: number;
48
48
  activeAssays: number;
49
49
  activeHitRate: number;
50
50
  results: ToxcastAssayResult[];
51
- }
51
+ };
52
52
  export declare const ToxcastBioactivityRowSchema: z.ZodObject<{
53
53
  aeid: z.ZodOptional<z.ZodNumber>;
54
54
  hitc: z.ZodOptional<z.ZodNumber>;
@@ -59,7 +59,7 @@ export declare const ToxcastBioactivityRowSchema: z.ZodObject<{
59
59
  acc: z.ZodOptional<z.ZodNumber>;
60
60
  }, z.core.$strip>>>;
61
61
  mc6Param: z.ZodOptional<z.ZodNullable<z.ZodObject<{
62
- flag: z.ZodOptional<z.ZodUnknown>;
62
+ flag: z.ZodOptional<z.ZodJSONSchema>;
63
63
  }, z.core.$strip>>>;
64
64
  }, z.core.$strip>;
65
65
  /**
@@ -159,11 +159,11 @@ export declare const CancerSchema: z.ZodPipe<z.ZodObject<{
159
159
  }>>;
160
160
  export type CancerSummary = z.infer<typeof CancerSchema>;
161
161
  export type CtxHazardDataType = "toxval" | "genetox" | "cancer" | "all";
162
- export interface CtxHazardData {
162
+ export type CtxHazardData = {
163
163
  toxval?: ToxValEntry[];
164
164
  genetox?: GenetoxSummary[];
165
165
  cancer?: CancerSummary[];
166
- }
166
+ };
167
167
  /**
168
168
  * In-vivo hazard data for a chemical. `limit` caps toxval and genetox only —
169
169
  * cancer classifications always come back whole.
@@ -172,7 +172,7 @@ export declare function fetchCtxHazardData(dtxsid: string, headers: Record<strin
172
172
  dataType: CtxHazardDataType;
173
173
  limit: number;
174
174
  }): Promise<CtxHazardData>;
175
- export interface ChemicalDetail {
175
+ export type ChemicalDetail = {
176
176
  dtxsid: string;
177
177
  dtxcid: string;
178
178
  casrn: string | null;
@@ -189,8 +189,8 @@ export interface ChemicalDetail {
189
189
  pubchemCid: number | null;
190
190
  pubmedCount: number | null;
191
191
  sourcesCount: number | null;
192
- }
193
- export interface PropertySummary {
192
+ };
193
+ export type PropertySummary = {
194
194
  propName: string;
195
195
  unit: string;
196
196
  experimentalCount: number | null;
@@ -201,7 +201,7 @@ export interface PropertySummary {
201
201
  predictedMedian: number | null;
202
202
  predictedMin: number | null;
203
203
  predictedMax: number | null;
204
- }
204
+ };
205
205
  export declare const RawChemicalDetailSchema: z.ZodObject<{
206
206
  dtxsid: z.ZodOptional<z.ZodString>;
207
207
  dtxcid: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -224,7 +224,7 @@ export declare const RawChemicalDetailSchema: z.ZodObject<{
224
224
  export declare function fetchCtxChemicalDetail(dtxsid: string, headers: Record<string, string>): Promise<ChemicalDetail>;
225
225
  /** Experimental + predicted physicochemical property summaries. `undefined` = none served. */
226
226
  export declare function fetchCtxChemicalProperties(dtxsid: string, headers: Record<string, string>): Promise<PropertySummary[] | undefined>;
227
- export interface SeemPrediction {
227
+ export type SeemPrediction = {
228
228
  dtxsid: string;
229
229
  productionVolume: number | null;
230
230
  units: string;
@@ -232,8 +232,8 @@ export interface SeemPrediction {
232
232
  probabilityResidential: number | null;
233
233
  probabilityPesticide: number | null;
234
234
  probabilityIndustrial: number | null;
235
- }
236
- export interface HttkParameter {
235
+ };
236
+ export type HttkParameter = {
237
237
  parameter: string;
238
238
  measured: number | null;
239
239
  predicted: number | null;
@@ -241,20 +241,20 @@ export interface HttkParameter {
241
241
  model: string;
242
242
  species: string;
243
243
  reference: string;
244
- }
245
- export interface FunctionalUse {
244
+ };
245
+ export type FunctionalUse = {
246
246
  functionCategory: string;
247
247
  reportedFunction: string;
248
248
  docTitle: string;
249
- }
250
- export interface ProductData {
249
+ };
250
+ export type ProductData = {
251
251
  productName: string;
252
252
  generalCategory: string;
253
253
  productFamily: string;
254
254
  productType: string;
255
255
  centralWeightFraction: number | null;
256
256
  weightFractionType: string;
257
- }
257
+ };
258
258
  export declare const RawSeemPredictionSchema: z.ZodObject<{
259
259
  dtxsid: z.ZodOptional<z.ZodString>;
260
260
  productionVolume: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -279,12 +279,12 @@ export declare const RawFunctionalUseRowSchema: z.ZodObject<{
279
279
  doctitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
280
280
  }, z.core.$strip>;
281
281
  export type CtxExposureDataType = "seem" | "httk" | "functional-use" | "product-data" | "all";
282
- export interface CtxExposureData {
282
+ export type CtxExposureData = {
283
283
  seem?: SeemPrediction;
284
284
  httk?: HttkParameter[];
285
285
  functionalUse?: FunctionalUse[];
286
286
  productData?: ProductData[];
287
- }
287
+ };
288
288
  /**
289
289
  * Human-exposure data for a chemical. `limit` caps functional-use and
290
290
  * product-data only — seem and httk always come back whole.
@@ -22,6 +22,9 @@
22
22
  * `.nullable()` and `.optional()`.
23
23
  */
24
24
  import { z } from "zod";
25
+ import { isUnknownArray } from "../../lib/unknown-array.js";
26
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
27
+ import { parseJsonAs } from "../../lib/parse-json.js";
25
28
  import { apiFetchValidated, describeApiError, zWireNumber } from "./api-utils.js";
26
29
  import { EPA_CCTE_BASE } from "./toxcast-config.js";
27
30
  // A row of the chemical-search endpoint. `dtxsid` is nullable, because a search
@@ -44,11 +47,11 @@ function isNoMatchProblemDetail(error) {
44
47
  if (error.type !== "http_status" || error.status !== 400)
45
48
  return false;
46
49
  try {
47
- const body = JSON.parse(error.body);
50
+ const body = parseUnknownRecord(parseJsonAs(error.body, z.json()));
48
51
  // `suggestions` separates the no-match answer from a generic 400
49
52
  // `ProblemDetail`, which carries `title` and `detail` alone. Without it,
50
53
  // a malformed request reads as a clean no-match.
51
- return typeof body === "object" && body !== null && "detail" in body && "title" in body && "suggestions" in body;
54
+ return body !== undefined && "detail" in body && "title" in body && "suggestions" in body;
52
55
  }
53
56
  catch {
54
57
  return false;
@@ -66,7 +69,7 @@ export async function resolveDtxsid(query, headers) {
66
69
  return null;
67
70
  throw new Error(describeApiError(res.error));
68
71
  }
69
- const chem = (res.value ?? []).find((row) => row.dtxsid);
72
+ const chem = res.value.find((row) => row.dtxsid);
70
73
  if (!chem?.dtxsid)
71
74
  return null;
72
75
  return {
@@ -82,7 +85,7 @@ const ToxcastMc5ParamSchema = z.object({
82
85
  acc: z.number().optional(),
83
86
  });
84
87
  const ToxcastMc6ParamSchema = z.object({
85
- flag: z.unknown().optional(),
88
+ flag: z.json().optional(),
86
89
  });
87
90
  export const ToxcastBioactivityRowSchema = z.object({
88
91
  aeid: z.number().optional(),
@@ -116,7 +119,7 @@ export async function fetchToxcastBioactivity(dtxsid, headers, opts) {
116
119
  const bioRes = await apiFetchValidated(bioUrl, z.array(ToxcastBioactivityRowSchema), { headers });
117
120
  if (bioRes.isErr())
118
121
  throw new Error(describeApiError(bioRes.error));
119
- const allResults = bioRes.value ?? [];
122
+ const allResults = bioRes.value;
120
123
  const totalAssays = allResults.length;
121
124
  const activeAssays = allResults.filter(isActive).length;
122
125
  const filtered = opts.activeOnly ? allResults.filter(isActive) : allResults;
@@ -128,7 +131,7 @@ export async function fetchToxcastBioactivity(dtxsid, headers, opts) {
128
131
  const results = page.map((r) => {
129
132
  const aeid = r.aeid ?? 0;
130
133
  const mc6 = r.mc6Param ?? {};
131
- const flags = Array.isArray(mc6.flag) ? mc6.flag : [];
134
+ const flags = isUnknownArray(mc6.flag) ? mc6.flag.flatMap((flag) => (typeof flag === "string" ? [flag] : [])) : [];
132
135
  return {
133
136
  aeid,
134
137
  assayEndpoint: aeidMap.get(aeid) ?? `aeid:${aeid}`,
@@ -151,10 +154,10 @@ function extractAc50(r) {
151
154
  }
152
155
  function extractAc50Raw(r) {
153
156
  const mc5 = r.mc5Param;
154
- if (mc5 && typeof mc5 === "object") {
155
- if (typeof mc5.ac50 === "number")
157
+ if (mc5 !== null && mc5 !== undefined) {
158
+ if (mc5.ac50 !== undefined)
156
159
  return mc5.ac50;
157
- if (typeof mc5.acc === "number")
160
+ if (mc5.acc !== undefined)
158
161
  return mc5.acc;
159
162
  }
160
163
  return null;
@@ -350,7 +353,7 @@ export async function fetchCtxChemicalDetail(dtxsid, headers) {
350
353
  const detailRes = await apiFetchValidated(detailUrl, RawChemicalDetailSchema, { headers });
351
354
  if (detailRes.isErr())
352
355
  throw new Error(describeApiError(detailRes.error));
353
- const d = detailRes.value ?? {};
356
+ const d = detailRes.value;
354
357
  return {
355
358
  dtxsid: d.dtxsid ?? dtxsid,
356
359
  dtxcid: d.dtxcid ?? "",
@@ -11,7 +11,7 @@
11
11
  * the SDL gives each modifier and `.optional()` is wrong.
12
12
  */
13
13
  import { z } from "zod";
14
- export interface DgidbInteraction {
14
+ export type DgidbInteraction = {
15
15
  geneName: string;
16
16
  drugName: string;
17
17
  drugConceptId?: string;
@@ -28,14 +28,14 @@ export interface DgidbInteraction {
28
28
  name: string;
29
29
  value: string;
30
30
  }[];
31
- }
32
- export interface DgidbResult {
31
+ };
32
+ export type DgidbResult = {
33
33
  input: string;
34
34
  found: boolean;
35
35
  interactions: DgidbInteraction[];
36
36
  /** Interactions this input had before `limit` trimmed them. */
37
37
  totalInteractions: number;
38
- }
38
+ };
39
39
  /** The response envelope. It is exported so that the golden-fixture table drives it. */
40
40
  export declare const DgidbResponseSchema: z.ZodObject<{
41
41
  data: z.ZodOptional<z.ZodObject<{
@@ -104,13 +104,13 @@ export declare const DgidbResponseSchema: z.ZodObject<{
104
104
  message: z.ZodOptional<z.ZodString>;
105
105
  }, z.core.$strip>>>;
106
106
  }, z.core.$strip>;
107
- export interface DgidbFilters {
107
+ export type DgidbFilters = {
108
108
  interactionTypes?: string[];
109
109
  sourceDbs?: string[];
110
110
  minSources?: number;
111
111
  includeAttributes?: boolean;
112
112
  limit?: number;
113
- }
113
+ };
114
114
  /**
115
115
  * Query DGIdb for interactions of the given genes or drugs.
116
116
  *