@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,35 @@
1
+ export type FdaCenter = "CDER" | "CBER";
2
+ export interface FdaDocStub {
3
+ doc_id: string;
4
+ doc_title: string;
5
+ doc_url: string;
6
+ center: FdaCenter;
7
+ metadata?: {
8
+ year?: string;
9
+ category?: string;
10
+ };
11
+ }
12
+ export interface FdaDoc {
13
+ doc_id: string;
14
+ doc_title: string;
15
+ doc_url: string;
16
+ text: string;
17
+ metadata: {
18
+ center: FdaCenter;
19
+ year?: string;
20
+ category?: string;
21
+ };
22
+ }
23
+ /**
24
+ * Return the curated FDA guidance stubs for `center`. The catalog is
25
+ * static; this function exists for parity with `fetchIchListing()` and as
26
+ * the seam where a future contributor can swap in dynamic discovery
27
+ * (e.g., headless-browser scraping or a vetted third-party index).
28
+ */
29
+ export declare function fetchFdaGuidanceListing(center: FdaCenter): Promise<FdaDocStub[]>;
30
+ /**
31
+ * Download a single FDA guidance document and extract its text. Handles
32
+ * both HTML and PDF formats (FDA serves a mix). Returns normalized
33
+ * whitespace-collapsed text suitable for chunking.
34
+ */
35
+ export declare function fetchAndExtractFdaDoc(stub: FdaDocStub): Promise<FdaDoc>;
@@ -0,0 +1,107 @@
1
+ import { load } from "cheerio";
2
+ import { PDFParse } from "pdf-parse";
3
+ /**
4
+ * Curated catalog of FDA guidance documents to index into the corpus.
5
+ *
6
+ * The FDA listing page (`/regulatory-information/search-fda-guidance-documents`)
7
+ * is a Drupal datatable rendered client-side from
8
+ * `/datatables-json/search-for-guidance.json`, and Akamai's edge returns
9
+ * 503 to non-browser fetches. Rather than scraping behind a headless
10
+ * browser, we maintain a hand-picked list of canonical guidances most
11
+ * relevant to the safety, translational, and clinical-evaluation work
12
+ * Cortex agents do.
13
+ *
14
+ * Each entry is keyed by the FDA media ID at `https://www.fda.gov/media/{id}/download`.
15
+ * Media IDs are stable: once issued they don't get renumbered when the
16
+ * underlying PDF is revised. To add an entry, open the guidance's
17
+ * `/regulatory-information/search-fda-guidance-documents/{slug}` page and
18
+ * grab the `Download` link's `/media/{id}/download` href.
19
+ */
20
+ const FDA_GUIDANCES = [
21
+ {
22
+ center: "CDER",
23
+ doc_id: "fda-cder-bioanalytical-method-validation",
24
+ doc_title: "Bioanalytical Method Validation Guidance for Industry",
25
+ media_id: "70858",
26
+ year: "2018",
27
+ },
28
+ {
29
+ center: "CDER",
30
+ doc_id: "fda-cder-safety-testing-of-drug-metabolites",
31
+ doc_title: "Safety Testing of Drug Metabolites",
32
+ media_id: "72279",
33
+ year: "2020",
34
+ },
35
+ {
36
+ center: "CDER",
37
+ doc_id: "fda-cder-estimating-maximum-safe-starting-dose",
38
+ doc_title: "Estimating the Maximum Safe Starting Dose in Initial Clinical Trials for Therapeutics in Adult Healthy Volunteers",
39
+ media_id: "72309",
40
+ year: "2005",
41
+ },
42
+ {
43
+ center: "CDER",
44
+ doc_id: "fda-cder-drug-induced-liver-injury",
45
+ doc_title: "Drug-Induced Liver Injury: Premarketing Clinical Evaluation",
46
+ media_id: "116737",
47
+ year: "2009",
48
+ },
49
+ ];
50
+ /**
51
+ * Return the curated FDA guidance stubs for `center`. The catalog is
52
+ * static; this function exists for parity with `fetchIchListing()` and as
53
+ * the seam where a future contributor can swap in dynamic discovery
54
+ * (e.g., headless-browser scraping or a vetted third-party index).
55
+ */
56
+ export async function fetchFdaGuidanceListing(center) {
57
+ return FDA_GUIDANCES.filter((g) => g.center === center).map((g) => ({
58
+ doc_id: g.doc_id,
59
+ doc_title: g.doc_title,
60
+ doc_url: `https://www.fda.gov/media/${g.media_id}/download`,
61
+ center: g.center,
62
+ metadata: { year: g.year },
63
+ }));
64
+ }
65
+ /**
66
+ * Download a single FDA guidance document and extract its text. Handles
67
+ * both HTML and PDF formats (FDA serves a mix). Returns normalized
68
+ * whitespace-collapsed text suitable for chunking.
69
+ */
70
+ export async function fetchAndExtractFdaDoc(stub) {
71
+ const res = await fetch(stub.doc_url);
72
+ if (!res.ok) {
73
+ throw new Error(`fetch ${stub.doc_url}: ${res.status} ${res.statusText}`);
74
+ }
75
+ const buf = Buffer.from(await res.arrayBuffer());
76
+ const ct = (res.headers.get("content-type") ?? "").toLowerCase();
77
+ let text;
78
+ if (ct.includes("pdf") || stub.doc_url.toLowerCase().endsWith(".pdf")) {
79
+ const parser = new PDFParse({ data: buf });
80
+ const result = await parser.getText();
81
+ await parser.destroy();
82
+ text = result.text;
83
+ }
84
+ else {
85
+ const $ = load(buf.toString("utf-8"));
86
+ // Prefer <main> when present; fall back to body.
87
+ text = ($("main").length > 0 ? $("main") : $("body")).text();
88
+ }
89
+ return {
90
+ doc_id: stub.doc_id,
91
+ doc_title: stub.doc_title,
92
+ doc_url: stub.doc_url,
93
+ text: normalizeWhitespace(text),
94
+ metadata: {
95
+ center: stub.center,
96
+ year: stub.metadata?.year,
97
+ category: stub.metadata?.category,
98
+ },
99
+ };
100
+ }
101
+ function normalizeWhitespace(s) {
102
+ return s
103
+ .replace(/[ \t]+/g, " ")
104
+ .replace(/\r/g, "")
105
+ .replace(/\n{3,}/g, "\n\n")
106
+ .trim();
107
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Fetcher for ICH (International Council for Harmonisation) guidelines.
3
+ * Returns a curated catalog of canonical guidelines and downloads each PDF.
4
+ *
5
+ * Series:
6
+ * S — Safety (nonclinical safety pharmacology, toxicology)
7
+ * E — Efficacy (clinical study design, statistical principles)
8
+ * M — Multidisciplinary
9
+ * Q — Quality (CMC)
10
+ *
11
+ * Codes look like S7A, E14, M3(R2), Q1A. The doc_id we emit is
12
+ * `ich-<code>` with non-word chars sanitized.
13
+ */
14
+ export type IchSeries = "S" | "E" | "M" | "Q";
15
+ export interface IchStub {
16
+ doc_id: string;
17
+ doc_title: string;
18
+ doc_url: string;
19
+ code: string;
20
+ series: IchSeries;
21
+ metadata?: {
22
+ year?: string;
23
+ };
24
+ }
25
+ export interface IchDoc {
26
+ doc_id: string;
27
+ doc_title: string;
28
+ doc_url: string;
29
+ text: string;
30
+ metadata: {
31
+ code: string;
32
+ series: IchSeries;
33
+ year?: string;
34
+ };
35
+ }
36
+ /**
37
+ * Return the curated ICH guideline stubs. The catalog is static; this
38
+ * function exists for parity with `fetchFdaGuidanceListing()` and as the
39
+ * seam where a future contributor can swap in dynamic discovery.
40
+ */
41
+ export declare function fetchIchListing(): Promise<IchStub[]>;
42
+ /**
43
+ * Download a single ICH guideline PDF and extract its text. Returns
44
+ * normalized whitespace-collapsed text suitable for chunking.
45
+ */
46
+ export declare function fetchAndExtractIchDoc(stub: IchStub): Promise<IchDoc>;
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Fetcher for ICH (International Council for Harmonisation) guidelines.
3
+ * Returns a curated catalog of canonical guidelines and downloads each PDF.
4
+ *
5
+ * Series:
6
+ * S — Safety (nonclinical safety pharmacology, toxicology)
7
+ * E — Efficacy (clinical study design, statistical principles)
8
+ * M — Multidisciplinary
9
+ * Q — Quality (CMC)
10
+ *
11
+ * Codes look like S7A, E14, M3(R2), Q1A. The doc_id we emit is
12
+ * `ich-<code>` with non-word chars sanitized.
13
+ */
14
+ import { PDFParse } from "pdf-parse";
15
+ /**
16
+ * Curated catalog of ICH guidelines to index into the corpus.
17
+ *
18
+ * The ICH guidelines listing at ich.org is an Angular SPA (the server
19
+ * returns 687 bytes of `<app-root>` shell), and the admin REST API
20
+ * (`admin.ich.org/api/v1/nodes`) does not expose paragraph entities, so
21
+ * the per-section guideline lists never reach a `fetch + cheerio` consumer.
22
+ * Rather than scraping behind a headless browser, we maintain a hand-picked
23
+ * list of canonical guidelines covering the safety, efficacy, and quality
24
+ * ground that Cortex agents most often need to cite.
25
+ *
26
+ * URLs target the stable PDFs at `database.ich.org/sites/default/files/...`.
27
+ * Filenames are inconsistent across guidelines (some include a Step-4
28
+ * date, some are bare); add new entries by visiting the corresponding
29
+ * `/page/<series>-guidelines` page in a browser, copying the PDF link,
30
+ * and verifying it returns `application/pdf`.
31
+ */
32
+ const ICH_GUIDELINES = [
33
+ // Safety
34
+ {
35
+ code: "S7A",
36
+ series: "S",
37
+ doc_title: "Safety Pharmacology Studies for Human Pharmaceuticals",
38
+ url: "https://database.ich.org/sites/default/files/S7A_Guideline.pdf",
39
+ },
40
+ {
41
+ code: "S7B",
42
+ series: "S",
43
+ doc_title: "Nonclinical Evaluation of the Potential for Delayed Ventricular Repolarization (QT Interval Prolongation) by Human Pharmaceuticals",
44
+ url: "https://database.ich.org/sites/default/files/S7B_Guideline.pdf",
45
+ },
46
+ {
47
+ code: "S9",
48
+ series: "S",
49
+ doc_title: "Nonclinical Evaluation for Anticancer Pharmaceuticals",
50
+ url: "https://database.ich.org/sites/default/files/S9_Guideline.pdf",
51
+ },
52
+ // Multidisciplinary
53
+ {
54
+ code: "M3(R2)",
55
+ series: "M",
56
+ doc_title: "Nonclinical Safety Studies for the Conduct of Human Clinical Trials and Marketing Authorization for Pharmaceuticals",
57
+ url: "https://database.ich.org/sites/default/files/M3_R2__Guideline.pdf",
58
+ },
59
+ // Efficacy
60
+ {
61
+ code: "E14",
62
+ series: "E",
63
+ doc_title: "Clinical Evaluation of QT/QTc Interval Prolongation and Proarrhythmic Potential for Non-Antiarrhythmic Drugs",
64
+ url: "https://database.ich.org/sites/default/files/E14_Guideline.pdf",
65
+ },
66
+ {
67
+ code: "E6(R3)",
68
+ series: "E",
69
+ doc_title: "Good Clinical Practice (GCP)",
70
+ url: "https://database.ich.org/sites/default/files/ICH_E6%28R3%29_Step4_FinalGuideline_2025_0106.pdf",
71
+ },
72
+ {
73
+ code: "E8(R1)",
74
+ series: "E",
75
+ doc_title: "General Considerations for Clinical Studies",
76
+ url: "https://database.ich.org/sites/default/files/ICH_E8-R1_Guideline_Step4_2021_1006.pdf",
77
+ },
78
+ {
79
+ code: "E9(R1)",
80
+ series: "E",
81
+ doc_title: "Statistical Principles for Clinical Trials (Addendum: Estimands and Sensitivity Analysis)",
82
+ url: "https://database.ich.org/sites/default/files/E9-R1_Step4_Guideline_2019_1203.pdf",
83
+ },
84
+ {
85
+ code: "E11(R1)",
86
+ series: "E",
87
+ doc_title: "Clinical Investigation of Medicinal Products in the Pediatric Population (Addendum)",
88
+ url: "https://database.ich.org/sites/default/files/E11_R1_Addendum.pdf",
89
+ },
90
+ // Quality
91
+ {
92
+ code: "Q1A(R2)",
93
+ series: "Q",
94
+ doc_title: "Stability Testing of New Drug Substances and Products",
95
+ url: "https://database.ich.org/sites/default/files/Q1A%28R2%29%20Guideline.pdf",
96
+ },
97
+ {
98
+ code: "Q3D(R2)",
99
+ series: "Q",
100
+ doc_title: "Guideline for Elemental Impurities",
101
+ url: "https://database.ich.org/sites/default/files/Q3D-R2_Guideline_Step4_2022_0308.pdf",
102
+ },
103
+ {
104
+ code: "Q8(R2)",
105
+ series: "Q",
106
+ doc_title: "Pharmaceutical Development",
107
+ url: "https://database.ich.org/sites/default/files/Q8%28R2%29%20Guideline.pdf",
108
+ },
109
+ {
110
+ code: "Q9",
111
+ series: "Q",
112
+ doc_title: "Quality Risk Management",
113
+ url: "https://database.ich.org/sites/default/files/Q9%20Guideline.pdf",
114
+ },
115
+ {
116
+ code: "Q10",
117
+ series: "Q",
118
+ doc_title: "Pharmaceutical Quality System",
119
+ url: "https://database.ich.org/sites/default/files/Q10%20Guideline.pdf",
120
+ },
121
+ ];
122
+ /**
123
+ * Return the curated ICH guideline stubs. The catalog is static; this
124
+ * function exists for parity with `fetchFdaGuidanceListing()` and as the
125
+ * seam where a future contributor can swap in dynamic discovery.
126
+ */
127
+ export async function fetchIchListing() {
128
+ return ICH_GUIDELINES.map((g) => ({
129
+ doc_id: `ich-${slugify(g.code)}`,
130
+ doc_title: g.doc_title,
131
+ doc_url: g.url,
132
+ code: g.code,
133
+ series: g.series,
134
+ }));
135
+ }
136
+ /**
137
+ * Download a single ICH guideline PDF and extract its text. Returns
138
+ * normalized whitespace-collapsed text suitable for chunking.
139
+ */
140
+ export async function fetchAndExtractIchDoc(stub) {
141
+ const res = await fetch(stub.doc_url);
142
+ if (!res.ok) {
143
+ throw new Error(`fetch ${stub.doc_url}: ${res.status} ${res.statusText}`);
144
+ }
145
+ const buf = Buffer.from(await res.arrayBuffer());
146
+ const parser = new PDFParse({ data: buf });
147
+ const result = await parser.getText();
148
+ await parser.destroy();
149
+ return {
150
+ doc_id: stub.doc_id,
151
+ doc_title: stub.doc_title,
152
+ doc_url: stub.doc_url,
153
+ text: normalizeWhitespace(result.text),
154
+ metadata: {
155
+ code: stub.code,
156
+ series: stub.series,
157
+ year: stub.metadata?.year,
158
+ },
159
+ };
160
+ }
161
+ function normalizeWhitespace(s) {
162
+ return s
163
+ .replace(/[ \t]+/g, " ")
164
+ .replace(/\r/g, "")
165
+ .replace(/\n{3,}/g, "\n\n")
166
+ .trim();
167
+ }
168
+ function slugify(s) {
169
+ return s
170
+ .toLowerCase()
171
+ .replace(/[^a-z0-9]+/g, "-")
172
+ .replace(/^-|-$/g, "");
173
+ }
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Helpers for the FDA/ICH regulatory corpus stored in cortex_regulatory_chunks.
3
+ *
4
+ * Three responsibilities:
5
+ * 1. chunkText — split a normalized document into (~1000-token, 200-token-overlap)
6
+ * chunks, preserving section headings where the doc uses `## Heading` markers.
7
+ * 2. upsertChunks — replace-by-(source, doc_id) write of a document's chunks +
8
+ * embeddings + metadata.
9
+ * 3. searchByEmbedding — top-K cosine similarity over the corpus, with optional
10
+ * source / indication / modality filters.
11
+ *
12
+ * Embedding dim is 1536 (openai/text-embedding-3-small). The schema's vector
13
+ * column is fixed at vector(1536) — passing other-dim arrays will fail at
14
+ * insert time.
15
+ */
16
+ import { ResultAsync } from "neverthrow";
17
+ import type { Pool } from "pg";
18
+ import { type DbError } from "./db-result.js";
19
+ export interface ChunkOptions {
20
+ maxTokens?: number;
21
+ overlapTokens?: number;
22
+ }
23
+ export interface RawChunk {
24
+ section: string | null;
25
+ index: number;
26
+ text: string;
27
+ }
28
+ /**
29
+ * Split `text` into overlapping chunks bounded by `maxTokens` (word-count
30
+ * approximation), respecting `## Heading` section boundaries where present.
31
+ *
32
+ * When the document has `## Heading` markers the text is split at those
33
+ * boundaries first; each resulting section is then sliced into fixed-size
34
+ * windows with the requested overlap. Sections with no body content are
35
+ * silently skipped.
36
+ *
37
+ * When no `## Heading` markers are present the entire text is treated as a
38
+ * single anonymous section (section: null).
39
+ *
40
+ * The returned chunks have globally monotone `index` values so consumers
41
+ * can reassemble the document order without inspecting section names.
42
+ */
43
+ export declare function chunkText(text: string, opts?: ChunkOptions): RawChunk[];
44
+ export interface ChunkRow {
45
+ source: "FDA-CDER" | "FDA-CBER" | "ICH";
46
+ doc_id: string;
47
+ doc_title: string;
48
+ doc_url: string;
49
+ chunks: Array<RawChunk & {
50
+ embedding: number[];
51
+ }>;
52
+ metadata: Record<string, unknown>;
53
+ }
54
+ /**
55
+ * Replace-by-(source, doc_id): delete all existing chunks for the document
56
+ * then insert the new set in a single transaction.
57
+ *
58
+ * Embedding dimension is validated before the transaction opens — a mismatch
59
+ * is a programmer/data error, thrown verbatim (no DB touched, nothing to roll
60
+ * back), not a `DbError`.
61
+ */
62
+ export declare function upsertChunks(pool: Pool, row: ChunkRow): ResultAsync<void, DbError>;
63
+ export interface SearchFilters {
64
+ source?: "FDA-CDER" | "FDA-CBER" | "ICH";
65
+ topK?: number;
66
+ }
67
+ export interface SearchHit {
68
+ source: string;
69
+ doc_id: string;
70
+ doc_title: string;
71
+ doc_url: string;
72
+ section: string | null;
73
+ excerpt: string;
74
+ score: number;
75
+ }
76
+ /**
77
+ * Top-K cosine similarity search over cortex_regulatory_chunks.
78
+ *
79
+ * Uses pgvector's `<=>` (cosine distance) operator. Score is `1 - distance`
80
+ * so higher scores = more similar. The `source` filter narrows results to
81
+ * a single corpus subset (FDA-CDER, FDA-CBER, or ICH).
82
+ *
83
+ * Embedding dimension is validated before the query. Indication/modality
84
+ * filters are intentionally absent — the ingestion pipeline does not yet
85
+ * tag those keys on chunk metadata, and a filter that always returns zero
86
+ * rows would silently defeat consumer expectations.
87
+ */
88
+ export declare function searchByEmbedding(pool: Pool, embedding: number[], filters?: SearchFilters): ResultAsync<SearchHit[], DbError>;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Helpers for the FDA/ICH regulatory corpus stored in cortex_regulatory_chunks.
3
+ *
4
+ * Three responsibilities:
5
+ * 1. chunkText — split a normalized document into (~1000-token, 200-token-overlap)
6
+ * chunks, preserving section headings where the doc uses `## Heading` markers.
7
+ * 2. upsertChunks — replace-by-(source, doc_id) write of a document's chunks +
8
+ * embeddings + metadata.
9
+ * 3. searchByEmbedding — top-K cosine similarity over the corpus, with optional
10
+ * source / indication / modality filters.
11
+ *
12
+ * Embedding dim is 1536 (openai/text-embedding-3-small). The schema's vector
13
+ * column is fixed at vector(1536) — passing other-dim arrays will fail at
14
+ * insert time.
15
+ */
16
+ import { tryMutation, tryQuery, withTransaction } from "./db-result.js";
17
+ /**
18
+ * Split `text` into overlapping chunks bounded by `maxTokens` (word-count
19
+ * approximation), respecting `## Heading` section boundaries where present.
20
+ *
21
+ * When the document has `## Heading` markers the text is split at those
22
+ * boundaries first; each resulting section is then sliced into fixed-size
23
+ * windows with the requested overlap. Sections with no body content are
24
+ * silently skipped.
25
+ *
26
+ * When no `## Heading` markers are present the entire text is treated as a
27
+ * single anonymous section (section: null).
28
+ *
29
+ * The returned chunks have globally monotone `index` values so consumers
30
+ * can reassemble the document order without inspecting section names.
31
+ */
32
+ export function chunkText(text, opts = {}) {
33
+ const maxTokens = opts.maxTokens ?? 1000;
34
+ const overlapTokens = opts.overlapTokens ?? 200;
35
+ // Normalise so every `## Heading` is preceded by `\n`, then split.
36
+ // This ensures a heading at position 0 (no preceding newline) is caught
37
+ // the same way as headings mid-document.
38
+ const normalised = text.startsWith("##") ? `\n${text}` : text;
39
+ const parts = normalised.split(/\n##\s+/);
40
+ // parts[0] is always the lead-in text before the first heading (may be
41
+ // empty when the document opens with a heading).
42
+ const sections = parts.length > 1
43
+ ? parts.map((p, i) => {
44
+ if (i === 0)
45
+ return { heading: null, body: p };
46
+ const nl = p.indexOf("\n");
47
+ if (nl === -1)
48
+ return { heading: p.trim(), body: "" };
49
+ return { heading: p.slice(0, nl).trim(), body: p.slice(nl + 1) };
50
+ })
51
+ : [{ heading: null, body: text }];
52
+ const out = [];
53
+ let globalIdx = 0;
54
+ for (const sec of sections) {
55
+ const tokens = sec.body.split(/\s+/).filter(Boolean);
56
+ if (tokens.length === 0)
57
+ continue;
58
+ // Slide a window of maxTokens tokens with advance = maxTokens - overlapTokens.
59
+ // The last window may be shorter than maxTokens (trailing partial slice).
60
+ const advance = Math.max(1, maxTokens - overlapTokens);
61
+ let i = 0;
62
+ while (i < tokens.length) {
63
+ const slice = tokens.slice(i, i + maxTokens).join(" ");
64
+ out.push({ section: sec.heading, index: globalIdx++, text: slice });
65
+ // If this window didn't fill maxTokens it was the final slice.
66
+ if (i + maxTokens >= tokens.length)
67
+ break;
68
+ i += advance;
69
+ }
70
+ }
71
+ return out;
72
+ }
73
+ /**
74
+ * Replace-by-(source, doc_id): delete all existing chunks for the document
75
+ * then insert the new set in a single transaction.
76
+ *
77
+ * Embedding dimension is validated before the transaction opens — a mismatch
78
+ * is a programmer/data error, thrown verbatim (no DB touched, nothing to roll
79
+ * back), not a `DbError`.
80
+ */
81
+ export function upsertChunks(pool, row) {
82
+ for (const ch of row.chunks) {
83
+ if (ch.embedding.length !== 1536) {
84
+ throw new Error(`chunk embedding dim ${ch.embedding.length} != 1536 ` + `(source=${row.source} doc_id=${row.doc_id} index=${ch.index})`);
85
+ }
86
+ }
87
+ return withTransaction(pool, "regulatoryCorpus.upsertChunks", (client) => tryMutation("regulatoryCorpus.upsertChunks", async () => {
88
+ await client.query("DELETE FROM cortex_regulatory_chunks WHERE source = $1 AND doc_id = $2", [row.source, row.doc_id]);
89
+ for (const ch of row.chunks) {
90
+ await client.query(`INSERT INTO cortex_regulatory_chunks
91
+ (source, doc_id, doc_title, doc_url, section, chunk_index, chunk_text, embedding, metadata)
92
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8::vector, $9)`, [row.source, row.doc_id, row.doc_title, row.doc_url, ch.section, ch.index, ch.text, `[${ch.embedding.join(",")}]`, row.metadata]);
93
+ }
94
+ }));
95
+ }
96
+ /**
97
+ * Top-K cosine similarity search over cortex_regulatory_chunks.
98
+ *
99
+ * Uses pgvector's `<=>` (cosine distance) operator. Score is `1 - distance`
100
+ * so higher scores = more similar. The `source` filter narrows results to
101
+ * a single corpus subset (FDA-CDER, FDA-CBER, or ICH).
102
+ *
103
+ * Embedding dimension is validated before the query. Indication/modality
104
+ * filters are intentionally absent — the ingestion pipeline does not yet
105
+ * tag those keys on chunk metadata, and a filter that always returns zero
106
+ * rows would silently defeat consumer expectations.
107
+ */
108
+ export function searchByEmbedding(pool, embedding, filters = {}) {
109
+ if (embedding.length !== 1536) {
110
+ throw new Error(`query embedding dim ${embedding.length} != 1536`);
111
+ }
112
+ const topK = filters.topK ?? 8;
113
+ const wheres = [];
114
+ const params = [`[${embedding.join(",")}]`];
115
+ if (filters.source) {
116
+ params.push(filters.source);
117
+ wheres.push(`source = $${params.length}`);
118
+ }
119
+ const whereClause = wheres.length ? `WHERE ${wheres.join(" AND ")}` : "";
120
+ params.push(topK);
121
+ const sql = `
122
+ SELECT source, doc_id, doc_title, doc_url, section, chunk_text,
123
+ 1 - (embedding <=> $1::vector) AS score
124
+ FROM cortex_regulatory_chunks
125
+ ${whereClause}
126
+ ORDER BY embedding <=> $1::vector
127
+ LIMIT $${params.length}
128
+ `;
129
+ return tryQuery("regulatoryCorpus.searchByEmbedding", async () => {
130
+ const res = await pool.query(sql, params);
131
+ return res.rows.map((r) => ({
132
+ source: r.source,
133
+ doc_id: r.doc_id,
134
+ doc_title: r.doc_title,
135
+ doc_url: r.doc_url,
136
+ section: r.section,
137
+ excerpt: r.chunk_text,
138
+ score: Number(r.score),
139
+ }));
140
+ });
141
+ }
@@ -0,0 +1,87 @@
1
+ /**
2
+ * neverthrow conventions for cortex.
3
+ *
4
+ * The agent loop and execution boundary model failure as values, not throws.
5
+ * The house rules:
6
+ *
7
+ * 1. `try/catch` lives ONLY inside the thin wrappers at calls to code
8
+ * external to ours — a third-party SDK, the `pg` driver, `fs`, the DBOS
9
+ * runtime. Those wrappers turn a throw into an `err(DomainError)`.
10
+ * Everything above them flows `Result` / `ResultAsync`.
11
+ * 2. Absence is NOT an error. A "not found" stays in the ok channel as a
12
+ * data variant (`ok({ found: false })`), never an `err`. `err` is
13
+ * reserved for what used to be `throw`n — an unexpected upstream failure.
14
+ * 3. A `Result` is unwrapped at exactly three edges, each speaking its own
15
+ * dialect of failure:
16
+ * - HTTP routes `.match(...)` a `Result` into a response.
17
+ * - The DBOS step boundary throws on `err` (`unwrapOrThrow` /
18
+ * `resultStep` in `loop/run-step.ts`): durability records a step as
19
+ * failed — and retries / fails fast — ONLY on a thrown exception, so
20
+ * an `err` crossing `DBOS.runStep` MUST become a throw.
21
+ * - Tool dispatch maps `err` into an `is_error` `tool_result`
22
+ * (`loop/run-agent.ts`).
23
+ *
24
+ * Control-flow exceptions (DBOS cancellation, `AbortError`) are NOT failures
25
+ * and live OUTSIDE the `Result` error channel — they are thrown verbatim and
26
+ * must never be captured as an `err`.
27
+ *
28
+ * Sites import `ok`/`err`/`Result`/`ResultAsync`/`fromPromise`/`fromThrowable`
29
+ * directly from `neverthrow`; this module owns only the cortex-specific glue.
30
+ */
31
+ import { type Result } from "neverthrow";
32
+ /**
33
+ * The shape every per-subsystem error union shares: a string `type`
34
+ * discriminant plus an optional underlying `cause`. Concrete modules narrow
35
+ * `type` to their own literals and add typed fields (e.g. `DbError`,
36
+ * `SandboxError`), and ship a `describe*Error` formatter that turns one into
37
+ * a user-facing line. A step body's error channel is some `DomainError`.
38
+ */
39
+ export interface DomainError {
40
+ readonly type: string;
41
+ readonly cause?: unknown;
42
+ }
43
+ /**
44
+ * A thrown wrapper for a structured error value that is not already an
45
+ * `Error`. The original value rides on `.cause`, so the cause-walking
46
+ * classifiers (`classifyProviderError`, `isBudgetExceeded`) still reach the
47
+ * `status` / `code` signals they look for after a `Result` is rethrown at a
48
+ * boundary.
49
+ */
50
+ export declare class ResultError extends Error {
51
+ readonly value: unknown;
52
+ constructor(value: unknown);
53
+ }
54
+ /**
55
+ * Bridge a `Result` error value into a thrown `Error` at a boundary that
56
+ * speaks exceptions. An error that is already an `Error` is thrown verbatim
57
+ * (its class, `.cause`, and any `status` survive); anything else is wrapped
58
+ * in `ResultError` with the structured value on `.cause`.
59
+ */
60
+ export declare function toThrowable(value: unknown): Error;
61
+ /**
62
+ * Unwrap a `Result`, throwing on `err`. The canonical Result→throw bridge for
63
+ * the DBOS step edge and any other boundary whose failure protocol is an
64
+ * exception (a driver's throw-to-rollback). The throw is isolated here so the
65
+ * rest of the code stays Result-shaped.
66
+ *
67
+ * Use it ONLY where a throw is the boundary's failure contract:
68
+ *
69
+ * - **DBOS workflow/step bodies** (directly, or composed via `resultStep` in
70
+ * `loop/run-step.ts`). DBOS records a step as failed — and retries / fails
71
+ * fast — only on a thrown exception; a *returned* `err` would be durably
72
+ * cached as a successful step output and replayed as success forever.
73
+ * - **Tool `execute` bodies**, where the loop's dispatch catch maps the
74
+ * throw into a model-visible error tool result (`loop/run-agent.ts`).
75
+ * - **Driver edges whose protocol is a throw** (e.g. throw-to-rollback).
76
+ *
77
+ * Anywhere else, keep the `Result` flowing: return it, chain
78
+ * `.andThen`/`.map`/`.mapErr`, or `.match` both branches. Never reach for
79
+ * this to dodge error handling in composable domain logic.
80
+ *
81
+ * The `must-use-result` lint rule recognizes `unwrapOrThrow(...)` as
82
+ * consuming its Result (see the plugin patch in `eslint.config.js`) — do not
83
+ * rewrite call sites into inline `.match`+throw forms to appease lint.
84
+ */
85
+ export declare function unwrapOrThrow<T, E>(result: Result<T, E>): T;
86
+ /** Runtime brand check — is this value a neverthrow `Result`? */
87
+ export declare function isResult(value: unknown): value is Result<unknown, unknown>;