@inflexa-ai/harness 0.45.0 → 0.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (802) hide show
  1. package/README.md +6 -3
  2. package/dist/agents/conversation-agent.d.ts +19 -3
  3. package/dist/agents/conversation-agent.js +49 -30
  4. package/dist/agents/report-session-agent.d.ts +15 -15
  5. package/dist/agents/report-session-agent.js +23 -15
  6. package/dist/agents/sandbox/index.d.ts +1 -1
  7. package/dist/agents/sandbox/index.js +1 -1
  8. package/dist/agents/sandbox/shared.d.ts +35 -16
  9. package/dist/agents/sandbox/shared.js +63 -24
  10. package/dist/agents/sandbox/translational-safety-agent.js +26 -0
  11. package/dist/agents/sandbox/types.d.ts +26 -3
  12. package/dist/agents/sandbox/validate-skills.d.ts +2 -2
  13. package/dist/agents/sandbox/validate-skills.js +3 -1
  14. package/dist/agents/sandbox-catalog.d.ts +16 -2
  15. package/dist/agents/sandbox-catalog.js +22 -3
  16. package/dist/agents/system-prompt.d.ts +2 -2
  17. package/dist/app/approve-plan.d.ts +5 -2
  18. package/dist/app/approve-plan.js +1 -1
  19. package/dist/app/chat-turn-workflow.d.ts +114 -0
  20. package/dist/app/chat-turn-workflow.js +307 -0
  21. package/dist/app/chat-turn.d.ts +85 -57
  22. package/dist/app/chat-turn.js +125 -99
  23. package/dist/app/data-profile-orientation.js +10 -8
  24. package/dist/app/data-profile-view.d.ts +4 -4
  25. package/dist/app/data-profile-view.js +9 -8
  26. package/dist/app/in-process-turn.d.ts +42 -0
  27. package/dist/app/in-process-turn.js +139 -0
  28. package/dist/app/message-assembly.d.ts +10 -4
  29. package/dist/app/message-assembly.js +13 -8
  30. package/dist/app/report-session-runtime.d.ts +4 -4
  31. package/dist/app/report-session-runtime.js +36 -21
  32. package/dist/app/spawn-report-session.d.ts +33 -28
  33. package/dist/app/spawn-report-session.js +25 -40
  34. package/dist/app/synthesize-run.d.ts +22 -16
  35. package/dist/app/synthesize-run.js +41 -35
  36. package/dist/app/work.d.ts +96 -0
  37. package/dist/app/work.js +147 -0
  38. package/dist/auth/local-auth-context.d.ts +1 -3
  39. package/dist/auth/local-auth-context.js +1 -3
  40. package/dist/auth/local-run-authorizer.d.ts +1 -1
  41. package/dist/auth/local-run-authorizer.js +5 -3
  42. package/dist/auth/types.d.ts +26 -26
  43. package/dist/billing/cached-resolver.d.ts +4 -4
  44. package/dist/billing/run-charge.d.ts +5 -8
  45. package/dist/billing/run-charge.js +2 -2
  46. package/dist/billing/usage-recorder.d.ts +9 -9
  47. package/dist/citations/aggregate.js +1 -1
  48. package/dist/citations/clients/arxiv.d.ts +2 -2
  49. package/dist/citations/clients/arxiv.js +12 -4
  50. package/dist/citations/clients/common.js +4 -2
  51. package/dist/citations/clients/crossref.d.ts +2 -2
  52. package/dist/citations/clients/crossref.js +37 -37
  53. package/dist/citations/clients/doi-registry.js +15 -16
  54. package/dist/citations/clients/pubmed.d.ts +2 -2
  55. package/dist/citations/clients/pubmed.js +20 -13
  56. package/dist/citations/clients/semantic-scholar.d.ts +2 -2
  57. package/dist/citations/clients/semantic-scholar.js +9 -9
  58. package/dist/citations/compare.js +2 -2
  59. package/dist/citations/match.d.ts +2 -2
  60. package/dist/citations/match.js +12 -7
  61. package/dist/citations/normalize.js +35 -26
  62. package/dist/citations/plan.js +6 -2
  63. package/dist/citations/resolve.d.ts +6 -6
  64. package/dist/citations/resolve.js +34 -25
  65. package/dist/citations/types.d.ts +77 -77
  66. package/dist/config/environment-stores.d.ts +10 -8
  67. package/dist/config/resource-limits.js +1 -3
  68. package/dist/contracts/analogy-report.d.ts +7 -7
  69. package/dist/contracts/analogy-report.js +2 -2
  70. package/dist/contracts/chat-events.d.ts +46 -22
  71. package/dist/contracts/chat-events.js +1 -1
  72. package/dist/contracts/chat-frame.d.ts +15 -5
  73. package/dist/contracts/chat-frame.js +67 -40
  74. package/dist/contracts/chat-parts.d.ts +130 -67
  75. package/dist/contracts/chat-parts.js +1 -0
  76. package/dist/contracts/content-url.js +16 -2
  77. package/dist/contracts/data-profile.d.ts +38 -38
  78. package/dist/contracts/index.d.ts +3 -3
  79. package/dist/contracts/index.js +1 -1
  80. package/dist/contracts/message.d.ts +6 -6
  81. package/dist/contracts/organ-system.d.ts +11 -11
  82. package/dist/contracts/part-registry.d.ts +5 -4
  83. package/dist/contracts/part-registry.js +5 -0
  84. package/dist/contracts/profile-vocabulary.d.ts +11 -10
  85. package/dist/contracts/profile-vocabulary.js +10 -3
  86. package/dist/contracts/report-blocks.d.ts +329 -329
  87. package/dist/contracts/report-reference.d.ts +105 -81
  88. package/dist/contracts/report-reference.js +30 -13
  89. package/dist/contracts/schemas/chat-events.d.ts +45 -6
  90. package/dist/contracts/schemas/chat-events.js +16 -0
  91. package/dist/contracts/schemas/chat-parts.d.ts +214 -102
  92. package/dist/contracts/schemas/chat-parts.js +50 -7
  93. package/dist/contracts/schemas/index.d.ts +1 -1
  94. package/dist/contracts/schemas/index.js +1 -1
  95. package/dist/contracts/severity.d.ts +1 -1
  96. package/dist/contracts/structure-source.d.ts +3 -3
  97. package/dist/contracts/structure-source.js +6 -2
  98. package/dist/contracts/subagent-activity.d.ts +2 -2
  99. package/dist/contracts/subagent-activity.js +5 -3
  100. package/dist/contracts/usage.d.ts +2 -2
  101. package/dist/data/safety-panel-schema.d.ts +25 -25
  102. package/dist/data/safety-panel-schema.js +13 -4
  103. package/dist/execution/artifact-metadata.d.ts +23 -15
  104. package/dist/execution/artifact-metadata.js +33 -10
  105. package/dist/execution/artifact-record.d.ts +2 -2
  106. package/dist/execution/artifact-registration.d.ts +5 -5
  107. package/dist/execution/artifact-registry.d.ts +8 -8
  108. package/dist/execution/dbos-run-launcher.d.ts +24 -4
  109. package/dist/execution/dbos-run-launcher.js +58 -4
  110. package/dist/execution/dbos-workflow-purger.d.ts +7 -6
  111. package/dist/execution/dbos-workflow-purger.js +29 -21
  112. package/dist/execution/input-signature.d.ts +2 -2
  113. package/dist/execution/post-step-pipeline.d.ts +9 -9
  114. package/dist/execution/post-step-pipeline.js +1 -1
  115. package/dist/execution/post-step.js +2 -2
  116. package/dist/execution/reconcile-manifest.d.ts +4 -4
  117. package/dist/execution/reconcile-manifest.js +3 -2
  118. package/dist/execution/run-authorizer.d.ts +46 -37
  119. package/dist/execution/run-authorizer.js +8 -8
  120. package/dist/execution/run-canceler.d.ts +39 -17
  121. package/dist/execution/run-canceler.js +137 -28
  122. package/dist/execution/run-end-record.d.ts +29 -0
  123. package/dist/execution/run-end-record.js +27 -0
  124. package/dist/execution/run-event-parts.d.ts +0 -8
  125. package/dist/execution/run-event-parts.js +29 -24
  126. package/dist/execution/run-event-stream.d.ts +8 -8
  127. package/dist/execution/run-event-stream.js +3 -4
  128. package/dist/execution/run-launcher.d.ts +4 -4
  129. package/dist/execution/run-synthesis.d.ts +49 -48
  130. package/dist/execution/run-synthesis.js +96 -255
  131. package/dist/execution/staged-input.d.ts +2 -2
  132. package/dist/execution/step-summary.d.ts +6 -6
  133. package/dist/execution/step-summary.js +4 -8
  134. package/dist/execution/topo-sort.js +4 -3
  135. package/dist/execution/workflow-purger.d.ts +2 -2
  136. package/dist/index.d.ts +25 -24
  137. package/dist/index.js +36 -37
  138. package/dist/input-sanitization.js +9 -2
  139. package/dist/input-scan/clustering.d.ts +6 -6
  140. package/dist/input-scan/clustering.js +11 -5
  141. package/dist/input-scan/companions.js +3 -2
  142. package/dist/input-scan/detect-sets.d.ts +2 -2
  143. package/dist/input-scan/detect-sets.js +25 -21
  144. package/dist/input-scan/enrich.d.ts +6 -6
  145. package/dist/input-scan/enrich.js +29 -12
  146. package/dist/input-scan/formats.d.ts +2 -2
  147. package/dist/input-scan/formats.js +8 -2
  148. package/dist/input-scan/markers.d.ts +2 -2
  149. package/dist/input-scan/markers.js +14 -5
  150. package/dist/input-scan/menu.d.ts +10 -10
  151. package/dist/input-scan/menu.js +0 -0
  152. package/dist/input-scan/quarantine.d.ts +2 -2
  153. package/dist/input-scan/quarantine.js +23 -18
  154. package/dist/input-scan/readout-budget.d.ts +2 -2
  155. package/dist/input-scan/readout-budget.js +1 -1
  156. package/dist/input-scan/readout.d.ts +2 -2
  157. package/dist/input-scan/readout.js +47 -34
  158. package/dist/input-scan/scan.d.ts +2 -2
  159. package/dist/input-scan/scan.js +7 -5
  160. package/dist/input-scan/set-types.d.ts +28 -28
  161. package/dist/input-scan/shapes.d.ts +4 -4
  162. package/dist/input-scan/shapes.js +0 -0
  163. package/dist/input-scan/templates.d.ts +10 -10
  164. package/dist/input-scan/templates.js +30 -22
  165. package/dist/input-scan/tokens.d.ts +6 -4
  166. package/dist/input-scan/tokens.js +100 -38
  167. package/dist/input-scan/types.d.ts +22 -22
  168. package/dist/lib/async-utils.d.ts +3 -7
  169. package/dist/lib/async-utils.js +5 -9
  170. package/dist/lib/cache.js +1 -1
  171. package/dist/lib/chrome.d.ts +46 -6
  172. package/dist/lib/console-logger.js +2 -2
  173. package/dist/lib/db-result.d.ts +22 -6
  174. package/dist/lib/db-result.js +9 -13
  175. package/dist/lib/eyes.d.ts +4 -4
  176. package/dist/lib/eyes.js +1 -1
  177. package/dist/lib/fs-helpers.js +18 -6
  178. package/dist/lib/fs-result.d.ts +1 -0
  179. package/dist/lib/fs-result.js +5 -6
  180. package/dist/lib/hooks.d.ts +23 -7
  181. package/dist/lib/hooks.js +17 -3
  182. package/dist/lib/host-concurrency.js +3 -2
  183. package/dist/lib/logger.d.ts +2 -2
  184. package/dist/lib/logger.js +2 -1
  185. package/dist/lib/metrics.d.ts +1 -1
  186. package/dist/lib/null-proto.d.ts +6 -0
  187. package/dist/lib/null-proto.js +17 -0
  188. package/dist/lib/otel-spans.d.ts +1 -1
  189. package/dist/lib/otel-spans.js +9 -5
  190. package/dist/lib/otel.d.ts +4 -2
  191. package/dist/lib/otel.js +10 -2
  192. package/dist/lib/page-capture.d.ts +8 -8
  193. package/dist/lib/page-capture.js +9 -4
  194. package/dist/lib/parse-json.d.ts +5 -0
  195. package/dist/lib/parse-json.js +12 -0
  196. package/dist/lib/present.d.ts +12 -0
  197. package/dist/lib/present.js +39 -0
  198. package/dist/lib/rate-limit.d.ts +4 -4
  199. package/dist/lib/rate-limit.js +12 -13
  200. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
  201. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
  202. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
  203. package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
  204. package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
  205. package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
  206. package/dist/lib/regulatory-corpus.d.ts +10 -10
  207. package/dist/lib/regulatory-corpus.js +3 -1
  208. package/dist/lib/result.d.ts +10 -11
  209. package/dist/lib/result.js +15 -13
  210. package/dist/lib/storage.d.ts +2 -2
  211. package/dist/lib/test/async-iterable.d.ts +9 -0
  212. package/dist/lib/test/async-iterable.js +28 -0
  213. package/dist/lib/test/request-url.d.ts +5 -0
  214. package/dist/lib/test/request-url.js +7 -0
  215. package/dist/lib/test/result-assert.d.ts +12 -0
  216. package/dist/lib/test/result-assert.js +17 -0
  217. package/dist/lib/test/text-shapes.d.ts +24 -0
  218. package/dist/lib/test/text-shapes.js +63 -0
  219. package/dist/lib/text.d.ts +22 -0
  220. package/dist/lib/text.js +68 -0
  221. package/dist/lib/thrown.d.ts +18 -0
  222. package/dist/lib/thrown.js +30 -0
  223. package/dist/lib/unknown-array.d.ts +6 -0
  224. package/dist/lib/unknown-array.js +8 -0
  225. package/dist/lib/unknown-containers.d.ts +14 -0
  226. package/dist/lib/unknown-containers.js +17 -0
  227. package/dist/lib/unknown-text.d.ts +8 -0
  228. package/dist/lib/unknown-text.js +28 -0
  229. package/dist/lib/zod-issue-shape.d.ts +1 -1
  230. package/dist/lib/zod-issue-shape.js +31 -31
  231. package/dist/lib/zod-issues.d.ts +3 -3
  232. package/dist/lib/zod-issues.js +30 -17
  233. package/dist/literature/sources/arxiv.d.ts +6 -6
  234. package/dist/literature/sources/arxiv.js +92 -35
  235. package/dist/literature/sources/http.d.ts +2 -2
  236. package/dist/literature/sources/http.js +16 -15
  237. package/dist/literature/sources/pubmed.d.ts +16 -16
  238. package/dist/literature/sources/pubmed.js +96 -61
  239. package/dist/literature/sources/semantic-scholar.d.ts +8 -8
  240. package/dist/literature/sources/semantic-scholar.js +22 -13
  241. package/dist/loop/accounting.d.ts +63 -0
  242. package/dist/loop/accounting.js +141 -0
  243. package/dist/loop/call-policy.d.ts +73 -0
  244. package/dist/loop/call-policy.js +109 -0
  245. package/dist/loop/chat-stream.d.ts +62 -0
  246. package/dist/loop/chat-stream.js +237 -0
  247. package/dist/loop/compaction.d.ts +14 -9
  248. package/dist/loop/compaction.js +17 -0
  249. package/dist/loop/metrics.d.ts +12 -15
  250. package/dist/loop/metrics.js +14 -26
  251. package/dist/loop/run-loop.d.ts +233 -0
  252. package/dist/loop/run-loop.js +770 -0
  253. package/dist/loop/sub-agent.d.ts +61 -0
  254. package/dist/loop/sub-agent.js +161 -0
  255. package/dist/loop/tool-adapter.d.ts +98 -0
  256. package/dist/loop/tool-adapter.js +364 -0
  257. package/dist/loop/tool-detail.d.ts +1 -1
  258. package/dist/loop/tool-detail.js +6 -5
  259. package/dist/loop/tool-outcome.d.ts +1 -1
  260. package/dist/loop/tool-output.d.ts +4 -4
  261. package/dist/loop/tool-output.js +2 -2
  262. package/dist/loop/turn-credentials.d.ts +34 -0
  263. package/dist/loop/turn-credentials.js +73 -0
  264. package/dist/loop/types.d.ts +34 -37
  265. package/dist/loop/types.js +2 -7
  266. package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
  267. package/dist/memory/ai-sdk-message-storage.js +13 -11
  268. package/dist/memory/card-builders.d.ts +14 -14
  269. package/dist/memory/card-builders.js +19 -15
  270. package/dist/memory/conversation-display-recorder.d.ts +22 -6
  271. package/dist/memory/conversation-display-recorder.js +64 -20
  272. package/dist/memory/conversation-display-replay.js +3 -2
  273. package/dist/memory/conversation-display-storage.d.ts +15 -7
  274. package/dist/memory/conversation-display-storage.js +141 -36
  275. package/dist/memory/conversation-view.d.ts +4 -4
  276. package/dist/memory/conversation-view.js +5 -4
  277. package/dist/memory/count-tokens.js +10 -8
  278. package/dist/memory/derive-thread-title.d.ts +0 -13
  279. package/dist/memory/derive-thread-title.js +2 -1
  280. package/dist/memory/message-backfill.d.ts +12 -5
  281. package/dist/memory/message-backfill.js +5 -3
  282. package/dist/memory/thread-history.d.ts +66 -24
  283. package/dist/memory/thread-history.js +212 -79
  284. package/dist/memory/thread-store.d.ts +26 -17
  285. package/dist/memory/thread-store.js +15 -9
  286. package/dist/memory/tool-call-integrity.d.ts +2 -2
  287. package/dist/memory/tool-call-integrity.js +4 -3
  288. package/dist/memory/working-memory.d.ts +16 -12
  289. package/dist/memory/working-memory.js +72 -61
  290. package/dist/prompts/briefing.d.ts +63 -9
  291. package/dist/prompts/briefing.js +130 -3
  292. package/dist/prompts/planner.js +13 -2
  293. package/dist/prompts/synthesis-agent.d.ts +1 -1
  294. package/dist/prompts/synthesis-agent.js +6 -14
  295. package/dist/provenance/collector.d.ts +6 -6
  296. package/dist/provenance/collector.js +15 -8
  297. package/dist/provenance/exec-frame.d.ts +2 -2
  298. package/dist/provenance/exec-frame.js +6 -1
  299. package/dist/provenance/seam.d.ts +24 -19
  300. package/dist/provenance/seam.js +7 -5
  301. package/dist/provenance/types.d.ts +6 -6
  302. package/dist/providers/ai-sdk.d.ts +113 -62
  303. package/dist/providers/ai-sdk.js +303 -458
  304. package/dist/providers/embedding.d.ts +2 -2
  305. package/dist/providers/embedding.js +1 -1
  306. package/dist/providers/errors.d.ts +22 -2
  307. package/dist/providers/errors.js +98 -50
  308. package/dist/providers/prompt-cache.d.ts +8 -8
  309. package/dist/providers/prompt-cache.js +13 -11
  310. package/dist/providers/reasoning.d.ts +2 -2
  311. package/dist/providers/reasoning.js +2 -2
  312. package/dist/providers/types.d.ts +59 -92
  313. package/dist/reference-data/catalog.d.ts +2 -15
  314. package/dist/reference-data/catalog.js +166 -10
  315. package/dist/reference-data/receipt.d.ts +2 -2
  316. package/dist/report-model/assert-rules.js +1 -1
  317. package/dist/report-model/authoring-grammar.d.ts +209 -231
  318. package/dist/report-model/block-walk.d.ts +10 -10
  319. package/dist/report-model/block-walk.js +2 -0
  320. package/dist/report-model/draft-finish.d.ts +8 -8
  321. package/dist/report-model/draft-finish.js +1 -1
  322. package/dist/report-model/draft-hash.js +8 -7
  323. package/dist/report-model/draft-operations.d.ts +22 -10
  324. package/dist/report-model/draft-operations.js +48 -30
  325. package/dist/report-model/draft-read.d.ts +19 -7
  326. package/dist/report-model/draft-read.js +16 -6
  327. package/dist/report-model/draft.d.ts +844 -2
  328. package/dist/report-model/draft.js +3 -1
  329. package/dist/report-model/fixture-resolver.js +39 -16
  330. package/dist/report-model/pin-snapshot.d.ts +2 -2
  331. package/dist/report-model/pin-snapshot.js +15 -15
  332. package/dist/report-model/production-resolver.d.ts +18 -18
  333. package/dist/report-model/production-resolver.js +50 -42
  334. package/dist/report-model/reference-resolver.d.ts +26 -10
  335. package/dist/report-model/reference-resolver.js +68 -5
  336. package/dist/report-model/reference-stamp.js +30 -38
  337. package/dist/report-model/structural-validation.js +12 -4
  338. package/dist/report-model/validate.d.ts +7 -7
  339. package/dist/report-model/validate.js +6 -6
  340. package/dist/report-render/assets.d.ts +2 -2
  341. package/dist/report-render/assets.js +27 -3
  342. package/dist/report-render/chart-export.d.ts +10 -2
  343. package/dist/report-render/chart-export.js +37 -11
  344. package/dist/report-render/chart-presets.d.ts +8 -8
  345. package/dist/report-render/chart-presets.js +3 -3
  346. package/dist/report-render/chart-renderers.d.ts +23 -16
  347. package/dist/report-render/chart-renderers.js +74 -53
  348. package/dist/report-render/chart-toolbox.d.ts +2 -2
  349. package/dist/report-render/chart-toolbox.js +7 -6
  350. package/dist/report-render/chart.d.ts +15 -16
  351. package/dist/report-render/chart.js +369 -252
  352. package/dist/report-render/design.d.ts +36 -297
  353. package/dist/report-render/design.js +0 -12
  354. package/dist/report-render/figures/common.d.ts +12 -12
  355. package/dist/report-render/figures/common.js +42 -31
  356. package/dist/report-render/figures/dendrogram.d.ts +3 -3
  357. package/dist/report-render/figures/dendrogram.js +10 -10
  358. package/dist/report-render/figures/dense.js +15 -8
  359. package/dist/report-render/figures/dotplot.js +46 -33
  360. package/dist/report-render/figures/embedding.js +52 -43
  361. package/dist/report-render/figures/equal-units.d.ts +10 -10
  362. package/dist/report-render/figures/equal-units.js +27 -27
  363. package/dist/report-render/figures/forest.js +9 -7
  364. package/dist/report-render/figures/gsea.js +21 -11
  365. package/dist/report-render/figures/heatmap.js +13 -9
  366. package/dist/report-render/figures/index.d.ts +10 -10
  367. package/dist/report-render/figures/index.js +4 -2
  368. package/dist/report-render/figures/km.js +10 -9
  369. package/dist/report-render/figures/label-room.d.ts +12 -12
  370. package/dist/report-render/figures/label-room.js +7 -2
  371. package/dist/report-render/figures/locuszoom.d.ts +2 -2
  372. package/dist/report-render/figures/locuszoom.js +59 -31
  373. package/dist/report-render/figures/lollipop.js +3 -2
  374. package/dist/report-render/figures/ma.js +8 -4
  375. package/dist/report-render/figures/manhattan.d.ts +1 -2
  376. package/dist/report-render/figures/manhattan.js +52 -34
  377. package/dist/report-render/figures/oncoprint.js +4 -5
  378. package/dist/report-render/figures/pca.js +25 -11
  379. package/dist/report-render/figures/qq.js +20 -9
  380. package/dist/report-render/figures/roc.js +1 -1
  381. package/dist/report-render/figures/sankey.d.ts +2 -2
  382. package/dist/report-render/figures/sankey.js +11 -10
  383. package/dist/report-render/figures/upset.d.ts +6 -6
  384. package/dist/report-render/figures/upset.js +7 -4
  385. package/dist/report-render/figures/volcano.js +12 -10
  386. package/dist/report-render/hybrid-svg.d.ts +4 -4
  387. package/dist/report-render/hybrid-svg.js +7 -5
  388. package/dist/report-render/number-format.d.ts +4 -4
  389. package/dist/report-render/number-format.js +62 -27
  390. package/dist/report-render/page.js +2 -1
  391. package/dist/report-render/provenance-data.d.ts +2 -2
  392. package/dist/report-render/references.d.ts +4 -4
  393. package/dist/report-render/render.d.ts +2 -2
  394. package/dist/report-render/render.js +10 -11
  395. package/dist/report-render/script-json.js +1 -1
  396. package/dist/report-render/table-data.d.ts +6 -6
  397. package/dist/report-render/test/options.d.ts +49 -0
  398. package/dist/report-render/test/options.js +143 -0
  399. package/dist/report-render/test/page-function.d.ts +19 -0
  400. package/dist/report-render/test/page-function.js +33 -0
  401. package/dist/report-render/types.d.ts +10 -10
  402. package/dist/report-render/value-bridge.d.ts +4 -4
  403. package/dist/report-render/value-bridge.js +27 -14
  404. package/dist/report-render/views/chart-view.d.ts +2 -2
  405. package/dist/report-render/views/chart-view.js +2 -2
  406. package/dist/report-render/views/lineage.d.ts +6 -6
  407. package/dist/report-render/views/lineage.js +2 -0
  408. package/dist/report-render/views/page-view.d.ts +2 -2
  409. package/dist/report-render/views/page-view.js +1 -0
  410. package/dist/report-render/views/prose.js +25 -8
  411. package/dist/report-render/views/references-view.js +12 -1
  412. package/dist/report-render/views/values.js +1 -1
  413. package/dist/runtime/assemble.d.ts +53 -26
  414. package/dist/runtime/assemble.js +103 -56
  415. package/dist/runtime/boot.d.ts +8 -7
  416. package/dist/runtime/boot.js +1 -1
  417. package/dist/runtime/connection-budget.d.ts +6 -6
  418. package/dist/runtime/connection-budget.js +1 -1
  419. package/dist/runtime/dbos.d.ts +29 -19
  420. package/dist/runtime/dbos.js +35 -20
  421. package/dist/runtime/result-serialization.js +18 -5
  422. package/dist/runtime/shutdown.d.ts +2 -2
  423. package/dist/sandbox/client.d.ts +7 -3
  424. package/dist/sandbox/cpu-files.d.ts +2 -2
  425. package/dist/sandbox/cpu-files.js +21 -4
  426. package/dist/sandbox/create-sandbox.d.ts +7 -8
  427. package/dist/sandbox/create-sandbox.js +6 -12
  428. package/dist/sandbox/docker-client.d.ts +48 -3
  429. package/dist/sandbox/docker-client.js +10 -6
  430. package/dist/sandbox/estimate-data-profile-resources.js +2 -7
  431. package/dist/sandbox/exec-outcome.d.ts +2 -2
  432. package/dist/sandbox/exec-outcome.js +1 -1
  433. package/dist/sandbox/exec.d.ts +10 -6
  434. package/dist/sandbox/exec.js +27 -12
  435. package/dist/sandbox/execution-id.js +14 -6
  436. package/dist/sandbox/farm.d.ts +2 -2
  437. package/dist/sandbox/farm.js +22 -27
  438. package/dist/sandbox/identity.d.ts +7 -0
  439. package/dist/sandbox/identity.js +14 -3
  440. package/dist/sandbox/image-packages.d.ts +26 -4
  441. package/dist/sandbox/image-packages.js +29 -27
  442. package/dist/sandbox/k8s-client.d.ts +35 -8
  443. package/dist/sandbox/k8s-client.js +6 -5
  444. package/dist/sandbox/labels.js +1 -0
  445. package/dist/sandbox/liveness.js +3 -1
  446. package/dist/sandbox/mount-plan.d.ts +10 -10
  447. package/dist/sandbox/mount-plan.js +13 -14
  448. package/dist/sandbox/notification-sweep.d.ts +4 -4
  449. package/dist/sandbox/notification-sweep.js +4 -7
  450. package/dist/sandbox/package-identity.d.ts +6 -13
  451. package/dist/sandbox/package-identity.js +46 -28
  452. package/dist/sandbox/reaper.d.ts +10 -10
  453. package/dist/sandbox/reaper.js +4 -6
  454. package/dist/sandbox/sandbox-error.d.ts +2 -9
  455. package/dist/sandbox/sandbox-error.js +21 -8
  456. package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
  457. package/dist/sandbox/sandbox-step-translate.js +22 -8
  458. package/dist/sandbox/step-sandbox.d.ts +47 -0
  459. package/dist/sandbox/step-sandbox.js +53 -0
  460. package/dist/sandbox/types.d.ts +18 -19
  461. package/dist/sandbox/types.js +1 -1
  462. package/dist/schemas/artifact-manifest.d.ts +4 -4
  463. package/dist/schemas/data-profile-schemas.d.ts +351 -306
  464. package/dist/schemas/file-metadata.js +2 -4
  465. package/dist/schemas/plan-schemas.d.ts +79 -25
  466. package/dist/schemas/plan-schemas.js +1 -1
  467. package/dist/schemas/run-synthesis.d.ts +95 -26
  468. package/dist/schemas/run-synthesis.js +3 -1
  469. package/dist/schemas/validate-plan.d.ts +4 -4
  470. package/dist/schemas/validate-plan.js +17 -5
  471. package/dist/schemas/workflow-state.d.ts +127 -14
  472. package/dist/schemas/workflow-state.js +56 -2
  473. package/dist/state/active-turns.d.ts +36 -0
  474. package/dist/state/active-turns.js +67 -0
  475. package/dist/state/analyses-metrics.d.ts +8 -8
  476. package/dist/state/analyses-metrics.js +4 -4
  477. package/dist/state/analyses.d.ts +0 -14
  478. package/dist/state/analyses.js +0 -32
  479. package/dist/state/artifacts.d.ts +47 -18
  480. package/dist/state/artifacts.js +48 -7
  481. package/dist/state/data-profile.d.ts +2 -2
  482. package/dist/state/db.d.ts +12 -2
  483. package/dist/state/db.js +5 -0
  484. package/dist/state/edit-intents.d.ts +4 -0
  485. package/dist/state/edit-intents.js +71 -0
  486. package/dist/state/index.d.ts +5 -5
  487. package/dist/state/index.js +3 -3
  488. package/dist/state/init.d.ts +2 -1
  489. package/dist/state/init.js +5 -2
  490. package/dist/state/migrations/20260927120000_baseline.js +3 -1
  491. package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
  492. package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
  493. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
  494. package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
  495. package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
  496. package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
  497. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
  498. package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
  499. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
  500. package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
  501. package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
  502. package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
  503. package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
  504. package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
  505. package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
  506. package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
  507. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
  508. package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
  509. package/dist/state/migrations/index.js +18 -0
  510. package/dist/state/paused-work.d.ts +52 -0
  511. package/dist/state/paused-work.js +105 -0
  512. package/dist/state/plans.d.ts +27 -8
  513. package/dist/state/plans.js +14 -11
  514. package/dist/state/purge-analysis.d.ts +6 -6
  515. package/dist/state/purge-analysis.js +10 -2
  516. package/dist/state/report-session-state.d.ts +43 -18
  517. package/dist/state/report-session-state.js +43 -4
  518. package/dist/state/report-versions.d.ts +16 -11
  519. package/dist/state/report-versions.js +5 -3
  520. package/dist/state/runs.d.ts +70 -25
  521. package/dist/state/runs.js +127 -64
  522. package/dist/state/schema.d.ts +18 -21
  523. package/dist/state/schema.js +4 -5
  524. package/dist/state/snapshot-parse.d.ts +2 -2
  525. package/dist/state/snapshot-parse.js +14 -8
  526. package/dist/state/step-executions.d.ts +29 -8
  527. package/dist/state/step-executions.js +28 -4
  528. package/dist/state/tool-outputs.d.ts +2 -2
  529. package/dist/state/tool-outputs.js +2 -1
  530. package/dist/state/vector-store.d.ts +16 -16
  531. package/dist/state/vector-store.js +11 -7
  532. package/dist/tasks/data-profile-absorb.d.ts +3 -3
  533. package/dist/tasks/data-profile-absorb.js +21 -16
  534. package/dist/tasks/data-profile-activity.d.ts +5 -5
  535. package/dist/tasks/data-profile-activity.js +5 -5
  536. package/dist/tasks/data-profile-index.d.ts +4 -4
  537. package/dist/tasks/data-profile-index.js +32 -17
  538. package/dist/tasks/data-profile-resolve.d.ts +8 -8
  539. package/dist/tasks/data-profile-resolve.js +88 -62
  540. package/dist/tasks/data-profile.d.ts +40 -31
  541. package/dist/tasks/data-profile.js +138 -95
  542. package/dist/tasks/extract-values.d.ts +26 -79
  543. package/dist/tasks/extract-values.js +48 -108
  544. package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
  545. package/dist/tasks/refresh-regulatory-corpus.js +12 -8
  546. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
  547. package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
  548. package/dist/testing.d.ts +60 -0
  549. package/dist/testing.js +96 -0
  550. package/dist/tools/ad-hoc-router.d.ts +11 -9
  551. package/dist/tools/ad-hoc-router.js +80 -51
  552. package/dist/tools/analysis-invocation.d.ts +7 -0
  553. package/dist/tools/analysis-invocation.js +29 -5
  554. package/dist/tools/approval/contract.d.ts +8 -52
  555. package/dist/tools/approval/contract.js +7 -36
  556. package/dist/tools/approval/gateway.d.ts +27 -28
  557. package/dist/tools/approval/gateway.js +33 -130
  558. package/dist/tools/approval/queries.d.ts +6 -11
  559. package/dist/tools/approval/queries.js +43 -29
  560. package/dist/tools/approval/uuidv7.js +2 -2
  561. package/dist/tools/bio/chembl.d.ts +3 -3
  562. package/dist/tools/bio/chembl.js +10 -0
  563. package/dist/tools/bio/comptox.d.ts +25 -8
  564. package/dist/tools/bio/comptox.js +4 -2
  565. package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
  566. package/dist/tools/bio/drug-gene-interactions.js +11 -8
  567. package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
  568. package/dist/tools/bio/gene-disease-evidence.js +10 -6
  569. package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
  570. package/dist/tools/bio/keys.d.ts +2 -2
  571. package/dist/tools/bio/keys.js +3 -3
  572. package/dist/tools/bio/lookup-annotation.d.ts +5 -5
  573. package/dist/tools/bio/lookup-annotation.js +3 -0
  574. package/dist/tools/bio/opentargets.d.ts +1 -1
  575. package/dist/tools/bio/opentargets.js +6 -0
  576. package/dist/tools/bio/pubchem.d.ts +2 -2
  577. package/dist/tools/bio/pubchem.js +6 -0
  578. package/dist/tools/bio/pubmed.d.ts +26 -16
  579. package/dist/tools/bio/pubmed.js +9 -3
  580. package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
  581. package/dist/tools/bio/search-clinical-trials.js +5 -1
  582. package/dist/tools/bio/search-faers.d.ts +2 -2
  583. package/dist/tools/bio/search-faers.js +1 -1
  584. package/dist/tools/bio/search-gene.d.ts +2 -2
  585. package/dist/tools/bio/search-gene.js +1 -0
  586. package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
  587. package/dist/tools/bio/search-geo-datasets.js +5 -5
  588. package/dist/tools/bio/search-interactions.d.ts +1 -1
  589. package/dist/tools/bio/search-patents.d.ts +28 -22
  590. package/dist/tools/bio/search-patents.js +20 -17
  591. package/dist/tools/bio/search-protein.d.ts +2 -2
  592. package/dist/tools/bio/search-protein.js +1 -1
  593. package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
  594. package/dist/tools/bio/search-regulatory-approvals.js +21 -16
  595. package/dist/tools/bio/target-safety.d.ts +8 -8
  596. package/dist/tools/bio/target-safety.js +11 -6
  597. package/dist/tools/capability-data.d.ts +40 -0
  598. package/dist/tools/capability-data.js +74 -0
  599. package/dist/tools/define-tool.d.ts +55 -46
  600. package/dist/tools/define-tool.js +39 -27
  601. package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
  602. package/dist/tools/display/normalize-echart-spec.js +51 -27
  603. package/dist/tools/display/show-user.d.ts +2 -2
  604. package/dist/tools/display/show-user.js +1 -1
  605. package/dist/tools/execute-analysis.d.ts +54 -17
  606. package/dist/tools/execute-analysis.js +193 -62
  607. package/dist/tools/knowledge/check.d.ts +182 -0
  608. package/dist/tools/knowledge/check.js +94 -0
  609. package/dist/tools/knowledge/client.d.ts +351 -0
  610. package/dist/tools/knowledge/client.js +319 -0
  611. package/dist/tools/knowledge/environment.d.ts +78 -0
  612. package/dist/tools/knowledge/environment.js +116 -0
  613. package/dist/tools/knowledge/index.d.ts +49 -0
  614. package/dist/tools/knowledge/index.js +70 -0
  615. package/dist/tools/knowledge/local-slots.d.ts +62 -0
  616. package/dist/tools/knowledge/local-slots.js +184 -0
  617. package/dist/tools/knowledge/pin.d.ts +14 -0
  618. package/dist/tools/knowledge/pin.js +17 -0
  619. package/dist/tools/knowledge/recommend.d.ts +67 -0
  620. package/dist/tools/knowledge/recommend.js +106 -0
  621. package/dist/tools/knowledge/situation.d.ts +143 -0
  622. package/dist/tools/knowledge/situation.js +157 -0
  623. package/dist/tools/knowledge/skeleton.d.ts +69 -0
  624. package/dist/tools/knowledge/skeleton.js +201 -0
  625. package/dist/tools/knowledge/template.d.ts +139 -0
  626. package/dist/tools/knowledge/template.js +273 -0
  627. package/dist/tools/lib/alphafold-client.js +2 -1
  628. package/dist/tools/lib/amass-client.d.ts +28 -28
  629. package/dist/tools/lib/amass-client.js +20 -10
  630. package/dist/tools/lib/api-utils.d.ts +13 -3
  631. package/dist/tools/lib/api-utils.js +17 -3
  632. package/dist/tools/lib/bgee-client.d.ts +6 -6
  633. package/dist/tools/lib/bgee-client.js +16 -10
  634. package/dist/tools/lib/cbioportal-client.d.ts +4 -4
  635. package/dist/tools/lib/cbioportal-client.js +9 -8
  636. package/dist/tools/lib/chembl-client.d.ts +14 -14
  637. package/dist/tools/lib/chembl-client.js +11 -4
  638. package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
  639. package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
  640. package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
  641. package/dist/tools/lib/clinical-trials-client.js +10 -10
  642. package/dist/tools/lib/clinvar-client.d.ts +2 -2
  643. package/dist/tools/lib/clinvar-client.js +6 -6
  644. package/dist/tools/lib/ctx-ops.d.ts +23 -23
  645. package/dist/tools/lib/ctx-ops.js +13 -10
  646. package/dist/tools/lib/dgidb-client.d.ts +6 -6
  647. package/dist/tools/lib/dgidb-client.js +10 -12
  648. package/dist/tools/lib/disgenet-client.d.ts +4 -4
  649. package/dist/tools/lib/ema-client.d.ts +2 -2
  650. package/dist/tools/lib/ensembl-client.d.ts +4 -4
  651. package/dist/tools/lib/ensembl-client.js +5 -4
  652. package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
  653. package/dist/tools/lib/gwas-catalog-client.js +17 -17
  654. package/dist/tools/lib/html-text.d.ts +6 -0
  655. package/dist/tools/lib/html-text.js +9 -0
  656. package/dist/tools/lib/identifier-resolver.d.ts +4 -4
  657. package/dist/tools/lib/identifier-resolver.js +7 -3
  658. package/dist/tools/lib/impc-client.d.ts +8 -8
  659. package/dist/tools/lib/impc-client.js +46 -35
  660. package/dist/tools/lib/iuphar-client.d.ts +2 -2
  661. package/dist/tools/lib/iuphar-client.js +7 -16
  662. package/dist/tools/lib/monarch-client.d.ts +4 -4
  663. package/dist/tools/lib/openfda-client.d.ts +22 -22
  664. package/dist/tools/lib/openfda-client.js +23 -22
  665. package/dist/tools/lib/opentargets-client.d.ts +12 -12
  666. package/dist/tools/lib/pathway-client.d.ts +4 -4
  667. package/dist/tools/lib/pathway-client.js +15 -19
  668. package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
  669. package/dist/tools/lib/pharmgkb-client.js +1 -1
  670. package/dist/tools/lib/protein-family-modality.d.ts +2 -2
  671. package/dist/tools/lib/protein-family-modality.js +0 -2
  672. package/dist/tools/lib/protein-family-normalize.js +7 -0
  673. package/dist/tools/lib/pubchem-client.d.ts +2 -2
  674. package/dist/tools/lib/pubchem-client.js +1 -0
  675. package/dist/tools/lib/pubchem-ops.d.ts +4 -4
  676. package/dist/tools/lib/pubchem-ops.js +8 -0
  677. package/dist/tools/lib/pubmed-client.d.ts +9 -9
  678. package/dist/tools/lib/pubmed-client.js +1 -1
  679. package/dist/tools/lib/string-client.d.ts +6 -6
  680. package/dist/tools/lib/uniprot-client.d.ts +8 -8
  681. package/dist/tools/lib/uniprot-client.js +5 -1
  682. package/dist/tools/memory/update-working-memory.d.ts +16 -13
  683. package/dist/tools/memory/update-working-memory.js +21 -3
  684. package/dist/tools/read-tool-output.js +8 -2
  685. package/dist/tools/registry.d.ts +2 -2
  686. package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
  687. package/dist/tools/report-authoring/authoring-tools.js +128 -62
  688. package/dist/tools/report-session/derive-table.d.ts +19 -59
  689. package/dist/tools/report-session/derive-table.js +120 -122
  690. package/dist/tools/report-session/examine-page.d.ts +6 -6
  691. package/dist/tools/report-session/examine-page.js +14 -12
  692. package/dist/tools/report-session/list-artifacts.d.ts +6 -6
  693. package/dist/tools/report-session/list-artifacts.js +5 -5
  694. package/dist/tools/report-session/page-faults.d.ts +6 -6
  695. package/dist/tools/report-session/page-faults.js +3 -1
  696. package/dist/tools/report-session/preview-report.d.ts +4 -3
  697. package/dist/tools/report-session/preview-report.js +26 -7
  698. package/dist/tools/report-session/record-version.d.ts +9 -4
  699. package/dist/tools/report-session/record-version.js +16 -9
  700. package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
  701. package/dist/tools/research/generate-analogy-report.d.ts +14 -7
  702. package/dist/tools/research/generate-analogy-report.js +80 -76
  703. package/dist/tools/research/generate-plan.d.ts +39 -16
  704. package/dist/tools/research/generate-plan.js +565 -338
  705. package/dist/tools/research/guarded-address.d.ts +20 -0
  706. package/dist/tools/research/guarded-address.js +149 -0
  707. package/dist/tools/research/inspect-data-profile.d.ts +27 -20
  708. package/dist/tools/research/inspect-data-profile.js +26 -25
  709. package/dist/tools/research/inspect-run.d.ts +54 -27
  710. package/dist/tools/research/inspect-run.js +50 -40
  711. package/dist/tools/research/literature-reviewer.d.ts +8 -7
  712. package/dist/tools/research/literature-reviewer.js +29 -28
  713. package/dist/tools/research/search-arxiv.d.ts +1 -1
  714. package/dist/tools/research/search-arxiv.js +1 -1
  715. package/dist/tools/research/search-github-repos.d.ts +10 -7
  716. package/dist/tools/research/search-github-repos.js +25 -22
  717. package/dist/tools/research/search-semantic-scholar.js +1 -1
  718. package/dist/tools/research/searxng-engine.d.ts +40 -0
  719. package/dist/tools/research/searxng-engine.js +122 -0
  720. package/dist/tools/research/web-fetch.d.ts +127 -0
  721. package/dist/tools/research/web-fetch.js +618 -0
  722. package/dist/tools/research/web-search.d.ts +84 -0
  723. package/dist/tools/research/web-search.js +117 -0
  724. package/dist/tools/sandbox/link-packages.d.ts +11 -7
  725. package/dist/tools/sandbox/link-packages.js +11 -8
  726. package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
  727. package/dist/tools/sandbox/list-available-packages.js +43 -29
  728. package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
  729. package/dist/tools/sandbox/list-available-refs.js +119 -37
  730. package/dist/tools/sandbox/report-blocker.d.ts +30 -37
  731. package/dist/tools/sandbox/report-blocker.js +22 -68
  732. package/dist/tools/sandbox/skills.d.ts +16 -12
  733. package/dist/tools/sandbox/skills.js +16 -12
  734. package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
  735. package/dist/tools/sandbox/submit-file-metadata.js +18 -21
  736. package/dist/tools/start-report-session.d.ts +13 -5
  737. package/dist/tools/start-report-session.js +35 -8
  738. package/dist/tools/terminal-text.d.ts +14 -0
  739. package/dist/tools/terminal-text.js +51 -0
  740. package/dist/tools/workspace/decision-record.d.ts +81 -0
  741. package/dist/tools/workspace/decision-record.js +127 -0
  742. package/dist/tools/workspace/edit-file.d.ts +59 -18
  743. package/dist/tools/workspace/edit-file.js +98 -15
  744. package/dist/tools/workspace/execute-command.d.ts +31 -12
  745. package/dist/tools/workspace/execute-command.js +37 -8
  746. package/dist/tools/workspace/file-stat.d.ts +6 -3
  747. package/dist/tools/workspace/grep.d.ts +10 -7
  748. package/dist/tools/workspace/grep.js +9 -3
  749. package/dist/tools/workspace/index.d.ts +1 -0
  750. package/dist/tools/workspace/index.js +1 -0
  751. package/dist/tools/workspace/list-files.d.ts +6 -3
  752. package/dist/tools/workspace/mutator.d.ts +28 -15
  753. package/dist/tools/workspace/mutator.js +107 -53
  754. package/dist/tools/workspace/read-file.d.ts +8 -5
  755. package/dist/tools/workspace/result-bounds.d.ts +5 -5
  756. package/dist/tools/workspace/result-bounds.js +4 -2
  757. package/dist/tools/workspace/run-exec.d.ts +2 -2
  758. package/dist/tools/workspace/run-exec.js +3 -3
  759. package/dist/tools/workspace/scan-inputs.d.ts +8 -5
  760. package/dist/tools/workspace/scan-inputs.js +17 -5
  761. package/dist/tools/workspace/show-file.d.ts +1 -1
  762. package/dist/tools/workspace/show-file.js +2 -1
  763. package/dist/tools/workspace/show-plan.d.ts +8 -5
  764. package/dist/tools/workspace/show-plan.js +9 -8
  765. package/dist/tools/workspace/workspace-search.d.ts +41 -13
  766. package/dist/tools/workspace/workspace-search.js +27 -14
  767. package/dist/tools/workspace/write-file.d.ts +9 -7
  768. package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
  769. package/dist/workflows/execute-analysis-scheduler.js +6 -3
  770. package/dist/workflows/execute-analysis.d.ts +100 -76
  771. package/dist/workflows/execute-analysis.js +380 -247
  772. package/dist/workflows/pause.d.ts +71 -0
  773. package/dist/workflows/pause.js +173 -0
  774. package/dist/workflows/sandbox-step.d.ts +50 -61
  775. package/dist/workflows/sandbox-step.js +99 -106
  776. package/dist/workflows/test/sql-writes.d.ts +21 -0
  777. package/dist/workflows/test/sql-writes.js +36 -0
  778. package/dist/workspace/filesystem.d.ts +6 -6
  779. package/dist/workspace/filesystem.js +10 -8
  780. package/dist/workspace/paths.d.ts +1 -1
  781. package/dist/workspace/paths.js +15 -4
  782. package/dist/workspace/search-config.d.ts +2 -2
  783. package/dist/workspace/search-config.js +1 -1
  784. package/package.json +25 -22
  785. package/dist/loop/continue-agent.d.ts +0 -40
  786. package/dist/loop/continue-agent.js +0 -38
  787. package/dist/loop/genai-spans.d.ts +0 -47
  788. package/dist/loop/genai-spans.js +0 -134
  789. package/dist/loop/run-agent.d.ts +0 -236
  790. package/dist/loop/run-agent.js +0 -1110
  791. package/dist/loop/run-step.d.ts +0 -29
  792. package/dist/loop/run-step.js +0 -34
  793. package/dist/loop/run-to-terminal.d.ts +0 -66
  794. package/dist/loop/run-to-terminal.js +0 -90
  795. package/dist/loop/tool-mask.d.ts +0 -23
  796. package/dist/loop/tool-mask.js +0 -46
  797. package/dist/providers/streaming-chat.d.ts +0 -32
  798. package/dist/providers/streaming-chat.js +0 -91
  799. package/dist/tasks/derive-table-exec.d.ts +0 -54
  800. package/dist/tasks/derive-table-exec.js +0 -86
  801. package/dist/workflows/suspension.d.ts +0 -32
  802. package/dist/workflows/suspension.js +0 -38
