@inflexa-ai/harness 0.1.1

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 (823) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +58 -0
  4. package/dist/agents/conversation-agent.d.ts +105 -0
  5. package/dist/agents/conversation-agent.js +140 -0
  6. package/dist/agents/report-builder.d.ts +32 -0
  7. package/dist/agents/report-builder.js +31 -0
  8. package/dist/agents/sandbox/__fixtures__/deps.d.ts +23 -0
  9. package/dist/agents/sandbox/__fixtures__/deps.js +96 -0
  10. package/dist/agents/sandbox/bulk-transcriptomics-agent.d.ts +8 -0
  11. package/dist/agents/sandbox/bulk-transcriptomics-agent.js +22 -0
  12. package/dist/agents/sandbox/cheminformatics-agent.d.ts +9 -0
  13. package/dist/agents/sandbox/cheminformatics-agent.js +62 -0
  14. package/dist/agents/sandbox/chromatin-agent.d.ts +8 -0
  15. package/dist/agents/sandbox/chromatin-agent.js +24 -0
  16. package/dist/agents/sandbox/data-profiler.d.ts +10 -0
  17. package/dist/agents/sandbox/data-profiler.js +24 -0
  18. package/dist/agents/sandbox/dna-methylation-agent.d.ts +8 -0
  19. package/dist/agents/sandbox/dna-methylation-agent.js +24 -0
  20. package/dist/agents/sandbox/drug-repurposing-agent.d.ts +8 -0
  21. package/dist/agents/sandbox/drug-repurposing-agent.js +54 -0
  22. package/dist/agents/sandbox/enrichment-agent.d.ts +8 -0
  23. package/dist/agents/sandbox/enrichment-agent.js +24 -0
  24. package/dist/agents/sandbox/ephemeral-executor.d.ts +9 -0
  25. package/dist/agents/sandbox/ephemeral-executor.js +29 -0
  26. package/dist/agents/sandbox/genomic-variant-agent.d.ts +8 -0
  27. package/dist/agents/sandbox/genomic-variant-agent.js +27 -0
  28. package/dist/agents/sandbox/immune-profiling-agent.d.ts +8 -0
  29. package/dist/agents/sandbox/immune-profiling-agent.js +43 -0
  30. package/dist/agents/sandbox/index.d.ts +31 -0
  31. package/dist/agents/sandbox/index.js +96 -0
  32. package/dist/agents/sandbox/metabolomics-agent.d.ts +8 -0
  33. package/dist/agents/sandbox/metabolomics-agent.js +15 -0
  34. package/dist/agents/sandbox/microbiome-agent.d.ts +8 -0
  35. package/dist/agents/sandbox/microbiome-agent.js +15 -0
  36. package/dist/agents/sandbox/multi-omics-integration-agent.d.ts +8 -0
  37. package/dist/agents/sandbox/multi-omics-integration-agent.js +33 -0
  38. package/dist/agents/sandbox/multimodal-sc-agent.d.ts +8 -0
  39. package/dist/agents/sandbox/multimodal-sc-agent.js +15 -0
  40. package/dist/agents/sandbox/network-agent.d.ts +8 -0
  41. package/dist/agents/sandbox/network-agent.js +25 -0
  42. package/dist/agents/sandbox/pkpd-clinical-response-agent.d.ts +8 -0
  43. package/dist/agents/sandbox/pkpd-clinical-response-agent.js +59 -0
  44. package/dist/agents/sandbox/proteomics-agent.d.ts +8 -0
  45. package/dist/agents/sandbox/proteomics-agent.js +15 -0
  46. package/dist/agents/sandbox/scientific-executor.d.ts +9 -0
  47. package/dist/agents/sandbox/scientific-executor.js +56 -0
  48. package/dist/agents/sandbox/shared.d.ts +100 -0
  49. package/dist/agents/sandbox/shared.js +195 -0
  50. package/dist/agents/sandbox/single-cell-agent.d.ts +8 -0
  51. package/dist/agents/sandbox/single-cell-agent.js +25 -0
  52. package/dist/agents/sandbox/spatial-omics-agent.d.ts +8 -0
  53. package/dist/agents/sandbox/spatial-omics-agent.js +15 -0
  54. package/dist/agents/sandbox/statistical-modeling-agent.d.ts +8 -0
  55. package/dist/agents/sandbox/statistical-modeling-agent.js +37 -0
  56. package/dist/agents/sandbox/translational-safety-agent.d.ts +8 -0
  57. package/dist/agents/sandbox/translational-safety-agent.js +59 -0
  58. package/dist/agents/sandbox/types.d.ts +34 -0
  59. package/dist/agents/sandbox/types.js +15 -0
  60. package/dist/agents/sandbox/validate-skills.d.ts +18 -0
  61. package/dist/agents/sandbox/validate-skills.js +40 -0
  62. package/dist/agents/sandbox-catalog.d.ts +33 -0
  63. package/dist/agents/sandbox-catalog.js +44 -0
  64. package/dist/agents/system-prompt.d.ts +25 -0
  65. package/dist/agents/system-prompt.js +23 -0
  66. package/dist/app/chat-turn.d.ts +35 -0
  67. package/dist/app/chat-turn.js +64 -0
  68. package/dist/app/data-profile-policy.d.ts +36 -0
  69. package/dist/app/data-profile-policy.js +37 -0
  70. package/dist/app/message-assembly.d.ts +65 -0
  71. package/dist/app/message-assembly.js +61 -0
  72. package/dist/app/synthesize-run.d.ts +57 -0
  73. package/dist/app/synthesize-run.js +103 -0
  74. package/dist/auth/local-auth-context.d.ts +19 -0
  75. package/dist/auth/local-auth-context.js +20 -0
  76. package/dist/auth/local-run-authorizer.d.ts +10 -0
  77. package/dist/auth/local-run-authorizer.js +23 -0
  78. package/dist/auth/types.d.ts +166 -0
  79. package/dist/auth/types.js +61 -0
  80. package/dist/billing/cached-resolver.d.ts +23 -0
  81. package/dist/billing/cached-resolver.js +61 -0
  82. package/dist/billing/noop-resolver.d.ts +6 -0
  83. package/dist/billing/noop-resolver.js +7 -0
  84. package/dist/billing/noop-run-charge.d.ts +6 -0
  85. package/dist/billing/noop-run-charge.js +10 -0
  86. package/dist/billing/resolver.d.ts +64 -0
  87. package/dist/billing/resolver.js +24 -0
  88. package/dist/billing/run-charge.d.ts +24 -0
  89. package/dist/billing/run-charge.js +9 -0
  90. package/dist/config/resource-limits.d.ts +76 -0
  91. package/dist/config/resource-limits.js +116 -0
  92. package/dist/contracts/analogy-report.d.ts +120 -0
  93. package/dist/contracts/analogy-report.js +50 -0
  94. package/dist/contracts/chat-events.d.ts +61 -0
  95. package/dist/contracts/chat-events.js +13 -0
  96. package/dist/contracts/chat-parts.d.ts +308 -0
  97. package/dist/contracts/chat-parts.js +13 -0
  98. package/dist/contracts/content-url.d.ts +49 -0
  99. package/dist/contracts/content-url.js +56 -0
  100. package/dist/contracts/index.d.ts +12 -0
  101. package/dist/contracts/index.js +5 -0
  102. package/dist/contracts/message.d.ts +36 -0
  103. package/dist/contracts/message.js +9 -0
  104. package/dist/contracts/part-registry.d.ts +18 -0
  105. package/dist/contracts/part-registry.js +28 -0
  106. package/dist/contracts/schemas/chat-events.d.ts +90 -0
  107. package/dist/contracts/schemas/chat-events.js +43 -0
  108. package/dist/contracts/schemas/chat-parts.d.ts +683 -0
  109. package/dist/contracts/schemas/chat-parts.js +295 -0
  110. package/dist/contracts/schemas/index.d.ts +2 -0
  111. package/dist/contracts/schemas/index.js +2 -0
  112. package/dist/contracts/target-assessment-row.d.ts +85 -0
  113. package/dist/contracts/target-assessment-row.js +37 -0
  114. package/dist/contracts/target-dossier.d.ts +16720 -0
  115. package/dist/contracts/target-dossier.js +1339 -0
  116. package/dist/data/clinical-benchmarks.json +108 -0
  117. package/dist/data/protein-family-modality.json +101 -0
  118. package/dist/data/safety-panel-schema.d.ts +64 -0
  119. package/dist/data/safety-panel-schema.js +34 -0
  120. package/dist/data/safety-panel.json +436 -0
  121. package/dist/execution/artifact-metadata.d.ts +74 -0
  122. package/dist/execution/artifact-metadata.js +203 -0
  123. package/dist/execution/artifact-record.d.ts +19 -0
  124. package/dist/execution/artifact-record.js +7 -0
  125. package/dist/execution/artifact-registration.d.ts +36 -0
  126. package/dist/execution/artifact-registration.js +61 -0
  127. package/dist/execution/artifact-registry.d.ts +82 -0
  128. package/dist/execution/artifact-registry.js +17 -0
  129. package/dist/execution/dbos-run-launcher.d.ts +7 -0
  130. package/dist/execution/dbos-run-launcher.js +38 -0
  131. package/dist/execution/ephemeral-runner.d.ts +81 -0
  132. package/dist/execution/ephemeral-runner.js +161 -0
  133. package/dist/execution/filesystem-artifact-registry.d.ts +57 -0
  134. package/dist/execution/filesystem-artifact-registry.js +92 -0
  135. package/dist/execution/noop-artifact-registry.d.ts +11 -0
  136. package/dist/execution/noop-artifact-registry.js +17 -0
  137. package/dist/execution/post-step-pipeline.d.ts +70 -0
  138. package/dist/execution/post-step-pipeline.js +207 -0
  139. package/dist/execution/post-step.d.ts +20 -0
  140. package/dist/execution/post-step.js +65 -0
  141. package/dist/execution/reconcile-manifest.d.ts +25 -0
  142. package/dist/execution/reconcile-manifest.js +132 -0
  143. package/dist/execution/report-render.d.ts +39 -0
  144. package/dist/execution/report-render.js +98 -0
  145. package/dist/execution/report-runner.d.ts +87 -0
  146. package/dist/execution/report-runner.js +227 -0
  147. package/dist/execution/run-authorizer.d.ts +43 -0
  148. package/dist/execution/run-authorizer.js +17 -0
  149. package/dist/execution/run-launcher.d.ts +36 -0
  150. package/dist/execution/run-launcher.js +15 -0
  151. package/dist/execution/run-synthesis.d.ts +107 -0
  152. package/dist/execution/run-synthesis.js +329 -0
  153. package/dist/execution/staged-input.d.ts +41 -0
  154. package/dist/execution/staged-input.js +15 -0
  155. package/dist/execution/step-summary-metrics.d.ts +10 -0
  156. package/dist/execution/step-summary-metrics.js +22 -0
  157. package/dist/execution/step-summary.d.ts +55 -0
  158. package/dist/execution/step-summary.js +106 -0
  159. package/dist/execution/topo-sort.d.ts +33 -0
  160. package/dist/execution/topo-sort.js +99 -0
  161. package/dist/index.d.ts +112 -0
  162. package/dist/index.js +157 -0
  163. package/dist/input-sanitization.d.ts +22 -0
  164. package/dist/input-sanitization.js +64 -0
  165. package/dist/lib/async-utils.d.ts +10 -0
  166. package/dist/lib/async-utils.js +24 -0
  167. package/dist/lib/chrome.d.ts +15 -0
  168. package/dist/lib/chrome.js +95 -0
  169. package/dist/lib/db-result.d.ts +93 -0
  170. package/dist/lib/db-result.js +197 -0
  171. package/dist/lib/fs-helpers.d.ts +74 -0
  172. package/dist/lib/fs-helpers.js +119 -0
  173. package/dist/lib/fs-result.d.ts +98 -0
  174. package/dist/lib/fs-result.js +137 -0
  175. package/dist/lib/host-concurrency.d.ts +16 -0
  176. package/dist/lib/host-concurrency.js +60 -0
  177. package/dist/lib/identifiers.d.ts +8 -0
  178. package/dist/lib/identifiers.js +10 -0
  179. package/dist/lib/metrics.d.ts +7 -0
  180. package/dist/lib/metrics.js +12 -0
  181. package/dist/lib/mime-detect.d.ts +17 -0
  182. package/dist/lib/mime-detect.js +29 -0
  183. package/dist/lib/otel.d.ts +30 -0
  184. package/dist/lib/otel.js +102 -0
  185. package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +35 -0
  186. package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +107 -0
  187. package/dist/lib/regulatory-corpus/fetch-ich.d.ts +46 -0
  188. package/dist/lib/regulatory-corpus/fetch-ich.js +173 -0
  189. package/dist/lib/regulatory-corpus.d.ts +88 -0
  190. package/dist/lib/regulatory-corpus.js +141 -0
  191. package/dist/lib/result.d.ts +87 -0
  192. package/dist/lib/result.js +103 -0
  193. package/dist/lib/storage.d.ts +29 -0
  194. package/dist/lib/storage.js +37 -0
  195. package/dist/lib/streamed-download.d.ts +28 -0
  196. package/dist/lib/streamed-download.js +111 -0
  197. package/dist/lib/trace-context.d.ts +11 -0
  198. package/dist/lib/trace-context.js +49 -0
  199. package/dist/loop/__fixtures__/scripted-provider.d.ts +31 -0
  200. package/dist/loop/__fixtures__/scripted-provider.js +57 -0
  201. package/dist/loop/budget-exceeded.d.ts +22 -0
  202. package/dist/loop/budget-exceeded.js +41 -0
  203. package/dist/loop/metrics.d.ts +25 -0
  204. package/dist/loop/metrics.js +46 -0
  205. package/dist/loop/run-agent.d.ts +28 -0
  206. package/dist/loop/run-agent.js +204 -0
  207. package/dist/loop/run-step.d.ts +29 -0
  208. package/dist/loop/run-step.js +34 -0
  209. package/dist/loop/run-to-terminal.d.ts +46 -0
  210. package/dist/loop/run-to-terminal.js +51 -0
  211. package/dist/loop/types.d.ts +95 -0
  212. package/dist/loop/types.js +10 -0
  213. package/dist/memory/ai-sdk-message-storage.d.ts +20 -0
  214. package/dist/memory/ai-sdk-message-storage.js +114 -0
  215. package/dist/memory/card-builders.d.ts +114 -0
  216. package/dist/memory/card-builders.js +231 -0
  217. package/dist/memory/content-to-cortex.d.ts +42 -0
  218. package/dist/memory/content-to-cortex.js +85 -0
  219. package/dist/memory/count-tokens.d.ts +18 -0
  220. package/dist/memory/count-tokens.js +64 -0
  221. package/dist/memory/derive-thread-title.d.ts +14 -0
  222. package/dist/memory/derive-thread-title.js +26 -0
  223. package/dist/memory/message-backfill.d.ts +2 -0
  224. package/dist/memory/message-backfill.js +38 -0
  225. package/dist/memory/reconstruct-cards.d.ts +23 -0
  226. package/dist/memory/reconstruct-cards.js +64 -0
  227. package/dist/memory/thread-history.d.ts +80 -0
  228. package/dist/memory/thread-history.js +187 -0
  229. package/dist/memory/thread-store.d.ts +66 -0
  230. package/dist/memory/thread-store.js +88 -0
  231. package/dist/memory/working-memory.d.ts +135 -0
  232. package/dist/memory/working-memory.js +185 -0
  233. package/dist/prompts/SOUL.d.ts +17 -0
  234. package/dist/prompts/SOUL.js +173 -0
  235. package/dist/prompts/analogical-reasoner.d.ts +1 -0
  236. package/dist/prompts/analogical-reasoner.js +170 -0
  237. package/dist/prompts/conversation.d.ts +1 -0
  238. package/dist/prompts/conversation.js +697 -0
  239. package/dist/prompts/execute-analysis/step-summary.d.ts +1 -0
  240. package/dist/prompts/execute-analysis/step-summary.js +38 -0
  241. package/dist/prompts/literature-reviewer.d.ts +1 -0
  242. package/dist/prompts/literature-reviewer.js +107 -0
  243. package/dist/prompts/planner.d.ts +2 -0
  244. package/dist/prompts/planner.js +259 -0
  245. package/dist/prompts/report-builder.d.ts +1 -0
  246. package/dist/prompts/report-builder.js +127 -0
  247. package/dist/prompts/sandbox/bulk-transcriptomics-agent.d.ts +1 -0
  248. package/dist/prompts/sandbox/bulk-transcriptomics-agent.js +78 -0
  249. package/dist/prompts/sandbox/cheminformatics-agent.d.ts +1 -0
  250. package/dist/prompts/sandbox/cheminformatics-agent.js +224 -0
  251. package/dist/prompts/sandbox/chromatin-agent.d.ts +1 -0
  252. package/dist/prompts/sandbox/chromatin-agent.js +100 -0
  253. package/dist/prompts/sandbox/data-profiler.d.ts +1 -0
  254. package/dist/prompts/sandbox/data-profiler.js +291 -0
  255. package/dist/prompts/sandbox/dna-methylation-agent.d.ts +1 -0
  256. package/dist/prompts/sandbox/dna-methylation-agent.js +96 -0
  257. package/dist/prompts/sandbox/drug-repurposing-agent.d.ts +1 -0
  258. package/dist/prompts/sandbox/drug-repurposing-agent.js +144 -0
  259. package/dist/prompts/sandbox/enrichment-agent.d.ts +1 -0
  260. package/dist/prompts/sandbox/enrichment-agent.js +89 -0
  261. package/dist/prompts/sandbox/ephemeral-executor.d.ts +1 -0
  262. package/dist/prompts/sandbox/ephemeral-executor.js +66 -0
  263. package/dist/prompts/sandbox/genomic-variant-agent.d.ts +1 -0
  264. package/dist/prompts/sandbox/genomic-variant-agent.js +83 -0
  265. package/dist/prompts/sandbox/immune-profiling-agent.d.ts +1 -0
  266. package/dist/prompts/sandbox/immune-profiling-agent.js +101 -0
  267. package/dist/prompts/sandbox/metabolomics-agent.d.ts +1 -0
  268. package/dist/prompts/sandbox/metabolomics-agent.js +89 -0
  269. package/dist/prompts/sandbox/microbiome-agent.d.ts +1 -0
  270. package/dist/prompts/sandbox/microbiome-agent.js +109 -0
  271. package/dist/prompts/sandbox/multi-omics-integration-agent.d.ts +1 -0
  272. package/dist/prompts/sandbox/multi-omics-integration-agent.js +122 -0
  273. package/dist/prompts/sandbox/multimodal-sc-agent.d.ts +1 -0
  274. package/dist/prompts/sandbox/multimodal-sc-agent.js +90 -0
  275. package/dist/prompts/sandbox/network-agent.d.ts +1 -0
  276. package/dist/prompts/sandbox/network-agent.js +95 -0
  277. package/dist/prompts/sandbox/pkpd-clinical-response-agent.d.ts +1 -0
  278. package/dist/prompts/sandbox/pkpd-clinical-response-agent.js +71 -0
  279. package/dist/prompts/sandbox/proteomics-agent.d.ts +1 -0
  280. package/dist/prompts/sandbox/proteomics-agent.js +93 -0
  281. package/dist/prompts/sandbox/scientific-executor.d.ts +1 -0
  282. package/dist/prompts/sandbox/scientific-executor.js +68 -0
  283. package/dist/prompts/sandbox/single-cell-agent.d.ts +1 -0
  284. package/dist/prompts/sandbox/single-cell-agent.js +129 -0
  285. package/dist/prompts/sandbox/spatial-omics-agent.d.ts +1 -0
  286. package/dist/prompts/sandbox/spatial-omics-agent.js +94 -0
  287. package/dist/prompts/sandbox/statistical-modeling-agent.d.ts +1 -0
  288. package/dist/prompts/sandbox/statistical-modeling-agent.js +112 -0
  289. package/dist/prompts/sandbox/translational-safety-agent.d.ts +1 -0
  290. package/dist/prompts/sandbox/translational-safety-agent.js +105 -0
  291. package/dist/prompts/sandbox-standards.d.ts +18 -0
  292. package/dist/prompts/sandbox-standards.js +358 -0
  293. package/dist/prompts/synthesis-agent.d.ts +1 -0
  294. package/dist/prompts/synthesis-agent.js +289 -0
  295. package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +1 -0
  296. package/dist/prompts/target-assessment/briefs/executive-recommendation.js +85 -0
  297. package/dist/prompts/target-assessment/briefs/index.d.ts +4 -0
  298. package/dist/prompts/target-assessment/briefs/index.js +4 -0
  299. package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +1 -0
  300. package/dist/prompts/target-assessment/briefs/liability-bullets.js +114 -0
  301. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +1 -0
  302. package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +29 -0
  303. package/dist/prompts/target-assessment/briefs/translational-commentary.d.ts +1 -0
  304. package/dist/prompts/target-assessment/briefs/translational-commentary.js +23 -0
  305. package/dist/prompts/target-assessment/drugs-in-class.d.ts +1 -0
  306. package/dist/prompts/target-assessment/drugs-in-class.js +29 -0
  307. package/dist/prompts/target-assessment/modulator-triage.d.ts +1 -0
  308. package/dist/prompts/target-assessment/modulator-triage.js +31 -0
  309. package/dist/prompts/target-assessment/off-target-annotator.d.ts +1 -0
  310. package/dist/prompts/target-assessment/off-target-annotator.js +28 -0
  311. package/dist/prompts/target-assessment/tox-voice/core.d.ts +1 -0
  312. package/dist/prompts/target-assessment/tox-voice/core.js +74 -0
  313. package/dist/prompts/target-assessment/tox-voice/critique.d.ts +7 -0
  314. package/dist/prompts/target-assessment/tox-voice/critique.js +109 -0
  315. package/dist/prompts/target-assessment/tox-voice/exemplars.d.ts +8 -0
  316. package/dist/prompts/target-assessment/tox-voice/exemplars.js +24 -0
  317. package/dist/prompts/target-assessment/tox-voice/index.d.ts +4 -0
  318. package/dist/prompts/target-assessment/tox-voice/index.js +4 -0
  319. package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +15 -0
  320. package/dist/prompts/target-assessment/tox-voice/vocabulary.js +72 -0
  321. package/dist/provenance/collector.d.ts +148 -0
  322. package/dist/provenance/collector.js +296 -0
  323. package/dist/provenance/exec-frame.d.ts +36 -0
  324. package/dist/provenance/exec-frame.js +49 -0
  325. package/dist/provenance/types.d.ts +95 -0
  326. package/dist/provenance/types.js +64 -0
  327. package/dist/providers/__fixtures__/session.d.ts +16 -0
  328. package/dist/providers/__fixtures__/session.js +20 -0
  329. package/dist/providers/ai-sdk.d.ts +47 -0
  330. package/dist/providers/ai-sdk.js +142 -0
  331. package/dist/providers/anthropic.d.ts +22 -0
  332. package/dist/providers/anthropic.js +26 -0
  333. package/dist/providers/embedding.d.ts +32 -0
  334. package/dist/providers/embedding.js +42 -0
  335. package/dist/providers/errors.d.ts +80 -0
  336. package/dist/providers/errors.js +137 -0
  337. package/dist/providers/llm-capabilities.d.ts +33 -0
  338. package/dist/providers/llm-capabilities.js +58 -0
  339. package/dist/providers/streaming-chat.d.ts +23 -0
  340. package/dist/providers/streaming-chat.js +61 -0
  341. package/dist/providers/types.d.ts +59 -0
  342. package/dist/providers/types.js +8 -0
  343. package/dist/runtime/assemble.d.ts +68 -0
  344. package/dist/runtime/assemble.js +46 -0
  345. package/dist/runtime/boot.d.ts +73 -0
  346. package/dist/runtime/boot.js +65 -0
  347. package/dist/runtime/connection-budget.d.ts +48 -0
  348. package/dist/runtime/connection-budget.js +57 -0
  349. package/dist/runtime/dbos.d.ts +94 -0
  350. package/dist/runtime/dbos.js +160 -0
  351. package/dist/runtime/lifecycle.d.ts +12 -0
  352. package/dist/runtime/lifecycle.js +19 -0
  353. package/dist/runtime/pools.d.ts +25 -0
  354. package/dist/runtime/pools.js +30 -0
  355. package/dist/runtime/shutdown.d.ts +33 -0
  356. package/dist/runtime/shutdown.js +39 -0
  357. package/dist/sandbox/await-exec.d.ts +143 -0
  358. package/dist/sandbox/await-exec.js +406 -0
  359. package/dist/sandbox/client.d.ts +82 -0
  360. package/dist/sandbox/client.js +23 -0
  361. package/dist/sandbox/create-sandbox.d.ts +105 -0
  362. package/dist/sandbox/create-sandbox.js +132 -0
  363. package/dist/sandbox/deliver-exec-event.d.ts +25 -0
  364. package/dist/sandbox/deliver-exec-event.js +29 -0
  365. package/dist/sandbox/docker-client.d.ts +75 -0
  366. package/dist/sandbox/docker-client.js +315 -0
  367. package/dist/sandbox/estimate-data-profile-resources.d.ts +5 -0
  368. package/dist/sandbox/estimate-data-profile-resources.js +73 -0
  369. package/dist/sandbox/exec-id.d.ts +12 -0
  370. package/dist/sandbox/exec-id.js +20 -0
  371. package/dist/sandbox/execution-id.d.ts +30 -0
  372. package/dist/sandbox/execution-id.js +47 -0
  373. package/dist/sandbox/hmac.d.ts +54 -0
  374. package/dist/sandbox/hmac.js +67 -0
  375. package/dist/sandbox/identity.d.ts +15 -0
  376. package/dist/sandbox/identity.js +22 -0
  377. package/dist/sandbox/ignored-dirs.d.ts +7 -0
  378. package/dist/sandbox/ignored-dirs.js +7 -0
  379. package/dist/sandbox/k8s-client.d.ts +71 -0
  380. package/dist/sandbox/k8s-client.js +488 -0
  381. package/dist/sandbox/liveness.d.ts +60 -0
  382. package/dist/sandbox/liveness.js +82 -0
  383. package/dist/sandbox/mount-plan.d.ts +77 -0
  384. package/dist/sandbox/mount-plan.js +84 -0
  385. package/dist/sandbox/notification-sweep.d.ts +42 -0
  386. package/dist/sandbox/notification-sweep.js +74 -0
  387. package/dist/sandbox/reaper.d.ts +70 -0
  388. package/dist/sandbox/reaper.js +124 -0
  389. package/dist/sandbox/sandbox-error.d.ts +105 -0
  390. package/dist/sandbox/sandbox-error.js +92 -0
  391. package/dist/sandbox/sandbox-step-translate.d.ts +35 -0
  392. package/dist/sandbox/sandbox-step-translate.js +76 -0
  393. package/dist/sandbox/submit-exec.d.ts +33 -0
  394. package/dist/sandbox/submit-exec.js +68 -0
  395. package/dist/sandbox/types.d.ts +277 -0
  396. package/dist/sandbox/types.js +147 -0
  397. package/dist/sandbox/watchdog.d.ts +71 -0
  398. package/dist/sandbox/watchdog.js +150 -0
  399. package/dist/schemas/artifact-manifest.d.ts +34 -0
  400. package/dist/schemas/artifact-manifest.js +36 -0
  401. package/dist/schemas/data-profile-schemas.d.ts +92 -0
  402. package/dist/schemas/data-profile-schemas.js +89 -0
  403. package/dist/schemas/file-metadata.d.ts +51 -0
  404. package/dist/schemas/file-metadata.js +39 -0
  405. package/dist/schemas/plan-schemas.d.ts +110 -0
  406. package/dist/schemas/plan-schemas.js +50 -0
  407. package/dist/schemas/render-step-prompt.d.ts +32 -0
  408. package/dist/schemas/render-step-prompt.js +76 -0
  409. package/dist/schemas/run-synthesis.d.ts +148 -0
  410. package/dist/schemas/run-synthesis.js +87 -0
  411. package/dist/schemas/step-summary.d.ts +18 -0
  412. package/dist/schemas/step-summary.js +20 -0
  413. package/dist/schemas/validate-plan.d.ts +39 -0
  414. package/dist/schemas/validate-plan.js +120 -0
  415. package/dist/schemas/workflow-state.d.ts +314 -0
  416. package/dist/schemas/workflow-state.js +139 -0
  417. package/dist/state/active-sandboxes.d.ts +58 -0
  418. package/dist/state/active-sandboxes.js +100 -0
  419. package/dist/state/analyses-metrics.d.ts +21 -0
  420. package/dist/state/analyses-metrics.js +59 -0
  421. package/dist/state/analyses.d.ts +58 -0
  422. package/dist/state/analyses.js +132 -0
  423. package/dist/state/artifacts.d.ts +53 -0
  424. package/dist/state/artifacts.js +175 -0
  425. package/dist/state/data-profile.d.ts +176 -0
  426. package/dist/state/data-profile.js +284 -0
  427. package/dist/state/db.d.ts +10 -0
  428. package/dist/state/db.js +9 -0
  429. package/dist/state/index.d.ts +29 -0
  430. package/dist/state/index.js +20 -0
  431. package/dist/state/init.d.ts +14 -0
  432. package/dist/state/init.js +406 -0
  433. package/dist/state/plans.d.ts +56 -0
  434. package/dist/state/plans.js +117 -0
  435. package/dist/state/runs.d.ts +69 -0
  436. package/dist/state/runs.js +206 -0
  437. package/dist/state/schema.d.ts +150 -0
  438. package/dist/state/schema.js +100 -0
  439. package/dist/state/step-executions.d.ts +77 -0
  440. package/dist/state/step-executions.js +175 -0
  441. package/dist/state/target-assessments.d.ts +68 -0
  442. package/dist/state/target-assessments.js +222 -0
  443. package/dist/state/vector-store.d.ts +53 -0
  444. package/dist/state/vector-store.js +89 -0
  445. package/dist/tasks/data-profile.d.ts +171 -0
  446. package/dist/tasks/data-profile.js +461 -0
  447. package/dist/tasks/refresh-regulatory-corpus.d.ts +59 -0
  448. package/dist/tasks/refresh-regulatory-corpus.js +146 -0
  449. package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +55 -0
  450. package/dist/tasks/regulatory-corpus-boot-refresh.js +149 -0
  451. package/dist/tools/__fixtures__/tool-context.d.ts +13 -0
  452. package/dist/tools/__fixtures__/tool-context.js +18 -0
  453. package/dist/tools/bio/check-safety-panel.d.ts +35 -0
  454. package/dist/tools/bio/check-safety-panel.js +76 -0
  455. package/dist/tools/bio/find-approval-precedent.d.ts +32 -0
  456. package/dist/tools/bio/find-approval-precedent.js +72 -0
  457. package/dist/tools/bio/get-article-details.d.ts +11 -0
  458. package/dist/tools/bio/get-article-details.js +20 -0
  459. package/dist/tools/bio/get-article-full-text.d.ts +19 -0
  460. package/dist/tools/bio/get-article-full-text.js +32 -0
  461. package/dist/tools/bio/get-bioactivity.d.ts +11 -0
  462. package/dist/tools/bio/get-bioactivity.js +23 -0
  463. package/dist/tools/bio/get-drug-info.d.ts +9 -0
  464. package/dist/tools/bio/get-drug-info.js +22 -0
  465. package/dist/tools/bio/get-impc-ko-profile.d.ts +9 -0
  466. package/dist/tools/bio/get-impc-ko-profile.js +20 -0
  467. package/dist/tools/bio/get-mechanism.d.ts +8 -0
  468. package/dist/tools/bio/get-mechanism.js +18 -0
  469. package/dist/tools/bio/get-pubchem-assays.d.ts +22 -0
  470. package/dist/tools/bio/get-pubchem-assays.js +107 -0
  471. package/dist/tools/bio/get-pubchem-cross-refs.d.ts +15 -0
  472. package/dist/tools/bio/get-pubchem-cross-refs.js +68 -0
  473. package/dist/tools/bio/get-target-safety.d.ts +18 -0
  474. package/dist/tools/bio/get-target-safety.js +26 -0
  475. package/dist/tools/bio/index.d.ts +41 -0
  476. package/dist/tools/bio/index.js +48 -0
  477. package/dist/tools/bio/keys.d.ts +31 -0
  478. package/dist/tools/bio/keys.js +30 -0
  479. package/dist/tools/bio/lookup-go-term.d.ts +31 -0
  480. package/dist/tools/bio/lookup-go-term.js +116 -0
  481. package/dist/tools/bio/search-bgee-expression.d.ts +10 -0
  482. package/dist/tools/bio/search-bgee-expression.js +24 -0
  483. package/dist/tools/bio/search-clinical-trials.d.ts +12 -0
  484. package/dist/tools/bio/search-clinical-trials.js +21 -0
  485. package/dist/tools/bio/search-clinvar.d.ts +13 -0
  486. package/dist/tools/bio/search-clinvar.js +28 -0
  487. package/dist/tools/bio/search-compounds.d.ts +22 -0
  488. package/dist/tools/bio/search-compounds.js +160 -0
  489. package/dist/tools/bio/search-ctx-chemical.d.ts +50 -0
  490. package/dist/tools/bio/search-ctx-chemical.js +130 -0
  491. package/dist/tools/bio/search-ctx-exposure.d.ts +55 -0
  492. package/dist/tools/bio/search-ctx-exposure.js +176 -0
  493. package/dist/tools/bio/search-ctx-hazard.d.ts +111 -0
  494. package/dist/tools/bio/search-ctx-hazard.js +178 -0
  495. package/dist/tools/bio/search-dgidb.d.ts +43 -0
  496. package/dist/tools/bio/search-dgidb.js +199 -0
  497. package/dist/tools/bio/search-disgenet.d.ts +30 -0
  498. package/dist/tools/bio/search-disgenet.js +84 -0
  499. package/dist/tools/bio/search-drugbank.d.ts +38 -0
  500. package/dist/tools/bio/search-drugbank.js +109 -0
  501. package/dist/tools/bio/search-faers.d.ts +11 -0
  502. package/dist/tools/bio/search-faers.js +23 -0
  503. package/dist/tools/bio/search-gene.d.ts +11 -0
  504. package/dist/tools/bio/search-gene.js +19 -0
  505. package/dist/tools/bio/search-geo-datasets.d.ts +20 -0
  506. package/dist/tools/bio/search-geo-datasets.js +86 -0
  507. package/dist/tools/bio/search-gwas-catalog.d.ts +33 -0
  508. package/dist/tools/bio/search-gwas-catalog.js +172 -0
  509. package/dist/tools/bio/search-interactions.d.ts +17 -0
  510. package/dist/tools/bio/search-interactions.js +31 -0
  511. package/dist/tools/bio/search-opentargets.d.ts +11 -0
  512. package/dist/tools/bio/search-opentargets.js +25 -0
  513. package/dist/tools/bio/search-pathway.d.ts +12 -0
  514. package/dist/tools/bio/search-pathway.js +32 -0
  515. package/dist/tools/bio/search-pharmgkb.d.ts +17 -0
  516. package/dist/tools/bio/search-pharmgkb.js +46 -0
  517. package/dist/tools/bio/search-pubchem-compound.d.ts +26 -0
  518. package/dist/tools/bio/search-pubchem-compound.js +110 -0
  519. package/dist/tools/bio/search-pubmed.d.ts +17 -0
  520. package/dist/tools/bio/search-pubmed.js +31 -0
  521. package/dist/tools/bio/search-targets.d.ts +9 -0
  522. package/dist/tools/bio/search-targets.js +20 -0
  523. package/dist/tools/bio/search-toxcast.d.ts +36 -0
  524. package/dist/tools/bio/search-toxcast.js +141 -0
  525. package/dist/tools/define-tool.d.ts +80 -0
  526. package/dist/tools/define-tool.js +48 -0
  527. package/dist/tools/display/index.d.ts +4 -0
  528. package/dist/tools/display/index.js +4 -0
  529. package/dist/tools/display/show-user.d.ts +33 -0
  530. package/dist/tools/display/show-user.js +67 -0
  531. package/dist/tools/execute-plan.d.ts +64 -0
  532. package/dist/tools/execute-plan.js +208 -0
  533. package/dist/tools/iterate-report.d.ts +172 -0
  534. package/dist/tools/iterate-report.js +521 -0
  535. package/dist/tools/lib/api-utils.d.ts +80 -0
  536. package/dist/tools/lib/api-utils.js +128 -0
  537. package/dist/tools/lib/bgee-client.d.ts +36 -0
  538. package/dist/tools/lib/bgee-client.js +150 -0
  539. package/dist/tools/lib/cbioportal-client.d.ts +34 -0
  540. package/dist/tools/lib/cbioportal-client.js +159 -0
  541. package/dist/tools/lib/chembl-client.d.ts +123 -0
  542. package/dist/tools/lib/chembl-client.js +458 -0
  543. package/dist/tools/lib/chembl-config.d.ts +5 -0
  544. package/dist/tools/lib/chembl-config.js +3 -0
  545. package/dist/tools/lib/clinical-benchmarks-client.d.ts +33 -0
  546. package/dist/tools/lib/clinical-benchmarks-client.js +54 -0
  547. package/dist/tools/lib/clinical-trials-client.d.ts +216 -0
  548. package/dist/tools/lib/clinical-trials-client.js +339 -0
  549. package/dist/tools/lib/clinicaltrials-config.d.ts +4 -0
  550. package/dist/tools/lib/clinicaltrials-config.js +2 -0
  551. package/dist/tools/lib/clinvar-client.d.ts +25 -0
  552. package/dist/tools/lib/clinvar-client.js +126 -0
  553. package/dist/tools/lib/disgenet-config.d.ts +2 -0
  554. package/dist/tools/lib/disgenet-config.js +11 -0
  555. package/dist/tools/lib/drugbank-config.d.ts +2 -0
  556. package/dist/tools/lib/drugbank-config.js +12 -0
  557. package/dist/tools/lib/ema-client.d.ts +45 -0
  558. package/dist/tools/lib/ema-client.js +127 -0
  559. package/dist/tools/lib/ema-config.d.ts +7 -0
  560. package/dist/tools/lib/ema-config.js +7 -0
  561. package/dist/tools/lib/ensembl-client.d.ts +27 -0
  562. package/dist/tools/lib/ensembl-client.js +82 -0
  563. package/dist/tools/lib/gwas-catalog-config.d.ts +4 -0
  564. package/dist/tools/lib/gwas-catalog-config.js +2 -0
  565. package/dist/tools/lib/identifier-resolver.d.ts +85 -0
  566. package/dist/tools/lib/identifier-resolver.js +333 -0
  567. package/dist/tools/lib/impc-client.d.ts +44 -0
  568. package/dist/tools/lib/impc-client.js +239 -0
  569. package/dist/tools/lib/iuphar-client.d.ts +75 -0
  570. package/dist/tools/lib/iuphar-client.js +230 -0
  571. package/dist/tools/lib/iuphar-config.d.ts +5 -0
  572. package/dist/tools/lib/iuphar-config.js +3 -0
  573. package/dist/tools/lib/ncbi-utils.d.ts +58 -0
  574. package/dist/tools/lib/ncbi-utils.js +286 -0
  575. package/dist/tools/lib/openfda-client.d.ts +53 -0
  576. package/dist/tools/lib/openfda-client.js +192 -0
  577. package/dist/tools/lib/openfda-config.d.ts +2 -0
  578. package/dist/tools/lib/openfda-config.js +2 -0
  579. package/dist/tools/lib/opentargets-client.d.ts +64 -0
  580. package/dist/tools/lib/opentargets-client.js +290 -0
  581. package/dist/tools/lib/opentargets-config.d.ts +5 -0
  582. package/dist/tools/lib/opentargets-config.js +5 -0
  583. package/dist/tools/lib/path-validation.d.ts +14 -0
  584. package/dist/tools/lib/path-validation.js +26 -0
  585. package/dist/tools/lib/pathway-client.d.ts +27 -0
  586. package/dist/tools/lib/pathway-client.js +149 -0
  587. package/dist/tools/lib/pharmgkb-config.d.ts +4 -0
  588. package/dist/tools/lib/pharmgkb-config.js +2 -0
  589. package/dist/tools/lib/preview-lock.d.ts +20 -0
  590. package/dist/tools/lib/preview-lock.js +35 -0
  591. package/dist/tools/lib/protein-family-modality.d.ts +16 -0
  592. package/dist/tools/lib/protein-family-modality.js +42 -0
  593. package/dist/tools/lib/protein-family-normalize.d.ts +12 -0
  594. package/dist/tools/lib/protein-family-normalize.js +46 -0
  595. package/dist/tools/lib/pubchem-client.d.ts +40 -0
  596. package/dist/tools/lib/pubchem-client.js +128 -0
  597. package/dist/tools/lib/pubchem-config.d.ts +5 -0
  598. package/dist/tools/lib/pubchem-config.js +3 -0
  599. package/dist/tools/lib/pubmed-client.d.ts +28 -0
  600. package/dist/tools/lib/pubmed-client.js +91 -0
  601. package/dist/tools/lib/report-preflight.d.ts +39 -0
  602. package/dist/tools/lib/report-preflight.js +283 -0
  603. package/dist/tools/lib/string-client.d.ts +33 -0
  604. package/dist/tools/lib/string-client.js +93 -0
  605. package/dist/tools/lib/toxcast-config.d.ts +2 -0
  606. package/dist/tools/lib/toxcast-config.js +11 -0
  607. package/dist/tools/lib/uniprot-client.d.ts +28 -0
  608. package/dist/tools/lib/uniprot-client.js +103 -0
  609. package/dist/tools/lib/uniprot-config.d.ts +5 -0
  610. package/dist/tools/lib/uniprot-config.js +3 -0
  611. package/dist/tools/memory/index.d.ts +4 -0
  612. package/dist/tools/memory/index.js +4 -0
  613. package/dist/tools/memory/update-working-memory.d.ts +25 -0
  614. package/dist/tools/memory/update-working-memory.js +112 -0
  615. package/dist/tools/registry.d.ts +15 -0
  616. package/dist/tools/registry.js +26 -0
  617. package/dist/tools/report/build-report.d.ts +13 -0
  618. package/dist/tools/report/build-report.js +26 -0
  619. package/dist/tools/report/index.d.ts +14 -0
  620. package/dist/tools/report/index.js +14 -0
  621. package/dist/tools/report/mint-preview-url.d.ts +26 -0
  622. package/dist/tools/report/mint-preview-url.js +44 -0
  623. package/dist/tools/report/preview-publisher.d.ts +37 -0
  624. package/dist/tools/report/preview-publisher.js +25 -0
  625. package/dist/tools/report/preview-snapshot.d.ts +26 -0
  626. package/dist/tools/report/preview-snapshot.js +121 -0
  627. package/dist/tools/report/submit-report.d.ts +25 -0
  628. package/dist/tools/report/submit-report.js +126 -0
  629. package/dist/tools/report/version-fs.d.ts +15 -0
  630. package/dist/tools/report/version-fs.js +154 -0
  631. package/dist/tools/research/context7-docs.d.ts +31 -0
  632. package/dist/tools/research/context7-docs.js +61 -0
  633. package/dist/tools/research/generate-analogy-report.d.ts +60 -0
  634. package/dist/tools/research/generate-analogy-report.js +288 -0
  635. package/dist/tools/research/generate-plan.d.ts +39 -0
  636. package/dist/tools/research/generate-plan.js +393 -0
  637. package/dist/tools/research/index.d.ts +15 -0
  638. package/dist/tools/research/index.js +15 -0
  639. package/dist/tools/research/inspect-run.d.ts +54 -0
  640. package/dist/tools/research/inspect-run.js +85 -0
  641. package/dist/tools/research/literature-reviewer.d.ts +29 -0
  642. package/dist/tools/research/literature-reviewer.js +84 -0
  643. package/dist/tools/research/search-arxiv.d.ts +32 -0
  644. package/dist/tools/research/search-arxiv.js +123 -0
  645. package/dist/tools/research/search-github-repos.d.ts +32 -0
  646. package/dist/tools/research/search-github-repos.js +86 -0
  647. package/dist/tools/research/search-semantic-scholar.d.ts +33 -0
  648. package/dist/tools/research/search-semantic-scholar.js +93 -0
  649. package/dist/tools/run-ephemeral.d.ts +33 -0
  650. package/dist/tools/run-ephemeral.js +65 -0
  651. package/dist/tools/sandbox/index.d.ts +7 -0
  652. package/dist/tools/sandbox/index.js +7 -0
  653. package/dist/tools/sandbox/list-available-packages.d.ts +7 -0
  654. package/dist/tools/sandbox/list-available-packages.js +27 -0
  655. package/dist/tools/sandbox/list-available-refs.d.ts +7 -0
  656. package/dist/tools/sandbox/list-available-refs.js +147 -0
  657. package/dist/tools/sandbox/report-blocker.d.ts +23 -0
  658. package/dist/tools/sandbox/report-blocker.js +39 -0
  659. package/dist/tools/sandbox/skills.d.ts +72 -0
  660. package/dist/tools/sandbox/skills.js +144 -0
  661. package/dist/tools/workspace/edit-file.d.ts +46 -0
  662. package/dist/tools/workspace/edit-file.js +100 -0
  663. package/dist/tools/workspace/execute-command.d.ts +80 -0
  664. package/dist/tools/workspace/execute-command.js +95 -0
  665. package/dist/tools/workspace/file-stat.d.ts +24 -0
  666. package/dist/tools/workspace/file-stat.js +37 -0
  667. package/dist/tools/workspace/grep.d.ts +57 -0
  668. package/dist/tools/workspace/grep.js +154 -0
  669. package/dist/tools/workspace/index.d.ts +26 -0
  670. package/dist/tools/workspace/index.js +27 -0
  671. package/dist/tools/workspace/list-files.d.ts +24 -0
  672. package/dist/tools/workspace/list-files.js +38 -0
  673. package/dist/tools/workspace/mutator.d.ts +83 -0
  674. package/dist/tools/workspace/mutator.js +81 -0
  675. package/dist/tools/workspace/read-file.d.ts +39 -0
  676. package/dist/tools/workspace/read-file.js +93 -0
  677. package/dist/tools/workspace/result-bounds.d.ts +42 -0
  678. package/dist/tools/workspace/result-bounds.js +50 -0
  679. package/dist/tools/workspace/run-exec.d.ts +32 -0
  680. package/dist/tools/workspace/run-exec.js +34 -0
  681. package/dist/tools/workspace/show-file.d.ts +37 -0
  682. package/dist/tools/workspace/show-file.js +54 -0
  683. package/dist/tools/workspace/show-plan.d.ts +23 -0
  684. package/dist/tools/workspace/show-plan.js +44 -0
  685. package/dist/tools/workspace/workspace-search.d.ts +25 -0
  686. package/dist/tools/workspace/workspace-search.js +78 -0
  687. package/dist/tools/workspace/write-file.d.ts +16 -0
  688. package/dist/tools/workspace/write-file.js +33 -0
  689. package/dist/workflows/execute-analysis-scheduler.d.ts +94 -0
  690. package/dist/workflows/execute-analysis-scheduler.js +186 -0
  691. package/dist/workflows/execute-analysis.d.ts +271 -0
  692. package/dist/workflows/execute-analysis.js +746 -0
  693. package/dist/workflows/execute-target-assessment.d.ts +101 -0
  694. package/dist/workflows/execute-target-assessment.js +528 -0
  695. package/dist/workflows/metrics.d.ts +37 -0
  696. package/dist/workflows/metrics.js +55 -0
  697. package/dist/workflows/plan/level.d.ts +12 -0
  698. package/dist/workflows/plan/level.js +12 -0
  699. package/dist/workflows/register-workflows.d.ts +51 -0
  700. package/dist/workflows/register-workflows.js +48 -0
  701. package/dist/workflows/resume-execute-analysis.d.ts +70 -0
  702. package/dist/workflows/resume-execute-analysis.js +80 -0
  703. package/dist/workflows/sandbox-step.d.ts +243 -0
  704. package/dist/workflows/sandbox-step.js +573 -0
  705. package/dist/workflows/target-assessment/assemblers/index.d.ts +5 -0
  706. package/dist/workflows/target-assessment/assemblers/index.js +4 -0
  707. package/dist/workflows/target-assessment/assemblers/literature.d.ts +299 -0
  708. package/dist/workflows/target-assessment/assemblers/literature.js +987 -0
  709. package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +109 -0
  710. package/dist/workflows/target-assessment/assemblers/orchestrator.js +835 -0
  711. package/dist/workflows/target-assessment/assemblers/safety.d.ts +352 -0
  712. package/dist/workflows/target-assessment/assemblers/safety.js +985 -0
  713. package/dist/workflows/target-assessment/assemblers/trials.d.ts +30 -0
  714. package/dist/workflows/target-assessment/assemblers/trials.js +75 -0
  715. package/dist/workflows/target-assessment/collectors/index.d.ts +105 -0
  716. package/dist/workflows/target-assessment/collectors/index.js +468 -0
  717. package/dist/workflows/target-assessment/correction-loop.d.ts +45 -0
  718. package/dist/workflows/target-assessment/correction-loop.js +62 -0
  719. package/dist/workflows/target-assessment/coverage.d.ts +81 -0
  720. package/dist/workflows/target-assessment/coverage.js +82 -0
  721. package/dist/workflows/target-assessment/decisions/index.d.ts +86 -0
  722. package/dist/workflows/target-assessment/decisions/index.js +127 -0
  723. package/dist/workflows/target-assessment/fanout/index.d.ts +31 -0
  724. package/dist/workflows/target-assessment/fanout/index.js +155 -0
  725. package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +52 -0
  726. package/dist/workflows/target-assessment/lib/approval-precedents.js +119 -0
  727. package/dist/workflows/target-assessment/lib/citation-validator.d.ts +46 -0
  728. package/dist/workflows/target-assessment/lib/citation-validator.js +316 -0
  729. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +62 -0
  730. package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.js +172 -0
  731. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +45 -0
  732. package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +156 -0
  733. package/dist/workflows/target-assessment/lib/compute-derived.d.ts +19 -0
  734. package/dist/workflows/target-assessment/lib/compute-derived.js +252 -0
  735. package/dist/workflows/target-assessment/lib/compute-selectivity.d.ts +15 -0
  736. package/dist/workflows/target-assessment/lib/compute-selectivity.js +18 -0
  737. package/dist/workflows/target-assessment/lib/dedup-modulators.d.ts +37 -0
  738. package/dist/workflows/target-assessment/lib/dedup-modulators.js +157 -0
  739. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.d.ts +17 -0
  740. package/dist/workflows/target-assessment/lib/evidence-conflict-detector.js +100 -0
  741. package/dist/workflows/target-assessment/lib/expression-constants.d.ts +21 -0
  742. package/dist/workflows/target-assessment/lib/expression-constants.js +21 -0
  743. package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +21 -0
  744. package/dist/workflows/target-assessment/lib/family-complex-supplement.js +37 -0
  745. package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +39 -0
  746. package/dist/workflows/target-assessment/lib/heterodimer-filter.js +54 -0
  747. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.d.ts +4 -0
  748. package/dist/workflows/target-assessment/lib/intended-polypharm-filter.js +24 -0
  749. package/dist/workflows/target-assessment/lib/llm-step.d.ts +77 -0
  750. package/dist/workflows/target-assessment/lib/llm-step.js +99 -0
  751. package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +30 -0
  752. package/dist/workflows/target-assessment/lib/meddra-organ-map.js +126 -0
  753. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.d.ts +17 -0
  754. package/dist/workflows/target-assessment/lib/recommendation-quality-gates.js +99 -0
  755. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.d.ts +2 -0
  756. package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +51 -0
  757. package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +26 -0
  758. package/dist/workflows/target-assessment/lib/regulatory-actions.js +147 -0
  759. package/dist/workflows/target-assessment/lib/structured-llm.d.ts +58 -0
  760. package/dist/workflows/target-assessment/lib/structured-llm.js +101 -0
  761. package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +60 -0
  762. package/dist/workflows/target-assessment/lib/target-identity-filter.js +86 -0
  763. package/dist/workflows/target-assessment/lib/therapeutic-programs.d.ts +20 -0
  764. package/dist/workflows/target-assessment/lib/therapeutic-programs.js +68 -0
  765. package/dist/workflows/target-assessment/metrics.d.ts +21 -0
  766. package/dist/workflows/target-assessment/metrics.js +42 -0
  767. package/dist/workflows/target-assessment/phase4-assemble.d.ts +1841 -0
  768. package/dist/workflows/target-assessment/phase4-assemble.js +39 -0
  769. package/dist/workflows/target-assessment/phase5-persist.d.ts +57 -0
  770. package/dist/workflows/target-assessment/phase5-persist.js +461 -0
  771. package/dist/workflows/target-assessment/progress.d.ts +38 -0
  772. package/dist/workflows/target-assessment/progress.js +76 -0
  773. package/dist/workflows/target-assessment/schemas.d.ts +931 -0
  774. package/dist/workflows/target-assessment/schemas.js +293 -0
  775. package/dist/workflows/target-assessment/steps/collectors/pathways.d.ts +15 -0
  776. package/dist/workflows/target-assessment/steps/collectors/pathways.js +58 -0
  777. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.d.ts +34 -0
  778. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.js +31 -0
  779. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.d.ts +57 -0
  780. package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.js +54 -0
  781. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.d.ts +35 -0
  782. package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.js +32 -0
  783. package/dist/workflows/target-assessment/steps/fanout/index.d.ts +14 -0
  784. package/dist/workflows/target-assessment/steps/fanout/index.js +10 -0
  785. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +28 -0
  786. package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +27 -0
  787. package/dist/workflows/target-assessment/steps/phase0-resolve.d.ts +71 -0
  788. package/dist/workflows/target-assessment/steps/phase0-resolve.js +21 -0
  789. package/dist/workflows/target-assessment/steps/phase1-aggregate.d.ts +1018 -0
  790. package/dist/workflows/target-assessment/steps/phase1-aggregate.js +25 -0
  791. package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +696 -0
  792. package/dist/workflows/target-assessment/steps/phase2-aggregate.js +38 -0
  793. package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +936 -0
  794. package/dist/workflows/target-assessment/steps/phase3-aggregate.js +22 -0
  795. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +34 -0
  796. package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +45 -0
  797. package/dist/workflows/target-assessment/sub-workflows/index.d.ts +15 -0
  798. package/dist/workflows/target-assessment/sub-workflows/index.js +11 -0
  799. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.d.ts +41 -0
  800. package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.js +12 -0
  801. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.d.ts +41 -0
  802. package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.js +12 -0
  803. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +36 -0
  804. package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.js +12 -0
  805. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.d.ts +66 -0
  806. package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.js +12 -0
  807. package/dist/workflows/target-assessment/synthesis/index.d.ts +560 -0
  808. package/dist/workflows/target-assessment/synthesis/index.js +351 -0
  809. package/dist/workflows/target-assessment/synthesis-probes.d.ts +56 -0
  810. package/dist/workflows/target-assessment/synthesis-probes.js +320 -0
  811. package/dist/workspace/filesystem.d.ts +117 -0
  812. package/dist/workspace/filesystem.js +304 -0
  813. package/dist/workspace/mount-strategy.d.ts +50 -0
  814. package/dist/workspace/mount-strategy.js +67 -0
  815. package/dist/workspace/paths.d.ts +185 -0
  816. package/dist/workspace/paths.js +219 -0
  817. package/dist/workspace/provenance-collector.d.ts +34 -0
  818. package/dist/workspace/provenance-collector.js +16 -0
  819. package/dist/workspace/search-config.d.ts +23 -0
  820. package/dist/workspace/search-config.js +43 -0
  821. package/dist/workspace/workspace-paths.d.ts +26 -0
  822. package/dist/workspace/workspace-paths.js +31 -0
  823. package/package.json +101 -0
