@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,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step-level provenance collector — tracks inputs consumed and outputs
|
|
3
|
+
* produced within a single workflow step.
|
|
4
|
+
*
|
|
5
|
+
* Integrates with:
|
|
6
|
+
* - K8sSandbox executeCommand provenance (script reads + writes via inotify)
|
|
7
|
+
* - Data-mount filesystem write tracking (agent file-tool outputs)
|
|
8
|
+
*
|
|
9
|
+
* Input attribution comes exclusively from sandbox exec inotify (the
|
|
10
|
+
* authoritative record of what computation actually consumed). Agent
|
|
11
|
+
* tool reads are not tracked here — they're exploratory and would
|
|
12
|
+
* pollute the lineage graph.
|
|
13
|
+
*/
|
|
14
|
+
// ── Script path inference ───────────────────────────────────────────
|
|
15
|
+
/** Known interpreter prefixes for script path extraction. */
|
|
16
|
+
const SCRIPT_PATTERNS = [/^python3?\s+(.+)$/, /^Rscript\s+(.+)$/, /^bash\s+(.+)$/, /^sh\s+(.+)$/];
|
|
17
|
+
/**
|
|
18
|
+
* Attempt to extract the script path from a command string.
|
|
19
|
+
* Returns the first argument that looks like a file path for known interpreters.
|
|
20
|
+
*/
|
|
21
|
+
function inferScriptPath(command, args) {
|
|
22
|
+
const fullCommand = args?.length ? `${command} ${args.join(" ")}` : command;
|
|
23
|
+
for (const pattern of SCRIPT_PATTERNS) {
|
|
24
|
+
const match = fullCommand.match(pattern);
|
|
25
|
+
if (match?.[1]) {
|
|
26
|
+
// Take the first token (the script path), ignoring further args
|
|
27
|
+
return match[1].split(/\s+/)[0];
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build classification context for a file read using known step metadata.
|
|
34
|
+
*
|
|
35
|
+
* Uses prefix matching against structured metadata — no path segment
|
|
36
|
+
* extraction. The caller knows its own stepId/runId and its upstream
|
|
37
|
+
* dependencies (dependsOn).
|
|
38
|
+
*
|
|
39
|
+
* For prior-run reads (paths under runs/ that don't match own run or
|
|
40
|
+
* any dependsOn entry), this falls back to path extraction — see the
|
|
41
|
+
* prior-run branch below for why.
|
|
42
|
+
*/
|
|
43
|
+
export function classifyReadPath(relativePath, ownStepId, ownRunId, dependsOn) {
|
|
44
|
+
if (relativePath.startsWith("data/") || relativePath.startsWith("dataprofile/")) {
|
|
45
|
+
return { source: "data" };
|
|
46
|
+
}
|
|
47
|
+
// Own artifacts: runs/{ownRunId}/{ownStepId}/...
|
|
48
|
+
const ownPrefix = `runs/${ownRunId}/${ownStepId}/`;
|
|
49
|
+
if (relativePath.startsWith(ownPrefix)) {
|
|
50
|
+
return { source: "artifacts", stepId: ownStepId, runId: ownRunId };
|
|
51
|
+
}
|
|
52
|
+
// Upstream dependencies: runs/{ownRunId}/{depStepId}/...
|
|
53
|
+
if (dependsOn) {
|
|
54
|
+
for (const depStepId of dependsOn) {
|
|
55
|
+
const upstreamPrefix = `runs/${ownRunId}/${depStepId}/`;
|
|
56
|
+
if (relativePath.startsWith(upstreamPrefix)) {
|
|
57
|
+
return { source: "upstream", stepId: depStepId, runId: ownRunId };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Same-run sibling step. dependsOn only drives topo-sort ordering, not
|
|
62
|
+
// read authorization, so a read outside dependsOn is still a valid
|
|
63
|
+
// upstream input — just extract the stepId from the path.
|
|
64
|
+
const ownRunPrefix = `runs/${ownRunId}/`;
|
|
65
|
+
if (relativePath.startsWith(ownRunPrefix)) {
|
|
66
|
+
const afterRun = relativePath.slice(ownRunPrefix.length);
|
|
67
|
+
const slashIdx = afterRun.indexOf("/");
|
|
68
|
+
const stepId = slashIdx > 0 ? afterRun.slice(0, slashIdx) : afterRun;
|
|
69
|
+
if (stepId) {
|
|
70
|
+
return { source: "upstream", stepId, runId: ownRunId };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Prior-run fallback: a read under `runs/{otherRunId}/...` that is neither
|
|
74
|
+
// this step's own run nor a `dependsOn` entry carries no step metadata
|
|
75
|
+
// linking it, so the path segments are the only source for the
|
|
76
|
+
// `{source: "prior", runId, stepId}` classification. This is the one place
|
|
77
|
+
// the provenance system extracts identity from path segments.
|
|
78
|
+
if (relativePath.startsWith("runs/")) {
|
|
79
|
+
const parts = relativePath.split("/");
|
|
80
|
+
const priorRunId = parts[1];
|
|
81
|
+
const priorStepId = parts[2];
|
|
82
|
+
if (priorRunId && priorStepId) {
|
|
83
|
+
return { source: "prior", stepId: priorStepId, runId: priorRunId };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { source: "data" };
|
|
87
|
+
}
|
|
88
|
+
export class ProvenanceCollector {
|
|
89
|
+
stepId;
|
|
90
|
+
runId;
|
|
91
|
+
dependsOn;
|
|
92
|
+
/** Prefix for converting analysis-relative write paths to step-relative. */
|
|
93
|
+
stepPrefix;
|
|
94
|
+
/**
|
|
95
|
+
* Map from input file relative path (e.g., "inputs/Lab A Storage/trail_0/data.csv")
|
|
96
|
+
* to fileId. Sourced from the data-mount filesystem's inputPathToFileId map
|
|
97
|
+
* (passed by reference, populated lazily during filesystem init).
|
|
98
|
+
*/
|
|
99
|
+
inputFileIdMap;
|
|
100
|
+
/** Tracked reads from read-only mounts, keyed by `mountPath:relativePath`. */
|
|
101
|
+
inputAccesses = new Map();
|
|
102
|
+
/** File tool write records, keyed by output path (relative to /artifacts). */
|
|
103
|
+
fileToolRecords = new Map();
|
|
104
|
+
/** Command execution records, keyed by output path (relative to /artifacts). */
|
|
105
|
+
commandRecords = new Map();
|
|
106
|
+
constructor(opts) {
|
|
107
|
+
this.stepId = opts.stepId;
|
|
108
|
+
this.runId = opts.runId;
|
|
109
|
+
this.dependsOn = opts.dependsOn ?? [];
|
|
110
|
+
this.stepPrefix = `runs/${opts.runId}/${opts.stepId}/`;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Set the input file ID map (passed by reference from the data-mount filesystem).
|
|
114
|
+
* Called after construction when the data mount filesystem is available.
|
|
115
|
+
*/
|
|
116
|
+
setInputFileIdMap(map) {
|
|
117
|
+
this.inputFileIdMap = map;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Track a file read from a read-only mount.
|
|
121
|
+
* Called by sandbox exec provenance frame processing.
|
|
122
|
+
*
|
|
123
|
+
* @param mountPath - The workspace mount path (e.g., "/a1/data" or "/a1" for single-mount)
|
|
124
|
+
* @param relativePath - Path relative to the mount root
|
|
125
|
+
* @param hash - SHA-256 hash of the file content, or null if file no longer exists
|
|
126
|
+
* @param context - Explicit classification context from the caller. When provided,
|
|
127
|
+
* the collector uses it directly instead of classifying from the path.
|
|
128
|
+
*/
|
|
129
|
+
trackInputAccess(mountPath, relativePath, hash, context) {
|
|
130
|
+
const key = `${mountPath}:${relativePath}`;
|
|
131
|
+
const existing = this.inputAccesses.get(key);
|
|
132
|
+
if (existing)
|
|
133
|
+
return existing;
|
|
134
|
+
// Use explicit context if provided, otherwise fall back to path classification
|
|
135
|
+
const classification = context ?? classifyReadPath(relativePath, this.stepId, this.runId, this.dependsOn);
|
|
136
|
+
const fullPath = `${mountPath}/${relativePath}`;
|
|
137
|
+
// Resolve fileId for data-source inputs via materialized file metadata map
|
|
138
|
+
let fileId;
|
|
139
|
+
if (classification.source === "data" && this.inputFileIdMap) {
|
|
140
|
+
fileId = this.inputFileIdMap.get(relativePath);
|
|
141
|
+
}
|
|
142
|
+
const ref = {
|
|
143
|
+
path: fullPath,
|
|
144
|
+
hash: hash ?? "",
|
|
145
|
+
source: classification.source,
|
|
146
|
+
stepId: classification.stepId,
|
|
147
|
+
runId: classification.runId,
|
|
148
|
+
fileId,
|
|
149
|
+
};
|
|
150
|
+
this.inputAccesses.set(key, ref);
|
|
151
|
+
return ref;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Record a file tool write (write_file, edit_file).
|
|
155
|
+
* Called after the data-mount filesystem records the artifact.
|
|
156
|
+
*
|
|
157
|
+
* File tool writes are agent-authored content — not derived from input
|
|
158
|
+
* files via execution — so no inputs are attributed.
|
|
159
|
+
*/
|
|
160
|
+
recordFileToolWrite(artifact) {
|
|
161
|
+
// Normalize analysis-relative paths to step-relative (mirroring
|
|
162
|
+
// recordCommandExecution) so file-tool and command records land in one
|
|
163
|
+
// keyspace. Without this the cross-feed last-write-wins unlink dead-fires
|
|
164
|
+
// and registration's step-relative lookup never finds this record.
|
|
165
|
+
const outputPath = artifact.path.startsWith(this.stepPrefix) ? artifact.path.slice(this.stepPrefix.length) : artifact.path;
|
|
166
|
+
// Last-write-wins: unlink any command record for this path.
|
|
167
|
+
// Post-step overwrites (e.g. summary generation) replace the command output.
|
|
168
|
+
this.commandRecords.delete(outputPath);
|
|
169
|
+
const record = {
|
|
170
|
+
outputPath,
|
|
171
|
+
outputHash: artifact.hash,
|
|
172
|
+
outputSize: artifact.size,
|
|
173
|
+
producer: {
|
|
174
|
+
type: "file_tool",
|
|
175
|
+
tool: artifact.toolName ?? "unknown",
|
|
176
|
+
timestamp: artifact.timestamp,
|
|
177
|
+
},
|
|
178
|
+
inputs: [],
|
|
179
|
+
scriptPath: null,
|
|
180
|
+
stepId: this.stepId,
|
|
181
|
+
runId: this.runId,
|
|
182
|
+
};
|
|
183
|
+
this.fileToolRecords.set(outputPath, record);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Record outputs from a sandbox command execution.
|
|
187
|
+
* Called after provenance frame processing extracts observed writes.
|
|
188
|
+
*
|
|
189
|
+
* When commandReads is provided, uses those as the inputs for this
|
|
190
|
+
* command's provenance records (per-command scoping). Falls back to
|
|
191
|
+
* snapshotting the global inputAccesses accumulator when not provided.
|
|
192
|
+
*/
|
|
193
|
+
recordCommandExecution(command, args, exitCode, durationMs, writes, scriptPath, commandReads) {
|
|
194
|
+
const inputs = commandReads ?? Array.from(this.inputAccesses.values());
|
|
195
|
+
const resolvedScript = scriptPath ?? inferScriptPath(command, args);
|
|
196
|
+
const timestamp = new Date().toISOString();
|
|
197
|
+
const producer = {
|
|
198
|
+
type: "command",
|
|
199
|
+
command,
|
|
200
|
+
args: args.length > 0 ? args : undefined,
|
|
201
|
+
exitCode,
|
|
202
|
+
durationMs,
|
|
203
|
+
timestamp,
|
|
204
|
+
};
|
|
205
|
+
for (const write of writes) {
|
|
206
|
+
// Normalize analysis-relative paths to step-relative so keys match
|
|
207
|
+
// the data-mount filesystem's localArtifacts and the artifact manifest.
|
|
208
|
+
const outputPath = write.path.startsWith(this.stepPrefix) ? write.path.slice(this.stepPrefix.length) : write.path;
|
|
209
|
+
const record = {
|
|
210
|
+
outputPath,
|
|
211
|
+
outputHash: write.hash,
|
|
212
|
+
outputSize: write.size,
|
|
213
|
+
producer,
|
|
214
|
+
inputs,
|
|
215
|
+
scriptPath: resolvedScript,
|
|
216
|
+
stepId: this.stepId,
|
|
217
|
+
runId: this.runId,
|
|
218
|
+
};
|
|
219
|
+
// Last-write-wins: unlink any file-tool record for this path.
|
|
220
|
+
this.fileToolRecords.delete(outputPath);
|
|
221
|
+
this.commandRecords.set(outputPath, record);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get provenance inputs classified as `source: "data"` (input files read from /data mount).
|
|
226
|
+
*/
|
|
227
|
+
getDataInputs() {
|
|
228
|
+
return Array.from(this.inputAccesses.values()).filter((ref) => ref.source === "data");
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* All distinct input refs observed this step, any source. The returned refs
|
|
232
|
+
* are the live objects also held by the per-command records, so repairing a
|
|
233
|
+
* `hash` here (e.g. `reconcileManifestWithDisk` filling read hashes from
|
|
234
|
+
* disk) propagates into the registration payload.
|
|
235
|
+
*/
|
|
236
|
+
getTrackedInputs() {
|
|
237
|
+
return Array.from(this.inputAccesses.values());
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Drop an input ref from lineage entirely — removes it from the tracked-input
|
|
241
|
+
* map and from every record's `inputs` array (identity match, since the refs
|
|
242
|
+
* are shared objects). `reconcileManifestWithDisk` calls this for a read that
|
|
243
|
+
* resolves to a directory (e.g. an `ls` / `list.files` of a mount): the
|
|
244
|
+
* inotify frame tracks the open, but a directory is not a content-attestable
|
|
245
|
+
* file artifact and must never reach registration. Mirrors the output-side
|
|
246
|
+
* non-file drop.
|
|
247
|
+
*/
|
|
248
|
+
dropInput(ref) {
|
|
249
|
+
for (const [key, val] of this.inputAccesses) {
|
|
250
|
+
if (val === ref) {
|
|
251
|
+
this.inputAccesses.delete(key);
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
const scrub = (rec) => {
|
|
256
|
+
if (rec.inputs.some((i) => i === ref)) {
|
|
257
|
+
rec.inputs = rec.inputs.filter((i) => i !== ref);
|
|
258
|
+
}
|
|
259
|
+
};
|
|
260
|
+
for (const rec of this.commandRecords.values())
|
|
261
|
+
scrub(rec);
|
|
262
|
+
for (const rec of this.fileToolRecords.values())
|
|
263
|
+
scrub(rec);
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get merged, deduplicated provenance records.
|
|
267
|
+
* Command records win over file-tool records for the same output path.
|
|
268
|
+
*/
|
|
269
|
+
getRecords() {
|
|
270
|
+
const merged = new Map(this.fileToolRecords);
|
|
271
|
+
// Command records overwrite file-tool records (command overwrote the file)
|
|
272
|
+
for (const [path, record] of this.commandRecords) {
|
|
273
|
+
merged.set(path, record);
|
|
274
|
+
}
|
|
275
|
+
return Array.from(merged.values());
|
|
276
|
+
}
|
|
277
|
+
/** Remove any record (command or file-tool) for the given output path. */
|
|
278
|
+
removeRecord(path) {
|
|
279
|
+
this.commandRecords.delete(path);
|
|
280
|
+
this.fileToolRecords.delete(path);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Replace the existing record for `record.outputPath` while preserving
|
|
284
|
+
* last-write-wins ordering (command beats file-tool). If a command record
|
|
285
|
+
* exists, the replacement overwrites it; otherwise the file-tool record
|
|
286
|
+
* is overwritten. If neither exists, the replacement is stored as a
|
|
287
|
+
* file-tool record so `getRecords()` surfaces it.
|
|
288
|
+
*/
|
|
289
|
+
replaceRecord(record) {
|
|
290
|
+
if (this.commandRecords.has(record.outputPath)) {
|
|
291
|
+
this.commandRecords.set(record.outputPath, record);
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
this.fileToolRecords.set(record.outputPath, record);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feed a sandbox-server exec provenance frame into the step's
|
|
3
|
+
* `ProvenanceCollector`.
|
|
4
|
+
*
|
|
5
|
+
* Frame paths are absolute container paths under the analysis resource
|
|
6
|
+
* mount (`/{resourceId}/...`). This helper strips the mount prefix to
|
|
7
|
+
* analysis-relative (`data/...`, `runs/{runId}/{stepId}/...`,
|
|
8
|
+
* `runs/{priorRunId}/...`) so `classifyReadPath` and the collector's
|
|
9
|
+
* `stepPrefix` normalization see the shapes they expect.
|
|
10
|
+
*
|
|
11
|
+
* Degrades safely: a disabled or absent frame records the command with no
|
|
12
|
+
* inputs and no writes (its outputs fall back to leaves at registration).
|
|
13
|
+
* It never throws — provenance is best-effort and must not fail an exec.
|
|
14
|
+
*/
|
|
15
|
+
import type { ProvenanceFrame } from "../sandbox/types.js";
|
|
16
|
+
import { type ProvenanceCollector } from "./collector.js";
|
|
17
|
+
/** Strip the `/{resourceId}/` mount prefix from an absolute frame path. */
|
|
18
|
+
export declare function stripMountPrefix(mountRoot: string, absPath: string): string;
|
|
19
|
+
export interface FeedExecFrameArgs {
|
|
20
|
+
readonly collector: ProvenanceCollector;
|
|
21
|
+
/** Analysis resource mount root, e.g. `/{resourceId}`. */
|
|
22
|
+
readonly mountRoot: string;
|
|
23
|
+
/** The argv the harness submitted in `SubmitExecBody`. */
|
|
24
|
+
readonly command: readonly string[];
|
|
25
|
+
readonly exitCode: number | null;
|
|
26
|
+
readonly durationMs: number | null;
|
|
27
|
+
/** The frame surfaced on `ExecResult.provenance` (may be absent). */
|
|
28
|
+
readonly provenance?: ProvenanceFrame;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Translate one exec's frame into a collector record. Per-command input
|
|
32
|
+
* scoping: only the reads observed for THIS exec are attached to its
|
|
33
|
+
* outputs (not the step's global read accumulator), so one command's
|
|
34
|
+
* inputs don't collapse onto another's outputs.
|
|
35
|
+
*/
|
|
36
|
+
export declare function feedExecFrame(args: FeedExecFrameArgs): void;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Feed a sandbox-server exec provenance frame into the step's
|
|
3
|
+
* `ProvenanceCollector`.
|
|
4
|
+
*
|
|
5
|
+
* Frame paths are absolute container paths under the analysis resource
|
|
6
|
+
* mount (`/{resourceId}/...`). This helper strips the mount prefix to
|
|
7
|
+
* analysis-relative (`data/...`, `runs/{runId}/{stepId}/...`,
|
|
8
|
+
* `runs/{priorRunId}/...`) so `classifyReadPath` and the collector's
|
|
9
|
+
* `stepPrefix` normalization see the shapes they expect.
|
|
10
|
+
*
|
|
11
|
+
* Degrades safely: a disabled or absent frame records the command with no
|
|
12
|
+
* inputs and no writes (its outputs fall back to leaves at registration).
|
|
13
|
+
* It never throws — provenance is best-effort and must not fail an exec.
|
|
14
|
+
*/
|
|
15
|
+
import { classifyReadPath } from "./collector.js";
|
|
16
|
+
/** Strip the `/{resourceId}/` mount prefix from an absolute frame path. */
|
|
17
|
+
export function stripMountPrefix(mountRoot, absPath) {
|
|
18
|
+
const prefix = mountRoot.endsWith("/") ? mountRoot : `${mountRoot}/`;
|
|
19
|
+
return absPath.startsWith(prefix) ? absPath.slice(prefix.length) : absPath;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Translate one exec's frame into a collector record. Per-command input
|
|
23
|
+
* scoping: only the reads observed for THIS exec are attached to its
|
|
24
|
+
* outputs (not the step's global read accumulator), so one command's
|
|
25
|
+
* inputs don't collapse onto another's outputs.
|
|
26
|
+
*/
|
|
27
|
+
export function feedExecFrame(args) {
|
|
28
|
+
const { collector, mountRoot, command, exitCode, durationMs, provenance } = args;
|
|
29
|
+
const cmd = command[0] ?? "";
|
|
30
|
+
const cmdArgs = command.slice(1);
|
|
31
|
+
const code = exitCode ?? -1;
|
|
32
|
+
const duration = durationMs ?? 0;
|
|
33
|
+
if (!provenance || provenance.disabled) {
|
|
34
|
+
collector.recordCommandExecution(cmd, [...cmdArgs], code, duration, [], undefined, []);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const commandReads = [];
|
|
38
|
+
for (const read of provenance.reads) {
|
|
39
|
+
const rel = stripMountPrefix(mountRoot, read.path);
|
|
40
|
+
const context = classifyReadPath(rel, collector.stepId, collector.runId, collector.dependsOn);
|
|
41
|
+
commandReads.push(collector.trackInputAccess(mountRoot, rel, null, context));
|
|
42
|
+
}
|
|
43
|
+
const writes = provenance.writes.map((w) => ({
|
|
44
|
+
path: stripMountPrefix(mountRoot, w.path),
|
|
45
|
+
hash: "",
|
|
46
|
+
size: 0,
|
|
47
|
+
}));
|
|
48
|
+
collector.recordCommandExecution(cmd, [...cmdArgs], code, duration, writes, undefined, commandReads);
|
|
49
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified provenance types for tracking artifact lineage.
|
|
3
|
+
*
|
|
4
|
+
* Each output artifact gets a ProvenanceRecord that captures:
|
|
5
|
+
* - What produced it (file tool write or sandbox command)
|
|
6
|
+
* - What inputs it consumed (lineage chain)
|
|
7
|
+
* - What script generated it (if any)
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
/** File tool write (write_file, edit_file). */
|
|
11
|
+
export declare const FileToolProducerSchema: z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"file_tool">;
|
|
13
|
+
tool: z.ZodString;
|
|
14
|
+
timestamp: z.ZodString;
|
|
15
|
+
}, z.core.$strip>;
|
|
16
|
+
/** Sandbox command execution (execute_command). */
|
|
17
|
+
export declare const CommandProducerSchema: z.ZodObject<{
|
|
18
|
+
type: z.ZodLiteral<"command">;
|
|
19
|
+
command: z.ZodString;
|
|
20
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
21
|
+
exitCode: z.ZodNumber;
|
|
22
|
+
durationMs: z.ZodNumber;
|
|
23
|
+
timestamp: z.ZodString;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
export declare const ProducerSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
26
|
+
type: z.ZodLiteral<"file_tool">;
|
|
27
|
+
tool: z.ZodString;
|
|
28
|
+
timestamp: z.ZodString;
|
|
29
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
30
|
+
type: z.ZodLiteral<"command">;
|
|
31
|
+
command: z.ZodString;
|
|
32
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
33
|
+
exitCode: z.ZodNumber;
|
|
34
|
+
durationMs: z.ZodNumber;
|
|
35
|
+
timestamp: z.ZodString;
|
|
36
|
+
}, z.core.$strip>], "type">;
|
|
37
|
+
export type Producer = z.infer<typeof ProducerSchema>;
|
|
38
|
+
/** Classification of an input source based on mount semantics. */
|
|
39
|
+
export declare const InputSourceSchema: z.ZodEnum<{
|
|
40
|
+
data: "data";
|
|
41
|
+
upstream: "upstream";
|
|
42
|
+
prior: "prior";
|
|
43
|
+
artifacts: "artifacts";
|
|
44
|
+
}>;
|
|
45
|
+
export type InputSource = z.infer<typeof InputSourceSchema>;
|
|
46
|
+
/** A single input reference in a lineage chain. */
|
|
47
|
+
export declare const InputRefSchema: z.ZodObject<{
|
|
48
|
+
path: z.ZodString;
|
|
49
|
+
hash: z.ZodString;
|
|
50
|
+
source: z.ZodEnum<{
|
|
51
|
+
data: "data";
|
|
52
|
+
upstream: "upstream";
|
|
53
|
+
prior: "prior";
|
|
54
|
+
artifacts: "artifacts";
|
|
55
|
+
}>;
|
|
56
|
+
stepId: z.ZodOptional<z.ZodString>;
|
|
57
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
58
|
+
fileId: z.ZodOptional<z.ZodString>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export type InputRef = z.infer<typeof InputRefSchema>;
|
|
61
|
+
/** Provenance record for a single output artifact. */
|
|
62
|
+
export declare const ProvenanceRecordSchema: z.ZodObject<{
|
|
63
|
+
outputPath: z.ZodString;
|
|
64
|
+
outputHash: z.ZodString;
|
|
65
|
+
outputSize: z.ZodNumber;
|
|
66
|
+
producer: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
67
|
+
type: z.ZodLiteral<"file_tool">;
|
|
68
|
+
tool: z.ZodString;
|
|
69
|
+
timestamp: z.ZodString;
|
|
70
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
71
|
+
type: z.ZodLiteral<"command">;
|
|
72
|
+
command: z.ZodString;
|
|
73
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
exitCode: z.ZodNumber;
|
|
75
|
+
durationMs: z.ZodNumber;
|
|
76
|
+
timestamp: z.ZodString;
|
|
77
|
+
}, z.core.$strip>], "type">;
|
|
78
|
+
inputs: z.ZodArray<z.ZodObject<{
|
|
79
|
+
path: z.ZodString;
|
|
80
|
+
hash: z.ZodString;
|
|
81
|
+
source: z.ZodEnum<{
|
|
82
|
+
data: "data";
|
|
83
|
+
upstream: "upstream";
|
|
84
|
+
prior: "prior";
|
|
85
|
+
artifacts: "artifacts";
|
|
86
|
+
}>;
|
|
87
|
+
stepId: z.ZodOptional<z.ZodString>;
|
|
88
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
89
|
+
fileId: z.ZodOptional<z.ZodString>;
|
|
90
|
+
}, z.core.$strip>>;
|
|
91
|
+
scriptPath: z.ZodNullable<z.ZodString>;
|
|
92
|
+
stepId: z.ZodString;
|
|
93
|
+
runId: z.ZodString;
|
|
94
|
+
}, z.core.$strip>;
|
|
95
|
+
export type ProvenanceRecord = z.infer<typeof ProvenanceRecordSchema>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified provenance types for tracking artifact lineage.
|
|
3
|
+
*
|
|
4
|
+
* Each output artifact gets a ProvenanceRecord that captures:
|
|
5
|
+
* - What produced it (file tool write or sandbox command)
|
|
6
|
+
* - What inputs it consumed (lineage chain)
|
|
7
|
+
* - What script generated it (if any)
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
// ── Producer ────────────────────────────────────────────────────────
|
|
11
|
+
/** File tool write (write_file, edit_file). */
|
|
12
|
+
export const FileToolProducerSchema = z.object({
|
|
13
|
+
type: z.literal("file_tool"),
|
|
14
|
+
tool: z.string(),
|
|
15
|
+
timestamp: z.string(),
|
|
16
|
+
});
|
|
17
|
+
/** Sandbox command execution (execute_command). */
|
|
18
|
+
export const CommandProducerSchema = z.object({
|
|
19
|
+
type: z.literal("command"),
|
|
20
|
+
command: z.string(),
|
|
21
|
+
args: z.array(z.string()).optional(),
|
|
22
|
+
exitCode: z.number(),
|
|
23
|
+
durationMs: z.number(),
|
|
24
|
+
timestamp: z.string(),
|
|
25
|
+
});
|
|
26
|
+
export const ProducerSchema = z.discriminatedUnion("type", [FileToolProducerSchema, CommandProducerSchema]);
|
|
27
|
+
// ── InputRef ────────────────────────────────────────────────────────
|
|
28
|
+
/** Classification of an input source based on mount semantics. */
|
|
29
|
+
export const InputSourceSchema = z.enum(["data", "upstream", "prior", "artifacts"]);
|
|
30
|
+
/** A single input reference in a lineage chain. */
|
|
31
|
+
export const InputRefSchema = z.object({
|
|
32
|
+
/** Mount-relative path: /data/counts.csv, /upstream/de/output/results.csv */
|
|
33
|
+
path: z.string(),
|
|
34
|
+
/** SHA-256 hash at read time. */
|
|
35
|
+
hash: z.string(),
|
|
36
|
+
/** Source classification derived from mount path. */
|
|
37
|
+
source: InputSourceSchema,
|
|
38
|
+
/** Step ID that produced this input (absent for data inputs). */
|
|
39
|
+
stepId: z.string().optional(),
|
|
40
|
+
/** Run ID that produced this input (absent for data inputs). */
|
|
41
|
+
runId: z.string().optional(),
|
|
42
|
+
/** S3 file identity for input files (source: "data"). */
|
|
43
|
+
fileId: z.string().optional(),
|
|
44
|
+
});
|
|
45
|
+
// ── ProvenanceRecord ────────────────────────────────────────────────
|
|
46
|
+
/** Provenance record for a single output artifact. */
|
|
47
|
+
export const ProvenanceRecordSchema = z.object({
|
|
48
|
+
/** Path relative to /artifacts. */
|
|
49
|
+
outputPath: z.string(),
|
|
50
|
+
/** SHA-256 hash of the output. */
|
|
51
|
+
outputHash: z.string(),
|
|
52
|
+
/** Size in bytes. */
|
|
53
|
+
outputSize: z.number(),
|
|
54
|
+
/** How this artifact was produced. */
|
|
55
|
+
producer: ProducerSchema,
|
|
56
|
+
/** Input files consumed to produce this artifact. */
|
|
57
|
+
inputs: z.array(InputRefSchema),
|
|
58
|
+
/** Path to the script that produced this, if identifiable. */
|
|
59
|
+
scriptPath: z.string().nullable(),
|
|
60
|
+
/** Workflow step that produced this artifact. */
|
|
61
|
+
stepId: z.string(),
|
|
62
|
+
/** Workflow run ID. */
|
|
63
|
+
runId: z.string(),
|
|
64
|
+
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-only harness `RequestSession` builder. Not a `*.test.ts` file, so the test
|
|
3
|
+
* runner ignores it; imported by harness unit tests that need a session but never
|
|
4
|
+
* read its (opaque) auth. The auth is the trivial local one — the harness never
|
|
5
|
+
* inspects it. Managed-adapter tests that exercise `getAuth` / the managed seams
|
|
6
|
+
* use the managed builder in `compose/__fixtures__/session.ts` instead.
|
|
7
|
+
*/
|
|
8
|
+
import type { RequestSession, Scope } from "../../auth/types.js";
|
|
9
|
+
export interface SessionOverrides {
|
|
10
|
+
user?: string;
|
|
11
|
+
scope?: Scope;
|
|
12
|
+
agentId?: string;
|
|
13
|
+
callPath?: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
/** Build a fully-populated harness `RequestSession` for tests, with per-field overrides. */
|
|
16
|
+
export declare function makeSession(overrides?: SessionOverrides): RequestSession;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-only harness `RequestSession` builder. Not a `*.test.ts` file, so the test
|
|
3
|
+
* runner ignores it; imported by harness unit tests that need a session but never
|
|
4
|
+
* read its (opaque) auth. The auth is the trivial local one — the harness never
|
|
5
|
+
* inspects it. Managed-adapter tests that exercise `getAuth` / the managed seams
|
|
6
|
+
* use the managed builder in `compose/__fixtures__/session.ts` instead.
|
|
7
|
+
*/
|
|
8
|
+
import { makeLocalAuth } from "../../auth/local-auth-context.js";
|
|
9
|
+
/** Build a fully-populated harness `RequestSession` for tests, with per-field overrides. */
|
|
10
|
+
export function makeSession(overrides = {}) {
|
|
11
|
+
return {
|
|
12
|
+
identity: { user: overrides.user ?? "user-001" },
|
|
13
|
+
scope: overrides.scope ?? { kind: "analysis", analysisId: "analysis-001" },
|
|
14
|
+
provenance: {
|
|
15
|
+
agentId: overrides.agentId ?? "conversation-agent",
|
|
16
|
+
callPath: overrides.callPath ?? ["conversation-agent"],
|
|
17
|
+
},
|
|
18
|
+
auth: makeLocalAuth(),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type LanguageModel } from "ai";
|
|
2
|
+
import type { ResolveBilling } from "../billing/resolver.js";
|
|
3
|
+
import type { ChatProvider, FetchLike, ProviderCapabilities } from "./types.js";
|
|
4
|
+
export interface AiSdkProviderDeps {
|
|
5
|
+
readonly model: LanguageModel;
|
|
6
|
+
readonly resolveBilling: ResolveBilling;
|
|
7
|
+
readonly capabilities?: Partial<ProviderCapabilities>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Connection + model configuration for one `ChatProvider`, discriminated by
|
|
11
|
+
* wire protocol (`anthropic` | `openai-compatible`). The `model` is the wire
|
|
12
|
+
* model bound into the provider at construction: `ChatRequest` carries no model
|
|
13
|
+
* field (see `./types.ts`), so a config value describes exactly one model over
|
|
14
|
+
* one connection. An embedder running distinct models builds one provider per
|
|
15
|
+
* model from configs that share the connection (same `baseURL`/`apiKey`) and
|
|
16
|
+
* differ only in `model` — a single provider cannot be retargeted to another
|
|
17
|
+
* model per request.
|
|
18
|
+
*/
|
|
19
|
+
export type AiSdkProviderConfig = {
|
|
20
|
+
readonly kind: "anthropic";
|
|
21
|
+
readonly baseURL?: string;
|
|
22
|
+
readonly apiKey: string;
|
|
23
|
+
readonly model: string;
|
|
24
|
+
readonly fetch?: FetchLike;
|
|
25
|
+
readonly capabilities?: Partial<ProviderCapabilities>;
|
|
26
|
+
} | {
|
|
27
|
+
readonly kind: "openai-compatible";
|
|
28
|
+
readonly name: string;
|
|
29
|
+
readonly baseURL: string;
|
|
30
|
+
readonly apiKey?: string;
|
|
31
|
+
readonly model: string;
|
|
32
|
+
readonly fetch?: FetchLike;
|
|
33
|
+
readonly capabilities?: Partial<ProviderCapabilities>;
|
|
34
|
+
};
|
|
35
|
+
export interface ConfiguredAiSdkProviderDeps {
|
|
36
|
+
readonly config: AiSdkProviderConfig;
|
|
37
|
+
readonly resolveBilling: ResolveBilling;
|
|
38
|
+
}
|
|
39
|
+
export declare function createAiSdkProvider(deps: AiSdkProviderDeps): ChatProvider;
|
|
40
|
+
/**
|
|
41
|
+
* Realize an `AiSdkProviderConfig` into a `ChatProvider` bound to that config's
|
|
42
|
+
* connection and model. The model is closed into the returned provider here (it
|
|
43
|
+
* is never passed per `ChatRequest`), so N models require N provider
|
|
44
|
+
* instances over one shared connection configuration — one instance serves the
|
|
45
|
+
* single model it was built with.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createConfiguredAiSdkProvider(deps: ConfiguredAiSdkProviderDeps): ChatProvider;
|