@@ -9,6 +9,9 @@
9
9
  * not `.nullable()`.
10
10
  */
11
11
  import { z } from "zod";
12
+ import { isUnknownArray } from "../../lib/unknown-array.js";
13
+ import { presentGet } from "../../lib/present.js";
14
+ import { parseUnknownRecord } from "../../lib/unknown-containers.js";
12
15
  import { apiFetchValidated, describeApiError, isUnexpectedApiError } from "./api-utils.js";
13
16
  const IMPC_BASE = "https://www.ebi.ac.uk/mi/impc/solr";
14
17
  const PHENOTYPE_ROW_CAP = 500;
@@ -40,14 +43,14 @@ const ORGAN_SYSTEM_MAP = {
40
43
  "embryo phenotype": "growth",
41
44
  };
42
45
  // A single IMPC Solr document — fields vary by core; all optional. `top_level_mp_term_name`
43
- // and `sex` are `z.unknown()` because the code reads them defensively (`Array.isArray`,
46
+ // and `sex` ride as JSON values: the code reads them defensively (`Array.isArray`,
44
47
  // `typeof === "string"`) rather than trusting a wire type.
45
48
  const ImpcSolrDocSchema = z.object({
46
49
  mp_term_id: z.string().optional(),
47
50
  mp_term_name: z.string().optional(),
48
51
  p_value: z.number().optional(),
49
- top_level_mp_term_name: z.unknown().optional(),
50
- sex: z.unknown().optional(),
52
+ top_level_mp_term_name: z.json().optional(),
53
+ sex: z.json().optional(),
51
54
  parameter_stable_id: z.string().optional(),
52
55
  parameter_name: z.string().optional(),
53
56
  marker_symbol: z.string().optional(),
@@ -57,14 +60,21 @@ const ImpcSolrDocSchema = z.object({
57
60
  const ImpcSolrResponseSchema = z.object({
58
61
  response: z.object({ docs: z.array(ImpcSolrDocSchema).optional(), numFound: z.number().optional() }).optional(),
59
62
  });
63
+ import { hasWhitespace } from "../../lib/text.js";
60
64
  function escapeSolrValue(value) {
61
- return value.replace(/([+\-&|!(){}[\]^"~*?:\\/\s])/g, "\\$1");
65
+ const specials = '+-&|!(){}[]^"~*?:\\/';
66
+ let out = "";
67
+ for (const char of value) {
68
+ if (specials.includes(char) || hasWhitespace(char))
69
+ out += "\\" + char;
70
+ else
71
+ out += char;
72
+ }
73
+ return out;
62
74
  }
63
75
  export function parsePhenotypeResponse(raw) {
64
- // `raw` is the untyped IMPC Solr response; we reach `.response.docs` defensively
65
- // (optional-chained, defaulted to []) and treat each doc's fields as optional below.
66
- const docs = raw?.response?.docs ?? [];
67
- if (!Array.isArray(docs) || docs.length === 0) {
76
+ const docs = solrDocsOf(raw);
77
+ if (docs.length === 0) {
68
78
  return { mpTerms: [], organSystems: [], sexDimorphic: false, phenotypeCount: 0 };
69
79
  }
70
80
  const byMp = new Map();
@@ -72,13 +82,13 @@ export function parsePhenotypeResponse(raw) {
72
82
  const mpToSexes = new Map();
73
83
  const allSexes = new Set();
74
84
  for (const doc of docs) {
75
- const mpId = doc.mp_term_id;
85
+ const mpId = readString(doc, "mp_term_id");
76
86
  if (!mpId)
77
87
  continue;
78
88
  const newP = typeof doc.p_value === "number" && Number.isFinite(doc.p_value) ? doc.p_value : null;
79
89
  const existing = byMp.get(mpId);
80
90
  if (!existing) {
81
- byMp.set(mpId, { id: mpId, term: doc.mp_term_name ?? "", bestPValue: newP });
91
+ byMp.set(mpId, { id: mpId, term: readString(doc, "mp_term_name") ?? "", bestPValue: newP });
82
92
  }
83
93
  else if (newP !== null && (existing.bestPValue === null || newP < existing.bestPValue)) {
84
94
  existing.bestPValue = newP;
@@ -97,7 +107,7 @@ export function parsePhenotypeResponse(raw) {
97
107
  allSexes.add(sex);
98
108
  if (!mpToSexes.has(mpId))
99
109
  mpToSexes.set(mpId, new Set());
100
- mpToSexes.get(mpId).add(sex);
110
+ presentGet(mpToSexes, mpId, "the sex set of the phenotype").add(sex);
101
111
  }
102
112
  }
103
113
  const mpTerms = [...byMp.values()].sort((a, b) => {
@@ -110,33 +120,34 @@ export function parsePhenotypeResponse(raw) {
110
120
  const sexDimorphic = bothSexesTested && [...mpToSexes.values()].some((sexes) => (sexes.has("male") && !sexes.has("female")) || (sexes.has("female") && !sexes.has("male")));
111
121
  return { mpTerms, organSystems, sexDimorphic, phenotypeCount: byMp.size };
112
122
  }
123
+ function readString(record, key) {
124
+ const value = record[key];
125
+ return typeof value === "string" ? value : undefined;
126
+ }
127
+ /** The `.response.docs` of a Solr envelope, each doc as the record its fields are read off; a non-record doc is skipped. */
128
+ function solrDocsOf(raw) {
129
+ const docs = parseUnknownRecord(parseUnknownRecord(raw)?.response)?.docs;
130
+ if (!isUnknownArray(docs))
131
+ return [];
132
+ return docs.flatMap((doc) => {
133
+ const record = parseUnknownRecord(doc);
134
+ return record === undefined ? [] : [record];
135
+ });
136
+ }
113
137
  export function buildViabilityCalls(docsB, docsC) {
114
- // `docsB`/`docsC` are untyped IMPC Solr responses; the `.response.docs` reach is
115
- // optional-chained + defaulted, so a shape mismatch degrades to an empty result.
116
- const bDocs = docsB?.response?.docs ?? [];
117
- const cDocs = docsC?.response?.docs ?? [];
118
138
  const seen = new Set();
119
139
  const out = [];
120
- for (const d of bDocs) {
121
- const pid = d.parameter_stable_id;
122
- if (!pid || seen.has(pid))
123
- continue;
124
- seen.add(pid);
125
- out.push({
126
- zygosity: d.parameter_name ?? "",
127
- parameterStableId: pid,
128
- mpTerm: d.mp_term_id && d.mp_term_name ? { id: d.mp_term_id, name: d.mp_term_name } : null,
129
- });
130
- }
131
- for (const d of cDocs) {
132
- const pid = d.parameter_stable_id;
140
+ for (const d of [...solrDocsOf(docsB), ...solrDocsOf(docsC)]) {
141
+ const pid = readString(d, "parameter_stable_id");
133
142
  if (!pid || seen.has(pid))
134
143
  continue;
135
144
  seen.add(pid);
145
+ const mpId = readString(d, "mp_term_id");
146
+ const mpName = readString(d, "mp_term_name");
136
147
  out.push({
137
- zygosity: d.parameter_name ?? "",
148
+ zygosity: readString(d, "parameter_name") ?? "",
138
149
  parameterStableId: pid,
139
- mpTerm: null,
150
+ mpTerm: mpId && mpName ? { id: mpId, name: mpName } : null,
140
151
  });
141
152
  }
142
153
  return out;
@@ -159,15 +170,15 @@ async function resolveImpcGene(humanSymbol) {
159
170
  throw new Error(describeApiError(res.error));
160
171
  return null;
161
172
  }
162
- const docs = res.value?.response?.docs ?? [];
173
+ const docs = res.value.response?.docs ?? [];
163
174
  if (!Array.isArray(docs) || docs.length === 0)
164
175
  return null;
165
176
  const doc = docs[0];
166
- if (!doc.marker_symbol || !doc.mgi_accession_id)
177
+ if (doc === undefined || !doc.marker_symbol || !doc.mgi_accession_id)
167
178
  return null;
168
179
  return {
169
- mouseMarkerSymbol: String(doc.marker_symbol),
170
- mgiAccessionId: String(doc.mgi_accession_id),
180
+ mouseMarkerSymbol: doc.marker_symbol,
181
+ mgiAccessionId: doc.mgi_accession_id,
171
182
  };
172
183
  }
173
184
  async function fetchPhenotypes(mouseSym) {
@@ -179,7 +190,7 @@ async function fetchPhenotypes(mouseSym) {
179
190
  throw new Error(describeApiError(res.error));
180
191
  return { raw: { response: { docs: [] } }, numFound: 0 };
181
192
  }
182
- const numFound = Number(res.value?.response?.numFound ?? 0);
193
+ const numFound = res.value.response?.numFound ?? 0;
183
194
  return { raw: res.value, numFound };
184
195
  }
185
196
  async function fetchAssignedViability(mouseSym) {
@@ -19,14 +19,14 @@ export declare const IupharTargetSchema: z.ZodObject<{
19
19
  subunitType: z.ZodOptional<z.ZodString>;
20
20
  }, z.core.$strip>;
21
21
  export type IupharTarget = z.infer<typeof IupharTargetSchema>;
22
- export interface IupharHeterodimer {
22
+ export type IupharHeterodimer = {
23
23
  /** Complex target record (e.g., the AMY1 receptor). */
24
24
  complex: IupharTarget;
25
25
  /** All subunits of the complex, including the primary protein and accessory(ies). */
26
26
  subunits: IupharTarget[];
27
27
  /** Accessory-protein subunits only (type === "AccessoryProtein"). */
28
28
  accessories: IupharTarget[];
29
- }
29
+ };
30
30
  export declare function findTargetByGeneSymbol(geneSymbol: string): Promise<IupharTarget | null>;
31
31
  export declare function findTargetByUniprot(accession: string): Promise<IupharTarget | null>;
32
32
  /**
@@ -9,6 +9,8 @@
9
9
  */
10
10
  import { z } from "zod";
11
11
  import { createNoopLogger } from "../../lib/console-logger.js";
12
+ import { presentAt } from "../../lib/present.js";
13
+ import { stripHtmlTags } from "./html-text.js";
12
14
  import { apiFetchValidated, describeApiError, isUnexpectedApiError } from "./api-utils.js";
13
15
  import { IUPHAR_BASE, IUPHAR_HEADERS as HEADERS } from "./iuphar-config.js";
14
16
  // Validated at the fetch boundary. GtoPdb serves the target record in three
@@ -36,19 +38,8 @@ export const IupharTargetSchema = z.object({
36
38
  complexIds: z.array(z.number()).optional(),
37
39
  subunitType: z.string().optional(),
38
40
  });
41
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the issued UniProt accession shape is the identifier rule of the target records.
39
42
  const UNIPROT_ACCESSION_RE = /^[A-Z][0-9][A-Z0-9]{3}[0-9]$/;
40
- function stripHtml(name) {
41
- // Strip tags to a fixpoint: a single pass can leave a `<…>` behind when
42
- // removing an inner tag lets the surrounding angle brackets form a new one,
43
- // so repeat until the string stops changing.
44
- let out = name;
45
- let prev;
46
- do {
47
- prev = out;
48
- out = out.replace(/<[^>]+>/g, "");
49
- } while (out !== prev);
50
- return out;
51
- }
52
43
  function notFound(error) {
53
44
  return error.type === "http_status" && (error.status === 404 || error.status === 204);
54
45
  }
@@ -123,9 +114,9 @@ export async function getFamilyHeterodimers(uniprotOrGeneSymbol) {
123
114
  const batch = complexes.slice(i, i + concurrency);
124
115
  const subunitLists = await Promise.all(batch.map((c) => getSubunits(c.targetId)));
125
116
  for (let j = 0; j < batch.length; j++) {
126
- const complex = batch[j];
127
- const subunits = subunitLists[j];
128
- const cleanedSubunits = subunits.map((s) => ({ ...s, name: stripHtml(s.name) }));
117
+ const complex = presentAt(batch, j, "the complex of the batch");
118
+ const subunits = presentAt(subunitLists, j, "the subunits of the complex");
119
+ const cleanedSubunits = subunits.map((s) => ({ ...s, name: stripHtmlTags(s.name) }));
129
120
  // Only a shape B row reaches this filter, because `getSubunits`
130
121
  // calls `/targets/{id}/subunits`. Shape B is the one shape that
131
122
  // names the kind of a target as `AccessoryProtein`, and the
@@ -134,7 +125,7 @@ export async function getFamilyHeterodimers(uniprotOrGeneSymbol) {
134
125
  // row or a single-target row would match nothing.
135
126
  const accessories = cleanedSubunits.filter((s) => (s.type ?? "").toLowerCase() === "accessoryprotein");
136
127
  results.push({
137
- complex: { ...complex, name: stripHtml(complex.name) },
128
+ complex: { ...complex, name: stripHtmlTags(complex.name) },
138
129
  subunits: cleanedSubunits,
139
130
  accessories,
140
131
  });
@@ -17,7 +17,7 @@
17
17
  * field carries `.nullish()` exactly.
18
18
  */
19
19
  /** A curated human phenotype attributed to variation in the gene. */
20
- export interface MonarchPhenotypeAssociation {
20
+ export type MonarchPhenotypeAssociation = {
21
21
  /** HPO term id, e.g. `HP:0001392`. */
22
22
  readonly hpoId: string;
23
23
  readonly label: string;
@@ -30,12 +30,12 @@ export interface MonarchPhenotypeAssociation {
30
30
  /** Share of affected individuals showing the phenotype, when annotated. */
31
31
  readonly frequencyPercent: number | null;
32
32
  readonly primaryKnowledgeSource: string | null;
33
- }
34
- export interface MonarchGeneProfile {
33
+ };
34
+ export type MonarchGeneProfile = {
35
35
  /** The curie the gene was queried by, e.g. `HGNC:1097`. */
36
36
  readonly geneCurie: string;
37
37
  readonly phenotypes: MonarchPhenotypeAssociation[];
38
- }
38
+ };
39
39
  /**
40
40
  * Curated human phenotype associations for one gene.
41
41
  *
@@ -9,11 +9,11 @@
9
9
  * not `.nullable()`.
10
10
  */
11
11
  import { z } from "zod";
12
- export interface AdverseEventCount {
12
+ export type AdverseEventCount = {
13
13
  reaction: string;
14
14
  count: number;
15
- }
16
- export interface DrugLabelAction {
15
+ };
16
+ export type DrugLabelAction = {
17
17
  applicationNumber: string | null;
18
18
  brandName: string | null;
19
19
  genericName: string | null;
@@ -23,8 +23,8 @@ export interface DrugLabelAction {
23
23
  warningsAndCautions: string | null;
24
24
  hasRems: boolean;
25
25
  sourceUrl: string;
26
- }
27
- export interface SeriousnessProfile {
26
+ };
27
+ export type SeriousnessProfile = {
28
28
  totalReports: number;
29
29
  fatalCount: number;
30
30
  hospitalizationCount: number;
@@ -32,7 +32,7 @@ export interface SeriousnessProfile {
32
32
  disablingCount: number;
33
33
  congenitalAnomalyCount: number;
34
34
  otherSeriousCount: number;
35
- }
35
+ };
36
36
  /** Top adverse-reaction terms by count for a generic drug name. */
37
37
  export declare function getFaersByDrug(drugName: string, options?: {
38
38
  limit?: number;
@@ -49,29 +49,29 @@ export declare function getFaersByDrug(drugName: string, options?: {
49
49
  export declare function getFaersSeriousness(drugName: string): Promise<SeriousnessProfile | null>;
50
50
  export declare const OpenFdaLabelResponseSchema: z.ZodObject<{
51
51
  results: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodObject<{
52
- set_id: z.ZodOptional<z.ZodUnknown>;
52
+ set_id: z.ZodOptional<z.ZodJSONSchema>;
53
53
  openfda: z.ZodOptional<z.ZodObject<{
54
- application_number: z.ZodOptional<z.ZodUnknown>;
55
- brand_name: z.ZodOptional<z.ZodUnknown>;
56
- generic_name: z.ZodOptional<z.ZodUnknown>;
54
+ application_number: z.ZodOptional<z.ZodJSONSchema>;
55
+ brand_name: z.ZodOptional<z.ZodJSONSchema>;
56
+ generic_name: z.ZodOptional<z.ZodJSONSchema>;
57
57
  }, z.core.$strip>>;
58
- effective_time: z.ZodOptional<z.ZodUnknown>;
59
- boxed_warning: z.ZodOptional<z.ZodUnknown>;
60
- warnings_and_cautions: z.ZodOptional<z.ZodUnknown>;
61
- warnings: z.ZodOptional<z.ZodUnknown>;
58
+ effective_time: z.ZodOptional<z.ZodJSONSchema>;
59
+ boxed_warning: z.ZodOptional<z.ZodJSONSchema>;
60
+ warnings_and_cautions: z.ZodOptional<z.ZodJSONSchema>;
61
+ warnings: z.ZodOptional<z.ZodJSONSchema>;
62
62
  spl_medguide: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
63
  patient_medication_information: z.ZodOptional<z.ZodArray<z.ZodString>>;
64
64
  }, z.core.$strip>, z.ZodTransform<DrugLabelAction, {
65
- set_id?: unknown;
65
+ set_id?: z.JSONType | undefined;
66
66
  openfda?: {
67
- application_number?: unknown;
68
- brand_name?: unknown;
69
- generic_name?: unknown;
67
+ application_number?: z.JSONType | undefined;
68
+ brand_name?: z.JSONType | undefined;
69
+ generic_name?: z.JSONType | undefined;
70
70
  } | undefined;
71
- effective_time?: unknown;
72
- boxed_warning?: unknown;
73
- warnings_and_cautions?: unknown;
74
- warnings?: unknown;
71
+ effective_time?: z.JSONType | undefined;
72
+ boxed_warning?: z.JSONType | undefined;
73
+ warnings_and_cautions?: z.JSONType | undefined;
74
+ warnings?: z.JSONType | undefined;
75
75
  spl_medguide?: string[] | undefined;
76
76
  patient_medication_information?: string[] | undefined;
77
77
  }>>>>;
@@ -9,6 +9,7 @@
9
9
  * not `.nullable()`.
10
10
  */
11
11
  import { z } from "zod";
12
+ import { isUnknownArray } from "../../lib/unknown-array.js";
12
13
  import { apiFetchValidated, describeApiError } from "./api-utils.js";
13
14
  import { OPENFDA_BASE, OPENFDA_LABEL_BASE } from "./openfda-config.js";
14
15
  // FAERS count/meta wire shapes, validated at the fetch boundary. Every field is
@@ -22,9 +23,9 @@ const FaersMetaResponseSchema = z.object({
22
23
  });
23
24
  /** openFDA drug-label metadata block (`openfda`) — all fields free-form JSON. */
24
25
  const OpenFdaLabelMetaSchema = z.object({
25
- application_number: z.unknown().optional(),
26
- brand_name: z.unknown().optional(),
27
- generic_name: z.unknown().optional(),
26
+ application_number: z.json().optional(),
27
+ brand_name: z.json().optional(),
28
+ generic_name: z.json().optional(),
28
29
  });
29
30
  /**
30
31
  * A single openFDA structured-product-label record (raw wire shape).
@@ -34,12 +35,12 @@ const OpenFdaLabelMetaSchema = z.object({
34
35
  * provider types both as an array of string.
35
36
  */
36
37
  const OpenFdaLabelSchema = z.object({
37
- set_id: z.unknown().optional(),
38
+ set_id: z.json().optional(),
38
39
  openfda: OpenFdaLabelMetaSchema.optional(),
39
- effective_time: z.unknown().optional(),
40
- boxed_warning: z.unknown().optional(),
41
- warnings_and_cautions: z.unknown().optional(),
42
- warnings: z.unknown().optional(),
40
+ effective_time: z.json().optional(),
41
+ boxed_warning: z.json().optional(),
42
+ warnings_and_cautions: z.json().optional(),
43
+ warnings: z.json().optional(),
43
44
  spl_medguide: z.array(z.string()).optional(),
44
45
  patient_medication_information: z.array(z.string()).optional(),
45
46
  });
@@ -49,7 +50,7 @@ const OpenFdaLabelSchema = z.object({
49
50
  * unescaped `"` past the quote escaping and break out of the phrase.
50
51
  */
51
52
  function escapeQueryPhrase(value) {
52
- return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
53
+ return value.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
53
54
  }
54
55
  /**
55
56
  * A boolean operator is separated by a space, never by a literal `+`. The whole
@@ -76,13 +77,13 @@ export async function getFaersByDrug(drugName, options = {}) {
76
77
  return { totalReports: 0, adverseEvents: [] };
77
78
  throw new Error(describeApiError(res.error));
78
79
  }
79
- const adverseEvents = (res.value?.results ?? []).map((r) => ({
80
+ const adverseEvents = (res.value.results ?? []).map((r) => ({
80
81
  reaction: r.term ?? "Unknown",
81
82
  count: r.count ?? 0,
82
83
  }));
83
84
  const totalUrl = `${OPENFDA_BASE}?search=${encodeURIComponent(search)}&limit=1`;
84
85
  const totalRes = await apiFetchValidated(totalUrl, FaersMetaResponseSchema);
85
- const totalReports = totalRes.isOk() ? totalRes.value?.meta?.results?.total : undefined;
86
+ const totalReports = totalRes.isOk() ? totalRes.value.meta?.results?.total : undefined;
86
87
  return { totalReports, adverseEvents };
87
88
  }
88
89
  /**
@@ -100,7 +101,7 @@ export async function getFaersSeriousness(drugName) {
100
101
  return null;
101
102
  throw new Error(describeApiError(totalRes.error));
102
103
  }
103
- const totalReports = totalRes.value?.meta?.results?.total ?? 0;
104
+ const totalReports = totalRes.value.meta?.results?.total ?? 0;
104
105
  if (totalReports === 0) {
105
106
  return {
106
107
  totalReports: 0,
@@ -118,7 +119,7 @@ export async function getFaersSeriousness(drugName) {
118
119
  const res = await apiFetchValidated(url, FaersMetaResponseSchema);
119
120
  if (res.isErr())
120
121
  return 0;
121
- return res.value?.meta?.results?.total ?? 0;
122
+ return res.value.meta?.results?.total ?? 0;
122
123
  }
123
124
  const [fatal, hosp, lifeT, dis, cong, other] = await Promise.all([
124
125
  countWith("seriousnessdeath"),
@@ -139,7 +140,7 @@ export async function getFaersSeriousness(drugName) {
139
140
  };
140
141
  }
141
142
  function firstString(value) {
142
- if (Array.isArray(value)) {
143
+ if (isUnknownArray(value)) {
143
144
  const first = value.find((v) => typeof v === "string" && v.trim());
144
145
  return typeof first === "string" ? first : null;
145
146
  }
@@ -149,7 +150,7 @@ function firstString(value) {
149
150
  }
150
151
  function joinSection(value) {
151
152
  if (Array.isArray(value)) {
152
- const parts = value.filter((v) => typeof v === "string" && v.trim().length > 0);
153
+ const parts = value.flatMap((v) => (typeof v === "string" && v.trim().length > 0 ? [v] : []));
153
154
  if (parts.length === 0)
154
155
  return null;
155
156
  return parts.join("\n\n");
@@ -164,30 +165,30 @@ function joinSection(value) {
164
165
  * keyed by application number when only that is available.
165
166
  */
166
167
  function buildLabelSourceUrl(label) {
167
- const setId = typeof label?.set_id === "string" ? label.set_id : null;
168
+ const setId = typeof label.set_id === "string" ? label.set_id : null;
168
169
  if (setId)
169
170
  return `https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=${setId}`;
170
- const appNum = firstString(label?.openfda?.application_number);
171
+ const appNum = firstString(label.openfda?.application_number);
171
172
  if (appNum) {
172
173
  return `https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=${encodeURIComponent(appNum)}`;
173
174
  }
174
175
  return "https://www.accessdata.fda.gov/scripts/cder/daf/";
175
176
  }
176
177
  function mapLabel(raw) {
177
- const openfda = raw?.openfda ?? {};
178
+ const openfda = raw.openfda ?? {};
178
179
  // The label reference carries no REMS field, thus the signal is the word
179
180
  // itself in one of the three sections that a REMS program writes to. The
180
181
  // presence of a medication guide alone is not the signal: many labels with no
181
182
  // REMS carry one, and a presence test would report a REMS that does not exist.
182
- const remsTextCandidates = [raw?.boxed_warning, raw?.spl_medguide, raw?.patient_medication_information];
183
+ const remsTextCandidates = [raw.boxed_warning, raw.spl_medguide, raw.patient_medication_information];
183
184
  const hasRems = remsTextCandidates.some((v) => joinSection(v)?.toLowerCase().includes("rems") ?? false);
184
185
  return {
185
186
  applicationNumber: firstString(openfda.application_number),
186
187
  brandName: firstString(openfda.brand_name),
187
188
  genericName: firstString(openfda.generic_name),
188
- effectiveTime: typeof raw?.effective_time === "string" ? raw.effective_time : null,
189
- boxedWarning: joinSection(raw?.boxed_warning),
190
- warningsAndCautions: joinSection(raw?.warnings_and_cautions) ?? joinSection(raw?.warnings),
189
+ effectiveTime: typeof raw.effective_time === "string" ? raw.effective_time : null,
190
+ boxedWarning: joinSection(raw.boxed_warning),
191
+ warningsAndCautions: joinSection(raw.warnings_and_cautions) ?? joinSection(raw.warnings),
191
192
  hasRems,
192
193
  sourceUrl: buildLabelSourceUrl(raw),
193
194
  };
@@ -8,7 +8,7 @@
8
8
  * thus the SDL gives each modifier and `.optional()` is wrong.
9
9
  */
10
10
  import { z } from "zod";
11
- export interface Association {
11
+ export type Association = {
12
12
  diseaseId: string;
13
13
  diseaseName: string;
14
14
  targetId?: string;
@@ -21,42 +21,42 @@ export interface Association {
21
21
  animalModelScore: number | null;
22
22
  somaticMutationScore: number | null;
23
23
  literaturePmids: string[];
24
- }
24
+ };
25
25
  /**
26
26
  * The positive tractability buckets of each modality, by their Open Targets label
27
27
  * ('Approved Drug', 'Structure with Ligand', 'UniProt loc high conf', …). An empty
28
28
  * list means no positive bucket. `null` means Open Targets gives no row for the modality.
29
29
  */
30
- export interface TargetTractability {
30
+ export type TargetTractability = {
31
31
  smallMolecule: string[] | null;
32
32
  antibody: string[] | null;
33
33
  otherModalities: string[] | null;
34
- }
35
- export interface TargetInfo {
34
+ };
35
+ export type TargetInfo = {
36
36
  ensemblId: string;
37
37
  approvedSymbol: string;
38
38
  approvedName: string;
39
39
  tractability: TargetTractability | null;
40
40
  associations: Association[];
41
- }
42
- export interface SafetyLiability {
41
+ };
42
+ export type SafetyLiability = {
43
43
  event: string;
44
44
  biosamples: string[];
45
45
  effects: string | null;
46
46
  source: string;
47
- }
47
+ };
48
48
  /**
49
49
  * One disease or trait that Open Targets holds, as the free-text resolver
50
50
  * returns it. The `id` is the identifier that `searchDiseaseAssociations`
51
51
  * accepts. Open Targets keys a disease on the EFO ontology, which imports
52
52
  * MONDO, Orphanet and HP, thus an id can read `EFO_…`, `MONDO_…` or `HP_…`.
53
53
  */
54
- export interface DiseaseCandidate {
54
+ export type DiseaseCandidate = {
55
55
  id: string;
56
56
  name: string;
57
57
  description: string | null;
58
- }
59
- export interface BaselineExpressionEntry {
58
+ };
59
+ export type BaselineExpressionEntry = {
60
60
  tissueId: string;
61
61
  tissueLabel: string;
62
62
  organSystem: string | null;
@@ -74,7 +74,7 @@ export interface BaselineExpressionEntry {
74
74
  protein: {
75
75
  level: number | null;
76
76
  } | null;
77
- }
77
+ };
78
78
  export declare const TargetAssociationsDataSchema: z.ZodObject<{
79
79
  target: z.ZodOptional<z.ZodNullable<z.ZodObject<{
80
80
  id: z.ZodString;
@@ -10,7 +10,7 @@
10
10
  import { z } from "zod";
11
11
  export declare function stripHtmlAndCollapseWs(s: string): string;
12
12
  export type PathwaySource = "kegg" | "reactome";
13
- export interface Pathway {
13
+ export type Pathway = {
14
14
  id: string;
15
15
  name: string;
16
16
  source: PathwaySource;
@@ -18,7 +18,7 @@ export interface Pathway {
18
18
  genes?: string[];
19
19
  entity_uniprots?: string[];
20
20
  url?: string;
21
- }
21
+ };
22
22
  export declare const ReactomeSearchResponseSchema: z.ZodObject<{
23
23
  results: z.ZodOptional<z.ZodArray<z.ZodObject<{
24
24
  entries: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -38,12 +38,12 @@ export declare const ReactomeParticipantEntitiesSchema: z.ZodArray<z.ZodObject<{
38
38
  identifier: z.ZodOptional<z.ZodString>;
39
39
  }, z.core.$strip>>>;
40
40
  }, z.core.$strip>>;
41
- export interface PathwaySearchOptions {
41
+ export type PathwaySearchOptions = {
42
42
  source?: "kegg" | "reactome" | "both";
43
43
  organism?: string;
44
44
  includeGenes?: boolean;
45
45
  maxResults?: number;
46
- }
46
+ };
47
47
  export declare function searchKegg(query: string, organism: string, maxResults: number, includeGenes: boolean): Promise<Pathway[]>;
48
48
  /**
49
49
  * Read the KEGG gene identifier of a symbol, for example `hsa:7157` for `TP53`.