@@ -0,0 +1,37 @@
1
+ import { type ChemblModulator } from "../../../tools/lib/chembl-client.js";
2
+ export type DroppedSynonym = {
3
+ chemblId: string;
4
+ reason: "same_active_substance" | "ambiguous_name_synonym";
5
+ keptId: string | null;
6
+ };
7
+ export type DedupResult<T extends Pick<ChemblModulator, "moleculeChemblId" | "parentChemblId" | "maxPhase" | "firstApproval">> = {
8
+ kept: T[];
9
+ dropped: DroppedSynonym[];
10
+ };
11
+ /**
12
+ * Group modulators by parent_molecule_chembl_id (or moleculeChemblId when
13
+ * the parent is absent — singleton groups). Within each group keep the
14
+ * "most informative" entry: prefer firstApproval populated, then highest
15
+ * maxPhase, then earliest moleculeChemblId for deterministic tie-break.
16
+ *
17
+ * Reason: ChEMBL exposes the same active substance under multiple
18
+ * molecule_chembl_ids (e.g., CALCITONIN SALMON vs generic CALCITONIN),
19
+ * which causes downstream FAERS queries to double-count the same reports.
20
+ *
21
+ * A second pass handles name-prefix synonyms where ChEMBL does not populate
22
+ * molecule_hierarchy (e.g., CALCITONIN → CALCITONIN HUMAN). Entries with a
23
+ * null firstApproval whose preferredName (uppercased) is a strict
24
+ * word-boundary prefix of another entry's name within the same moleculeType
25
+ * are dropped as same_active_substance (one match) or ambiguous_name_synonym
26
+ * (multiple matches).
27
+ */
28
+ export declare function dedupModulatorsByParent<T extends Pick<ChemblModulator, "moleculeChemblId" | "parentChemblId" | "maxPhase" | "firstApproval" | "preferredName" | "moleculeType">>(modulators: T[]): DedupResult<T>;
29
+ /**
30
+ * For each modulator whose ChEMBL `moleculeType` is empty or "Unknown",
31
+ * fetch the molecule's standard InChI key from ChEMBL, look it up in
32
+ * PubChem, and apply the heuristic classifier (MW + amide-bond count).
33
+ * Returns a new array of modulators with `moleculeType` replaced when a
34
+ * confident classification emerges; otherwise the original ChEMBL value is
35
+ * preserved. Network failures are isolated per modulator.
36
+ */
37
+ export declare function resolveModulatorMoleculeType<T extends Pick<ChemblModulator, "moleculeChemblId" | "moleculeType">>(modulators: T[]): Promise<T[]>;
@@ -0,0 +1,157 @@
1
+ import { getMoleculeInChIKey } from "../../../tools/lib/chembl-client.js";
2
+ import { classifyMoleculeType, getCompoundPropertiesByInChIKey } from "../../../tools/lib/pubchem-client.js";
3
+ import { withHost } from "../../../lib/host-concurrency.js";
4
+ /**
5
+ * Group modulators by parent_molecule_chembl_id (or moleculeChemblId when
6
+ * the parent is absent — singleton groups). Within each group keep the
7
+ * "most informative" entry: prefer firstApproval populated, then highest
8
+ * maxPhase, then earliest moleculeChemblId for deterministic tie-break.
9
+ *
10
+ * Reason: ChEMBL exposes the same active substance under multiple
11
+ * molecule_chembl_ids (e.g., CALCITONIN SALMON vs generic CALCITONIN),
12
+ * which causes downstream FAERS queries to double-count the same reports.
13
+ *
14
+ * A second pass handles name-prefix synonyms where ChEMBL does not populate
15
+ * molecule_hierarchy (e.g., CALCITONIN → CALCITONIN HUMAN). Entries with a
16
+ * null firstApproval whose preferredName (uppercased) is a strict
17
+ * word-boundary prefix of another entry's name within the same moleculeType
18
+ * are dropped as same_active_substance (one match) or ambiguous_name_synonym
19
+ * (multiple matches).
20
+ */
21
+ export function dedupModulatorsByParent(modulators) {
22
+ const groups = new Map();
23
+ for (const m of modulators) {
24
+ const key = m.parentChemblId ?? m.moleculeChemblId;
25
+ const arr = groups.get(key) ?? [];
26
+ arr.push(m);
27
+ groups.set(key, arr);
28
+ }
29
+ const kept = [];
30
+ const dropped = [];
31
+ for (const group of groups.values()) {
32
+ if (group.length === 1) {
33
+ kept.push(group[0]);
34
+ continue;
35
+ }
36
+ const ranked = [...group].sort((a, b) => {
37
+ const aHasApp = a.firstApproval != null ? 1 : 0;
38
+ const bHasApp = b.firstApproval != null ? 1 : 0;
39
+ if (aHasApp !== bHasApp)
40
+ return bHasApp - aHasApp;
41
+ const aPhase = a.maxPhase ?? -1;
42
+ const bPhase = b.maxPhase ?? -1;
43
+ if (aPhase !== bPhase)
44
+ return bPhase - aPhase;
45
+ return a.moleculeChemblId.localeCompare(b.moleculeChemblId);
46
+ });
47
+ const winner = ranked[0];
48
+ kept.push(winner);
49
+ for (const loser of ranked.slice(1)) {
50
+ dropped.push({
51
+ chemblId: loser.moleculeChemblId,
52
+ reason: "same_active_substance",
53
+ keptId: winner.moleculeChemblId,
54
+ });
55
+ }
56
+ }
57
+ // Second pass: name-prefix synonym detection within the same moleculeType.
58
+ // Handles cases where ChEMBL does not populate molecule_hierarchy for
59
+ // unqualified generic names (e.g., "CALCITONIN" as a prefix of
60
+ // "CALCITONIN HUMAN" and "CALCITONIN SALMON"). Only drops entries with
61
+ // null firstApproval — an approved generic name should never be silently
62
+ // dropped.
63
+ const byType = new Map();
64
+ for (const m of kept) {
65
+ const k = (m.moleculeType ?? "").toUpperCase();
66
+ const arr = byType.get(k) ?? [];
67
+ arr.push(m);
68
+ byType.set(k, arr);
69
+ }
70
+ const dropIds = new Set();
71
+ for (const group of byType.values()) {
72
+ for (const shortEntry of group) {
73
+ if (shortEntry.firstApproval != null)
74
+ continue;
75
+ const shortName = (shortEntry.preferredName ?? "").trim().toUpperCase();
76
+ if (!shortName)
77
+ continue;
78
+ const longerMatches = group.filter((other) => {
79
+ if (other === shortEntry)
80
+ return false;
81
+ const longName = (other.preferredName ?? "").trim().toUpperCase();
82
+ if (longName.length <= shortName.length)
83
+ return false;
84
+ if (!longName.startsWith(shortName))
85
+ return false;
86
+ // Require a word-boundary character (whitespace or hyphen) immediately
87
+ // after the prefix — prevents "CALC" from matching "CALCITONIN".
88
+ const boundary = longName.charAt(shortName.length);
89
+ return /[\s-]/.test(boundary);
90
+ });
91
+ if (longerMatches.length === 1) {
92
+ dropIds.add(shortEntry.moleculeChemblId);
93
+ dropped.push({
94
+ chemblId: shortEntry.moleculeChemblId,
95
+ reason: "same_active_substance",
96
+ keptId: longerMatches[0].moleculeChemblId,
97
+ });
98
+ }
99
+ else if (longerMatches.length > 1) {
100
+ dropIds.add(shortEntry.moleculeChemblId);
101
+ dropped.push({
102
+ chemblId: shortEntry.moleculeChemblId,
103
+ reason: "ambiguous_name_synonym",
104
+ keptId: null,
105
+ });
106
+ }
107
+ }
108
+ }
109
+ const finalKept = kept.filter((m) => !dropIds.has(m.moleculeChemblId));
110
+ return { kept: finalKept, dropped };
111
+ }
112
+ // ── PubChem-backed molecule_type backfill ─────────────────────────────────────
113
+ function looksUnknown(value) {
114
+ if (!value)
115
+ return true;
116
+ const lowered = value.trim().toLowerCase();
117
+ return lowered === "" || lowered === "unknown";
118
+ }
119
+ /**
120
+ * For each modulator whose ChEMBL `moleculeType` is empty or "Unknown",
121
+ * fetch the molecule's standard InChI key from ChEMBL, look it up in
122
+ * PubChem, and apply the heuristic classifier (MW + amide-bond count).
123
+ * Returns a new array of modulators with `moleculeType` replaced when a
124
+ * confident classification emerges; otherwise the original ChEMBL value is
125
+ * preserved. Network failures are isolated per modulator.
126
+ */
127
+ export async function resolveModulatorMoleculeType(modulators) {
128
+ const candidates = modulators.filter((m) => looksUnknown(m.moleculeType));
129
+ if (candidates.length === 0)
130
+ return modulators;
131
+ const refined = new Map();
132
+ await Promise.all(candidates.map(async (m) => {
133
+ try {
134
+ const inchiKey = await withHost("chembl", () => getMoleculeInChIKey(m.moleculeChemblId));
135
+ if (!inchiKey)
136
+ return;
137
+ const props = await withHost("pubchem", () => getCompoundPropertiesByInChIKey(inchiKey));
138
+ if (!props)
139
+ return;
140
+ const classified = classifyMoleculeType(props);
141
+ if (classified !== "Unknown")
142
+ refined.set(m.moleculeChemblId, classified);
143
+ }
144
+ catch {
145
+ // Per-modulator failures must not blank out the others — keep the
146
+ // original ChEMBL annotation.
147
+ }
148
+ }));
149
+ if (refined.size === 0)
150
+ return modulators;
151
+ return modulators.map((m) => {
152
+ const next = refined.get(m.moleculeChemblId);
153
+ if (!next)
154
+ return m;
155
+ return { ...m, moleculeType: next };
156
+ });
157
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Deterministic structural conflict detector.
3
+ *
4
+ * Each rule is a pure function over the dossier body. A row is emitted
5
+ * when the body internally contradicts itself in a way that should be
6
+ * impossible post-pipeline-fix. The post-fix pipeline should produce an
7
+ * empty array for any well-formed body; the rules exist to catch
8
+ * regressions and to surface upstream pipeline bugs.
9
+ */
10
+ export type StructuralEvidenceConflict = {
11
+ evidence_item_id: string;
12
+ predicate: string;
13
+ contradicting_predicates: string[];
14
+ surfaced_in_section: string;
15
+ evidence: never[];
16
+ };
17
+ export declare function detectStructuralEvidenceConflicts(bodyInput: unknown): StructuralEvidenceConflict[];
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Deterministic structural conflict detector.
3
+ *
4
+ * Each rule is a pure function over the dossier body. A row is emitted
5
+ * when the body internally contradicts itself in a way that should be
6
+ * impossible post-pipeline-fix. The post-fix pipeline should produce an
7
+ * empty array for any well-formed body; the rules exist to catch
8
+ * regressions and to surface upstream pipeline bugs.
9
+ */
10
+ import { HIGH_EXPRESSION_TPM_THRESHOLD } from "./expression-constants.js";
11
+ function checkFaersCoverage(body) {
12
+ const faers = body?.safety_profile?.faers;
13
+ const cp = body?.safety_profile?.class_precedent;
14
+ if (faers?.coverage !== "queried_no_data")
15
+ return null;
16
+ if (cp?.coverage !== "available")
17
+ return null;
18
+ let total = 0;
19
+ for (const o of cp.data?.per_organ ?? []) {
20
+ for (const ae of o.top_aes ?? [])
21
+ total += ae.report_count ?? 0;
22
+ }
23
+ if (total === 0)
24
+ return null;
25
+ return {
26
+ evidence_item_id: "structural:faers_coverage",
27
+ predicate: "safety_profile.faers.coverage=queried_no_data",
28
+ contradicting_predicates: [`safety_profile.class_precedent has ${total} FAERS-derived reports across per_organ.top_aes`],
29
+ surfaced_in_section: "safety_profile.faers",
30
+ evidence: [],
31
+ };
32
+ }
33
+ function checkFatalSignal(body) {
34
+ const signal = body?.derived?.risk_summary?.any_fatal_signal;
35
+ if (signal !== "unknown")
36
+ return null;
37
+ const bullets = body?.liability_summary?.liability_bullets ?? [];
38
+ const fatal = bullets.find((b) => b?.category === "fatal_post_market");
39
+ if (!fatal)
40
+ return null;
41
+ return {
42
+ evidence_item_id: "structural:fatal_signal",
43
+ predicate: "derived.risk_summary.any_fatal_signal=unknown",
44
+ contradicting_predicates: ["liability_summary.liability_bullets contains a fatal_post_market entry"],
45
+ surfaced_in_section: "derived.risk_summary",
46
+ evidence: [],
47
+ };
48
+ }
49
+ function checkTrialCount(body) {
50
+ const trials = body?.clinical_development?.trials;
51
+ const outcomes = body?.clinical_development?.outcomes;
52
+ if (trials?.coverage !== "queried_no_data")
53
+ return null;
54
+ const outcomeRows = outcomes?.coverage === "available" ? (outcomes.data?.rows ?? []) : [];
55
+ if (outcomeRows.length === 0)
56
+ return null;
57
+ return {
58
+ evidence_item_id: "structural:trial_count",
59
+ predicate: "clinical_development.trials.coverage=queried_no_data",
60
+ contradicting_predicates: [`clinical_development.outcomes.data.rows has ${outcomeRows.length} row(s)`],
61
+ surfaced_in_section: "clinical_development.outcomes",
62
+ evidence: [],
63
+ };
64
+ }
65
+ function checkHighExpressionCount(body) {
66
+ const reported = body?.derived?.liability_summary?.expression_breadth?.high_expression_tissue_count;
67
+ if (typeof reported !== "number")
68
+ return null;
69
+ const set = new Set();
70
+ const consensusRows = body?.reference_biology?.normal_tissue_expression?.data?.rows ?? [];
71
+ for (const r of consensusRows) {
72
+ if ((r.value ?? 0) >= HIGH_EXPRESSION_TPM_THRESHOLD && r.tissue) {
73
+ set.add(`${r.tissue}::human`);
74
+ }
75
+ }
76
+ const cells = body?.reference_biology?.preclinical?.expression_heatmap?.data?.cells ?? [];
77
+ for (const c of cells) {
78
+ if (c.rank === "high" && c.tissue)
79
+ set.add(`${c.tissue}::${c.species ?? "unknown"}`);
80
+ }
81
+ if (set.size === reported)
82
+ return null;
83
+ return {
84
+ evidence_item_id: "structural:high_expression_count",
85
+ predicate: `derived.liability_summary.expression_breadth.high_expression_tissue_count=${reported}`,
86
+ contradicting_predicates: [`body-recomputed count is ${set.size}`],
87
+ surfaced_in_section: "derived.liability_summary.expression_breadth",
88
+ evidence: [],
89
+ };
90
+ }
91
+ export function detectStructuralEvidenceConflicts(bodyInput) {
92
+ const body = bodyInput;
93
+ const out = [];
94
+ for (const fn of [checkFaersCoverage, checkFatalSignal, checkTrialCount, checkHighExpressionCount]) {
95
+ const row = fn(body);
96
+ if (row)
97
+ out.push(row);
98
+ }
99
+ return out;
100
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * TPM threshold for "high expression" classification, aligned with the
3
+ * Human Protein Atlas tissue-expression categorisation. Tissues with
4
+ * TPM >= this threshold count toward
5
+ * liability_summary.expression_breadth.high_expression_tissue_count
6
+ * and inform organ-rollup signal scoring.
7
+ */
8
+ export declare const HIGH_EXPRESSION_TPM_THRESHOLD = 50;
9
+ /**
10
+ * Off-tissue floor for CNS regions. Brain subregions (hypothalamus excepted)
11
+ * carry biologically meaningful CALCR/peptide-GPCR expression at single-digit
12
+ * nTPM; the default 100 floor produced organ_claim_without_probe_pass audit
13
+ * failures for CNS bullets that the recommendation makes.
14
+ */
15
+ export declare const CNS_REGION_TPM_FLOOR = 5;
16
+ /**
17
+ * Off-tissue floor for musculoskeletal tissues. Skeletal muscle and bone
18
+ * surfaces routinely show 20-80 nTPM for GPCRs whose ligands affect
19
+ * mineral and muscle metabolism.
20
+ */
21
+ export declare const MUSCULOSKELETAL_TPM_FLOOR = 20;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * TPM threshold for "high expression" classification, aligned with the
3
+ * Human Protein Atlas tissue-expression categorisation. Tissues with
4
+ * TPM >= this threshold count toward
5
+ * liability_summary.expression_breadth.high_expression_tissue_count
6
+ * and inform organ-rollup signal scoring.
7
+ */
8
+ export const HIGH_EXPRESSION_TPM_THRESHOLD = 50;
9
+ /**
10
+ * Off-tissue floor for CNS regions. Brain subregions (hypothalamus excepted)
11
+ * carry biologically meaningful CALCR/peptide-GPCR expression at single-digit
12
+ * nTPM; the default 100 floor produced organ_claim_without_probe_pass audit
13
+ * failures for CNS bullets that the recommendation makes.
14
+ */
15
+ export const CNS_REGION_TPM_FLOOR = 5;
16
+ /**
17
+ * Off-tissue floor for musculoskeletal tissues. Skeletal muscle and bone
18
+ * surfaces routinely show 20-80 nTPM for GPCRs whose ligands affect
19
+ * mineral and muscle metabolism.
20
+ */
21
+ export const MUSCULOSKELETAL_TPM_FLOOR = 20;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Build the obligate-cofactor supplement rows shown in
3
+ * OffTargetPanelV4.excluded_rows from the IUPHAR family-complexes collector
4
+ * bundle. Replaces the hand-curated calcitonin-only supplement that
5
+ * previously lived next to it.
6
+ *
7
+ * pchembl is set to 0 because IUPHAR exposes complex structure, not
8
+ * ligand affinity for the complex; the row is marked selectivity_unknown
9
+ * with an explicit reason so downstream readers see the obligate-cofactor
10
+ * surface rather than a developable potency claim. The per-row LLM
11
+ * clinical_consequence annotator populates `clinical_consequence` once
12
+ * the per-row annotation step runs.
13
+ */
14
+ import type { ExcludedOffTargetRowV4Schema } from "@inflexa-ai/harness/contracts/target-dossier.js";
15
+ import type { z } from "zod";
16
+ import type { FamilyComplexesBundle } from "../schemas.js";
17
+ type ExcludedOffTargetRowV4 = z.infer<typeof ExcludedOffTargetRowV4Schema>;
18
+ export declare function buildFamilyComplexSupplement(bundle: FamilyComplexesBundle): (Omit<ExcludedOffTargetRowV4, "evidence"> & {
19
+ evidence: [];
20
+ })[];
21
+ export {};
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Build the obligate-cofactor supplement rows shown in
3
+ * OffTargetPanelV4.excluded_rows from the IUPHAR family-complexes collector
4
+ * bundle. Replaces the hand-curated calcitonin-only supplement that
5
+ * previously lived next to it.
6
+ *
7
+ * pchembl is set to 0 because IUPHAR exposes complex structure, not
8
+ * ligand affinity for the complex; the row is marked selectivity_unknown
9
+ * with an explicit reason so downstream readers see the obligate-cofactor
10
+ * surface rather than a developable potency claim. The per-row LLM
11
+ * clinical_consequence annotator populates `clinical_consequence` once
12
+ * the per-row annotation step runs.
13
+ */
14
+ export function buildFamilyComplexSupplement(bundle) {
15
+ return bundle.complexes.map((c) => {
16
+ const accDesc = c.accessoryNames.length > 0 ? c.accessoryNames.join("+") : "an accessory protein";
17
+ return {
18
+ off_target_id: null,
19
+ off_target_name: c.complexName,
20
+ target_class: "GPCR receptor-accessory complex",
21
+ pchembl: 0,
22
+ is_safety_panel_target: false,
23
+ organ_system: null,
24
+ clinical_consequence: null,
25
+ selectivity: {
26
+ selectivity_unknown: true,
27
+ reason: "obligate cofactor (same primary protein, different accessory)",
28
+ },
29
+ selectivity_window_below_threshold: false,
30
+ relationship: "obligate_cofactor",
31
+ reason: `${c.complexName} is ${bundle.primaryTargetGene} heterodimerised with ${accDesc}; ` +
32
+ `selectivity is not pharmacologically attainable. Surfaced as an intrinsic-pharmacology ` +
33
+ `liability rather than a developable off-target.`,
34
+ evidence: [],
35
+ };
36
+ });
37
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Detect receptor-accessory heterodimer entries that share the assessment
3
+ * target's gene product. These are NOT off-targets in the pharmacological
4
+ * sense: the primary protein is the same, only the obligate accessory
5
+ * cofactor differs. Selectivity windows between such partner complexes are
6
+ * not pharmacologically attainable and should not be reported as off-target
7
+ * liabilities.
8
+ *
9
+ * The accessory list is supplied by the IUPHAR family-complexes collector
10
+ * at runtime — there is no hardcoded RAMP/MRAP/RGS pattern. For a CALCR
11
+ * assessment the collector returns ["RAMP1","RAMP2","RAMP3"], so the
12
+ * regex matches "CALCR/RAMP1", "CALCR/RAMP2", "CALCR/RAMP3" only.
13
+ */
14
+ export interface HeterodimerFilterInput {
15
+ assessmentGeneSymbol: string;
16
+ accessoryProteinNames: string[];
17
+ }
18
+ /**
19
+ * Build a predicate that returns true when an off-target name describes a
20
+ * heterodimer of the assessment target's primary protein with one of the
21
+ * supplied accessory gene symbols. Returns a constant-false predicate when
22
+ * the inputs cannot produce a meaningful match (missing gene symbol or
23
+ * empty accessory list).
24
+ *
25
+ * Matched substrings:
26
+ * "<primary>/<accessory>" (e.g., "CALCR/RAMP3")
27
+ * "<primary> + <accessory>"
28
+ * "<primary>-<accessory>" (some sources use a hyphen)
29
+ */
30
+ export declare function makeHeterodimerOfAssessmentFilter(input: HeterodimerFilterInput): (offTargetName: string) => boolean;
31
+ /**
32
+ * One-shot helper for callers that already have an accessory list in hand.
33
+ * Equivalent to `makeHeterodimerOfAssessmentFilter(input)(offTargetName)`.
34
+ */
35
+ export declare function isHeterodimerOfAssessment(input: {
36
+ assessmentGeneSymbol: string;
37
+ accessoryProteinNames: string[];
38
+ offTargetName: string;
39
+ }): boolean;
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Detect receptor-accessory heterodimer entries that share the assessment
3
+ * target's gene product. These are NOT off-targets in the pharmacological
4
+ * sense: the primary protein is the same, only the obligate accessory
5
+ * cofactor differs. Selectivity windows between such partner complexes are
6
+ * not pharmacologically attainable and should not be reported as off-target
7
+ * liabilities.
8
+ *
9
+ * The accessory list is supplied by the IUPHAR family-complexes collector
10
+ * at runtime — there is no hardcoded RAMP/MRAP/RGS pattern. For a CALCR
11
+ * assessment the collector returns ["RAMP1","RAMP2","RAMP3"], so the
12
+ * regex matches "CALCR/RAMP1", "CALCR/RAMP2", "CALCR/RAMP3" only.
13
+ */
14
+ const ACC_ESCAPE_RE = /[.*+?^${}()|[\]\\]/g;
15
+ function escapeForRegex(token) {
16
+ return token.replace(ACC_ESCAPE_RE, "\\$&");
17
+ }
18
+ /**
19
+ * Build a predicate that returns true when an off-target name describes a
20
+ * heterodimer of the assessment target's primary protein with one of the
21
+ * supplied accessory gene symbols. Returns a constant-false predicate when
22
+ * the inputs cannot produce a meaningful match (missing gene symbol or
23
+ * empty accessory list).
24
+ *
25
+ * Matched substrings:
26
+ * "<primary>/<accessory>" (e.g., "CALCR/RAMP3")
27
+ * "<primary> + <accessory>"
28
+ * "<primary>-<accessory>" (some sources use a hyphen)
29
+ */
30
+ export function makeHeterodimerOfAssessmentFilter(input) {
31
+ const target = input.assessmentGeneSymbol.trim().toUpperCase();
32
+ const accessories = input.accessoryProteinNames.map((n) => n.trim()).filter((n) => n.length > 0);
33
+ if (!target || accessories.length === 0) {
34
+ return () => false;
35
+ }
36
+ const alternation = accessories.map(escapeForRegex).join("|");
37
+ const re = new RegExp(`\\b([A-Z][A-Z0-9]{1,9})\\s*[\\/+\\-]\\s*(${alternation})\\b`, "i");
38
+ return (offTargetName) => {
39
+ const m = re.exec(offTargetName);
40
+ if (!m)
41
+ return false;
42
+ return m[1].toUpperCase() === target;
43
+ };
44
+ }
45
+ /**
46
+ * One-shot helper for callers that already have an accessory list in hand.
47
+ * Equivalent to `makeHeterodimerOfAssessmentFilter(input)(offTargetName)`.
48
+ */
49
+ export function isHeterodimerOfAssessment(input) {
50
+ return makeHeterodimerOfAssessmentFilter({
51
+ assessmentGeneSymbol: input.assessmentGeneSymbol,
52
+ accessoryProteinNames: input.accessoryProteinNames,
53
+ })(input.offTargetName);
54
+ }
@@ -0,0 +1,4 @@
1
+ export declare function isIntendedCoTarget(modulatorChemblId: string, offTargetChemblId: string): {
2
+ intended: boolean;
3
+ reason?: string;
4
+ };
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Hand-curated catalogue of multi-target peptide agonists. Conservative
3
+ * by design — only well-documented dual/triple agonists where the
4
+ * additional receptor IS the marketed mechanism. Ambiguous cases stay
5
+ * in the off-target panel.
6
+ *
7
+ * Source: ChEMBL triage_rationale strings + class-precedent literature.
8
+ * Extend as new dual/triple agonists appear in chembl-modulators output.
9
+ */
10
+ const INTENDED_PAIRS = [
11
+ { modulator: "CHEMBL4297839", coTarget: "CHEMBL4383", reason: "tirzepatide is a dual GLP-1R/GIPR agonist" },
12
+ { modulator: "CHEMBL4297630", coTarget: "CHEMBL1985", reason: "cotadutide is a dual GLP-1R/GCGR agonist" },
13
+ { modulator: "CHEMBL5095485", coTarget: "CHEMBL4383", reason: "retatrutide is a triple GLP-1R/GIPR/GCGR agonist" },
14
+ { modulator: "CHEMBL5095485", coTarget: "CHEMBL1985", reason: "retatrutide is a triple GLP-1R/GIPR/GCGR agonist" },
15
+ { modulator: "CHEMBL5314776", coTarget: "CHEMBL1985", reason: "survodutide is a dual GLP-1R/GCGR agonist" },
16
+ { modulator: "CHEMBL4297576", coTarget: "CHEMBL1985", reason: "efinopegdutide is a dual GLP-1R/GCGR agonist" },
17
+ { modulator: "CHEMBL3990012", coTarget: "CHEMBL1985", reason: "pegapamodutide is a dual GLP-1R/GCGR agonist" },
18
+ ];
19
+ export function isIntendedCoTarget(modulatorChemblId, offTargetChemblId) {
20
+ const hit = INTENDED_PAIRS.find((p) => p.modulator === modulatorChemblId && p.coTarget === offTargetChemblId);
21
+ if (hit)
22
+ return { intended: true, reason: hit.reason };
23
+ return { intended: false };
24
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * LLM step wrapper for the target-assessment DBOS workflow body.
3
+ *
4
+ * Each Phase-2 decision and Phase-5 synthesis LLM call goes through
5
+ * `runLlmStep` — it wraps `DBOS.runStep({name})` around the chat provider
6
+ * call and classifies caught errors:
7
+ *
8
+ * - `isBudgetExceeded(err) === true` (billing-gateway 402): self-send a
9
+ * `BUDGET_EXCEEDED_TOPIC` marker addressed to this workflow's own
10
+ * id, then return a sentinel marker. The wrapper does NOT call
11
+ * `DBOS.cancelWorkflow` itself — the workflow body's terminal block
12
+ * reads the marker, writes `status = "suspended_insufficient_funds"`
13
+ * via `DBOS.runStep({name: "ta-terminal-suspended"})`, then issues
14
+ * `DBOS.cancelWorkflow` + a trailing `runStep` to materialise the
15
+ * CANCELLED terminal state. Deferring the cancel keeps the terminal
16
+ * handler's DB writes inside DBOS step boundaries (replay-cached).
17
+ * - anything else: rethrow so the caller wraps the failure as
18
+ * `coverage: "queried_no_data"` with `error.kind: "synthesis-unavailable"`
19
+ * (or `"queried_no_data"` for decisions).
20
+ *
21
+ * The step name is attempt-numbered by the caller — e.g.
22
+ * `"ta-synth:liability-bullets:0"`. On 402 + top-up + `DBOS.resumeWorkflow`
23
+ * the caller bumps the attempt counter so the resumed call lands a fresh
24
+ * DBOS cache slot rather than replaying the cancelled prior attempt.
25
+ */
26
+ import type { AgentChat, ChatRequest, ChatResponse } from "../../../providers/types.js";
27
+ import type { AgentSession } from "../../../auth/types.js";
28
+ /**
29
+ * DBOS message topic the LLM step uses to mark the workflow as
30
+ * self-cancelled on a billing-gateway 402. The terminal handler drains the topic
31
+ * to dispatch to `markAssessmentSuspended` rather than the generic
32
+ * operator-cancel handler.
33
+ */
34
+ export declare const BUDGET_EXCEEDED_TOPIC = "ta-budget-exceeded";
35
+ export interface BudgetExceededMarker {
36
+ readonly stepName: string;
37
+ readonly agentId: string;
38
+ readonly error: string;
39
+ }
40
+ export interface RunLlmStepOptions {
41
+ /** Durable-step name — already attempt-numbered by the caller. */
42
+ readonly stepName: string;
43
+ /** Agent id stamped in the marker for telemetry. */
44
+ readonly agentId: string;
45
+ readonly provider: AgentChat;
46
+ readonly req: ChatRequest;
47
+ readonly session: AgentSession;
48
+ readonly signal?: AbortSignal;
49
+ }
50
+ /**
51
+ * Sentinel returned (NOT thrown) when the wrapper has self-cancelled the
52
+ * workflow. The next `DBOS.runStep` after this point raises
53
+ * `DBOSWorkflowCancelledError`, so call sites only see this value on the
54
+ * synchronous return path before the cancel materialises. Callers MUST NOT
55
+ * wrap this as `coverage: "queried_no_data"` — the workflow is unwinding.
56
+ */
57
+ export declare const BUDGET_EXCEEDED_SENTINEL: unique symbol;
58
+ export type RunLlmStepResult = {
59
+ readonly kind: "ok";
60
+ readonly response: ChatResponse;
61
+ } | {
62
+ readonly kind: "budget-exceeded";
63
+ readonly sentinel: typeof BUDGET_EXCEEDED_SENTINEL;
64
+ };
65
+ /**
66
+ * Run one LLM call inside a `DBOS.runStep` boundary. On a billing-gateway 402 the
67
+ * workflow self-cancels and the caller receives a sentinel result; on any
68
+ * other throw the original error rethrows.
69
+ */
70
+ export declare function runLlmStep(opts: RunLlmStepOptions): Promise<RunLlmStepResult>;
71
+ /**
72
+ * Drain the budget-exceeded topic for this workflow. Called from the
73
+ * terminal handler (after the body has unwound) to decide whether the
74
+ * workflow cancelled because of a 402 or because of an operator-initiated
75
+ * cancel. Returns the first marker (or `null` if none queued).
76
+ */
77
+ export declare function readBudgetExceededMarker(): Promise<BudgetExceededMarker | null>;