@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,103 @@
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 { Err, Ok } from "neverthrow";
32
+ /**
33
+ * A thrown wrapper for a structured error value that is not already an
34
+ * `Error`. The original value rides on `.cause`, so the cause-walking
35
+ * classifiers (`classifyProviderError`, `isBudgetExceeded`) still reach the
36
+ * `status` / `code` signals they look for after a `Result` is rethrown at a
37
+ * boundary.
38
+ */
39
+ export class ResultError extends Error {
40
+ value;
41
+ constructor(value) {
42
+ super(describe(value), { cause: value });
43
+ this.value = value;
44
+ this.name = "ResultError";
45
+ }
46
+ }
47
+ function describe(value) {
48
+ if (value instanceof Error)
49
+ return value.message;
50
+ if (value && typeof value === "object" && "type" in value) {
51
+ // Prefer a human `message` field when the structured error carries one
52
+ // (e.g. a `ProviderError`) so the wrapped `Error.message` stays
53
+ // pattern-matchable (`isBudgetExceeded`'s message backstop); fall back
54
+ // to the `type` discriminant otherwise.
55
+ const message = value.message;
56
+ if (typeof message === "string" && message.length > 0)
57
+ return message;
58
+ return String(value.type);
59
+ }
60
+ return String(value);
61
+ }
62
+ /**
63
+ * Bridge a `Result` error value into a thrown `Error` at a boundary that
64
+ * speaks exceptions. An error that is already an `Error` is thrown verbatim
65
+ * (its class, `.cause`, and any `status` survive); anything else is wrapped
66
+ * in `ResultError` with the structured value on `.cause`.
67
+ */
68
+ export function toThrowable(value) {
69
+ return value instanceof Error ? value : new ResultError(value);
70
+ }
71
+ /**
72
+ * Unwrap a `Result`, throwing on `err`. The canonical Result→throw bridge for
73
+ * the DBOS step edge and any other boundary whose failure protocol is an
74
+ * exception (a driver's throw-to-rollback). The throw is isolated here so the
75
+ * rest of the code stays Result-shaped.
76
+ *
77
+ * Use it ONLY where a throw is the boundary's failure contract:
78
+ *
79
+ * - **DBOS workflow/step bodies** (directly, or composed via `resultStep` in
80
+ * `loop/run-step.ts`). DBOS records a step as failed — and retries / fails
81
+ * fast — only on a thrown exception; a *returned* `err` would be durably
82
+ * cached as a successful step output and replayed as success forever.
83
+ * - **Tool `execute` bodies**, where the loop's dispatch catch maps the
84
+ * throw into a model-visible error tool result (`loop/run-agent.ts`).
85
+ * - **Driver edges whose protocol is a throw** (e.g. throw-to-rollback).
86
+ *
87
+ * Anywhere else, keep the `Result` flowing: return it, chain
88
+ * `.andThen`/`.map`/`.mapErr`, or `.match` both branches. Never reach for
89
+ * this to dodge error handling in composable domain logic.
90
+ *
91
+ * The `must-use-result` lint rule recognizes `unwrapOrThrow(...)` as
92
+ * consuming its Result (see the plugin patch in `eslint.config.js`) — do not
93
+ * rewrite call sites into inline `.match`+throw forms to appease lint.
94
+ */
95
+ export function unwrapOrThrow(result) {
96
+ if (result.isErr())
97
+ throw toThrowable(result.error);
98
+ return result.value;
99
+ }
100
+ /** Runtime brand check — is this value a neverthrow `Result`? */
101
+ export function isResult(value) {
102
+ return value instanceof Ok || value instanceof Err;
103
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Application `pg.Pool` construction.
3
+ *
4
+ * One `pg.Pool` backs every Cortex query — Cortex tables, the per-analysis
5
+ * pgvector indexes, route handlers, and durable-workflow steps all share the
6
+ * same pool so connection budgets stay predictable. The pool is built once at
7
+ * the composition root and threaded as a constructor dep (see the harness-durable-runtime spec).
8
+ */
9
+ import { type Pool } from "pg";
10
+ /**
11
+ * Narrow config slice the app pool reads — the six `DB_PG_*` connection
12
+ * fields plus the optional pool-size override. Composition roots map their
13
+ * validated `Env` onto this; the harness never reaches for an env loader.
14
+ */
15
+ export interface PoolConfig {
16
+ readonly host: string;
17
+ readonly port: string;
18
+ readonly database: string;
19
+ readonly user: string;
20
+ readonly password: string;
21
+ readonly sslMode: "disable" | "require" | "verify-ca" | "verify-full";
22
+ readonly poolMax?: string;
23
+ }
24
+ /**
25
+ * Construct the application `pg.Pool`. Called exactly once, at the process
26
+ * composition root (`server.ts:main()`), and threaded as a constructor dep
27
+ * from there. No module reaches for the pool ambiently (see the harness-durable-runtime spec).
28
+ */
29
+ export declare function createPool(config: PoolConfig): Pool;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Application `pg.Pool` construction.
3
+ *
4
+ * One `pg.Pool` backs every Cortex query — Cortex tables, the per-analysis
5
+ * pgvector indexes, route handlers, and durable-workflow steps all share the
6
+ * same pool so connection budgets stay predictable. The pool is built once at
7
+ * the composition root and threaded as a constructor dep (see the harness-durable-runtime spec).
8
+ */
9
+ import pg from "pg";
10
+ import { resolveAppPoolSize } from "../runtime/pools.js";
11
+ function poolOptions(config) {
12
+ return {
13
+ host: config.host,
14
+ port: parseInt(config.port, 10),
15
+ database: config.database,
16
+ user: config.user,
17
+ password: config.password,
18
+ // Per-pod app pool; DBOS owns its system-DB connections separately
19
+ // (see the postgres-storage-backend spec). The boot guard checks this fits `max_connections`.
20
+ max: resolveAppPoolSize(config.poolMax),
21
+ // `pg` accepts `ssl: false` to disable entirely, or an object with
22
+ // `rejectUnauthorized` to tune TLS. We map sslmode to those forms.
23
+ ssl: config.sslMode === "disable"
24
+ ? false
25
+ : config.sslMode === "verify-full" || config.sslMode === "verify-ca"
26
+ ? { rejectUnauthorized: true }
27
+ : { rejectUnauthorized: false },
28
+ };
29
+ }
30
+ /**
31
+ * Construct the application `pg.Pool`. Called exactly once, at the process
32
+ * composition root (`server.ts:main()`), and threaded as a constructor dep
33
+ * from there. No module reaches for the pool ambiently (see the harness-durable-runtime spec).
34
+ */
35
+ export function createPool(config) {
36
+ return new pg.Pool(poolOptions(config));
37
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Streaming HTTP download helper with optional ranged-GET parallelism.
3
+ *
4
+ * Per-stream working memory is bounded at ~64 KiB regardless of file size —
5
+ * bodies are never materialized as Buffers. When the caller supplies the
6
+ * total size and it exceeds `partSize`, the download is split into N ranged
7
+ * GETs that write into a pre-allocated file at their respective offsets.
8
+ */
9
+ export interface StreamDownloadOpts {
10
+ /** Total file size. Required for ranged-parallel downloads. */
11
+ size?: number;
12
+ /** Bytes per range. Falls back to single-GET when size <= partSize. */
13
+ partSize?: number;
14
+ /** Max ranges in flight. */
15
+ concurrency?: number;
16
+ /** Max retries per range or per whole-file stream. */
17
+ maxRetries?: number;
18
+ /** Abort signal for cancellation. */
19
+ signal?: AbortSignal;
20
+ }
21
+ /**
22
+ * Download a URL to `destPath`, streaming the body to disk.
23
+ *
24
+ * Creates the destination file (truncating any existing content). On success
25
+ * the file exists at `destPath`; on failure it may be partially written —
26
+ * callers should use a temp path + rename pattern if atomicity matters.
27
+ */
28
+ export declare function streamDownload(url: string, destPath: string, opts?: StreamDownloadOpts): Promise<void>;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Streaming HTTP download helper with optional ranged-GET parallelism.
3
+ *
4
+ * Per-stream working memory is bounded at ~64 KiB regardless of file size —
5
+ * bodies are never materialized as Buffers. When the caller supplies the
6
+ * total size and it exceeds `partSize`, the download is split into N ranged
7
+ * GETs that write into a pre-allocated file at their respective offsets.
8
+ */
9
+ import { createWriteStream } from "node:fs";
10
+ import { open as fsOpen } from "node:fs/promises";
11
+ import { Readable } from "node:stream";
12
+ import { pipeline } from "node:stream/promises";
13
+ import { mapConcurrent, sleep } from "./async-utils.js";
14
+ const DEFAULT_PART_SIZE = 32 * 1024 * 1024; // 32 MiB
15
+ const DEFAULT_CONCURRENCY = 4;
16
+ const DEFAULT_MAX_RETRIES = 3;
17
+ const BASE_DELAY_MS = 500;
18
+ /**
19
+ * Download a URL to `destPath`, streaming the body to disk.
20
+ *
21
+ * Creates the destination file (truncating any existing content). On success
22
+ * the file exists at `destPath`; on failure it may be partially written —
23
+ * callers should use a temp path + rename pattern if atomicity matters.
24
+ */
25
+ export async function streamDownload(url, destPath, opts = {}) {
26
+ const size = opts.size;
27
+ const partSize = opts.partSize ?? DEFAULT_PART_SIZE;
28
+ const concurrency = opts.concurrency ?? DEFAULT_CONCURRENCY;
29
+ const maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES;
30
+ if (!size || size <= partSize) {
31
+ await fetchStreamToFile(url, destPath, "w", undefined, maxRetries, opts.signal);
32
+ return;
33
+ }
34
+ // Pre-allocate the file so per-range streams can write at correct offsets.
35
+ const fh = await fsOpen(destPath, "w");
36
+ try {
37
+ await fh.truncate(size);
38
+ }
39
+ finally {
40
+ await fh.close();
41
+ }
42
+ const totalParts = Math.ceil(size / partSize);
43
+ await mapConcurrent(Array.from({ length: totalParts }, (_, i) => i), concurrency, async (i) => {
44
+ const start = i * partSize;
45
+ const end = Math.min(start + partSize, size) - 1;
46
+ await fetchRangeToFile(url, destPath, start, end, maxRetries, opts.signal);
47
+ });
48
+ }
49
+ async function fetchStreamToFile(url, destPath, flags, start, maxRetries, signal) {
50
+ let lastError = "";
51
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
52
+ try {
53
+ const res = await fetch(url, { signal });
54
+ if (!res.ok) {
55
+ lastError = `HTTP ${res.status}`;
56
+ if (res.status >= 500 && attempt < maxRetries - 1) {
57
+ await sleep(BASE_DELAY_MS * 2 ** attempt);
58
+ continue;
59
+ }
60
+ throw new Error(lastError);
61
+ }
62
+ if (!res.body)
63
+ throw new Error("response body is null");
64
+ const writer = createWriteStream(destPath, start !== undefined ? { flags, start } : { flags });
65
+ await pipeline(Readable.fromWeb(res.body), writer);
66
+ return;
67
+ }
68
+ catch (err) {
69
+ lastError = err instanceof Error ? err.message : String(err);
70
+ if (attempt < maxRetries - 1) {
71
+ await sleep(BASE_DELAY_MS * 2 ** attempt);
72
+ continue;
73
+ }
74
+ }
75
+ }
76
+ throw new Error(`download failed after ${maxRetries} attempts: ${lastError}`);
77
+ }
78
+ async function fetchRangeToFile(url, destPath, start, end, maxRetries, signal) {
79
+ let lastError = "";
80
+ for (let attempt = 0; attempt < maxRetries; attempt++) {
81
+ try {
82
+ const res = await fetch(url, {
83
+ headers: { Range: `bytes=${start}-${end}` },
84
+ signal,
85
+ });
86
+ // 206 is the expected success; 200 means the server ignored Range — treat
87
+ // as fatal since it would overwrite other ranges.
88
+ if (res.status !== 206) {
89
+ lastError = `HTTP ${res.status}`;
90
+ if (res.status >= 500 && attempt < maxRetries - 1) {
91
+ await sleep(BASE_DELAY_MS * 2 ** attempt);
92
+ continue;
93
+ }
94
+ throw new Error(res.status === 200 ? `server ignored Range header (HTTP 200) — parallel download would clobber` : lastError);
95
+ }
96
+ if (!res.body)
97
+ throw new Error("response body is null");
98
+ const writer = createWriteStream(destPath, { flags: "r+", start });
99
+ await pipeline(Readable.fromWeb(res.body), writer);
100
+ return;
101
+ }
102
+ catch (err) {
103
+ lastError = err instanceof Error ? err.message : String(err);
104
+ if (attempt < maxRetries - 1) {
105
+ await sleep(BASE_DELAY_MS * 2 ** attempt);
106
+ continue;
107
+ }
108
+ }
109
+ }
110
+ throw new Error(`range ${start}-${end} failed after ${maxRetries} attempts: ${lastError}`);
111
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Hono middleware for W3C Trace Context extraction.
3
+ *
4
+ * Hono's HTTP server is not auto-instrumented by OTEL (which patches Node's
5
+ * `http` module, not Hono's request handling). This middleware manually
6
+ * extracts the `traceparent` header from incoming requests, creates an OTEL
7
+ * server span, and wraps the handler in `context.with()` so the OtelBridge
8
+ * and any downstream code see the correct parent span via `context.active()`.
9
+ */
10
+ import type { MiddlewareHandler } from "hono";
11
+ export declare const traceContextMiddleware: MiddlewareHandler;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Hono middleware for W3C Trace Context extraction.
3
+ *
4
+ * Hono's HTTP server is not auto-instrumented by OTEL (which patches Node's
5
+ * `http` module, not Hono's request handling). This middleware manually
6
+ * extracts the `traceparent` header from incoming requests, creates an OTEL
7
+ * server span, and wraps the handler in `context.with()` so the OtelBridge
8
+ * and any downstream code see the correct parent span via `context.active()`.
9
+ */
10
+ import { trace, context, propagation, SpanKind, SpanStatusCode } from "@opentelemetry/api";
11
+ const tracer = trace.getTracer("cortex.http");
12
+ /**
13
+ * Middleware that extracts W3C trace context from incoming HTTP headers and
14
+ * creates a server span. Must be registered before all other middleware so
15
+ * the OTEL context is available throughout the request lifecycle.
16
+ */
17
+ const SKIP_TRACE_PATHS = new Set(["/healthz", "/readyz"]);
18
+ export const traceContextMiddleware = async (c, next) => {
19
+ if (SKIP_TRACE_PATHS.has(c.req.path)) {
20
+ return next();
21
+ }
22
+ const carrier = {};
23
+ for (const [key, value] of c.req.raw.headers) {
24
+ carrier[key] = value;
25
+ }
26
+ const parentCtx = propagation.extract(context.active(), carrier);
27
+ const span = tracer.startSpan(`${c.req.method} ${c.req.path}`, {
28
+ kind: SpanKind.SERVER,
29
+ attributes: {
30
+ "http.method": c.req.method,
31
+ "http.target": c.req.path,
32
+ },
33
+ }, parentCtx);
34
+ const spanCtx = trace.setSpan(parentCtx, span);
35
+ try {
36
+ await context.with(spanCtx, () => next());
37
+ span.setAttribute("http.status_code", c.res.status);
38
+ }
39
+ catch (err) {
40
+ span.setStatus({ code: SpanStatusCode.ERROR });
41
+ if (err instanceof Error) {
42
+ span.recordException(err);
43
+ }
44
+ throw err;
45
+ }
46
+ finally {
47
+ span.end();
48
+ }
49
+ };
@@ -0,0 +1,31 @@
1
+ import type { ChatResponse, ChatProvider, ChatRequest } from "../../providers/types.js";
2
+ import type { AgentSession as Session } from "../../auth/types.js";
3
+ export type TextBlock = {
4
+ type: "text";
5
+ text: string;
6
+ };
7
+ export type ThinkingBlock = {
8
+ type: "reasoning";
9
+ text: string;
10
+ providerOptions?: {
11
+ anthropic: {
12
+ signature: string;
13
+ };
14
+ };
15
+ };
16
+ export type ToolUseBlock = {
17
+ type: "tool-call";
18
+ toolCallId: string;
19
+ toolName: string;
20
+ input: unknown;
21
+ };
22
+ export type ContentBlock = TextBlock | ThinkingBlock | ToolUseBlock;
23
+ export declare function makeMessage(content: ContentBlock[], finishReason: ChatResponse["finishReason"] | "tool_use" | "end_turn" | "max_tokens" | "refusal"): ChatResponse;
24
+ export declare function textBlock(text: string): TextBlock;
25
+ export declare function thinkingBlock(thinking: string, signature: string): ThinkingBlock;
26
+ export declare function toolUseBlock(id: string, name: string, input: unknown): ToolUseBlock;
27
+ export interface ScriptedProvider extends ChatProvider {
28
+ readonly calls: ChatRequest[];
29
+ readonly sessions: Session[];
30
+ }
31
+ export declare function scriptedProvider(script: ChatResponse[] | ((callIndex: number, request: ChatRequest) => ChatResponse)): ScriptedProvider;
@@ -0,0 +1,57 @@
1
+ import { okAsync } from "neverthrow";
2
+ function mapFinishReason(finishReason) {
3
+ switch (finishReason) {
4
+ case "tool_use":
5
+ return "tool-calls";
6
+ case "end_turn":
7
+ return "stop";
8
+ case "max_tokens":
9
+ return "length";
10
+ case "refusal":
11
+ return "content-filter";
12
+ default:
13
+ return finishReason;
14
+ }
15
+ }
16
+ export function makeMessage(content, finishReason) {
17
+ return {
18
+ message: { role: "assistant", content },
19
+ finishReason: mapFinishReason(finishReason),
20
+ };
21
+ }
22
+ export function textBlock(text) {
23
+ return { type: "text", text };
24
+ }
25
+ export function thinkingBlock(thinking, signature) {
26
+ return { type: "reasoning", text: thinking, providerOptions: { anthropic: { signature } } };
27
+ }
28
+ export function toolUseBlock(id, name, input) {
29
+ return { type: "tool-call", toolCallId: id, toolName: name, input };
30
+ }
31
+ export function scriptedProvider(script) {
32
+ const calls = [];
33
+ const sessions = [];
34
+ const reply = typeof script === "function"
35
+ ? script
36
+ : (i) => {
37
+ const r = script[i];
38
+ if (r === undefined) {
39
+ throw new Error(`scriptedProvider: no scripted reply for call ${i}`);
40
+ }
41
+ return r;
42
+ };
43
+ return {
44
+ capabilities: { toolCalling: true },
45
+ calls,
46
+ sessions,
47
+ chat(request, session) {
48
+ const i = calls.length;
49
+ calls.push(request);
50
+ sessions.push(session);
51
+ return okAsync(reply(i, request));
52
+ },
53
+ chatStream() {
54
+ throw new Error("scriptedProvider: chatStream is not used by runAgent");
55
+ },
56
+ };
57
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * HTTP 402 `budget_exceeded` classifier.
3
+ *
4
+ * Detects when an LLM call failed because the billing gateway reported the
5
+ * caller's budget was exhausted. This is NOT a transient error — retrying
6
+ * is wasteful because every subsequent call charged to the same budget will
7
+ * also fail until the user tops up.
8
+ *
9
+ * Classification order (first hit wins):
10
+ * 1. Structured `statusCode === 402` (or `status === 402`) on any
11
+ * link of the cause chain. The gateway emits 402 exclusively for
12
+ * `budget_exceeded`, so a structured 402 is unambiguous.
13
+ * 2. Pattern fallback: `/budget.?exceeded/i` on the stringified
14
+ * top-level error message. Covers stringified throws and paths
15
+ * where no `statusCode` is attached (ops scripts, sandbox-server
16
+ * surfacing upstream billing errors as text).
17
+ *
18
+ * Returns `false` for all other errors. Safe to call with any value;
19
+ * non-Error inputs hit the stringified-pattern branch and return `false`
20
+ * unless the string happens to match.
21
+ */
22
+ export declare function isBudgetExceeded(err: unknown): boolean;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * HTTP 402 `budget_exceeded` classifier.
3
+ *
4
+ * Detects when an LLM call failed because the billing gateway reported the
5
+ * caller's budget was exhausted. This is NOT a transient error — retrying
6
+ * is wasteful because every subsequent call charged to the same budget will
7
+ * also fail until the user tops up.
8
+ *
9
+ * Classification order (first hit wins):
10
+ * 1. Structured `statusCode === 402` (or `status === 402`) on any
11
+ * link of the cause chain. The gateway emits 402 exclusively for
12
+ * `budget_exceeded`, so a structured 402 is unambiguous.
13
+ * 2. Pattern fallback: `/budget.?exceeded/i` on the stringified
14
+ * top-level error message. Covers stringified throws and paths
15
+ * where no `statusCode` is attached (ops scripts, sandbox-server
16
+ * surfacing upstream billing errors as text).
17
+ *
18
+ * Returns `false` for all other errors. Safe to call with any value;
19
+ * non-Error inputs hit the stringified-pattern branch and return `false`
20
+ * unless the string happens to match.
21
+ */
22
+ const BUDGET_EXCEEDED_PATTERNS = [/budget.?exceeded/i];
23
+ /** Max depth walked on the cause chain looking for a structured statusCode. */
24
+ const MAX_CAUSE_HOPS = 5;
25
+ function hasStatus402(err) {
26
+ let cursor = err;
27
+ for (let i = 0; i < MAX_CAUSE_HOPS && cursor; i++) {
28
+ const e = cursor;
29
+ const code = e.statusCode ?? e.status;
30
+ if (code === 402)
31
+ return true;
32
+ cursor = e.cause;
33
+ }
34
+ return false;
35
+ }
36
+ export function isBudgetExceeded(err) {
37
+ if (hasStatus402(err))
38
+ return true;
39
+ const msg = err instanceof Error ? err.message : String(err ?? "");
40
+ return BUDGET_EXCEEDED_PATTERNS.some((p) => p.test(msg));
41
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Agent-loop OTel metrics → Middleware.io.
3
+ *
4
+ * Every `runAgent` completion records two signals:
5
+ * - cortex.harness.agent.iterations — histogram of LLM iterations per run.
6
+ * A creeping distribution is a leading indicator of prompt drift.
7
+ * - cortex.harness.agent.cap_hits — counter, incremented once per run
8
+ * that exhausted `maxIterations` and took the forced wrap-up path.
9
+ *
10
+ * Instruments are created lazily on first use so the loop binds to whatever
11
+ * `MeterProvider` is registered globally at runtime (production: the OTLP
12
+ * exporter from `harness/lib/otel.ts`; tests: an in-memory reader).
13
+ */
14
+ /** Record one completed `runAgent` invocation. */
15
+ export declare function recordAgentRun(run: {
16
+ readonly agentId: string;
17
+ readonly iterations: number;
18
+ readonly cappedOut: boolean;
19
+ }): void;
20
+ /**
21
+ * Drop the memoized instruments so the next `recordAgentRun` rebinds to a
22
+ * freshly-registered `MeterProvider`. Test-only — production registers its
23
+ * provider once at startup.
24
+ */
25
+ export declare function __resetMetricsForTest(): void;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Agent-loop OTel metrics → Middleware.io.
3
+ *
4
+ * Every `runAgent` completion records two signals:
5
+ * - cortex.harness.agent.iterations — histogram of LLM iterations per run.
6
+ * A creeping distribution is a leading indicator of prompt drift.
7
+ * - cortex.harness.agent.cap_hits — counter, incremented once per run
8
+ * that exhausted `maxIterations` and took the forced wrap-up path.
9
+ *
10
+ * Instruments are created lazily on first use so the loop binds to whatever
11
+ * `MeterProvider` is registered globally at runtime (production: the OTLP
12
+ * exporter from `harness/lib/otel.ts`; tests: an in-memory reader).
13
+ */
14
+ import { metrics } from "@opentelemetry/api";
15
+ let instruments;
16
+ function getInstruments() {
17
+ if (instruments === undefined) {
18
+ const meter = metrics.getMeter("cortex.harness.loop");
19
+ instruments = {
20
+ iterations: meter.createHistogram("cortex.harness.agent.iterations", {
21
+ description: "LLM iterations executed per runAgent completion",
22
+ unit: "{iteration}",
23
+ }),
24
+ capHits: meter.createCounter("cortex.harness.agent.cap_hits", {
25
+ description: "runAgent completions that exhausted maxIterations and took the " + "forced tool-less wrap-up path",
26
+ }),
27
+ };
28
+ }
29
+ return instruments;
30
+ }
31
+ /** Record one completed `runAgent` invocation. */
32
+ export function recordAgentRun(run) {
33
+ const { iterations, capHits } = getInstruments();
34
+ const attributes = { agent_id: run.agentId };
35
+ iterations.record(run.iterations, attributes);
36
+ if (run.cappedOut)
37
+ capHits.add(1, attributes);
38
+ }
39
+ /**
40
+ * Drop the memoized instruments so the next `recordAgentRun` rebinds to a
41
+ * freshly-registered `MeterProvider`. Test-only — production registers its
42
+ * provider once at startup.
43
+ */
44
+ export function __resetMetricsForTest() {
45
+ instruments = undefined;
46
+ }
@@ -0,0 +1,28 @@
1
+ import { type FinishReason } from "ai";
2
+ import type { AgentSession } from "../auth/types.js";
3
+ import type { AgentChat } from "../providers/types.js";
4
+ import type { AgentDefinition, EmitFn, LoopMessage, RunStep } from "./types.js";
5
+ export interface AgentFinish {
6
+ readonly reason: FinishReason | "max_iterations";
7
+ readonly cappedOut: boolean;
8
+ readonly truncationRecoveries: number;
9
+ }
10
+ export interface RunAgentResult {
11
+ readonly messages: LoopMessage[];
12
+ readonly finish: AgentFinish;
13
+ }
14
+ export interface StepNameFormatter {
15
+ llm(iteration: number): string;
16
+ tool(toolName: string, toolUseId: string): string;
17
+ }
18
+ export declare const DEFAULT_STEP_NAME_FORMATTER: StepNameFormatter;
19
+ export interface RunAgentOptions {
20
+ readonly provider: AgentChat;
21
+ readonly signal: AbortSignal;
22
+ readonly emit: EmitFn;
23
+ readonly runStep: RunStep;
24
+ readonly formatStepName?: StepNameFormatter;
25
+ readonly isFatalLoopError?: (err: unknown) => boolean;
26
+ }
27
+ export declare function runAgent(agent: AgentDefinition, initial: readonly LoopMessage[], session: AgentSession, opts: RunAgentOptions): Promise<RunAgentResult>;
28
+ export declare function finalText(messages: readonly LoopMessage[]): string;