@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,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`.
@@ -8,7 +8,9 @@
8
8
  * key to omit.
9
9
  */
10
10
  import { z } from "zod";
11
- import { apiFetch, apiFetchValidated, parseTSV } from "./api-utils.js";
11
+ import { apiFetchText, apiFetchValidated, parseTSV } from "./api-utils.js";
12
+ import { collapseWhitespace } from "../../lib/text.js";
13
+ import { stripHtmlTags } from "./html-text.js";
12
14
  const KEGG_BASE = "https://rest.kegg.jp";
13
15
  // Both `reactome.org/ContentService` and `release.reactome.org/ContentService`
14
16
  // answer 200 on each path that this file calls. The two hosts serve different
@@ -17,16 +19,7 @@ const KEGG_BASE = "https://rest.kegg.jp";
17
19
  // links to stay on the primary host.
18
20
  const REACTOME_BASE = "https://release.reactome.org/ContentService";
19
21
  export function stripHtmlAndCollapseWs(s) {
20
- // Strip tags to a fixpoint: a single pass can leave a `<…>` behind when
21
- // removing an inner tag lets the surrounding angle brackets form a new one,
22
- // so repeat until the string stops changing.
23
- let out = s;
24
- let prev;
25
- do {
26
- prev = out;
27
- out = out.replace(/<[^>]+>/g, "");
28
- } while (out !== prev);
29
- return out.replace(/\s+/g, " ").trim();
22
+ return collapseWhitespace(stripHtmlTags(s));
30
23
  }
31
24
  const ORGANISM_MAP = {
32
25
  hsa: "Homo sapiens",
@@ -60,7 +53,7 @@ export const ReactomeParticipantEntitiesSchema = z.array(z.object({
60
53
  refEntities: z.array(z.object({ schemaClass: z.string().optional(), identifier: z.string().optional() })).optional(),
61
54
  }));
62
55
  export async function searchKegg(query, organism, maxResults, includeGenes) {
63
- const searchRes = await apiFetch(`${KEGG_BASE}/find/pathway/${encodeURIComponent(query)}`, { parseAs: "text" });
56
+ const searchRes = await apiFetchText(`${KEGG_BASE}/find/pathway/${encodeURIComponent(query)}`);
64
57
  if (searchRes.isErr())
65
58
  return [];
66
59
  const rows = parseTSV(searchRes.value);
@@ -75,7 +68,7 @@ export async function searchKegg(query, organism, maxResults, includeGenes) {
75
68
  });
76
69
  if (includeGenes) {
77
70
  for (const pw of pathways) {
78
- const geneRes = await apiFetch(`${KEGG_BASE}/link/${organism}/${pw.id}`, { parseAs: "text" });
71
+ const geneRes = await apiFetchText(`${KEGG_BASE}/link/${organism}/${pw.id}`);
79
72
  if (geneRes.isOk()) {
80
73
  const geneRows = parseTSV(geneRes.value);
81
74
  pw.genes = geneRows.map((r) => (r[1] ?? "").replace(`${organism}:`, ""));
@@ -125,13 +118,13 @@ export function parseKeggPathwayLinks(rows) {
125
118
  * organism, thus it replaces one `get/{id}` call for each membership.
126
119
  */
127
120
  export async function keggPathwaysForGene(geneSymbol, organism, maxResults) {
128
- const geneRes = await apiFetch(`${KEGG_BASE}/find/${organism}/${encodeURIComponent(geneSymbol)}`, { parseAs: "text" });
121
+ const geneRes = await apiFetchText(`${KEGG_BASE}/find/${organism}/${encodeURIComponent(geneSymbol)}`);
129
122
  if (geneRes.isErr())
130
123
  return [];
131
124
  const geneId = selectKeggGeneId(parseTSV(geneRes.value), geneSymbol);
132
125
  if (!geneId)
133
126
  return [];
134
- const linkRes = await apiFetch(`${KEGG_BASE}/link/pathway/${encodeURIComponent(geneId)}`, { parseAs: "text" });
127
+ const linkRes = await apiFetchText(`${KEGG_BASE}/link/pathway/${encodeURIComponent(geneId)}`);
135
128
  if (linkRes.isErr())
136
129
  return [];
137
130
  const pathwayIds = parseKeggPathwayLinks(parseTSV(linkRes.value)).slice(0, maxResults);
@@ -148,7 +141,7 @@ export async function keggPathwaysForGene(geneSymbol, organism, maxResults) {
148
141
  /** The pathway vocabulary of one organism, keyed by the pathway identifier. */
149
142
  async function keggPathwayNames(organism) {
150
143
  const names = new Map();
151
- const res = await apiFetch(`${KEGG_BASE}/list/pathway/${encodeURIComponent(organism)}`, { parseAs: "text" });
144
+ const res = await apiFetchText(`${KEGG_BASE}/list/pathway/${encodeURIComponent(organism)}`);
152
145
  if (res.isErr())
153
146
  return names;
154
147
  for (const cols of parseTSV(res.value)) {
@@ -217,16 +210,19 @@ export async function searchPathways(query, options = {}) {
217
210
  return results.flat();
218
211
  }
219
212
  /** A Reactome stable identifier, for example `R-HSA-109581`. */
213
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the Reactome stable-id grammar: R-, three letters, digits, and an optional dotted subnumber.
220
214
  const REACTOME_ID_RE = /^R-[A-Z]{3}-\d+(\.\d+)?$/;
221
215
  /** A KEGG pathway identifier, for example `hsa04010` or `map04010`. */
216
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the KEGG pathway-id grammar: three or four lowercase organism letters plus five digits.
222
217
  const KEGG_ID_RE = /^[a-z]{3,4}\d{5}$/;
223
218
  /** Read one field out of a KEGG flat-file record. */
224
219
  function keggField(record, field) {
220
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the field name is a caller literal ("NAME", "DESCRIPTION"); the anchored multiline form reads the KEGG flat-file grammar.
225
221
  const match = new RegExp(`^${field}\\s+(.*)$`, "m").exec(record);
226
222
  return match?.[1]?.trim() || null;
227
223
  }
228
224
  async function getKeggPathway(id) {
229
- const res = await apiFetch(`${KEGG_BASE}/get/${encodeURIComponent(id)}`, { parseAs: "text" });
225
+ const res = await apiFetchText(`${KEGG_BASE}/get/${encodeURIComponent(id)}`);
230
226
  if (res.isErr())
231
227
  return null;
232
228
  const record = res.value;
@@ -238,7 +234,7 @@ async function getKeggPathway(id) {
238
234
  id,
239
235
  name,
240
236
  source: "kegg",
241
- ...(description ? { description } : {}),
237
+ description: description ?? undefined,
242
238
  url: `https://www.kegg.jp/pathway/${id}`,
