@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,95 @@
1
+ /**
2
+ * `execute_command` — the single chokepoint through which sandbox commands
3
+ * run.
4
+ *
5
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures a `SandboxClient`, the
6
+ * live `SandboxRef` for the step, and the per-call execId minter. No other
7
+ * tool, agent, or workflow step is permitted to POST to sandbox-server's
8
+ * `/exec` directly — `SandboxClient` is intentionally injected only here so
9
+ * the durability / idempotency / liveness story `harness-sandbox-exec`
10
+ * owns holds uniformly across all sandbox command execution.
11
+ *
12
+ * `execId` is derived as `${workflowId}:${stepId}:${functionId}` so replays
13
+ * land on the cached DBOS step output rather than re-submitting; the same
14
+ * `execId` is the step name `submitExec` uses (`sandbox.submit-exec.${execId}`).
15
+ *
16
+ * Provenance for files written *inside* the sandbox by the executed command
17
+ * is NOT recorded here — sandbox-server emits provenance frames (see
18
+ * `sandbox-provenance-tracking`), and artifact registration reconciles them.
19
+ * The harness-side mutate tools (`write_file`, `edit_file`) hash and record
20
+ * the writes *they* perform, but `execute_command`'s opaque commands do not.
21
+ */
22
+ import { posix as posixPath } from "node:path";
23
+ import { ok } from "neverthrow";
24
+ import { z } from "zod";
25
+ import { defineTool } from "../define-tool.js";
26
+ import { feedExecFrame } from "../../provenance/exec-frame.js";
27
+ import { boundExecResult } from "./result-bounds.js";
28
+ import { runSandboxExec } from "./run-exec.js";
29
+ const ExecuteCommandInputSchema = z.object({
30
+ command: z
31
+ .array(z.string().min(1))
32
+ .min(1)
33
+ .describe("argv array — e.g. ['python', 'scripts/run.py'] or ['head', '-n', '50', 'data/inputs/x.csv']. " +
34
+ "Not passed through a shell; quoting and globbing are not expanded."),
35
+ cwd: z
36
+ .string()
37
+ .optional()
38
+ .describe("Working directory inside the sandbox. Defaults to your working " +
39
+ "directory; a relative value is resolved against it, an absolute " +
40
+ "'/<analysisId>/...' value is used as-is."),
41
+ env: z.record(z.string(), z.string()).optional().describe("Extra environment variables for this command."),
42
+ timeoutSeconds: z.number().int().positive().optional().describe("Per-command timeout in seconds; capped by the step deadline."),
43
+ });
44
+ export function createExecuteCommandTool(deps) {
45
+ const { sandboxClient, sandbox, workflowId, stepId, nextFunctionId, deadlineMs, defaultCwd, markExecActive, lineageCollector, mountRoot } = deps;
46
+ return defineTool({
47
+ id: "execute_command",
48
+ // `awaitExec`-recv is body-only (`DBOS.recv`), so this runs unwrapped in
49
+ // the workflow body; durability is self-owned (submit step + body recv). See the harness-tools spec.
50
+ executionMode: "workflow",
51
+ description: "Run a command in the sandbox and return its stdout/stderr/exit code. " +
52
+ "Use for scripts, CLI tools, shell pipes, and anything the workspace " +
53
+ "tools don't express. stdout and stderr are each capped at 8 KiB; oversize " +
54
+ "streams come back with truncation markers. Failures are returned as data, " +
55
+ "not thrown. stdout/stderr are EPHEMERAL and are NOT a deliverable — use " +
56
+ "this to confirm a command ran, not to produce results. Do NOT compute " +
57
+ "analysis results via 'python -c' / inline one-liners and read them from " +
58
+ "stdout; that work is lost. Write a script and persist its outputs to output/.",
59
+ inputSchema: ExecuteCommandInputSchema,
60
+ execute: async ({ command, cwd, env, timeoutSeconds }, ctx) => {
61
+ const execId = `${workflowId}:${stepId}:${nextFunctionId()}`;
62
+ const effectiveCwd = cwd === undefined ? defaultCwd : cwd.startsWith("/") ? cwd : posixPath.join(defaultCwd, cwd);
63
+ const result = await runSandboxExec({
64
+ sandboxClient,
65
+ sandbox,
66
+ execId,
67
+ command,
68
+ cwd: effectiveCwd,
69
+ ...(env === undefined ? {} : { env }),
70
+ ...(timeoutSeconds === undefined ? {} : { timeoutSeconds }),
71
+ deadlineMs: deadlineMs(),
72
+ emit: ctx.emit,
73
+ ...(markExecActive ? { markExecActive } : {}),
74
+ });
75
+ // Thread the runtime file-I/O frame into the step's lineage collector.
76
+ // Best-effort: a collector failure must never fail the exec.
77
+ if (lineageCollector && mountRoot) {
78
+ try {
79
+ feedExecFrame({
80
+ collector: lineageCollector,
81
+ mountRoot,
82
+ command,
83
+ exitCode: result.exitCode,
84
+ durationMs: result.durationMs,
85
+ ...(result.provenance ? { provenance: result.provenance } : {}),
86
+ });
87
+ }
88
+ catch (err) {
89
+ console.warn(`[execute_command] provenance frame handling failed (non-fatal) for ${execId}: ${err instanceof Error ? err.message : err}`);
90
+ }
91
+ }
92
+ return ok({ status: "ok", ...boundExecResult(result) });
93
+ },
94
+ });
95
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `file_stat` tool — type + size of a workspace path over the read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`
5
+ * and the optional working directory relative paths resolve against (see the harness-workspace-tools spec).
6
+ * Expected outcomes are data variants — `not_found` / `out_of_scope`.
7
+ */
8
+ import type { WorkspaceFilesystem } from "../../workspace/filesystem.js";
9
+ type FileStatOutput = {
10
+ status: "ok";
11
+ path: string;
12
+ type: "file" | "directory";
13
+ size: number;
14
+ } | {
15
+ status: "not_found";
16
+ path: string;
17
+ } | {
18
+ status: "out_of_scope";
19
+ path: string;
20
+ };
21
+ export declare function createFileStatTool(fs: WorkspaceFilesystem, workingDir?: string): import("../define-tool.js").Tool<{
22
+ path: string;
23
+ }, FileStatOutput>;
24
+ export {};
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `file_stat` tool — type + size of a workspace path over the read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`
5
+ * and the optional working directory relative paths resolve against (see the harness-workspace-tools spec).
6
+ * Expected outcomes are data variants — `not_found` / `out_of_scope`.
7
+ */
8
+ import { ok } from "neverthrow";
9
+ import { z } from "zod";
10
+ import { defineTool } from "../define-tool.js";
11
+ import { unwrapOrThrow } from "../../lib/result.js";
12
+ const FileStatInputSchema = z.object({
13
+ path: z
14
+ .string()
15
+ .min(1)
16
+ .describe("Path to stat. Relative paths resolve against your working directory; " + "an absolute '/<analysisId>/...' path against the analysis root."),
17
+ });
18
+ export function createFileStatTool(fs, workingDir) {
19
+ return defineTool({
20
+ id: "file_stat",
21
+ description: "Stat a workspace path: whether it is a file or directory and its size " +
22
+ "in bytes. Use before reading to size a file. Missing and out-of-scope " +
23
+ "paths return a data variant, not an error.",
24
+ inputSchema: FileStatInputSchema,
25
+ execute: async ({ path }, ctx) => {
26
+ const result = unwrapOrThrow(await fs.stat({ session: ctx.session, path, workingDir }));
27
+ switch (result.kind) {
28
+ case "ok":
29
+ return ok({ status: "ok", path, type: result.type, size: result.size });
30
+ case "not_found":
31
+ return ok({ status: "not_found", path });
32
+ case "out_of_scope":
33
+ return ok({ status: "out_of_scope", path });
34
+ }
35
+ },
36
+ });
37
+ }
@@ -0,0 +1,57 @@
1
+ /**
2
+ * grep tool — pattern search over the workspace read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`.
5
+ * JS implementation over `list` + `readFile` — no ripgrep binary required.
6
+ * Expected outcomes are data variants: no matches → `no_matches`; over-cap →
7
+ * `truncated` with a marker; missing path → `not_found`; escape attempt →
8
+ * `out_of_scope`. Only unexpected I/O failures throw.
9
+ */
10
+ import type { ListEntry, WorkspaceFilesystem } from "../../workspace/filesystem.js";
11
+ interface Match {
12
+ readonly file: string;
13
+ readonly line: number;
14
+ readonly preview: string;
15
+ }
16
+ type GrepOutput = {
17
+ status: "invalid_pattern";
18
+ pattern: string;
19
+ error: string;
20
+ } | {
21
+ status: "out_of_scope";
22
+ path: string;
23
+ } | {
24
+ status: "not_found";
25
+ path: string;
26
+ } | {
27
+ status: "no_matches";
28
+ path: string;
29
+ pattern: string;
30
+ } | {
31
+ status: "truncated";
32
+ path: string;
33
+ pattern: string;
34
+ matches: Match[];
35
+ cap: {
36
+ maxMatches: number;
37
+ maxBytesPerLine: number;
38
+ };
39
+ } | {
40
+ status: "ok";
41
+ path: string;
42
+ pattern: string;
43
+ matches: Match[];
44
+ };
45
+ export declare function createGrepTool(fs: WorkspaceFilesystem, workingDir?: string): import("../define-tool.js").Tool<{
46
+ pattern: string;
47
+ path: string;
48
+ ignoreCase?: boolean | undefined;
49
+ }, GrepOutput>;
50
+ /** Exposed for tests — the caps `grep` enforces. */
51
+ export declare const GREP_LIMITS: {
52
+ readonly DEFAULT_MAX_MATCHES: 50;
53
+ readonly DEFAULT_MAX_MATCH_BYTES: 512;
54
+ readonly MAX_GREP_FILE_BYTES: number;
55
+ };
56
+ export type GrepListEntry = ListEntry;
57
+ export {};
@@ -0,0 +1,154 @@
1
+ /**
2
+ * grep tool — pattern search over the workspace read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`.
5
+ * JS implementation over `list` + `readFile` — no ripgrep binary required.
6
+ * Expected outcomes are data variants: no matches → `no_matches`; over-cap →
7
+ * `truncated` with a marker; missing path → `not_found`; escape attempt →
8
+ * `out_of_scope`. Only unexpected I/O failures throw.
9
+ */
10
+ import { posix as posixPath } from "node:path";
11
+ import { ok } from "neverthrow";
12
+ import { z } from "zod";
13
+ import { defineTool } from "../define-tool.js";
14
+ import { unwrapOrThrow } from "../../lib/result.js";
15
+ const DEFAULT_MAX_MATCHES = 50;
16
+ const DEFAULT_MAX_MATCH_BYTES = 512;
17
+ /** Files larger than this aren't grepped — keeps a stray binary blob from blocking the seam. */
18
+ const MAX_GREP_FILE_BYTES = 1024 * 1024;
19
+ const MAX_DIR_DEPTH = 8;
20
+ const GrepInputSchema = z.object({
21
+ pattern: z
22
+ .string()
23
+ .min(1)
24
+ .describe("Regular expression to match. Anchored per line; case-sensitive unless " + "`ignoreCase` is true."),
25
+ path: z
26
+ .string()
27
+ .min(1)
28
+ .describe("Workspace path to a file or directory. Directories are searched " + "recursively up to a bounded depth."),
29
+ ignoreCase: z.boolean().optional().describe("Case-insensitive match. Defaults to false."),
30
+ });
31
+ export function createGrepTool(fs, workingDir) {
32
+ return defineTool({
33
+ id: "grep",
34
+ description: "Regex search over workspace files (input data, prior runs, step " +
35
+ "outputs, summaries, syntheses, data profile). Pass a file or a " +
36
+ "directory path; directories are walked recursively. Results are " +
37
+ `capped at ${DEFAULT_MAX_MATCHES} matches and ${DEFAULT_MAX_MATCH_BYTES} ` +
38
+ "bytes per line — narrow your path or pattern if you hit the cap. " +
39
+ "No matches and out-of-scope paths return data variants, not errors.",
40
+ inputSchema: GrepInputSchema,
41
+ execute: async ({ pattern, path, ignoreCase }, ctx) => {
42
+ let regex;
43
+ try {
44
+ regex = new RegExp(pattern, ignoreCase === true ? "i" : "");
45
+ }
46
+ catch (err) {
47
+ return ok({
48
+ status: "invalid_pattern",
49
+ pattern,
50
+ error: err instanceof Error ? err.message : String(err),
51
+ });
52
+ }
53
+ const statResult = unwrapOrThrow(await fs.stat({ session: ctx.session, path, workingDir }));
54
+ if (statResult.kind === "out_of_scope") {
55
+ return ok({ status: "out_of_scope", path });
56
+ }
57
+ if (statResult.kind === "not_found") {
58
+ return ok({ status: "not_found", path });
59
+ }
60
+ const matches = [];
61
+ let truncated = false;
62
+ const session = ctx.session;
63
+ async function searchFile(filePath) {
64
+ if (matches.length >= DEFAULT_MAX_MATCHES) {
65
+ truncated = true;
66
+ return;
67
+ }
68
+ const read = unwrapOrThrow(await fs.readFile({
69
+ session,
70
+ path: filePath,
71
+ maxBytes: MAX_GREP_FILE_BYTES,
72
+ workingDir,
73
+ }));
74
+ if (read.kind === "not_found" || read.kind === "out_of_scope")
75
+ return;
76
+ const buf = read.content;
77
+ if (looksBinary(buf))
78
+ return;
79
+ const text = buf.toString("utf8");
80
+ if (read.kind === "truncated")
81
+ truncated = true;
82
+ const lines = text.split(/\r?\n/);
83
+ for (let i = 0; i < lines.length; i++) {
84
+ if (matches.length >= DEFAULT_MAX_MATCHES) {
85
+ truncated = true;
86
+ return;
87
+ }
88
+ const line = lines[i];
89
+ if (regex.test(line)) {
90
+ matches.push({
91
+ file: filePath,
92
+ line: i + 1,
93
+ preview: line.length > DEFAULT_MAX_MATCH_BYTES ? line.slice(0, DEFAULT_MAX_MATCH_BYTES) : line,
94
+ });
95
+ }
96
+ }
97
+ }
98
+ async function walk(dirPath, depth) {
99
+ if (depth > MAX_DIR_DEPTH)
100
+ return;
101
+ if (matches.length >= DEFAULT_MAX_MATCHES) {
102
+ truncated = true;
103
+ return;
104
+ }
105
+ const list = unwrapOrThrow(await fs.list({ session, path: dirPath, workingDir }));
106
+ if (list.kind !== "ok")
107
+ return;
108
+ for (const entry of list.entries) {
109
+ if (matches.length >= DEFAULT_MAX_MATCHES) {
110
+ truncated = true;
111
+ return;
112
+ }
113
+ const child = posixPath.join(dirPath, entry.name);
114
+ if (entry.type === "directory") {
115
+ await walk(child, depth + 1);
116
+ }
117
+ else {
118
+ await searchFile(child);
119
+ }
120
+ }
121
+ }
122
+ if (statResult.type === "file") {
123
+ await searchFile(path);
124
+ }
125
+ else {
126
+ await walk(path, 0);
127
+ }
128
+ if (matches.length === 0) {
129
+ return ok({ status: "no_matches", path, pattern });
130
+ }
131
+ if (truncated) {
132
+ return ok({
133
+ status: "truncated",
134
+ path,
135
+ pattern,
136
+ matches,
137
+ cap: { maxMatches: DEFAULT_MAX_MATCHES, maxBytesPerLine: DEFAULT_MAX_MATCH_BYTES },
138
+ });
139
+ }
140
+ return ok({ status: "ok", path, pattern, matches });
141
+ },
142
+ });
143
+ }
144
+ /** Quick binary heuristic — skip files with NULs in the first kibibyte. */
145
+ function looksBinary(buf) {
146
+ const probe = buf.subarray(0, Math.min(buf.length, 1024));
147
+ return probe.includes(0);
148
+ }
149
+ /** Exposed for tests — the caps `grep` enforces. */
150
+ export const GREP_LIMITS = {
151
+ DEFAULT_MAX_MATCHES,
152
+ DEFAULT_MAX_MATCH_BYTES,
153
+ MAX_GREP_FILE_BYTES,
154
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Workspace barrel — the workspace tool surfaces.
3
+ *
4
+ * Read surface (sandbox-independent): semantic file search, raw read + grep
5
+ * over the workspace filesystem seam, plus file/plan display.
6
+ *
7
+ * Mutate surface (sandbox-gated): `execute_command` (single chokepoint for
8
+ * sandbox commands), `write_file` and `edit_file` scoped to the step's
9
+ * writable artifact directory. Each mutate factory captures a `SandboxClient`
10
+ * and the step coordinates; only `execute_command` is permitted to drive
11
+ * sandbox-server's `/exec` — `write_file` / `edit_file` ride the same
12
+ * submit/await path through `runSandboxExec`.
13
+ */
14
+ export * from "./workspace-search.js";
15
+ export * from "./show-file.js";
16
+ export * from "./show-plan.js";
17
+ export * from "./read-file.js";
18
+ export * from "./list-files.js";
19
+ export * from "./file-stat.js";
20
+ export * from "./grep.js";
21
+ export * from "./mutator.js";
22
+ export * from "./execute-command.js";
23
+ export * from "./write-file.js";
24
+ export * from "./edit-file.js";
25
+ export { EXEC_STREAM_BYTE_CAP, boundExecResult } from "./result-bounds.js";
26
+ export type { BoundedExecResult } from "./result-bounds.js";
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Workspace barrel — the workspace tool surfaces.
3
+ *
4
+ * Read surface (sandbox-independent): semantic file search, raw read + grep
5
+ * over the workspace filesystem seam, plus file/plan display.
6
+ *
7
+ * Mutate surface (sandbox-gated): `execute_command` (single chokepoint for
8
+ * sandbox commands), `write_file` and `edit_file` scoped to the step's
9
+ * writable artifact directory. Each mutate factory captures a `SandboxClient`
10
+ * and the step coordinates; only `execute_command` is permitted to drive
11
+ * sandbox-server's `/exec` — `write_file` / `edit_file` ride the same
12
+ * submit/await path through `runSandboxExec`.
13
+ */
14
+ // Read surface
15
+ export * from "./workspace-search.js";
16
+ export * from "./show-file.js";
17
+ export * from "./show-plan.js";
18
+ export * from "./read-file.js";
19
+ export * from "./list-files.js";
20
+ export * from "./file-stat.js";
21
+ export * from "./grep.js";
22
+ // Mutate surface
23
+ export * from "./mutator.js";
24
+ export * from "./execute-command.js";
25
+ export * from "./write-file.js";
26
+ export * from "./edit-file.js";
27
+ export { EXEC_STREAM_BYTE_CAP, boundExecResult } from "./result-bounds.js";
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `list_files` tool — directory listing over the workspace read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`
5
+ * and the optional working directory relative paths resolve against (see the harness-workspace-tools spec).
6
+ * Expected outcomes are data variants — a missing path is `not_found`, a path
7
+ * escaping the analysis tree is `out_of_scope`.
8
+ */
9
+ import type { ListEntry, WorkspaceFilesystem } from "../../workspace/filesystem.js";
10
+ type ListFilesOutput = {
11
+ status: "ok";
12
+ path: string;
13
+ entries: readonly ListEntry[];
14
+ } | {
15
+ status: "not_found";
16
+ path: string;
17
+ } | {
18
+ status: "out_of_scope";
19
+ path: string;
20
+ };
21
+ export declare function createListFilesTool(fs: WorkspaceFilesystem, workingDir?: string): import("../define-tool.js").Tool<{
22
+ path: string;
23
+ }, ListFilesOutput>;
24
+ export {};
@@ -0,0 +1,38 @@
1
+ /**
2
+ * `list_files` tool — directory listing over the workspace read seam.
3
+ *
4
+ * Dependency-bearing factory (see the harness-durable-runtime spec): captures the `WorkspaceFilesystem`
5
+ * and the optional working directory relative paths resolve against (see the harness-workspace-tools spec).
6
+ * Expected outcomes are data variants — a missing path is `not_found`, a path
7
+ * escaping the analysis tree is `out_of_scope`.
8
+ */
9
+ import { ok } from "neverthrow";
10
+ import { z } from "zod";
11
+ import { defineTool } from "../define-tool.js";
12
+ import { unwrapOrThrow } from "../../lib/result.js";
13
+ const ListFilesInputSchema = z.object({
14
+ path: z
15
+ .string()
16
+ .min(1)
17
+ .describe("Directory path. Relative paths resolve against your working directory; " + "an absolute '/<analysisId>/...' path against the analysis root."),
18
+ });
19
+ export function createListFilesTool(fs, workingDir) {
20
+ return defineTool({
21
+ id: "list_files",
22
+ description: "List the entries (files and directories, with file sizes) in a " +
23
+ "workspace directory. Faster than `ls` via execute_command. Missing " +
24
+ "and out-of-scope paths return a data variant, not an error.",
25
+ inputSchema: ListFilesInputSchema,
26
+ execute: async ({ path }, ctx) => {
27
+ const result = unwrapOrThrow(await fs.list({ session: ctx.session, path, workingDir }));
28
+ switch (result.kind) {
29
+ case "ok":
30
+ return ok({ status: "ok", path, entries: result.entries });
31
+ case "not_found":
32
+ return ok({ status: "not_found", path });
33
+ case "out_of_scope":
34
+ return ok({ status: "out_of_scope", path });
35
+ }
36
+ },
37
+ });
38
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The workspace mutate seam — `{ writeFile }` confined to one agent's writable
3
+ * working directory. The write-side counterpart to `WorkspaceFilesystem`
4
+ * (see the harness-workspace-tools spec).
5
+ *
6
+ * It lives here (next to `run-exec`) rather than under `workspace/` because the
7
+ * write path is sandbox-coupled: a write is one `SandboxClient` exec, not a
8
+ * host `fs` call. The seam owns the whole gauntlet that `write_file` and
9
+ * `edit_file` previously each re-implemented inline — resolve + confine to the
10
+ * working directory, derive the in-sandbox path, and write the bytes through
11
+ * the sandbox — so the confinement invariant is concentrated in one place
12
+ * instead of being a per-tool convention.
13
+ */
14
+ import type { ProvenanceCollector } from "../../provenance/collector.js";
15
+ import type { SandboxClient } from "../../sandbox/client.js";
16
+ import type { SandboxRef } from "../../sandbox/types.js";
17
+ import type { EmitFn } from "../define-tool.js";
18
+ import { type BoundedExecResult } from "./result-bounds.js";
19
+ /** Outcome of a confined write. Expected outcomes are data variants — never throws. */
20
+ export type WriteFileResult = {
21
+ readonly status: "ok";
22
+ readonly path: string;
23
+ readonly bytesWritten: number;
24
+ } | {
25
+ readonly status: "out_of_scope";
26
+ readonly path: string;
27
+ } | {
28
+ readonly status: "out_of_prefix";
29
+ readonly path: string;
30
+ } | ({
31
+ readonly status: "write_failed";
32
+ readonly path: string;
33
+ } & BoundedExecResult);
34
+ /**
35
+ * Agent-visible name of the tool driving a confined write. Rides the write args
36
+ * so a successful write is attributed to the invoking tool in provenance
37
+ * (`inflexa:tool` in the signed document) — the seam records the write without
38
+ * inspecting its caller.
39
+ */
40
+ export type MutateToolName = "write_file" | "edit_file";
41
+ export interface WorkspaceMutatorDeps {
42
+ readonly sandboxClient: SandboxClient;
43
+ readonly sandbox: SandboxRef;
44
+ /** Absolute host root of this analysis's workspace tree — used by the resolver. */
45
+ readonly workspaceRoot: string;
46
+ readonly analysisId: string;
47
+ readonly stepId: string;
48
+ readonly workflowId: string;
49
+ /** Absolute host working directory: relative paths resolve here AND writes are confined here. */
50
+ readonly workingDir: string;
51
+ /**
52
+ * In-sandbox absolute path of `workingDir` (mirrors `execute_command`'s
53
+ * `defaultCwd`). Passed as the write exec's `cwd` so sandbox-server roots
54
+ * its tree-differ here and reports the written file as a live delta — an
55
+ * empty `cwd` disables the differ, so write-only files (e.g. scripts/)
56
+ * would never reach the live file tree.
57
+ */
58
+ readonly sandboxWorkingDir: string;
59
+ readonly nextFunctionId: () => string;
60
+ readonly deadlineMs: () => number;
61
+ /**
62
+ * Step-scoped lineage collector. On a successful confined write the seam
63
+ * records a file-tool provenance record here — hash and size computed
64
+ * in-process from the exact bytes written. Omit to skip recording; the
65
+ * write itself proceeds unchanged.
66
+ */
67
+ readonly lineageCollector?: ProvenanceCollector;
68
+ }
69
+ export interface WorkspaceMutator {
70
+ /**
71
+ * Resolve `path` against the working directory (relative) or analysis root
72
+ * (absolute `/{analysisId}/...`), confine the result to the working
73
+ * directory, and write `content` through the sandbox. `toolName` names the
74
+ * invoking tool so a successful write is attributed to it in provenance.
75
+ */
76
+ writeFile(args: {
77
+ readonly path: string;
78
+ readonly content: string;
79
+ readonly toolName: MutateToolName;
80
+ readonly emit: EmitFn;
81
+ }): Promise<WriteFileResult>;
82
+ }
83
+ export declare function createWorkspaceMutator(deps: WorkspaceMutatorDeps): WorkspaceMutator;
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The workspace mutate seam — `{ writeFile }` confined to one agent's writable
3
+ * working directory. The write-side counterpart to `WorkspaceFilesystem`
4
+ * (see the harness-workspace-tools spec).
5
+ *
6
+ * It lives here (next to `run-exec`) rather than under `workspace/` because the
7
+ * write path is sandbox-coupled: a write is one `SandboxClient` exec, not a
8
+ * host `fs` call. The seam owns the whole gauntlet that `write_file` and
9
+ * `edit_file` previously each re-implemented inline — resolve + confine to the
10
+ * working directory, derive the in-sandbox path, and write the bytes through
11
+ * the sandbox — so the confinement invariant is concentrated in one place
12
+ * instead of being a per-tool convention.
13
+ */
14
+ import { computeSha256 } from "../../lib/fs-helpers.js";
15
+ import { resolveForWrite } from "../../workspace/paths.js";
16
+ import { boundExecResult } from "./result-bounds.js";
17
+ import { runSandboxExec } from "./run-exec.js";
18
+ const WRITE_BYTES_PROGRAM = [
19
+ "import sys,base64,os",
20
+ "p=sys.argv[1]",
21
+ "os.makedirs(os.path.dirname(p), exist_ok=True)",
22
+ "open(p,'wb').write(base64.b64decode(sys.argv[2]))",
23
+ ].join("\n");
24
+ export function createWorkspaceMutator(deps) {
25
+ return {
26
+ async writeFile({ path, content, toolName, emit }) {
27
+ const scoped = resolveForWrite({
28
+ workspaceRoot: deps.workspaceRoot,
29
+ analysisId: deps.analysisId,
30
+ workingDir: deps.workingDir,
31
+ path,
32
+ });
33
+ if (scoped.kind === "out_of_scope")
34
+ return { status: "out_of_scope", path };
35
+ if (scoped.kind === "out_of_prefix")
36
+ return { status: "out_of_prefix", path };
37
+ // Analysis-root-relative, forward-slashed: the sandbox path prepends
38
+ // the `/{analysisId}` mount; the provenance record uses the bare tail
39
+ // (the collector normalizes it step-relative itself).
40
+ const relative = scoped.relative.split("\\").join("/");
41
+ const sandboxPath = `/${deps.analysisId}/${relative}`;
42
+ const contentBytes = Buffer.from(content, "utf8");
43
+ const execId = `${deps.workflowId}:${deps.stepId}:${deps.nextFunctionId()}`;
44
+ const result = await runSandboxExec({
45
+ sandboxClient: deps.sandboxClient,
46
+ sandbox: deps.sandbox,
47
+ execId,
48
+ command: ["python3", "-c", WRITE_BYTES_PROGRAM, sandboxPath, contentBytes.toString("base64")],
49
+ cwd: deps.sandboxWorkingDir,
50
+ deadlineMs: deps.deadlineMs(),
51
+ emit,
52
+ });
53
+ if (result.exitCode !== 0) {
54
+ return { status: "write_failed", path: sandboxPath, ...boundExecResult(result) };
55
+ }
56
+ // Attest the write in-process from the exact bytes just written — the
57
+ // seam owns write provenance the same way it owns confinement. The
58
+ // sandbox exec frame this write produces is deliberately not fed to
59
+ // `feedExecFrame`: doing so would mint a `python3`+base64 command
60
+ // record, the very misattribution this file-tool record supersedes.
61
+ //
62
+ // `timestamp` is a write-time wall clock — normally a replay hazard in
63
+ // provenance, but safe here because the record contributes only producer
64
+ // IDENTITY downstream: the bridge drops it (the cli's file-tool ref has no
65
+ // timestamp field) and the signed `inflexa:FileToolWrite` activity carries
66
+ // just the tool name, so a re-execution's fresh stamp changes nothing in
67
+ // the attested graph. Do NOT start forwarding it into an identifier or a
68
+ // formal PROV position without making it replay-stable first.
69
+ if (deps.lineageCollector) {
70
+ deps.lineageCollector.recordFileToolWrite({
71
+ path: relative,
72
+ hash: computeSha256(contentBytes),
73
+ size: contentBytes.length,
74
+ toolName,
75
+ timestamp: new Date().toISOString(),
76
+ });
77
+ }
78
+ return { status: "ok", path: sandboxPath, bytesWritten: contentBytes.length };
79
+ },
80
+ };
81
+ }