@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.
- package/LICENSE +202 -0
- package/NOTICE +5 -0
- package/README.md +58 -0
- package/dist/agents/conversation-agent.d.ts +105 -0
- package/dist/agents/conversation-agent.js +140 -0
- package/dist/agents/report-builder.d.ts +32 -0
- package/dist/agents/report-builder.js +31 -0
- package/dist/agents/sandbox/__fixtures__/deps.d.ts +23 -0
- package/dist/agents/sandbox/__fixtures__/deps.js +96 -0
- package/dist/agents/sandbox/bulk-transcriptomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/bulk-transcriptomics-agent.js +22 -0
- package/dist/agents/sandbox/cheminformatics-agent.d.ts +9 -0
- package/dist/agents/sandbox/cheminformatics-agent.js +62 -0
- package/dist/agents/sandbox/chromatin-agent.d.ts +8 -0
- package/dist/agents/sandbox/chromatin-agent.js +24 -0
- package/dist/agents/sandbox/data-profiler.d.ts +10 -0
- package/dist/agents/sandbox/data-profiler.js +24 -0
- package/dist/agents/sandbox/dna-methylation-agent.d.ts +8 -0
- package/dist/agents/sandbox/dna-methylation-agent.js +24 -0
- package/dist/agents/sandbox/drug-repurposing-agent.d.ts +8 -0
- package/dist/agents/sandbox/drug-repurposing-agent.js +54 -0
- package/dist/agents/sandbox/enrichment-agent.d.ts +8 -0
- package/dist/agents/sandbox/enrichment-agent.js +24 -0
- package/dist/agents/sandbox/ephemeral-executor.d.ts +9 -0
- package/dist/agents/sandbox/ephemeral-executor.js +29 -0
- package/dist/agents/sandbox/genomic-variant-agent.d.ts +8 -0
- package/dist/agents/sandbox/genomic-variant-agent.js +27 -0
- package/dist/agents/sandbox/immune-profiling-agent.d.ts +8 -0
- package/dist/agents/sandbox/immune-profiling-agent.js +43 -0
- package/dist/agents/sandbox/index.d.ts +31 -0
- package/dist/agents/sandbox/index.js +96 -0
- package/dist/agents/sandbox/metabolomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/metabolomics-agent.js +15 -0
- package/dist/agents/sandbox/microbiome-agent.d.ts +8 -0
- package/dist/agents/sandbox/microbiome-agent.js +15 -0
- package/dist/agents/sandbox/multi-omics-integration-agent.d.ts +8 -0
- package/dist/agents/sandbox/multi-omics-integration-agent.js +33 -0
- package/dist/agents/sandbox/multimodal-sc-agent.d.ts +8 -0
- package/dist/agents/sandbox/multimodal-sc-agent.js +15 -0
- package/dist/agents/sandbox/network-agent.d.ts +8 -0
- package/dist/agents/sandbox/network-agent.js +25 -0
- package/dist/agents/sandbox/pkpd-clinical-response-agent.d.ts +8 -0
- package/dist/agents/sandbox/pkpd-clinical-response-agent.js +59 -0
- package/dist/agents/sandbox/proteomics-agent.d.ts +8 -0
- package/dist/agents/sandbox/proteomics-agent.js +15 -0
- package/dist/agents/sandbox/scientific-executor.d.ts +9 -0
- package/dist/agents/sandbox/scientific-executor.js +56 -0
- package/dist/agents/sandbox/shared.d.ts +100 -0
- package/dist/agents/sandbox/shared.js +195 -0
- package/dist/agents/sandbox/single-cell-agent.d.ts +8 -0
- package/dist/agents/sandbox/single-cell-agent.js +25 -0
- package/dist/agents/sandbox/spatial-omics-agent.d.ts +8 -0
- package/dist/agents/sandbox/spatial-omics-agent.js +15 -0
- package/dist/agents/sandbox/statistical-modeling-agent.d.ts +8 -0
- package/dist/agents/sandbox/statistical-modeling-agent.js +37 -0
- package/dist/agents/sandbox/translational-safety-agent.d.ts +8 -0
- package/dist/agents/sandbox/translational-safety-agent.js +59 -0
- package/dist/agents/sandbox/types.d.ts +34 -0
- package/dist/agents/sandbox/types.js +15 -0
- package/dist/agents/sandbox/validate-skills.d.ts +18 -0
- package/dist/agents/sandbox/validate-skills.js +40 -0
- package/dist/agents/sandbox-catalog.d.ts +33 -0
- package/dist/agents/sandbox-catalog.js +44 -0
- package/dist/agents/system-prompt.d.ts +25 -0
- package/dist/agents/system-prompt.js +23 -0
- package/dist/app/chat-turn.d.ts +35 -0
- package/dist/app/chat-turn.js +64 -0
- package/dist/app/data-profile-policy.d.ts +36 -0
- package/dist/app/data-profile-policy.js +37 -0
- package/dist/app/message-assembly.d.ts +65 -0
- package/dist/app/message-assembly.js +61 -0
- package/dist/app/synthesize-run.d.ts +57 -0
- package/dist/app/synthesize-run.js +103 -0
- package/dist/auth/local-auth-context.d.ts +19 -0
- package/dist/auth/local-auth-context.js +20 -0
- package/dist/auth/local-run-authorizer.d.ts +10 -0
- package/dist/auth/local-run-authorizer.js +23 -0
- package/dist/auth/types.d.ts +166 -0
- package/dist/auth/types.js +61 -0
- package/dist/billing/cached-resolver.d.ts +23 -0
- package/dist/billing/cached-resolver.js +61 -0
- package/dist/billing/noop-resolver.d.ts +6 -0
- package/dist/billing/noop-resolver.js +7 -0
- package/dist/billing/noop-run-charge.d.ts +6 -0
- package/dist/billing/noop-run-charge.js +10 -0
- package/dist/billing/resolver.d.ts +64 -0
- package/dist/billing/resolver.js +24 -0
- package/dist/billing/run-charge.d.ts +24 -0
- package/dist/billing/run-charge.js +9 -0
- package/dist/config/resource-limits.d.ts +76 -0
- package/dist/config/resource-limits.js +116 -0
- package/dist/contracts/analogy-report.d.ts +120 -0
- package/dist/contracts/analogy-report.js +50 -0
- package/dist/contracts/chat-events.d.ts +61 -0
- package/dist/contracts/chat-events.js +13 -0
- package/dist/contracts/chat-parts.d.ts +308 -0
- package/dist/contracts/chat-parts.js +13 -0
- package/dist/contracts/content-url.d.ts +49 -0
- package/dist/contracts/content-url.js +56 -0
- package/dist/contracts/index.d.ts +12 -0
- package/dist/contracts/index.js +5 -0
- package/dist/contracts/message.d.ts +36 -0
- package/dist/contracts/message.js +9 -0
- package/dist/contracts/part-registry.d.ts +18 -0
- package/dist/contracts/part-registry.js +28 -0
- package/dist/contracts/schemas/chat-events.d.ts +90 -0
- package/dist/contracts/schemas/chat-events.js +43 -0
- package/dist/contracts/schemas/chat-parts.d.ts +683 -0
- package/dist/contracts/schemas/chat-parts.js +295 -0
- package/dist/contracts/schemas/index.d.ts +2 -0
- package/dist/contracts/schemas/index.js +2 -0
- package/dist/contracts/target-assessment-row.d.ts +85 -0
- package/dist/contracts/target-assessment-row.js +37 -0
- package/dist/contracts/target-dossier.d.ts +16720 -0
- package/dist/contracts/target-dossier.js +1339 -0
- package/dist/data/clinical-benchmarks.json +108 -0
- package/dist/data/protein-family-modality.json +101 -0
- package/dist/data/safety-panel-schema.d.ts +64 -0
- package/dist/data/safety-panel-schema.js +34 -0
- package/dist/data/safety-panel.json +436 -0
- package/dist/execution/artifact-metadata.d.ts +74 -0
- package/dist/execution/artifact-metadata.js +203 -0
- package/dist/execution/artifact-record.d.ts +19 -0
- package/dist/execution/artifact-record.js +7 -0
- package/dist/execution/artifact-registration.d.ts +36 -0
- package/dist/execution/artifact-registration.js +61 -0
- package/dist/execution/artifact-registry.d.ts +82 -0
- package/dist/execution/artifact-registry.js +17 -0
- package/dist/execution/dbos-run-launcher.d.ts +7 -0
- package/dist/execution/dbos-run-launcher.js +38 -0
- package/dist/execution/ephemeral-runner.d.ts +81 -0
- package/dist/execution/ephemeral-runner.js +161 -0
- package/dist/execution/filesystem-artifact-registry.d.ts +57 -0
- package/dist/execution/filesystem-artifact-registry.js +92 -0
- package/dist/execution/noop-artifact-registry.d.ts +11 -0
- package/dist/execution/noop-artifact-registry.js +17 -0
- package/dist/execution/post-step-pipeline.d.ts +70 -0
- package/dist/execution/post-step-pipeline.js +207 -0
- package/dist/execution/post-step.d.ts +20 -0
- package/dist/execution/post-step.js +65 -0
- package/dist/execution/reconcile-manifest.d.ts +25 -0
- package/dist/execution/reconcile-manifest.js +132 -0
- package/dist/execution/report-render.d.ts +39 -0
- package/dist/execution/report-render.js +98 -0
- package/dist/execution/report-runner.d.ts +87 -0
- package/dist/execution/report-runner.js +227 -0
- package/dist/execution/run-authorizer.d.ts +43 -0
- package/dist/execution/run-authorizer.js +17 -0
- package/dist/execution/run-launcher.d.ts +36 -0
- package/dist/execution/run-launcher.js +15 -0
- package/dist/execution/run-synthesis.d.ts +107 -0
- package/dist/execution/run-synthesis.js +329 -0
- package/dist/execution/staged-input.d.ts +41 -0
- package/dist/execution/staged-input.js +15 -0
- package/dist/execution/step-summary-metrics.d.ts +10 -0
- package/dist/execution/step-summary-metrics.js +22 -0
- package/dist/execution/step-summary.d.ts +55 -0
- package/dist/execution/step-summary.js +106 -0
- package/dist/execution/topo-sort.d.ts +33 -0
- package/dist/execution/topo-sort.js +99 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.js +157 -0
- package/dist/input-sanitization.d.ts +22 -0
- package/dist/input-sanitization.js +64 -0
- package/dist/lib/async-utils.d.ts +10 -0
- package/dist/lib/async-utils.js +24 -0
- package/dist/lib/chrome.d.ts +15 -0
- package/dist/lib/chrome.js +95 -0
- package/dist/lib/db-result.d.ts +93 -0
- package/dist/lib/db-result.js +197 -0
- package/dist/lib/fs-helpers.d.ts +74 -0
- package/dist/lib/fs-helpers.js +119 -0
- package/dist/lib/fs-result.d.ts +98 -0
- package/dist/lib/fs-result.js +137 -0
- package/dist/lib/host-concurrency.d.ts +16 -0
- package/dist/lib/host-concurrency.js +60 -0
- package/dist/lib/identifiers.d.ts +8 -0
- package/dist/lib/identifiers.js +10 -0
- package/dist/lib/metrics.d.ts +7 -0
- package/dist/lib/metrics.js +12 -0
- package/dist/lib/mime-detect.d.ts +17 -0
- package/dist/lib/mime-detect.js +29 -0
- package/dist/lib/otel.d.ts +30 -0
- package/dist/lib/otel.js +102 -0
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +35 -0
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +107 -0
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +46 -0
- package/dist/lib/regulatory-corpus/fetch-ich.js +173 -0
- package/dist/lib/regulatory-corpus.d.ts +88 -0
- package/dist/lib/regulatory-corpus.js +141 -0
- package/dist/lib/result.d.ts +87 -0
- package/dist/lib/result.js +103 -0
- package/dist/lib/storage.d.ts +29 -0
- package/dist/lib/storage.js +37 -0
- package/dist/lib/streamed-download.d.ts +28 -0
- package/dist/lib/streamed-download.js +111 -0
- package/dist/lib/trace-context.d.ts +11 -0
- package/dist/lib/trace-context.js +49 -0
- package/dist/loop/__fixtures__/scripted-provider.d.ts +31 -0
- package/dist/loop/__fixtures__/scripted-provider.js +57 -0
- package/dist/loop/budget-exceeded.d.ts +22 -0
- package/dist/loop/budget-exceeded.js +41 -0
- package/dist/loop/metrics.d.ts +25 -0
- package/dist/loop/metrics.js +46 -0
- package/dist/loop/run-agent.d.ts +28 -0
- package/dist/loop/run-agent.js +204 -0
- package/dist/loop/run-step.d.ts +29 -0
- package/dist/loop/run-step.js +34 -0
- package/dist/loop/run-to-terminal.d.ts +46 -0
- package/dist/loop/run-to-terminal.js +51 -0
- package/dist/loop/types.d.ts +95 -0
- package/dist/loop/types.js +10 -0
- package/dist/memory/ai-sdk-message-storage.d.ts +20 -0
- package/dist/memory/ai-sdk-message-storage.js +114 -0
- package/dist/memory/card-builders.d.ts +114 -0
- package/dist/memory/card-builders.js +231 -0
- package/dist/memory/content-to-cortex.d.ts +42 -0
- package/dist/memory/content-to-cortex.js +85 -0
- package/dist/memory/count-tokens.d.ts +18 -0
- package/dist/memory/count-tokens.js +64 -0
- package/dist/memory/derive-thread-title.d.ts +14 -0
- package/dist/memory/derive-thread-title.js +26 -0
- package/dist/memory/message-backfill.d.ts +2 -0
- package/dist/memory/message-backfill.js +38 -0
- package/dist/memory/reconstruct-cards.d.ts +23 -0
- package/dist/memory/reconstruct-cards.js +64 -0
- package/dist/memory/thread-history.d.ts +80 -0
- package/dist/memory/thread-history.js +187 -0
- package/dist/memory/thread-store.d.ts +66 -0
- package/dist/memory/thread-store.js +88 -0
- package/dist/memory/working-memory.d.ts +135 -0
- package/dist/memory/working-memory.js +185 -0
- package/dist/prompts/SOUL.d.ts +17 -0
- package/dist/prompts/SOUL.js +173 -0
- package/dist/prompts/analogical-reasoner.d.ts +1 -0
- package/dist/prompts/analogical-reasoner.js +170 -0
- package/dist/prompts/conversation.d.ts +1 -0
- package/dist/prompts/conversation.js +697 -0
- package/dist/prompts/execute-analysis/step-summary.d.ts +1 -0
- package/dist/prompts/execute-analysis/step-summary.js +38 -0
- package/dist/prompts/literature-reviewer.d.ts +1 -0
- package/dist/prompts/literature-reviewer.js +107 -0
- package/dist/prompts/planner.d.ts +2 -0
- package/dist/prompts/planner.js +259 -0
- package/dist/prompts/report-builder.d.ts +1 -0
- package/dist/prompts/report-builder.js +127 -0
- package/dist/prompts/sandbox/bulk-transcriptomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/bulk-transcriptomics-agent.js +78 -0
- package/dist/prompts/sandbox/cheminformatics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/cheminformatics-agent.js +224 -0
- package/dist/prompts/sandbox/chromatin-agent.d.ts +1 -0
- package/dist/prompts/sandbox/chromatin-agent.js +100 -0
- package/dist/prompts/sandbox/data-profiler.d.ts +1 -0
- package/dist/prompts/sandbox/data-profiler.js +291 -0
- package/dist/prompts/sandbox/dna-methylation-agent.d.ts +1 -0
- package/dist/prompts/sandbox/dna-methylation-agent.js +96 -0
- package/dist/prompts/sandbox/drug-repurposing-agent.d.ts +1 -0
- package/dist/prompts/sandbox/drug-repurposing-agent.js +144 -0
- package/dist/prompts/sandbox/enrichment-agent.d.ts +1 -0
- package/dist/prompts/sandbox/enrichment-agent.js +89 -0
- package/dist/prompts/sandbox/ephemeral-executor.d.ts +1 -0
- package/dist/prompts/sandbox/ephemeral-executor.js +66 -0
- package/dist/prompts/sandbox/genomic-variant-agent.d.ts +1 -0
- package/dist/prompts/sandbox/genomic-variant-agent.js +83 -0
- package/dist/prompts/sandbox/immune-profiling-agent.d.ts +1 -0
- package/dist/prompts/sandbox/immune-profiling-agent.js +101 -0
- package/dist/prompts/sandbox/metabolomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/metabolomics-agent.js +89 -0
- package/dist/prompts/sandbox/microbiome-agent.d.ts +1 -0
- package/dist/prompts/sandbox/microbiome-agent.js +109 -0
- package/dist/prompts/sandbox/multi-omics-integration-agent.d.ts +1 -0
- package/dist/prompts/sandbox/multi-omics-integration-agent.js +122 -0
- package/dist/prompts/sandbox/multimodal-sc-agent.d.ts +1 -0
- package/dist/prompts/sandbox/multimodal-sc-agent.js +90 -0
- package/dist/prompts/sandbox/network-agent.d.ts +1 -0
- package/dist/prompts/sandbox/network-agent.js +95 -0
- package/dist/prompts/sandbox/pkpd-clinical-response-agent.d.ts +1 -0
- package/dist/prompts/sandbox/pkpd-clinical-response-agent.js +71 -0
- package/dist/prompts/sandbox/proteomics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/proteomics-agent.js +93 -0
- package/dist/prompts/sandbox/scientific-executor.d.ts +1 -0
- package/dist/prompts/sandbox/scientific-executor.js +68 -0
- package/dist/prompts/sandbox/single-cell-agent.d.ts +1 -0
- package/dist/prompts/sandbox/single-cell-agent.js +129 -0
- package/dist/prompts/sandbox/spatial-omics-agent.d.ts +1 -0
- package/dist/prompts/sandbox/spatial-omics-agent.js +94 -0
- package/dist/prompts/sandbox/statistical-modeling-agent.d.ts +1 -0
- package/dist/prompts/sandbox/statistical-modeling-agent.js +112 -0
- package/dist/prompts/sandbox/translational-safety-agent.d.ts +1 -0
- package/dist/prompts/sandbox/translational-safety-agent.js +105 -0
- package/dist/prompts/sandbox-standards.d.ts +18 -0
- package/dist/prompts/sandbox-standards.js +358 -0
- package/dist/prompts/synthesis-agent.d.ts +1 -0
- package/dist/prompts/synthesis-agent.js +289 -0
- package/dist/prompts/target-assessment/briefs/executive-recommendation.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/executive-recommendation.js +85 -0
- package/dist/prompts/target-assessment/briefs/index.d.ts +4 -0
- package/dist/prompts/target-assessment/briefs/index.js +4 -0
- package/dist/prompts/target-assessment/briefs/liability-bullets.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/liability-bullets.js +114 -0
- package/dist/prompts/target-assessment/briefs/target-organ-liabilities.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/target-organ-liabilities.js +29 -0
- package/dist/prompts/target-assessment/briefs/translational-commentary.d.ts +1 -0
- package/dist/prompts/target-assessment/briefs/translational-commentary.js +23 -0
- package/dist/prompts/target-assessment/drugs-in-class.d.ts +1 -0
- package/dist/prompts/target-assessment/drugs-in-class.js +29 -0
- package/dist/prompts/target-assessment/modulator-triage.d.ts +1 -0
- package/dist/prompts/target-assessment/modulator-triage.js +31 -0
- package/dist/prompts/target-assessment/off-target-annotator.d.ts +1 -0
- package/dist/prompts/target-assessment/off-target-annotator.js +28 -0
- package/dist/prompts/target-assessment/tox-voice/core.d.ts +1 -0
- package/dist/prompts/target-assessment/tox-voice/core.js +74 -0
- package/dist/prompts/target-assessment/tox-voice/critique.d.ts +7 -0
- package/dist/prompts/target-assessment/tox-voice/critique.js +109 -0
- package/dist/prompts/target-assessment/tox-voice/exemplars.d.ts +8 -0
- package/dist/prompts/target-assessment/tox-voice/exemplars.js +24 -0
- package/dist/prompts/target-assessment/tox-voice/index.d.ts +4 -0
- package/dist/prompts/target-assessment/tox-voice/index.js +4 -0
- package/dist/prompts/target-assessment/tox-voice/vocabulary.d.ts +15 -0
- package/dist/prompts/target-assessment/tox-voice/vocabulary.js +72 -0
- package/dist/provenance/collector.d.ts +148 -0
- package/dist/provenance/collector.js +296 -0
- package/dist/provenance/exec-frame.d.ts +36 -0
- package/dist/provenance/exec-frame.js +49 -0
- package/dist/provenance/types.d.ts +95 -0
- package/dist/provenance/types.js +64 -0
- package/dist/providers/__fixtures__/session.d.ts +16 -0
- package/dist/providers/__fixtures__/session.js +20 -0
- package/dist/providers/ai-sdk.d.ts +47 -0
- package/dist/providers/ai-sdk.js +142 -0
- package/dist/providers/anthropic.d.ts +22 -0
- package/dist/providers/anthropic.js +26 -0
- package/dist/providers/embedding.d.ts +32 -0
- package/dist/providers/embedding.js +42 -0
- package/dist/providers/errors.d.ts +80 -0
- package/dist/providers/errors.js +137 -0
- package/dist/providers/llm-capabilities.d.ts +33 -0
- package/dist/providers/llm-capabilities.js +58 -0
- package/dist/providers/streaming-chat.d.ts +23 -0
- package/dist/providers/streaming-chat.js +61 -0
- package/dist/providers/types.d.ts +59 -0
- package/dist/providers/types.js +8 -0
- package/dist/runtime/assemble.d.ts +68 -0
- package/dist/runtime/assemble.js +46 -0
- package/dist/runtime/boot.d.ts +73 -0
- package/dist/runtime/boot.js +65 -0
- package/dist/runtime/connection-budget.d.ts +48 -0
- package/dist/runtime/connection-budget.js +57 -0
- package/dist/runtime/dbos.d.ts +94 -0
- package/dist/runtime/dbos.js +160 -0
- package/dist/runtime/lifecycle.d.ts +12 -0
- package/dist/runtime/lifecycle.js +19 -0
- package/dist/runtime/pools.d.ts +25 -0
- package/dist/runtime/pools.js +30 -0
- package/dist/runtime/shutdown.d.ts +33 -0
- package/dist/runtime/shutdown.js +39 -0
- package/dist/sandbox/await-exec.d.ts +143 -0
- package/dist/sandbox/await-exec.js +406 -0
- package/dist/sandbox/client.d.ts +82 -0
- package/dist/sandbox/client.js +23 -0
- package/dist/sandbox/create-sandbox.d.ts +105 -0
- package/dist/sandbox/create-sandbox.js +132 -0
- package/dist/sandbox/deliver-exec-event.d.ts +25 -0
- package/dist/sandbox/deliver-exec-event.js +29 -0
- package/dist/sandbox/docker-client.d.ts +75 -0
- package/dist/sandbox/docker-client.js +315 -0
- package/dist/sandbox/estimate-data-profile-resources.d.ts +5 -0
- package/dist/sandbox/estimate-data-profile-resources.js +73 -0
- package/dist/sandbox/exec-id.d.ts +12 -0
- package/dist/sandbox/exec-id.js +20 -0
- package/dist/sandbox/execution-id.d.ts +30 -0
- package/dist/sandbox/execution-id.js +47 -0
- package/dist/sandbox/hmac.d.ts +54 -0
- package/dist/sandbox/hmac.js +67 -0
- package/dist/sandbox/identity.d.ts +15 -0
- package/dist/sandbox/identity.js +22 -0
- package/dist/sandbox/ignored-dirs.d.ts +7 -0
- package/dist/sandbox/ignored-dirs.js +7 -0
- package/dist/sandbox/k8s-client.d.ts +71 -0
- package/dist/sandbox/k8s-client.js +488 -0
- package/dist/sandbox/liveness.d.ts +60 -0
- package/dist/sandbox/liveness.js +82 -0
- package/dist/sandbox/mount-plan.d.ts +77 -0
- package/dist/sandbox/mount-plan.js +84 -0
- package/dist/sandbox/notification-sweep.d.ts +42 -0
- package/dist/sandbox/notification-sweep.js +74 -0
- package/dist/sandbox/reaper.d.ts +70 -0
- package/dist/sandbox/reaper.js +124 -0
- package/dist/sandbox/sandbox-error.d.ts +105 -0
- package/dist/sandbox/sandbox-error.js +92 -0
- package/dist/sandbox/sandbox-step-translate.d.ts +35 -0
- package/dist/sandbox/sandbox-step-translate.js +76 -0
- package/dist/sandbox/submit-exec.d.ts +33 -0
- package/dist/sandbox/submit-exec.js +68 -0
- package/dist/sandbox/types.d.ts +277 -0
- package/dist/sandbox/types.js +147 -0
- package/dist/sandbox/watchdog.d.ts +71 -0
- package/dist/sandbox/watchdog.js +150 -0
- package/dist/schemas/artifact-manifest.d.ts +34 -0
- package/dist/schemas/artifact-manifest.js +36 -0
- package/dist/schemas/data-profile-schemas.d.ts +92 -0
- package/dist/schemas/data-profile-schemas.js +89 -0
- package/dist/schemas/file-metadata.d.ts +51 -0
- package/dist/schemas/file-metadata.js +39 -0
- package/dist/schemas/plan-schemas.d.ts +110 -0
- package/dist/schemas/plan-schemas.js +50 -0
- package/dist/schemas/render-step-prompt.d.ts +32 -0
- package/dist/schemas/render-step-prompt.js +76 -0
- package/dist/schemas/run-synthesis.d.ts +148 -0
- package/dist/schemas/run-synthesis.js +87 -0
- package/dist/schemas/step-summary.d.ts +18 -0
- package/dist/schemas/step-summary.js +20 -0
- package/dist/schemas/validate-plan.d.ts +39 -0
- package/dist/schemas/validate-plan.js +120 -0
- package/dist/schemas/workflow-state.d.ts +314 -0
- package/dist/schemas/workflow-state.js +139 -0
- package/dist/state/active-sandboxes.d.ts +58 -0
- package/dist/state/active-sandboxes.js +100 -0
- package/dist/state/analyses-metrics.d.ts +21 -0
- package/dist/state/analyses-metrics.js +59 -0
- package/dist/state/analyses.d.ts +58 -0
- package/dist/state/analyses.js +132 -0
- package/dist/state/artifacts.d.ts +53 -0
- package/dist/state/artifacts.js +175 -0
- package/dist/state/data-profile.d.ts +176 -0
- package/dist/state/data-profile.js +284 -0
- package/dist/state/db.d.ts +10 -0
- package/dist/state/db.js +9 -0
- package/dist/state/index.d.ts +29 -0
- package/dist/state/index.js +20 -0
- package/dist/state/init.d.ts +14 -0
- package/dist/state/init.js +406 -0
- package/dist/state/plans.d.ts +56 -0
- package/dist/state/plans.js +117 -0
- package/dist/state/runs.d.ts +69 -0
- package/dist/state/runs.js +206 -0
- package/dist/state/schema.d.ts +150 -0
- package/dist/state/schema.js +100 -0
- package/dist/state/step-executions.d.ts +77 -0
- package/dist/state/step-executions.js +175 -0
- package/dist/state/target-assessments.d.ts +68 -0
- package/dist/state/target-assessments.js +222 -0
- package/dist/state/vector-store.d.ts +53 -0
- package/dist/state/vector-store.js +89 -0
- package/dist/tasks/data-profile.d.ts +171 -0
- package/dist/tasks/data-profile.js +461 -0
- package/dist/tasks/refresh-regulatory-corpus.d.ts +59 -0
- package/dist/tasks/refresh-regulatory-corpus.js +146 -0
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +55 -0
- package/dist/tasks/regulatory-corpus-boot-refresh.js +149 -0
- package/dist/tools/__fixtures__/tool-context.d.ts +13 -0
- package/dist/tools/__fixtures__/tool-context.js +18 -0
- package/dist/tools/bio/check-safety-panel.d.ts +35 -0
- package/dist/tools/bio/check-safety-panel.js +76 -0
- package/dist/tools/bio/find-approval-precedent.d.ts +32 -0
- package/dist/tools/bio/find-approval-precedent.js +72 -0
- package/dist/tools/bio/get-article-details.d.ts +11 -0
- package/dist/tools/bio/get-article-details.js +20 -0
- package/dist/tools/bio/get-article-full-text.d.ts +19 -0
- package/dist/tools/bio/get-article-full-text.js +32 -0
- package/dist/tools/bio/get-bioactivity.d.ts +11 -0
- package/dist/tools/bio/get-bioactivity.js +23 -0
- package/dist/tools/bio/get-drug-info.d.ts +9 -0
- package/dist/tools/bio/get-drug-info.js +22 -0
- package/dist/tools/bio/get-impc-ko-profile.d.ts +9 -0
- package/dist/tools/bio/get-impc-ko-profile.js +20 -0
- package/dist/tools/bio/get-mechanism.d.ts +8 -0
- package/dist/tools/bio/get-mechanism.js +18 -0
- package/dist/tools/bio/get-pubchem-assays.d.ts +22 -0
- package/dist/tools/bio/get-pubchem-assays.js +107 -0
- package/dist/tools/bio/get-pubchem-cross-refs.d.ts +15 -0
- package/dist/tools/bio/get-pubchem-cross-refs.js +68 -0
- package/dist/tools/bio/get-target-safety.d.ts +18 -0
- package/dist/tools/bio/get-target-safety.js +26 -0
- package/dist/tools/bio/index.d.ts +41 -0
- package/dist/tools/bio/index.js +48 -0
- package/dist/tools/bio/keys.d.ts +31 -0
- package/dist/tools/bio/keys.js +30 -0
- package/dist/tools/bio/lookup-go-term.d.ts +31 -0
- package/dist/tools/bio/lookup-go-term.js +116 -0
- package/dist/tools/bio/search-bgee-expression.d.ts +10 -0
- package/dist/tools/bio/search-bgee-expression.js +24 -0
- package/dist/tools/bio/search-clinical-trials.d.ts +12 -0
- package/dist/tools/bio/search-clinical-trials.js +21 -0
- package/dist/tools/bio/search-clinvar.d.ts +13 -0
- package/dist/tools/bio/search-clinvar.js +28 -0
- package/dist/tools/bio/search-compounds.d.ts +22 -0
- package/dist/tools/bio/search-compounds.js +160 -0
- package/dist/tools/bio/search-ctx-chemical.d.ts +50 -0
- package/dist/tools/bio/search-ctx-chemical.js +130 -0
- package/dist/tools/bio/search-ctx-exposure.d.ts +55 -0
- package/dist/tools/bio/search-ctx-exposure.js +176 -0
- package/dist/tools/bio/search-ctx-hazard.d.ts +111 -0
- package/dist/tools/bio/search-ctx-hazard.js +178 -0
- package/dist/tools/bio/search-dgidb.d.ts +43 -0
- package/dist/tools/bio/search-dgidb.js +199 -0
- package/dist/tools/bio/search-disgenet.d.ts +30 -0
- package/dist/tools/bio/search-disgenet.js +84 -0
- package/dist/tools/bio/search-drugbank.d.ts +38 -0
- package/dist/tools/bio/search-drugbank.js +109 -0
- package/dist/tools/bio/search-faers.d.ts +11 -0
- package/dist/tools/bio/search-faers.js +23 -0
- package/dist/tools/bio/search-gene.d.ts +11 -0
- package/dist/tools/bio/search-gene.js +19 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +20 -0
- package/dist/tools/bio/search-geo-datasets.js +86 -0
- package/dist/tools/bio/search-gwas-catalog.d.ts +33 -0
- package/dist/tools/bio/search-gwas-catalog.js +172 -0
- package/dist/tools/bio/search-interactions.d.ts +17 -0
- package/dist/tools/bio/search-interactions.js +31 -0
- package/dist/tools/bio/search-opentargets.d.ts +11 -0
- package/dist/tools/bio/search-opentargets.js +25 -0
- package/dist/tools/bio/search-pathway.d.ts +12 -0
- package/dist/tools/bio/search-pathway.js +32 -0
- package/dist/tools/bio/search-pharmgkb.d.ts +17 -0
- package/dist/tools/bio/search-pharmgkb.js +46 -0
- package/dist/tools/bio/search-pubchem-compound.d.ts +26 -0
- package/dist/tools/bio/search-pubchem-compound.js +110 -0
- package/dist/tools/bio/search-pubmed.d.ts +17 -0
- package/dist/tools/bio/search-pubmed.js +31 -0
- package/dist/tools/bio/search-targets.d.ts +9 -0
- package/dist/tools/bio/search-targets.js +20 -0
- package/dist/tools/bio/search-toxcast.d.ts +36 -0
- package/dist/tools/bio/search-toxcast.js +141 -0
- package/dist/tools/define-tool.d.ts +80 -0
- package/dist/tools/define-tool.js +48 -0
- package/dist/tools/display/index.d.ts +4 -0
- package/dist/tools/display/index.js +4 -0
- package/dist/tools/display/show-user.d.ts +33 -0
- package/dist/tools/display/show-user.js +67 -0
- package/dist/tools/execute-plan.d.ts +64 -0
- package/dist/tools/execute-plan.js +208 -0
- package/dist/tools/iterate-report.d.ts +172 -0
- package/dist/tools/iterate-report.js +521 -0
- package/dist/tools/lib/api-utils.d.ts +80 -0
- package/dist/tools/lib/api-utils.js +128 -0
- package/dist/tools/lib/bgee-client.d.ts +36 -0
- package/dist/tools/lib/bgee-client.js +150 -0
- package/dist/tools/lib/cbioportal-client.d.ts +34 -0
- package/dist/tools/lib/cbioportal-client.js +159 -0
- package/dist/tools/lib/chembl-client.d.ts +123 -0
- package/dist/tools/lib/chembl-client.js +458 -0
- package/dist/tools/lib/chembl-config.d.ts +5 -0
- package/dist/tools/lib/chembl-config.js +3 -0
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +33 -0
- package/dist/tools/lib/clinical-benchmarks-client.js +54 -0
- package/dist/tools/lib/clinical-trials-client.d.ts +216 -0
- package/dist/tools/lib/clinical-trials-client.js +339 -0
- package/dist/tools/lib/clinicaltrials-config.d.ts +4 -0
- package/dist/tools/lib/clinicaltrials-config.js +2 -0
- package/dist/tools/lib/clinvar-client.d.ts +25 -0
- package/dist/tools/lib/clinvar-client.js +126 -0
- package/dist/tools/lib/disgenet-config.d.ts +2 -0
- package/dist/tools/lib/disgenet-config.js +11 -0
- package/dist/tools/lib/drugbank-config.d.ts +2 -0
- package/dist/tools/lib/drugbank-config.js +12 -0
- package/dist/tools/lib/ema-client.d.ts +45 -0
- package/dist/tools/lib/ema-client.js +127 -0
- package/dist/tools/lib/ema-config.d.ts +7 -0
- package/dist/tools/lib/ema-config.js +7 -0
- package/dist/tools/lib/ensembl-client.d.ts +27 -0
- package/dist/tools/lib/ensembl-client.js +82 -0
- package/dist/tools/lib/gwas-catalog-config.d.ts +4 -0
- package/dist/tools/lib/gwas-catalog-config.js +2 -0
- package/dist/tools/lib/identifier-resolver.d.ts +85 -0
- package/dist/tools/lib/identifier-resolver.js +333 -0
- package/dist/tools/lib/impc-client.d.ts +44 -0
- package/dist/tools/lib/impc-client.js +239 -0
- package/dist/tools/lib/iuphar-client.d.ts +75 -0
- package/dist/tools/lib/iuphar-client.js +230 -0
- package/dist/tools/lib/iuphar-config.d.ts +5 -0
- package/dist/tools/lib/iuphar-config.js +3 -0
- package/dist/tools/lib/ncbi-utils.d.ts +58 -0
- package/dist/tools/lib/ncbi-utils.js +286 -0
- package/dist/tools/lib/openfda-client.d.ts +53 -0
- package/dist/tools/lib/openfda-client.js +192 -0
- package/dist/tools/lib/openfda-config.d.ts +2 -0
- package/dist/tools/lib/openfda-config.js +2 -0
- package/dist/tools/lib/opentargets-client.d.ts +64 -0
- package/dist/tools/lib/opentargets-client.js +290 -0
- package/dist/tools/lib/opentargets-config.d.ts +5 -0
- package/dist/tools/lib/opentargets-config.js +5 -0
- package/dist/tools/lib/path-validation.d.ts +14 -0
- package/dist/tools/lib/path-validation.js +26 -0
- package/dist/tools/lib/pathway-client.d.ts +27 -0
- package/dist/tools/lib/pathway-client.js +149 -0
- package/dist/tools/lib/pharmgkb-config.d.ts +4 -0
- package/dist/tools/lib/pharmgkb-config.js +2 -0
- package/dist/tools/lib/preview-lock.d.ts +20 -0
- package/dist/tools/lib/preview-lock.js +35 -0
- package/dist/tools/lib/protein-family-modality.d.ts +16 -0
- package/dist/tools/lib/protein-family-modality.js +42 -0
- package/dist/tools/lib/protein-family-normalize.d.ts +12 -0
- package/dist/tools/lib/protein-family-normalize.js +46 -0
- package/dist/tools/lib/pubchem-client.d.ts +40 -0
- package/dist/tools/lib/pubchem-client.js +128 -0
- package/dist/tools/lib/pubchem-config.d.ts +5 -0
- package/dist/tools/lib/pubchem-config.js +3 -0
- package/dist/tools/lib/pubmed-client.d.ts +28 -0
- package/dist/tools/lib/pubmed-client.js +91 -0
- package/dist/tools/lib/report-preflight.d.ts +39 -0
- package/dist/tools/lib/report-preflight.js +283 -0
- package/dist/tools/lib/string-client.d.ts +33 -0
- package/dist/tools/lib/string-client.js +93 -0
- package/dist/tools/lib/toxcast-config.d.ts +2 -0
- package/dist/tools/lib/toxcast-config.js +11 -0
- package/dist/tools/lib/uniprot-client.d.ts +28 -0
- package/dist/tools/lib/uniprot-client.js +103 -0
- package/dist/tools/lib/uniprot-config.d.ts +5 -0
- package/dist/tools/lib/uniprot-config.js +3 -0
- package/dist/tools/memory/index.d.ts +4 -0
- package/dist/tools/memory/index.js +4 -0
- package/dist/tools/memory/update-working-memory.d.ts +25 -0
- package/dist/tools/memory/update-working-memory.js +112 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.js +26 -0
- package/dist/tools/report/build-report.d.ts +13 -0
- package/dist/tools/report/build-report.js +26 -0
- package/dist/tools/report/index.d.ts +14 -0
- package/dist/tools/report/index.js +14 -0
- package/dist/tools/report/mint-preview-url.d.ts +26 -0
- package/dist/tools/report/mint-preview-url.js +44 -0
- package/dist/tools/report/preview-publisher.d.ts +37 -0
- package/dist/tools/report/preview-publisher.js +25 -0
- package/dist/tools/report/preview-snapshot.d.ts +26 -0
- package/dist/tools/report/preview-snapshot.js +121 -0
- package/dist/tools/report/submit-report.d.ts +25 -0
- package/dist/tools/report/submit-report.js +126 -0
- package/dist/tools/report/version-fs.d.ts +15 -0
- package/dist/tools/report/version-fs.js +154 -0
- package/dist/tools/research/context7-docs.d.ts +31 -0
- package/dist/tools/research/context7-docs.js +61 -0
- package/dist/tools/research/generate-analogy-report.d.ts +60 -0
- package/dist/tools/research/generate-analogy-report.js +288 -0
- package/dist/tools/research/generate-plan.d.ts +39 -0
- package/dist/tools/research/generate-plan.js +393 -0
- package/dist/tools/research/index.d.ts +15 -0
- package/dist/tools/research/index.js +15 -0
- package/dist/tools/research/inspect-run.d.ts +54 -0
- package/dist/tools/research/inspect-run.js +85 -0
- package/dist/tools/research/literature-reviewer.d.ts +29 -0
- package/dist/tools/research/literature-reviewer.js +84 -0
- package/dist/tools/research/search-arxiv.d.ts +32 -0
- package/dist/tools/research/search-arxiv.js +123 -0
- package/dist/tools/research/search-github-repos.d.ts +32 -0
- package/dist/tools/research/search-github-repos.js +86 -0
- package/dist/tools/research/search-semantic-scholar.d.ts +33 -0
- package/dist/tools/research/search-semantic-scholar.js +93 -0
- package/dist/tools/run-ephemeral.d.ts +33 -0
- package/dist/tools/run-ephemeral.js +65 -0
- package/dist/tools/sandbox/index.d.ts +7 -0
- package/dist/tools/sandbox/index.js +7 -0
- package/dist/tools/sandbox/list-available-packages.d.ts +7 -0
- package/dist/tools/sandbox/list-available-packages.js +27 -0
- package/dist/tools/sandbox/list-available-refs.d.ts +7 -0
- package/dist/tools/sandbox/list-available-refs.js +147 -0
- package/dist/tools/sandbox/report-blocker.d.ts +23 -0
- package/dist/tools/sandbox/report-blocker.js +39 -0
- package/dist/tools/sandbox/skills.d.ts +72 -0
- package/dist/tools/sandbox/skills.js +144 -0
- package/dist/tools/workspace/edit-file.d.ts +46 -0
- package/dist/tools/workspace/edit-file.js +100 -0
- package/dist/tools/workspace/execute-command.d.ts +80 -0
- package/dist/tools/workspace/execute-command.js +95 -0
- package/dist/tools/workspace/file-stat.d.ts +24 -0
- package/dist/tools/workspace/file-stat.js +37 -0
- package/dist/tools/workspace/grep.d.ts +57 -0
- package/dist/tools/workspace/grep.js +154 -0
- package/dist/tools/workspace/index.d.ts +26 -0
- package/dist/tools/workspace/index.js +27 -0
- package/dist/tools/workspace/list-files.d.ts +24 -0
- package/dist/tools/workspace/list-files.js +38 -0
- package/dist/tools/workspace/mutator.d.ts +83 -0
- package/dist/tools/workspace/mutator.js +81 -0
- package/dist/tools/workspace/read-file.d.ts +39 -0
- package/dist/tools/workspace/read-file.js +93 -0
- package/dist/tools/workspace/result-bounds.d.ts +42 -0
- package/dist/tools/workspace/result-bounds.js +50 -0
- package/dist/tools/workspace/run-exec.d.ts +32 -0
- package/dist/tools/workspace/run-exec.js +34 -0
- package/dist/tools/workspace/show-file.d.ts +37 -0
- package/dist/tools/workspace/show-file.js +54 -0
- package/dist/tools/workspace/show-plan.d.ts +23 -0
- package/dist/tools/workspace/show-plan.js +44 -0
- package/dist/tools/workspace/workspace-search.d.ts +25 -0
- package/dist/tools/workspace/workspace-search.js +78 -0
- package/dist/tools/workspace/write-file.d.ts +16 -0
- package/dist/tools/workspace/write-file.js +33 -0
- package/dist/workflows/execute-analysis-scheduler.d.ts +94 -0
- package/dist/workflows/execute-analysis-scheduler.js +186 -0
- package/dist/workflows/execute-analysis.d.ts +271 -0
- package/dist/workflows/execute-analysis.js +746 -0
- package/dist/workflows/execute-target-assessment.d.ts +101 -0
- package/dist/workflows/execute-target-assessment.js +528 -0
- package/dist/workflows/metrics.d.ts +37 -0
- package/dist/workflows/metrics.js +55 -0
- package/dist/workflows/plan/level.d.ts +12 -0
- package/dist/workflows/plan/level.js +12 -0
- package/dist/workflows/register-workflows.d.ts +51 -0
- package/dist/workflows/register-workflows.js +48 -0
- package/dist/workflows/resume-execute-analysis.d.ts +70 -0
- package/dist/workflows/resume-execute-analysis.js +80 -0
- package/dist/workflows/sandbox-step.d.ts +243 -0
- package/dist/workflows/sandbox-step.js +573 -0
- package/dist/workflows/target-assessment/assemblers/index.d.ts +5 -0
- package/dist/workflows/target-assessment/assemblers/index.js +4 -0
- package/dist/workflows/target-assessment/assemblers/literature.d.ts +299 -0
- package/dist/workflows/target-assessment/assemblers/literature.js +987 -0
- package/dist/workflows/target-assessment/assemblers/orchestrator.d.ts +109 -0
- package/dist/workflows/target-assessment/assemblers/orchestrator.js +835 -0
- package/dist/workflows/target-assessment/assemblers/safety.d.ts +352 -0
- package/dist/workflows/target-assessment/assemblers/safety.js +985 -0
- package/dist/workflows/target-assessment/assemblers/trials.d.ts +30 -0
- package/dist/workflows/target-assessment/assemblers/trials.js +75 -0
- package/dist/workflows/target-assessment/collectors/index.d.ts +105 -0
- package/dist/workflows/target-assessment/collectors/index.js +468 -0
- package/dist/workflows/target-assessment/correction-loop.d.ts +45 -0
- package/dist/workflows/target-assessment/correction-loop.js +62 -0
- package/dist/workflows/target-assessment/coverage.d.ts +81 -0
- package/dist/workflows/target-assessment/coverage.js +82 -0
- package/dist/workflows/target-assessment/decisions/index.d.ts +86 -0
- package/dist/workflows/target-assessment/decisions/index.js +127 -0
- package/dist/workflows/target-assessment/fanout/index.d.ts +31 -0
- package/dist/workflows/target-assessment/fanout/index.js +155 -0
- package/dist/workflows/target-assessment/lib/approval-precedents.d.ts +52 -0
- package/dist/workflows/target-assessment/lib/approval-precedents.js +119 -0
- package/dist/workflows/target-assessment/lib/citation-validator.d.ts +46 -0
- package/dist/workflows/target-assessment/lib/citation-validator.js +316 -0
- package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.d.ts +62 -0
- package/dist/workflows/target-assessment/lib/clinical-consequence-annotator.js +172 -0
- package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.d.ts +45 -0
- package/dist/workflows/target-assessment/lib/clinical-evidence-attribution.js +156 -0
- package/dist/workflows/target-assessment/lib/compute-derived.d.ts +19 -0
- package/dist/workflows/target-assessment/lib/compute-derived.js +252 -0
- package/dist/workflows/target-assessment/lib/compute-selectivity.d.ts +15 -0
- package/dist/workflows/target-assessment/lib/compute-selectivity.js +18 -0
- package/dist/workflows/target-assessment/lib/dedup-modulators.d.ts +37 -0
- package/dist/workflows/target-assessment/lib/dedup-modulators.js +157 -0
- package/dist/workflows/target-assessment/lib/evidence-conflict-detector.d.ts +17 -0
- package/dist/workflows/target-assessment/lib/evidence-conflict-detector.js +100 -0
- package/dist/workflows/target-assessment/lib/expression-constants.d.ts +21 -0
- package/dist/workflows/target-assessment/lib/expression-constants.js +21 -0
- package/dist/workflows/target-assessment/lib/family-complex-supplement.d.ts +21 -0
- package/dist/workflows/target-assessment/lib/family-complex-supplement.js +37 -0
- package/dist/workflows/target-assessment/lib/heterodimer-filter.d.ts +39 -0
- package/dist/workflows/target-assessment/lib/heterodimer-filter.js +54 -0
- package/dist/workflows/target-assessment/lib/intended-polypharm-filter.d.ts +4 -0
- package/dist/workflows/target-assessment/lib/intended-polypharm-filter.js +24 -0
- package/dist/workflows/target-assessment/lib/llm-step.d.ts +77 -0
- package/dist/workflows/target-assessment/lib/llm-step.js +99 -0
- package/dist/workflows/target-assessment/lib/meddra-organ-map.d.ts +30 -0
- package/dist/workflows/target-assessment/lib/meddra-organ-map.js +126 -0
- package/dist/workflows/target-assessment/lib/recommendation-quality-gates.d.ts +17 -0
- package/dist/workflows/target-assessment/lib/recommendation-quality-gates.js +99 -0
- package/dist/workflows/target-assessment/lib/recommendation-sanitizer.d.ts +2 -0
- package/dist/workflows/target-assessment/lib/recommendation-sanitizer.js +51 -0
- package/dist/workflows/target-assessment/lib/regulatory-actions.d.ts +26 -0
- package/dist/workflows/target-assessment/lib/regulatory-actions.js +147 -0
- package/dist/workflows/target-assessment/lib/structured-llm.d.ts +58 -0
- package/dist/workflows/target-assessment/lib/structured-llm.js +101 -0
- package/dist/workflows/target-assessment/lib/target-identity-filter.d.ts +60 -0
- package/dist/workflows/target-assessment/lib/target-identity-filter.js +86 -0
- package/dist/workflows/target-assessment/lib/therapeutic-programs.d.ts +20 -0
- package/dist/workflows/target-assessment/lib/therapeutic-programs.js +68 -0
- package/dist/workflows/target-assessment/metrics.d.ts +21 -0
- package/dist/workflows/target-assessment/metrics.js +42 -0
- package/dist/workflows/target-assessment/phase4-assemble.d.ts +1841 -0
- package/dist/workflows/target-assessment/phase4-assemble.js +39 -0
- package/dist/workflows/target-assessment/phase5-persist.d.ts +57 -0
- package/dist/workflows/target-assessment/phase5-persist.js +461 -0
- package/dist/workflows/target-assessment/progress.d.ts +38 -0
- package/dist/workflows/target-assessment/progress.js +76 -0
- package/dist/workflows/target-assessment/schemas.d.ts +931 -0
- package/dist/workflows/target-assessment/schemas.js +293 -0
- package/dist/workflows/target-assessment/steps/collectors/pathways.d.ts +15 -0
- package/dist/workflows/target-assessment/steps/collectors/pathways.js +58 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.d.ts +34 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-class-drug-step.js +31 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.d.ts +57 -0
- package/dist/workflows/target-assessment/steps/fanout/aes-for-one-trial-step.js +54 -0
- package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.d.ts +35 -0
- package/dist/workflows/target-assessment/steps/fanout/faers-for-one-modulator-step.js +32 -0
- package/dist/workflows/target-assessment/steps/fanout/index.d.ts +14 -0
- package/dist/workflows/target-assessment/steps/fanout/index.js +10 -0
- package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.d.ts +28 -0
- package/dist/workflows/target-assessment/steps/fanout/polypharm-for-one-modulator-step.js +27 -0
- package/dist/workflows/target-assessment/steps/phase0-resolve.d.ts +71 -0
- package/dist/workflows/target-assessment/steps/phase0-resolve.js +21 -0
- package/dist/workflows/target-assessment/steps/phase1-aggregate.d.ts +1018 -0
- package/dist/workflows/target-assessment/steps/phase1-aggregate.js +25 -0
- package/dist/workflows/target-assessment/steps/phase2-aggregate.d.ts +696 -0
- package/dist/workflows/target-assessment/steps/phase2-aggregate.js +38 -0
- package/dist/workflows/target-assessment/steps/phase3-aggregate.d.ts +936 -0
- package/dist/workflows/target-assessment/steps/phase3-aggregate.js +22 -0
- package/dist/workflows/target-assessment/steps/synthesis/diagnostics.d.ts +34 -0
- package/dist/workflows/target-assessment/steps/synthesis/diagnostics.js +45 -0
- package/dist/workflows/target-assessment/sub-workflows/index.d.ts +15 -0
- package/dist/workflows/target-assessment/sub-workflows/index.js +11 -0
- package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.d.ts +41 -0
- package/dist/workflows/target-assessment/sub-workflows/per-class-drug-aes.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.d.ts +41 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-faers.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.d.ts +36 -0
- package/dist/workflows/target-assessment/sub-workflows/per-modulator-polypharm.js +12 -0
- package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.d.ts +66 -0
- package/dist/workflows/target-assessment/sub-workflows/per-trial-aes.js +12 -0
- package/dist/workflows/target-assessment/synthesis/index.d.ts +560 -0
- package/dist/workflows/target-assessment/synthesis/index.js +351 -0
- package/dist/workflows/target-assessment/synthesis-probes.d.ts +56 -0
- package/dist/workflows/target-assessment/synthesis-probes.js +320 -0
- package/dist/workspace/filesystem.d.ts +117 -0
- package/dist/workspace/filesystem.js +304 -0
- package/dist/workspace/mount-strategy.d.ts +50 -0
- package/dist/workspace/mount-strategy.js +67 -0
- package/dist/workspace/paths.d.ts +185 -0
- package/dist/workspace/paths.js +219 -0
- package/dist/workspace/provenance-collector.d.ts +34 -0
- package/dist/workspace/provenance-collector.js +16 -0
- package/dist/workspace/search-config.d.ts +23 -0
- package/dist/workspace/search-config.js +43 -0
- package/dist/workspace/workspace-paths.d.ts +26 -0
- package/dist/workspace/workspace-paths.js +31 -0
- package/package.json +101 -0
|
@@ -0,0 +1,573 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `sandbox-step` — the per-step DBOS child workflow that drives one
|
|
3
|
+
* sandbox-agent execution and its post-step bookkeeping.
|
|
4
|
+
*
|
|
5
|
+
* Structure (each block runs as a `DBOS.runStep` so a crashed workflow
|
|
6
|
+
* replays from the cache instead of re-issuing work):
|
|
7
|
+
*
|
|
8
|
+
* 1. `mark-running` — update `cortex_step_executions` to running.
|
|
9
|
+
* 2. `createSandbox` — provision the sandbox; persist its handle.
|
|
10
|
+
* 3. `runAgent` — the harness agent loop. Every LLM and tool
|
|
11
|
+
* call inside is its own durableStep.
|
|
12
|
+
* Catches `isBudgetExceeded` and self-cancels
|
|
13
|
+
* via `DBOS.cancelWorkflow(self)` to CANCELLED
|
|
14
|
+
* (resumable, not ERROR).
|
|
15
|
+
* 4. `generateFileMetadata`— post-step LLM call (chunked, slice-to-length).
|
|
16
|
+
* 5. `generateStepSummary` — post-step LLM call producing `output/summary.md`.
|
|
17
|
+
* 6. `reconcile + register`— write artifact manifest entries to cortex_artifacts.
|
|
18
|
+
* 7. `syncArtifacts` — register provenance + upload missing file_ids
|
|
19
|
+
* via the managed root (scoped to this run+step).
|
|
20
|
+
* 8. `vector-index` — index file descriptions + summary into pgvector.
|
|
21
|
+
* 9. `teardown` — destroy the sandbox + clear sandbox_ref.
|
|
22
|
+
* 10. `mark-terminal` — write the final status, emit `data-step-activity`
|
|
23
|
+
* onto the parent's DBOS stream.
|
|
24
|
+
*
|
|
25
|
+
* The parent owns sibling lifecycle: fail-fast and 402-cascade live on the
|
|
26
|
+
* parent (`executeAnalysis`). This child only owns its own teardown and
|
|
27
|
+
* its own self-cancel on 402.
|
|
28
|
+
*/
|
|
29
|
+
import { DBOS, Error as DBOSErrors } from "@dbos-inc/dbos-sdk";
|
|
30
|
+
import { insertStepExecution, updateStepExecution } from "../state/index.js";
|
|
31
|
+
import { unwrapOrThrow } from "../lib/result.js";
|
|
32
|
+
import { isBudgetExceeded } from "../loop/budget-exceeded.js";
|
|
33
|
+
import { runAgent } from "../loop/run-agent.js";
|
|
34
|
+
import { durableStep } from "../loop/run-step.js";
|
|
35
|
+
import { activityForTool, applyTreeDelta, isChatDataPart, sandboxTreeDelta } from "../sandbox/sandbox-step-translate.js";
|
|
36
|
+
import { forSubAgent } from "../auth/types.js";
|
|
37
|
+
import { walkStepArtifacts } from "../execution/post-step.js";
|
|
38
|
+
import { collectStepOutputs, generateStepFileMetadata, generateStepSummaryAndWrite, reconcileAndRegisterStepArtifacts, vectorIndexStepOutputs, } from "../execution/post-step-pipeline.js";
|
|
39
|
+
import { mintSandboxIdentity } from "../sandbox/identity.js";
|
|
40
|
+
import { ProvenanceCollector } from "../provenance/collector.js";
|
|
41
|
+
import { createBlockerHolder } from "../tools/sandbox/report-blocker.js";
|
|
42
|
+
/**
|
|
43
|
+
* Fallback when the plan step omits `timeout`. Plans that need 3-hour runs
|
|
44
|
+
* declare it explicitly.
|
|
45
|
+
*/
|
|
46
|
+
export const DEFAULT_STEP_TIMEOUT_SECONDS = 3600;
|
|
47
|
+
/**
|
|
48
|
+
* DBOS message topic the child uses to notify the parent that it is
|
|
49
|
+
* about to self-cancel because of a 402 budget-exceeded error. The
|
|
50
|
+
* notification fires BEFORE `DBOS.cancelWorkflow(self)` so the parent's
|
|
51
|
+
* concurrent recv accumulator records the child id before the child's
|
|
52
|
+
* terminal state lands. Without it the parent observes
|
|
53
|
+
* `DBOSWorkflowCancelledError` from `getResult` — a generic message that
|
|
54
|
+
* `isBudgetExceeded` does NOT match — and misclassifies the failure as
|
|
55
|
+
* fail-fast, skipping the 402 pause cascade.
|
|
56
|
+
*/
|
|
57
|
+
export const BUDGET_EXCEEDED_TOPIC = "child-budget-exceeded";
|
|
58
|
+
// ── Helpers ───────────────────────────────────────────────────────────
|
|
59
|
+
function nextFunctionIdFactory() {
|
|
60
|
+
let n = 0;
|
|
61
|
+
return () => `fn-${(n++).toString(36)}`;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stable reconciliation id for a step's reconciling parts
|
|
65
|
+
* (`data-step-activity`, `data-step-file-tree`). One id per (runId, stepId)
|
|
66
|
+
* so the run-stream fold collapses every phase transition latest-wins onto
|
|
67
|
+
* a single frame. The client keys these by `stepId`, but the server fold
|
|
68
|
+
* keys by part `id`, so the id MUST be unique per step within the run.
|
|
69
|
+
*/
|
|
70
|
+
function stepPartId(kind, runId, stepId) {
|
|
71
|
+
return `${kind}-${runId}-${stepId}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Map an internal step failure to a user-safe string. Internal detail (file
|
|
75
|
+
* paths, content hashes, managed-root rejection reasons, stack traces) stays in the pod
|
|
76
|
+
* logs and in `lastErrorClass`; the surfaces a user sees — the live run panel
|
|
77
|
+
* (`data-step-activity`), `cortex_step_executions.error` (read by `inspectRun`
|
|
78
|
+
* and `routes/runs.ts`), and the parent's DAG snapshot / `cortex_runs.error` —
|
|
79
|
+
* carry only this generic phrase.
|
|
80
|
+
*/
|
|
81
|
+
function userFacingStepFailure(errorClass) {
|
|
82
|
+
return errorClass === "lineage_attestation" ? "Step results could not be finalized." : "Step failed during execution.";
|
|
83
|
+
}
|
|
84
|
+
// ── The child workflow body ───────────────────────────────────────────
|
|
85
|
+
/**
|
|
86
|
+
* Register the sandbox-step child workflow with DBOS. Returns the
|
|
87
|
+
* registered callable so callers can dispatch via `DBOS.startWorkflow`.
|
|
88
|
+
*
|
|
89
|
+
* Workflow version stamping is handled globally via `DBOS.setConfig({
|
|
90
|
+
* applicationVersion })` in `launchDbos` — DBOS records the running
|
|
91
|
+
* version on every workflow row automatically, so blue/green drains read
|
|
92
|
+
* `dbos.application_versions` without per-workflow config.
|
|
93
|
+
*/
|
|
94
|
+
export function registerSandboxStep(deps) {
|
|
95
|
+
return DBOS.registerWorkflow(async (input) => {
|
|
96
|
+
return runSandboxStepBody(input, deps);
|
|
97
|
+
}, { name: "sandbox-step" });
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Body extracted so tests can drive it without registering a workflow
|
|
101
|
+
* (the DBOS calls inside still rely on a workflow context being present).
|
|
102
|
+
*/
|
|
103
|
+
async function runSandboxStepBody(input, deps) {
|
|
104
|
+
const childWorkflowId = DBOS.workflowID ?? `${input.runId}-${input.stepId}`;
|
|
105
|
+
// Checkpointed so the value (and every `durationMs` derived from it) replays
|
|
106
|
+
// identically — a raw `Date.now()` in the workflow body drifts on recovery.
|
|
107
|
+
const startedAt = await DBOS.now();
|
|
108
|
+
// (1) mark-running — also persists the level (cortex_step_executions.wave)
|
|
109
|
+
// and child_workflow_id (cortex_step_executions.child_workflow_id).
|
|
110
|
+
await DBOS.runStep(async () => {
|
|
111
|
+
unwrapOrThrow(await insertStepExecution(deps.pool, {
|
|
112
|
+
runId: input.runId,
|
|
113
|
+
stepId: input.stepId,
|
|
114
|
+
analysisId: input.analysisId,
|
|
115
|
+
wave: input.level,
|
|
116
|
+
agentId: input.agentId,
|
|
117
|
+
childWorkflowId,
|
|
118
|
+
}));
|
|
119
|
+
}, { name: "mark-running" });
|
|
120
|
+
// Stamp the sandbox agent's id into provenance so loop events carry
|
|
121
|
+
// `source.agentId === input.agentId` (the parent's RunSession still reads
|
|
122
|
+
// "conversation-agent"). `run-agent.ts` builds source from
|
|
123
|
+
// `session.provenance.agentId`, and billing tags ride the same provenance.
|
|
124
|
+
const session = forSubAgent(input.runSession, input.agentId);
|
|
125
|
+
const writePrefix = deps.resolveWritePrefix(input);
|
|
126
|
+
// One lineage collector per step. The agent loop feeds each exec's
|
|
127
|
+
// provenance frame into it; post-step registration reads the resulting
|
|
128
|
+
// input/script edges. Reconstructed deterministically on replay — the
|
|
129
|
+
// frames it consumes are cached recv outputs and the command strings are
|
|
130
|
+
// cached LLM tool-use (see the harness-thread-store and harness-durable-runtime specs).
|
|
131
|
+
const lineageCollector = new ProvenanceCollector({
|
|
132
|
+
stepId: input.stepId,
|
|
133
|
+
runId: input.runId,
|
|
134
|
+
});
|
|
135
|
+
// (2a) sandbox.mint — checkpoint the machine's identity (name + HMAC secret)
|
|
136
|
+
// BEFORE it is spawned (see the harness-sandbox-exec spec). Durable-before-create is what makes (2b)
|
|
137
|
+
// idempotent: a crash between spawn and the spawn checkpoint re-runs (2b)
|
|
138
|
+
// with the same identity, which adopts the already-created machine instead
|
|
139
|
+
// of leaking a second one.
|
|
140
|
+
const identity = await DBOS.runStep(() => Promise.resolve(mintSandboxIdentity(input.runId)), { name: "sandbox.mint" });
|
|
141
|
+
// (2b) sandbox.create — spawn (or adopt) the machine under the minted
|
|
142
|
+
// identity. The handle (secret included) is cached so recovery picks the
|
|
143
|
+
// same machine back up without re-provisioning.
|
|
144
|
+
const sandboxMeta = {
|
|
145
|
+
runId: input.runId,
|
|
146
|
+
stepId: input.stepId,
|
|
147
|
+
analysisId: input.analysisId,
|
|
148
|
+
childWorkflowId,
|
|
149
|
+
image: input.image,
|
|
150
|
+
extraEnv: input.extraEnv,
|
|
151
|
+
resources: input.resources,
|
|
152
|
+
};
|
|
153
|
+
const sandbox = await DBOS.runStep(() => deps.sandboxClient.createSandbox(sandboxMeta, identity), { name: "sandbox.create" });
|
|
154
|
+
// Recovery path: re-check `isAlive` on the persisted ref before continuing.
|
|
155
|
+
// A classified-dead sandbox triggers a fresh `createSandbox` (task 4.6).
|
|
156
|
+
// For first execution this is a cheap no-op; on replay it's the seam
|
|
157
|
+
// that catches a dead pod between checkpoints.
|
|
158
|
+
await DBOS.runStep(async () => {
|
|
159
|
+
const liveness = await deps.sandboxClient.isAlive(sandbox);
|
|
160
|
+
if (!liveness.alive) {
|
|
161
|
+
const cause = liveness.oomKilled ? "was killed for exceeding its memory limit (sandbox-oom-killed)" : "no longer alive on replay";
|
|
162
|
+
throw new Error(`sandbox ${sandbox.sandboxId} ${cause} — caller must restart the step`);
|
|
163
|
+
}
|
|
164
|
+
}, { name: "sandbox.recheck-alive" });
|
|
165
|
+
// (3) runAgent — the harness loop with durableStep.
|
|
166
|
+
// The step deadline is captured ONCE at step start from the checkpointed
|
|
167
|
+
// clock so it reproduces on replay — the `awaitExec` recv loop gates on this
|
|
168
|
+
// absolute deadline, so a raw `Date.now()` here would shift the recorded
|
|
169
|
+
// `DBOS.recv` sequence on recovery (see the harness-durable-runtime spec). `deadlineMs` is a getter so
|
|
170
|
+
// deps read the absolute ms without holding a captured value; returning a
|
|
171
|
+
// fresh `now + timeout` per call would make a step with N tool calls runnable
|
|
172
|
+
// for up to N × `timeoutSeconds`.
|
|
173
|
+
const stepDeadlineMs = (await DBOS.now()) + (input.timeoutSeconds ?? DEFAULT_STEP_TIMEOUT_SECONDS) * 1000;
|
|
174
|
+
const blockerHolder = createBlockerHolder();
|
|
175
|
+
const agent = deps.buildAgent({
|
|
176
|
+
input,
|
|
177
|
+
session,
|
|
178
|
+
sandbox,
|
|
179
|
+
workflowId: childWorkflowId,
|
|
180
|
+
stepWritePrefix: writePrefix,
|
|
181
|
+
nextFunctionId: nextFunctionIdFactory(),
|
|
182
|
+
deadlineMs: () => stepDeadlineMs,
|
|
183
|
+
lineageCollector,
|
|
184
|
+
blockerHolder,
|
|
185
|
+
});
|
|
186
|
+
// Forward every loop event onto the child's own DBOS `"events"` stream
|
|
187
|
+
// (the route fans-in parent + every active child stream — Pattern A).
|
|
188
|
+
// Pre-shaped chat data parts (e.g. `data-sandbox-event` from `run-exec.ts`)
|
|
189
|
+
// pass through verbatim; orchestration events (`iteration`, `tool-started`,
|
|
190
|
+
// `tool-finished`) and model-output deltas are wrapped under the
|
|
191
|
+
// `data-loop-event` envelope so the SSE consumer can route them.
|
|
192
|
+
//
|
|
193
|
+
// Every emit is `await`ed in body order (the loop awaits its own emits, and
|
|
194
|
+
// `awaitExec` awaits its sandbox-event emits), so each body-path
|
|
195
|
+
// `DBOS.writeStream` lands at a deterministic function-ID on replay
|
|
196
|
+
// (see the harness-durable-runtime spec) — no fire-and-forget tail racing the next real op for the
|
|
197
|
+
// counter. `safeEmit` swallows a stream-write failure: a dropped UI frame
|
|
198
|
+
// is non-fatal and must not fail the step.
|
|
199
|
+
// Pattern A (fan-in at route): write to the CHILD's own `"events"` stream.
|
|
200
|
+
// `DBOS.writeStream` is body-only, so cross-workflow writes aren't supported;
|
|
201
|
+
// the SSE route reads the parent's stream plus every active child's, addressed
|
|
202
|
+
// by `cortex_step_executions.child_workflow_id`.
|
|
203
|
+
const emitToParentStream = (part) => DBOS.writeStream("events", part);
|
|
204
|
+
const safeEmit = async (part) => {
|
|
205
|
+
try {
|
|
206
|
+
await emitToParentStream(part);
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
console.warn(`[sandbox-step] emitToParentStream failed (non-fatal):`, err instanceof Error ? err.message : err);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
// Schema-conformant step-activity emitter — stable id per (runId, stepId)
|
|
213
|
+
// so the run-stream fold collapses every phase transition latest-wins.
|
|
214
|
+
const activityId = stepPartId("step-activity", input.runId, input.stepId);
|
|
215
|
+
const emitActivity = (phase, activity) => safeEmit({
|
|
216
|
+
type: "data-step-activity",
|
|
217
|
+
id: activityId,
|
|
218
|
+
runId: input.runId,
|
|
219
|
+
stepId: input.stepId,
|
|
220
|
+
phase,
|
|
221
|
+
activity,
|
|
222
|
+
});
|
|
223
|
+
// Single exit for the two terminal failure paths (agent loop, lineage
|
|
224
|
+
// attestation). Tears the sandbox down, logs the internal detail for
|
|
225
|
+
// operators, then persists + emits only a generic phrase and re-raises a
|
|
226
|
+
// scrubbed error — so the child DB row, the run panel, and the parent's
|
|
227
|
+
// re-thrown `settled.err.message` (DAG snapshot + `cortex_runs.error`) all
|
|
228
|
+
// stay free of internal paths/hashes/managed-root jargon. A DBOS cancellation is
|
|
229
|
+
// control-flow, not a failure — re-raise it verbatim.
|
|
230
|
+
const failStep = async (errorClass, err) => {
|
|
231
|
+
if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
|
|
232
|
+
throw err;
|
|
233
|
+
await tryTeardown(deps, sandbox);
|
|
234
|
+
const durationMs = (await DBOS.now()) - startedAt;
|
|
235
|
+
const detail = err instanceof Error ? (err.stack ?? err.message) : String(err);
|
|
236
|
+
console.error(`[sandbox-step] ${errorClass} failure for ${input.runId}/${input.stepId}: ${detail}`);
|
|
237
|
+
const safe = userFacingStepFailure(errorClass);
|
|
238
|
+
await DBOS.runStep(async () => {
|
|
239
|
+
unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
|
|
240
|
+
status: "failed",
|
|
241
|
+
durationMs,
|
|
242
|
+
error: safe,
|
|
243
|
+
attempts: 1,
|
|
244
|
+
lastErrorClass: errorClass,
|
|
245
|
+
}));
|
|
246
|
+
}, {
|
|
247
|
+
name: errorClass === "lineage_attestation" ? "mark-failed-attestation" : "mark-failed",
|
|
248
|
+
});
|
|
249
|
+
await emitActivity("failed", safe);
|
|
250
|
+
throw new Error(safe);
|
|
251
|
+
};
|
|
252
|
+
// Live per-step file tree. The sandbox executor posts on-change deltas per
|
|
253
|
+
// exec; the body folds them into one cumulative path set (across every exec
|
|
254
|
+
// of the step) and emits the FULL tree under a stable per-step reconciling
|
|
255
|
+
// id — the terminal `walkArtifacts` tree reconciles onto the same id at step
|
|
256
|
+
// end. Full-tree + reconciling means an observer reconnecting from offset 0
|
|
257
|
+
// still converges (raw deltas alone would not). REPLAY: the fold is a 1:1
|
|
258
|
+
// pure function of the checkpointed `awaitExec` recv sequence — do NOT add a
|
|
259
|
+
// timer/debounce here, that would re-break the harness-durable-runtime spec.
|
|
260
|
+
const treeFileId = stepPartId("step-file-tree", input.runId, input.stepId);
|
|
261
|
+
const treeFiles = new Set();
|
|
262
|
+
const emitFileTree = () => safeEmit({
|
|
263
|
+
type: "data-step-file-tree",
|
|
264
|
+
id: treeFileId,
|
|
265
|
+
runId: input.runId,
|
|
266
|
+
stepId: input.stepId,
|
|
267
|
+
files: [...treeFiles].sort().map((path) => ({ path, type: "file" })),
|
|
268
|
+
});
|
|
269
|
+
// One translator from sandbox/loop events to the typed per-step parts
|
|
270
|
+
// consumers render. Add a new sandbox event kind as one case here. `data-step-activity`
|
|
271
|
+
// / `data-step-file-tree` are what the run side panel reads — raw loop events
|
|
272
|
+
// and per-exec deltas are not, so the fold is what makes the live activity and
|
|
273
|
+
// file tree visible during a step.
|
|
274
|
+
const emit = async (event) => {
|
|
275
|
+
if (isChatDataPart(event)) {
|
|
276
|
+
const delta = sandboxTreeDelta(event);
|
|
277
|
+
if (delta) {
|
|
278
|
+
applyTreeDelta(treeFiles, delta);
|
|
279
|
+
await emitFileTree();
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
await safeEmit(event);
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
// Forward the raw orchestration / model-delta event under the loop-event
|
|
286
|
+
// envelope, and surface each tool call as live step activity.
|
|
287
|
+
await safeEmit({ type: "data-loop-event", data: { stepId: input.stepId, event } });
|
|
288
|
+
if (event.type === "tool-started") {
|
|
289
|
+
await emitActivity("executing", activityForTool(event.name, event.input));
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
const initial = [{ role: "user", content: input.prompt }];
|
|
293
|
+
await emitActivity("executing", `Running ${input.agentId}`);
|
|
294
|
+
// DBOS exposes no JS AbortSignal that fires on `cancelWorkflow` — cancellation
|
|
295
|
+
// is enforced at DBOS checkpoint (step) boundaries, not cooperatively in-loop.
|
|
296
|
+
const neverAbort = new AbortController().signal;
|
|
297
|
+
let transcript;
|
|
298
|
+
let finishReason;
|
|
299
|
+
let hitMaxSteps;
|
|
300
|
+
try {
|
|
301
|
+
const agentResult = await runAgent(agent, initial, session, {
|
|
302
|
+
provider: deps.provider,
|
|
303
|
+
signal: neverAbort,
|
|
304
|
+
emit,
|
|
305
|
+
runStep: durableStep,
|
|
306
|
+
formatStepName: {
|
|
307
|
+
llm: (iteration) => `llm:${iteration}`,
|
|
308
|
+
tool: (toolName, toolUseId) => `tool:${toolName}:${toolUseId}`,
|
|
309
|
+
},
|
|
310
|
+
isFatalLoopError: (err) => err instanceof DBOSErrors.DBOSWorkflowCancelledError,
|
|
311
|
+
});
|
|
312
|
+
transcript = agentResult.messages;
|
|
313
|
+
finishReason = agentResult.finish.reason;
|
|
314
|
+
hitMaxSteps = agentResult.finish.cappedOut;
|
|
315
|
+
}
|
|
316
|
+
catch (err) {
|
|
317
|
+
if (isBudgetExceeded(err)) {
|
|
318
|
+
// Notify the parent BEFORE self-cancel — DBOSWorkflowCancelledError
|
|
319
|
+
// surfaced by `getResult` carries a generic message that
|
|
320
|
+
// `isBudgetExceeded` cannot match, so without this side-channel the
|
|
321
|
+
// parent classifier falls through to fail-fast and the 402 pause
|
|
322
|
+
// cascade never fires. Wrapped in `DBOS.runStep` for replay
|
|
323
|
+
// idempotency (DBOS persists the send under (workflowID, function_id),
|
|
324
|
+
// a recovered child does not re-send). Failure to send is logged but
|
|
325
|
+
// swallowed: the worst case is the parent misclassifies the cancel
|
|
326
|
+
// as fail-fast, which is the pre-fix behaviour and still safe.
|
|
327
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
328
|
+
const notification = {
|
|
329
|
+
childWorkflowId,
|
|
330
|
+
stepId: input.stepId,
|
|
331
|
+
error: errMsg,
|
|
332
|
+
};
|
|
333
|
+
try {
|
|
334
|
+
await DBOS.runStep(() => DBOS.send(input.parentWorkflowId, notification, BUDGET_EXCEEDED_TOPIC), { name: "notify-parent-budget-exceeded" });
|
|
335
|
+
}
|
|
336
|
+
catch (sendErr) {
|
|
337
|
+
console.warn(`[sandbox-step] notify-parent-budget-exceeded failed (non-fatal): ${sendErr instanceof Error ? sendErr.message : sendErr}`);
|
|
338
|
+
}
|
|
339
|
+
// Self-cancel to CANCELLED so the parent's `getResult` observes the
|
|
340
|
+
// cancellation and triggers the 402 pause cascade. ERROR is NOT
|
|
341
|
+
// resumable (NOTES #3); CANCELLED is what `resumeWorkflow` reads.
|
|
342
|
+
// The subsequent runStep flips the cortex_step_executions row to
|
|
343
|
+
// canceled and raises `DBOSWorkflowCancelledError` — nothing past
|
|
344
|
+
// that line executes. The parent's classifier reads the budget
|
|
345
|
+
// notification from the side-channel set populated above and
|
|
346
|
+
// observes the cancel terminal state via `getResult`.
|
|
347
|
+
await DBOS.cancelWorkflow(childWorkflowId);
|
|
348
|
+
const durationMs = (await DBOS.now()) - startedAt;
|
|
349
|
+
await DBOS.runStep(async () => {
|
|
350
|
+
unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
|
|
351
|
+
status: "canceled",
|
|
352
|
+
durationMs,
|
|
353
|
+
error: "budget_exceeded",
|
|
354
|
+
attempts: 1,
|
|
355
|
+
lastErrorClass: "budget_exceeded",
|
|
356
|
+
}));
|
|
357
|
+
}, { name: "mark-canceled" });
|
|
358
|
+
// Unreachable — the runStep above raises DBOSWorkflowCancelledError.
|
|
359
|
+
throw new Error("unreachable: mark-canceled did not raise", { cause: err });
|
|
360
|
+
}
|
|
361
|
+
// Non-resumable failure — tear down, mark failed (scrubbed), re-raise so
|
|
362
|
+
// the parent's `getResult` sees ERROR and the fail-fast cascade fires.
|
|
363
|
+
// `failStep` always throws; the outer `throw` is for control-flow analysis.
|
|
364
|
+
throw await failStep("agent_loop", err);
|
|
365
|
+
}
|
|
366
|
+
// Blocker (see the harness-sandbox-agents spec): the agent declared it cannot fulfil the step. A
|
|
367
|
+
// blocked step has no deliverables — skip the artifact post-step pipeline,
|
|
368
|
+
// mark `blocked` (carrying the reason), emit the blocked part, and return a
|
|
369
|
+
// terminal-failure status so the parent's fail-fast cascade fires.
|
|
370
|
+
const blockerOutcome = blockerHolder.outcome;
|
|
371
|
+
if (blockerOutcome) {
|
|
372
|
+
await tryTeardown(deps, sandbox);
|
|
373
|
+
const durationMs = (await DBOS.now()) - startedAt;
|
|
374
|
+
await DBOS.runStep(async () => {
|
|
375
|
+
unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
|
|
376
|
+
status: "blocked",
|
|
377
|
+
durationMs,
|
|
378
|
+
error: blockerOutcome.reason,
|
|
379
|
+
blockedReason: blockerOutcome.reason,
|
|
380
|
+
attempts: 1,
|
|
381
|
+
lastErrorClass: "blocked",
|
|
382
|
+
finishReason,
|
|
383
|
+
hitMaxSteps,
|
|
384
|
+
}));
|
|
385
|
+
}, { name: "mark-blocked" });
|
|
386
|
+
await safeEmit({
|
|
387
|
+
type: "data-step-blocked",
|
|
388
|
+
id: stepPartId("step-blocked", input.runId, input.stepId),
|
|
389
|
+
runId: input.runId,
|
|
390
|
+
stepId: input.stepId,
|
|
391
|
+
agentId: input.agentId,
|
|
392
|
+
reason: blockerOutcome.reason,
|
|
393
|
+
});
|
|
394
|
+
await emitActivity("failed", "Step blocked");
|
|
395
|
+
return {
|
|
396
|
+
status: "blocked",
|
|
397
|
+
durationMs,
|
|
398
|
+
finishReason,
|
|
399
|
+
error: blockerOutcome.reason,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
// (4-8) post-step — the body is the explicit composition: walk the artifact
|
|
403
|
+
// tree once, then thread each stage's typed output into the next. Helpers
|
|
404
|
+
// run inline (not `DBOS.runStep`-wrapped), so a replay re-executes this
|
|
405
|
+
// section. Each helper is best-effort (`safeRun*` logs + degrades) so a
|
|
406
|
+
// single failure never fails the step.
|
|
407
|
+
const postCtx = {
|
|
408
|
+
input,
|
|
409
|
+
session,
|
|
410
|
+
transcript,
|
|
411
|
+
writePrefix,
|
|
412
|
+
sandboxId: sandbox.sandboxId,
|
|
413
|
+
lineageCollector,
|
|
414
|
+
};
|
|
415
|
+
await emitActivity("generating-metadata", "Describing output files");
|
|
416
|
+
const manifest = await safeRunValue(() => walkStepArtifacts({
|
|
417
|
+
writePrefix,
|
|
418
|
+
stepId: input.stepId,
|
|
419
|
+
runId: input.runId,
|
|
420
|
+
}), "post-step.walk", []);
|
|
421
|
+
// The two post-step LLM producers are wrapped in `DBOS.runStep` so their
|
|
422
|
+
// outputs are checkpointed (see the harness-durable-runtime spec): the conditional terminal emits they
|
|
423
|
+
// gate (`data-step-summary`, file-tree) stay replay-stable and the billed
|
|
424
|
+
// LLM calls are not re-issued on recovery. The remaining stages (walk /
|
|
425
|
+
// reconcile / sync / index) stay inline — a separate follow-up.
|
|
426
|
+
const metadataEntries = await safeRunValue(() => DBOS.runStep(() => generateStepFileMetadata(deps, postCtx, manifest), {
|
|
427
|
+
name: "post-step.generate-file-metadata",
|
|
428
|
+
}), "post-step.metadata", []);
|
|
429
|
+
await emitActivity("generating-summary", "Summarizing step results");
|
|
430
|
+
const summary = await safeRunValue(() => DBOS.runStep(() => generateStepSummaryAndWrite(deps, postCtx, manifest), {
|
|
431
|
+
name: "post-step.generate-step-summary",
|
|
432
|
+
}), "post-step.summary", undefined);
|
|
433
|
+
// Lineage attestation (registration + sync) is fail-fast (see the artifact-manifest spec): unlike
|
|
434
|
+
// the best-effort enrichment stages, a failure here orphans the step's real
|
|
435
|
+
// outputs, so it fails the step loudly instead of finishing green. Transient
|
|
436
|
+
// managed-root errors are already retried in the client, so anything thrown here is
|
|
437
|
+
// persistent — tear down, mark failed, and re-raise so the parent's fail-fast
|
|
438
|
+
// cascade fires (mirrors the agent-loop failure path).
|
|
439
|
+
await emitActivity("persisting", "Registering artifacts");
|
|
440
|
+
let reconciledManifest;
|
|
441
|
+
try {
|
|
442
|
+
reconciledManifest = await reconcileAndRegisterStepArtifacts(deps, postCtx, manifest);
|
|
443
|
+
await deps.artifactRegistry.sync({
|
|
444
|
+
resourceId: input.analysisId,
|
|
445
|
+
runId: input.runId,
|
|
446
|
+
stepId: input.stepId,
|
|
447
|
+
}, session);
|
|
448
|
+
}
|
|
449
|
+
catch (err) {
|
|
450
|
+
throw await failStep("lineage_attestation", err);
|
|
451
|
+
}
|
|
452
|
+
const postArtifacts = {
|
|
453
|
+
metadataEntries,
|
|
454
|
+
summary,
|
|
455
|
+
reconciledManifest,
|
|
456
|
+
};
|
|
457
|
+
let stepOutputs;
|
|
458
|
+
try {
|
|
459
|
+
stepOutputs = collectStepOutputs(postCtx, postArtifacts);
|
|
460
|
+
}
|
|
461
|
+
catch (err) {
|
|
462
|
+
console.warn(`[sandbox-step] post-step.collect failed (non-fatal):`, err instanceof Error ? err.message : err);
|
|
463
|
+
}
|
|
464
|
+
await emitActivity("indexing", "Indexing outputs for search");
|
|
465
|
+
await safeRun(() => vectorIndexStepOutputs(deps, postCtx, postArtifacts), "post-step.vector-index");
|
|
466
|
+
// (9) teardown — destroy sandbox + clear sandbox_ref.
|
|
467
|
+
await DBOS.runStep(() => deps.sandboxClient.teardown(sandbox), { name: "sandbox.teardown" });
|
|
468
|
+
// (10) mark-terminal + emit.
|
|
469
|
+
const durationMs = (await DBOS.now()) - startedAt;
|
|
470
|
+
await DBOS.runStep(async () => {
|
|
471
|
+
unwrapOrThrow(await updateStepExecution(deps.pool, input.runId, input.stepId, {
|
|
472
|
+
status: "completed",
|
|
473
|
+
durationMs,
|
|
474
|
+
attempts: 1,
|
|
475
|
+
lastErrorClass: null,
|
|
476
|
+
finishReason,
|
|
477
|
+
hitMaxSteps,
|
|
478
|
+
}));
|
|
479
|
+
}, { name: "mark-complete" });
|
|
480
|
+
// Terminal step-detail parts. file-tree + summary + output each get a
|
|
481
|
+
// stable id per step so the run-stream fold + client both treat them as
|
|
482
|
+
// one-per-step (file-tree reconciles; summary/output are emitted once).
|
|
483
|
+
if (stepOutputs) {
|
|
484
|
+
if (stepOutputs.files.length > 0) {
|
|
485
|
+
await safeEmit({
|
|
486
|
+
type: "data-step-file-tree",
|
|
487
|
+
id: stepPartId("step-file-tree", input.runId, input.stepId),
|
|
488
|
+
runId: input.runId,
|
|
489
|
+
stepId: input.stepId,
|
|
490
|
+
files: stepOutputs.files.map((f) => ({
|
|
491
|
+
path: f.path,
|
|
492
|
+
size: f.size,
|
|
493
|
+
type: "file",
|
|
494
|
+
})),
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
if (stepOutputs.summaryMarkdown.trim().length > 0) {
|
|
498
|
+
await safeEmit({
|
|
499
|
+
type: "data-step-summary",
|
|
500
|
+
id: stepPartId("step-summary", input.runId, input.stepId),
|
|
501
|
+
runId: input.runId,
|
|
502
|
+
stepId: input.stepId,
|
|
503
|
+
agentId: input.agentId,
|
|
504
|
+
markdown: stepOutputs.summaryMarkdown,
|
|
505
|
+
});
|
|
506
|
+
}
|
|
507
|
+
if (stepOutputs.files.length > 0) {
|
|
508
|
+
await safeEmit({
|
|
509
|
+
type: "data-step-output",
|
|
510
|
+
id: stepPartId("step-output", input.runId, input.stepId),
|
|
511
|
+
runId: input.runId,
|
|
512
|
+
stepId: input.stepId,
|
|
513
|
+
agentId: input.agentId,
|
|
514
|
+
files: stepOutputs.files.map((f) => ({
|
|
515
|
+
path: f.path,
|
|
516
|
+
size: f.size,
|
|
517
|
+
fileType: f.fileType,
|
|
518
|
+
description: f.description,
|
|
519
|
+
})),
|
|
520
|
+
artifactCount: stepOutputs.files.length,
|
|
521
|
+
durationMs,
|
|
522
|
+
finishReason,
|
|
523
|
+
hitMaxSteps,
|
|
524
|
+
});
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
await emitActivity("complete", "Step complete");
|
|
528
|
+
return {
|
|
529
|
+
status: "complete",
|
|
530
|
+
durationMs,
|
|
531
|
+
finishReason,
|
|
532
|
+
error: null,
|
|
533
|
+
};
|
|
534
|
+
}
|
|
535
|
+
/**
|
|
536
|
+
* Best-effort wrapper for non-load-bearing post-step calls. Logs and
|
|
537
|
+
* swallows non-fatal failures — these are reflected in the step summary
|
|
538
|
+
* but do not fail the step itself (synthesis/sync/index can be retried).
|
|
539
|
+
*/
|
|
540
|
+
async function safeRun(fn, label) {
|
|
541
|
+
try {
|
|
542
|
+
await fn();
|
|
543
|
+
}
|
|
544
|
+
catch (err) {
|
|
545
|
+
if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
|
|
546
|
+
throw err;
|
|
547
|
+
console.warn(`[sandbox-step] ${label} failed (non-fatal):`, err instanceof Error ? err.message : err);
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* `safeRun` for a value-returning post-step stage: on a non-fatal failure it
|
|
552
|
+
* logs and yields `fallback` so the body can thread a safe default downstream
|
|
553
|
+
* instead of aborting the post-step pipeline.
|
|
554
|
+
*/
|
|
555
|
+
async function safeRunValue(fn, label, fallback) {
|
|
556
|
+
try {
|
|
557
|
+
return await fn();
|
|
558
|
+
}
|
|
559
|
+
catch (err) {
|
|
560
|
+
if (err instanceof DBOSErrors.DBOSWorkflowCancelledError)
|
|
561
|
+
throw err;
|
|
562
|
+
console.warn(`[sandbox-step] ${label} failed (non-fatal):`, err instanceof Error ? err.message : err);
|
|
563
|
+
return fallback;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
async function tryTeardown(deps, sandbox) {
|
|
567
|
+
try {
|
|
568
|
+
await DBOS.runStep(() => deps.sandboxClient.teardown(sandbox), { name: "sandbox.teardown" });
|
|
569
|
+
}
|
|
570
|
+
catch (err) {
|
|
571
|
+
console.warn(`[sandbox-step] teardown failed (non-fatal):`, err instanceof Error ? err.message : err);
|
|
572
|
+
}
|
|
573
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { assembleEntity, assembleTractability, enrichTractabilityModalitiesWithApprovals, type DrugForTractability, reconcileFaersCoverage, assembleDossier, } from "./orchestrator.js";
|
|
2
|
+
export type { TrialOutcomeFilter } from "./trials.js";
|
|
3
|
+
export { assembleLiabilitySummary, isSafetyRelevant, meetsTpmFloor, SAFETY_RELEVANT_ORGANS, REPRODUCTIVE_TOX_TISSUES, REPRODUCTIVE_TOX_TPM_FLOOR, DEFAULT_TPM_FLOOR, aggregateFaersAcrossModulators, aggregateTrialAes, aggregateOffTargetPanel, aggregateClassPrecedent, buildOrganRollup, } from "./safety.js";
|
|
4
|
+
export { deterministicTranslationalCommentary, isClinicalMeasurement, isSelfReference } from "./literature.js";
|
|
5
|
+
export { aggregateTrialOutcomes } from "./trials.js";
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { assembleEntity, assembleTractability, enrichTractabilityModalitiesWithApprovals, reconcileFaersCoverage, assembleDossier, } from "./orchestrator.js";
|
|
2
|
+
export { assembleLiabilitySummary, isSafetyRelevant, meetsTpmFloor, SAFETY_RELEVANT_ORGANS, REPRODUCTIVE_TOX_TISSUES, REPRODUCTIVE_TOX_TPM_FLOOR, DEFAULT_TPM_FLOOR, aggregateFaersAcrossModulators, aggregateTrialAes, aggregateOffTargetPanel, aggregateClassPrecedent, buildOrganRollup, } from "./safety.js";
|
|
3
|
+
export { deterministicTranslationalCommentary, isClinicalMeasurement, isSelfReference } from "./literature.js";
|
|
4
|
+
export { aggregateTrialOutcomes } from "./trials.js";
|