243
239
  };
244
240
  }
@@ -255,7 +251,7 @@ async function getReactomePathway(id) {
255
251
  id: stId,
256
252
  name: stripHtmlAndCollapseWs(entry.displayName ?? ""),
257
253
  source: "reactome",
258
- ...(description ? { description: stripHtmlAndCollapseWs(description) } : {}),
254
+ description: description === undefined ? undefined : stripHtmlAndCollapseWs(description),
259
255
  url: `https://reactome.org/content/detail/${stId}`,
260
256
  };
261
257
  }
@@ -45,11 +45,11 @@ export declare const PharmgkbResponseSchema: z.ZodObject<{
45
45
  * phenotype, guideline source and summary live on other PharmGKB resources, so
46
46
  * they are absent here rather than present-and-null.
47
47
  */
48
- export interface PharmgkbAnnotation {
48
+ export type PharmgkbAnnotation = {
49
49
  gene: string;
50
50
  drug: string;
51
51
  levelOfEvidence: string;
52
- }
52
+ };
53
53
  export declare function searchPharmgkb(query: string, searchType: "gene" | "drug", limit?: number): Promise<{
54
54
  annotations: PharmgkbAnnotation[];
55
55
  totalFound: number;
@@ -38,7 +38,7 @@ export async function searchPharmgkb(query, searchType, limit = 20) {
38
38
  return { annotations: [], totalFound: 0 };
39
39
  throw new Error(describeApiError(res.error));
40
40
  }
41
- const data = res.value?.data ?? [];
41
+ const data = res.value.data ?? [];
42
42
  const annotations = data.slice(0, limit).map((ann) => ({
43
43
  gene: ann.location?.genes?.map((g) => g.symbol).join(", ") ?? query,
44
44
  drug: ann.relatedChemicals?.map((c) => c.name).join(", ") ?? "",
@@ -2,12 +2,12 @@
2
2
  * Protein-family → preferred modality lookup, used by §2.2 Tractability
3
3
  * fallback when Open Targets has no tractability assessment for the target.
4
4
  */
5
- export interface ModalityFallback {
5
+ export type ModalityFallback = {
6
6
  family: string | null;
7
7
  preferred_modality: string;
8
8
  rationale: string;
9
9
  source: "family-match" | "default";
10
- }
10
+ };
11
11
  /**
12
12
  * Infer a preferred modality from a free-text protein-family description
13
13
  * (typically the UniProt family/keyword). Returns the dataset default when
@@ -4,8 +4,6 @@
4
4
  */
5
5
  import familyMappingData from "../../data/protein-family-modality.json" with { type: "json" };
6
6
  import { normalizeProteinFamily } from "./protein-family-normalize.js";
7
- // The JSON import yields an untyped/structurally-wide value; cast to the declared
8
- // shape, which the bundled data file is authored to satisfy.
9
7
  const dataset = familyMappingData;
10
8
  function loadDataset() {
11
9
  return dataset;
@@ -11,19 +11,26 @@ const FAMILIES = [
11
11
  {
12
12
  canonical: "g protein-coupled receptor",
13
13
  patterns: [
14
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the GPCR name, matched as whole words.
14
15
  /\bg[-\s]?protein[-\s]?coupled\s+receptor\b/i,
16
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the GPCR abbreviation as a whole word.
15
17
  /\bgpcr\b/i,
18
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the seven-transmembrane spelling of the family name.
16
19
  /\b7tm\s+receptor\b/i,
20
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the rhodopsin-like subfamily spelling.
17
21
  /\brhodopsin-like\s+receptor\b/i,
22
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the secretin-like subfamily spelling.
18
23
  /\bsecretin-like\s+receptor\b/i,
19
24
  ],
20
25
  },
21
26
  {
22
27
  canonical: "serine/threonine-protein kinase",
28
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the serine/threonine kinase name.
23
29
  patterns: [/\bserine\/threonine[-\s]?protein\s+kinase\b/i],
24
30
  },
25
31
  {
26
32
  canonical: "tyrosine-protein kinase",
33
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the tyrosine kinase name.
27
34
  patterns: [/\btyrosine[-\s]?protein\s+kinase\b/i],
28
35
  },
29
36
  // Extend as additional hyphen-style mismatches surface. The default branch
@@ -13,14 +13,14 @@
13
13
  * carries `.optional()`, not `.nullable()`.
14
14
  */
15
15
  import { z } from "zod";
16
- export interface PubChemCompoundProperties {
16
+ export type PubChemCompoundProperties = {
17
17
  cid: number;
18
18
  molecularWeight: number | null;
19
19
  inchiKey: string | null;
20
20
  canonicalSmiles: string | null;
21
21
  hBondDonorCount: number | null;
22
22
  hBondAcceptorCount: number | null;
23
- }
23
+ };
24
24
  export declare const PubChemPropertyResponseSchema: z.ZodObject<{
25
25
  PropertyTable: z.ZodOptional<z.ZodObject<{
26
26
  Properties: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -100,6 +100,7 @@ export async function getCompoundPropertiesByInChIKey(inchiKey) {
100
100
  return null;
101
101
  return getCompoundPropertiesByCID(cid);
102
102
  }
103
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the amide-bond motif C(=O)N read out of a SMILES string; the literal atoms are the chemistry.
103
104
  const AMIDE_BOND_RE = /C\(=O\)N/g;
104
105
  /**
105
106
  * Heuristic molecule-type classifier driven by PubChem properties.
@@ -102,11 +102,11 @@ export declare const PubChemPropertyResponseSchema: z.ZodObject<{
102
102
  }>>>>;
103
103
  }, z.core.$strip>>;
104
104
  }, z.core.$strip>;
105
- export interface PubChemCrossRef {
105
+ export type PubChemCrossRef = {
106
106
  /** The registry that the identifier pattern names, or `null` when no pattern matches. */
107
107
  source: string | null;
108
108
  id: string;
109
- }
109
+ };
110
110
  export declare const PubChemXrefResponseSchema: z.ZodObject<{
111
111
  InformationList: z.ZodOptional<z.ZodObject<{
112
112
  Information: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -117,13 +117,13 @@ export declare const PubChemXrefResponseSchema: z.ZodObject<{
117
117
  }, z.core.$strip>;
118
118
  /** The registry of one identifier, or `null` when no pattern matches it. */
119
119
  export declare function classifyRegistryId(id: string): string | null;
120
- export interface PubChemAssay {
120
+ export type PubChemAssay = {
121
121
  aid: number;
122
122
  assayName: string | null;
123
123
  targetName: string | null;
124
124
  activityOutcome: string | null;
125
125
  activityValue: number | null;
126
- }
126
+ };
127
127
  export declare const PugAssaySummarySchema: z.ZodObject<{
128
128
  Table: z.ZodOptional<z.ZodObject<{
129
129
  Columns: z.ZodOptional<z.ZodObject<{
@@ -95,18 +95,26 @@ export const PubChemXrefResponseSchema = z.object({
95
95
  * A loose pattern runs last, thus a specific registry claims its own id first.
96
96
  */
97
97
  const REGISTRY_PATTERNS = [
98
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the ChEMBL id format: the CHEMBL prefix plus digits.
98
99
  ["ChEMBL", /^CHEMBL\d+$/],
100
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the ChEBI id format: the CHEBI: prefix plus digits.
99
101
  ["ChEBI", /^CHEBI:\d+$/],
102
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the DrugBank id format: the DB prefix plus five digits.
100
103
  ["DrugBank", /^DB\d{5}$/],
104
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the KEGG id format: one C or D compound letter plus five digits.
101
105
  ["KEGG", /^[CD]\d{5}$/],
106
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the HMDB id format: the HMDB prefix plus digits.
102
107
  ["HMDB", /^HMDB\d+$/],
108
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the CAS registry format: two to seven digits, a dash pair, and one check digit.
103
109
  ["CAS", /^\d{2,7}-\d{2}-\d$/],
104
110
  // A PDB id is four characters that start with a digit. The lookahead demands a
105
111
  // letter as well, thus a plain registry number does not read as a structure.
112
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the PDB id format: a digit, then three alphanumerics, with the lookahead that demands a letter among them.
106
113
  ["PDB", /^[1-9](?=.*[A-Za-z])[0-9A-Za-z]{3}$/],
107
114
  // A UNII is ten alphanumeric characters, and the lookahead demands a letter
108
115
  // among them. A plain ten-digit registry number, such as `0000050782`, matches
109
116
  // the pattern without it, and the row then names the wrong registry.
117
+ // oxlint-disable-next-line eslint-js/no-restricted-syntax -- the UNII format: ten uppercase alphanumerics, with the lookahead that demands a letter among them.
110
118
  ["UNII", /^(?=.*[A-Z])[A-Z0-9]{10}$/],
111
119
  ];
112
120
  /** The registry of one identifier, or `null` when no pattern matches it. */