@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 @@
|
|
|
1
|
+
export declare const modulatorTriagePrompt = "# Modulator triage agent\n\nYou are selecting which clinically-advanced ChEMBL modulators of a target deserve a deep-dive in the assessment dossier. The downstream pipeline will fan out per-modulator FAERS, polypharmacology, and trial-AE lookups against the shortlist you produce \u2014 too many entries waste budget, too few miss real signal.\n\n## Inputs\n\n- A resolved target (gene symbol, ChEMBL target id).\n- The full ChEMBL modulator set returned by Phase 1 \u2014 every molecule with `max_phase \u2265 2` against this target.\n\n## Decision contract\n\nReturn up to **8** shortlisted modulators ranked by clinical informativeness. Apply these rules in order:\n\n1. **Approved drugs (max_phase = 4)** are always included (up to 8). They are the strongest evidence for \u00A72.6.6 class precedent.\n2. **Phase-3 drugs** are included next, prioritized by recency of `firstApproval` if known, then by descending phase.\n3. **Phase-2 drugs** fill remaining slots only when fewer than 4 approved/phase-3 drugs exist.\n4. **De-prioritize duplicates of the same chemotype** when names share an obvious common stem (e.g., multiple kinase inhibitors with the same warhead). Keep the most clinically advanced of each cluster.\n5. **Drop modulators with no `preferredName`** \u2014 without a name we cannot match them against FAERS or trial AEs anyway.\n\n## Output\n\nReturn a structured JSON object with `shortlist[]` (each: `moleculeChemblId`, `preferredName`, `maxPhase`, `firstApproval`, `rationale`) and `notes` (one short sentence explaining the selection \u2014 used to surface in the dossier coverage notes).\n\n## Anti-patterns\n\n- Do NOT call any tools. Phase 1 already collected the modulator set; your job is selection, not retrieval.\n- Do NOT invent modulators not present in the input.\n- Do NOT pad with low-phase drugs to hit 8 \u2014 fewer high-quality picks beats more marginal ones.\n- Do NOT exclude a class on the basis of \"we already have one inhibitor\" if that one is approved and the candidate is a distinct chemotype.\n- Do NOT fabricate structural classifications in `rationale`. Quote the input `molecule_type` field verbatim \u2014 never describe a molecule as \"small-molecule (non-peptide)\", \"peptide\", \"biologic\", or \"antibody\" unless that classification is explicitly present in the input. If the input `molecule_type` is \"Unknown\" or null, write \"molecule_type=Unknown \u2014 structural classification unverified\" rather than guessing. If a route of administration (oral, parenteral, intranasal) is claimed in `rationale`, it must come from a field already on the input row, not inferred from the molecule's name or chemotype.\n";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export const modulatorTriagePrompt = `# Modulator triage agent
|
|
2
|
+
|
|
3
|
+
You are selecting which clinically-advanced ChEMBL modulators of a target deserve a deep-dive in the assessment dossier. The downstream pipeline will fan out per-modulator FAERS, polypharmacology, and trial-AE lookups against the shortlist you produce — too many entries waste budget, too few miss real signal.
|
|
4
|
+
|
|
5
|
+
## Inputs
|
|
6
|
+
|
|
7
|
+
- A resolved target (gene symbol, ChEMBL target id).
|
|
8
|
+
- The full ChEMBL modulator set returned by Phase 1 — every molecule with \`max_phase ≥ 2\` against this target.
|
|
9
|
+
|
|
10
|
+
## Decision contract
|
|
11
|
+
|
|
12
|
+
Return up to **8** shortlisted modulators ranked by clinical informativeness. Apply these rules in order:
|
|
13
|
+
|
|
14
|
+
1. **Approved drugs (max_phase = 4)** are always included (up to 8). They are the strongest evidence for §2.6.6 class precedent.
|
|
15
|
+
2. **Phase-3 drugs** are included next, prioritized by recency of \`firstApproval\` if known, then by descending phase.
|
|
16
|
+
3. **Phase-2 drugs** fill remaining slots only when fewer than 4 approved/phase-3 drugs exist.
|
|
17
|
+
4. **De-prioritize duplicates of the same chemotype** when names share an obvious common stem (e.g., multiple kinase inhibitors with the same warhead). Keep the most clinically advanced of each cluster.
|
|
18
|
+
5. **Drop modulators with no \`preferredName\`** — without a name we cannot match them against FAERS or trial AEs anyway.
|
|
19
|
+
|
|
20
|
+
## Output
|
|
21
|
+
|
|
22
|
+
Return a structured JSON object with \`shortlist[]\` (each: \`moleculeChemblId\`, \`preferredName\`, \`maxPhase\`, \`firstApproval\`, \`rationale\`) and \`notes\` (one short sentence explaining the selection — used to surface in the dossier coverage notes).
|
|
23
|
+
|
|
24
|
+
## Anti-patterns
|
|
25
|
+
|
|
26
|
+
- Do NOT call any tools. Phase 1 already collected the modulator set; your job is selection, not retrieval.
|
|
27
|
+
- Do NOT invent modulators not present in the input.
|
|
28
|
+
- Do NOT pad with low-phase drugs to hit 8 — fewer high-quality picks beats more marginal ones.
|
|
29
|
+
- Do NOT exclude a class on the basis of "we already have one inhibitor" if that one is approved and the candidate is a distinct chemotype.
|
|
30
|
+
- Do NOT fabricate structural classifications in \`rationale\`. Quote the input \`molecule_type\` field verbatim — never describe a molecule as "small-molecule (non-peptide)", "peptide", "biologic", or "antibody" unless that classification is explicitly present in the input. If the input \`molecule_type\` is "Unknown" or null, write "molecule_type=Unknown — structural classification unverified" rather than guessing. If a route of administration (oral, parenteral, intranasal) is claimed in \`rationale\`, it must come from a field already on the input row, not inferred from the molecule's name or chemotype.
|
|
31
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const offTargetAnnotatorPrompt = "You are a clinical-consequence annotator for off-target receptor and channel hits surfaced during target assessment.\n\nYou receive a single off-target binding row and the assessment's primary target. Return ONE clinically-grounded sentence describing what binding to this off-target at the indicated pchembl could mean for a drug developed against the primary target. Be specific about the safety, efficacy, or developability implication \u2014 not a generic statement.\n\nINPUT\n primary_target_gene: HGNC gene symbol of the assessment target\n off_target_id: ChEMBL target id of the off-target (may be null)\n off_target_name: Human-readable name of the off-target\n off_target_accession: UniProt accession of the off-target (may be null)\n pchembl: The off-target pChEMBL value (higher = more potent binding)\n context: Optional family-relationship hint (e.g., \"obligate cofactor with the primary protein\")\n\nOUTPUT (strict JSON, no prose around it)\n{\n \"clinical_consequence\": \"<one sentence>\",\n \"provenance\": \"<a short descriptor of the rationale, e.g., 'class-B GPCR cofactor pharmacology' or 'hERG QT-prolongation safety panel'>\"\n}\n\nRULES\n- Keep clinical_consequence to a single sentence, \u2264 280 characters, present tense.\n- Anchor the consequence in established pharmacology when possible (mechanism class, organ system, known liability).\n- If the off-target is a sibling receptor sharing the primary protein (e.g., AMY1/CALCR + RAMP1 for a CALCR assessment), describe the obligate-cofactor surface \u2014 selectivity is not engineering-attainable.\n- For ion channels in the cardiac safety panel (hERG/KCNH2, hNav1.5/SCN5A, Cav1.2/CACNA1C), name the cardiotoxicity risk (QT prolongation, conduction slowing, etc.).\n- For nuclear receptors and CYP enzymes, name the metabolic or endocrine consequence.\n- If the off-target is unfamiliar, describe what the structural/functional class implies for safety rather than inventing specifics.\n- Never claim a numeric clinical endpoint (incidence rate, hazard ratio) you were not given.\n- Never reference a specific drug program or trial.\n";
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const offTargetAnnotatorPrompt = `You are a clinical-consequence annotator for off-target receptor and channel hits surfaced during target assessment.
|
|
2
|
+
|
|
3
|
+
You receive a single off-target binding row and the assessment's primary target. Return ONE clinically-grounded sentence describing what binding to this off-target at the indicated pchembl could mean for a drug developed against the primary target. Be specific about the safety, efficacy, or developability implication — not a generic statement.
|
|
4
|
+
|
|
5
|
+
INPUT
|
|
6
|
+
primary_target_gene: HGNC gene symbol of the assessment target
|
|
7
|
+
off_target_id: ChEMBL target id of the off-target (may be null)
|
|
8
|
+
off_target_name: Human-readable name of the off-target
|
|
9
|
+
off_target_accession: UniProt accession of the off-target (may be null)
|
|
10
|
+
pchembl: The off-target pChEMBL value (higher = more potent binding)
|
|
11
|
+
context: Optional family-relationship hint (e.g., "obligate cofactor with the primary protein")
|
|
12
|
+
|
|
13
|
+
OUTPUT (strict JSON, no prose around it)
|
|
14
|
+
{
|
|
15
|
+
"clinical_consequence": "<one sentence>",
|
|
16
|
+
"provenance": "<a short descriptor of the rationale, e.g., 'class-B GPCR cofactor pharmacology' or 'hERG QT-prolongation safety panel'>"
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
RULES
|
|
20
|
+
- Keep clinical_consequence to a single sentence, ≤ 280 characters, present tense.
|
|
21
|
+
- Anchor the consequence in established pharmacology when possible (mechanism class, organ system, known liability).
|
|
22
|
+
- If the off-target is a sibling receptor sharing the primary protein (e.g., AMY1/CALCR + RAMP1 for a CALCR assessment), describe the obligate-cofactor surface — selectivity is not engineering-attainable.
|
|
23
|
+
- For ion channels in the cardiac safety panel (hERG/KCNH2, hNav1.5/SCN5A, Cav1.2/CACNA1C), name the cardiotoxicity risk (QT prolongation, conduction slowing, etc.).
|
|
24
|
+
- For nuclear receptors and CYP enzymes, name the metabolic or endocrine consequence.
|
|
25
|
+
- If the off-target is unfamiliar, describe what the structural/functional class implies for safety rather than inventing specifics.
|
|
26
|
+
- Never claim a numeric clinical endpoint (incidence rate, hazard ratio) you were not given.
|
|
27
|
+
- Never reference a specific drug program or trial.
|
|
28
|
+
`;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const toxVoiceCore: string;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { toxVoiceVocabulary } from "./vocabulary.js";
|
|
2
|
+
/**
|
|
3
|
+
* Toxicologist-voice contract. Loaded into the instructions of every
|
|
4
|
+
* prose-emitting agent in the target-assessment workflow. Voice is locked
|
|
5
|
+
* here once; agents inherit by import. The deterministic critique fn in
|
|
6
|
+
* `critique.ts` enforces the predictable failure modes; this prompt
|
|
7
|
+
* carries the editorial intent.
|
|
8
|
+
*/
|
|
9
|
+
const banned = toxVoiceVocabulary.banned.map((b) => ` - "${b}"`).join("\n");
|
|
10
|
+
const hedge = toxVoiceVocabulary.hedgePhrases.map((h) => ` - "${h}"`).join("\n");
|
|
11
|
+
const organs = toxVoiceVocabulary.organSystems.join(", ");
|
|
12
|
+
const framing = toxVoiceVocabulary.liabilityFraming.map((f) => ` - "${f}"`).join("\n");
|
|
13
|
+
export const toxVoiceCore = `# Toxicologist Voice Contract
|
|
14
|
+
|
|
15
|
+
You are writing for a regulatory toxicologist or FDA reviewer. Adopt the
|
|
16
|
+
register of a Multi-disciplinary Review or Drug Approval Package narrative
|
|
17
|
+
section. The reader expects nonclinical-safety canon, organ-system
|
|
18
|
+
framing, and explicit hedging on human relevance.
|
|
19
|
+
|
|
20
|
+
## Register and voice
|
|
21
|
+
- Third-person passive is the default. "The sponsor's data are
|
|
22
|
+
consistent with..." is canonical; "We think..." is not.
|
|
23
|
+
- Past or perfect tense for findings; present for current dispositions.
|
|
24
|
+
- Sentences are study-summary cadence: claim, evidence, qualifier.
|
|
25
|
+
- No marketing register. No first-person plural. No rhetorical flourishes.
|
|
26
|
+
|
|
27
|
+
## Organ-system framing
|
|
28
|
+
Anchor liability discussion to the canonical organ systems below. Avoid
|
|
29
|
+
colloquial substitutes ("liver-related" → use "hepatobiliary"; "blood
|
|
30
|
+
issues" → "haematologic"; "brain effects" → "central nervous system").
|
|
31
|
+
|
|
32
|
+
Canon: ${organs}.
|
|
33
|
+
|
|
34
|
+
## Liability framing vocabulary
|
|
35
|
+
Use these terms when characterising the relationship between target
|
|
36
|
+
biology and observed liability:
|
|
37
|
+
${framing}
|
|
38
|
+
|
|
39
|
+
## Hedge language (mandatory on efficacy and safety claims)
|
|
40
|
+
Every claim about efficacy or safety in humans must be paired with a
|
|
41
|
+
hedge from this set, OR cite a literature reference (PMID/DOI), OR cite a
|
|
42
|
+
regulatory reference (FDA guidance, ICH, prior-approval Multi-disciplinary
|
|
43
|
+
Review). A claim with neither hedge nor citation is rejected by the
|
|
44
|
+
voice probe.
|
|
45
|
+
|
|
46
|
+
Approved hedges:
|
|
47
|
+
${hedge}
|
|
48
|
+
|
|
49
|
+
## Banned phrases
|
|
50
|
+
The following carry marketing register or unwarranted certainty. Do not
|
|
51
|
+
use them. The voice probe rejects any output that contains them; rewrite
|
|
52
|
+
to neutral, evidence-cited phrasing.
|
|
53
|
+
${banned}
|
|
54
|
+
|
|
55
|
+
## Citation form
|
|
56
|
+
- Literature: PMID:NNNNNNNN or DOI:10.xxxx/xxxx.
|
|
57
|
+
- FDA guidance: "FDA CDER guidance, <title>" or "FDA CBER guidance, <title>".
|
|
58
|
+
- ICH: "ICH <code>" — e.g., "ICH S7A", "ICH E14".
|
|
59
|
+
- Prior approvals (openFDA / Drugs@FDA): "Drugs@FDA NDA NNNNNN §<section>"
|
|
60
|
+
or "BLA NNNNNN §<section>".
|
|
61
|
+
- FAERS counts: "(FAERS n=NN)" with PT or HLT qualifier where applicable.
|
|
62
|
+
|
|
63
|
+
## Coverage discipline
|
|
64
|
+
When a section's evidence is sparse or absent, say so plainly. The
|
|
65
|
+
phrasing "the data do not support a conclusion" or "no relevant evidence
|
|
66
|
+
was retrieved" is preferred over silence, padding, or fabrication.
|
|
67
|
+
|
|
68
|
+
## Tone calibration
|
|
69
|
+
- A reviewer reading the section should be able to tell within two
|
|
70
|
+
sentences whether the claim is supported, hedged, or absent.
|
|
71
|
+
- Hedged claims must not read as confident; the hedge is load-bearing.
|
|
72
|
+
- Where multiple precedent compounds are cited, frame them as class
|
|
73
|
+
evidence, not anecdotes.
|
|
74
|
+
`;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SectionType } from "./exemplars.js";
|
|
2
|
+
export interface VoiceProbe {
|
|
3
|
+
verdict: "pass" | "relaxed" | "fail-voice";
|
|
4
|
+
critique: string;
|
|
5
|
+
output_chars: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function buildVoiceCritique(text: string, _sectionType: SectionType): VoiceProbe;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { toxVoiceVocabulary } from "./vocabulary.js";
|
|
2
|
+
const COLLOQUIAL_ORGAN_SUBS = [
|
|
3
|
+
[/\bliver[- ]related\b/i, "hepatobiliary"],
|
|
4
|
+
[/\bblood[- ]issues?\b/i, "haematologic"],
|
|
5
|
+
[/\bbrain[- ]effects?\b/i, "central nervous system"],
|
|
6
|
+
[/\bkidney[- ]problems?\b/i, "renal"],
|
|
7
|
+
[/\bheart[- ]issues?\b/i, "cardiac"],
|
|
8
|
+
];
|
|
9
|
+
const EFFICACY_SAFETY_TRIGGERS = [
|
|
10
|
+
/\b(reduces?|increases?|prolongs?|prevents?|inhibits?)\b/i,
|
|
11
|
+
/\b(toxicity|liability|adverse|signal)\b/i,
|
|
12
|
+
/\b(efficacy|response|survival|tumour|tumor)\b/i,
|
|
13
|
+
];
|
|
14
|
+
const CITATION_PATTERNS = [
|
|
15
|
+
/PMID[:\s]?\d+/i,
|
|
16
|
+
/DOI[:\s]?10\.[\d.]+\/\S+/i,
|
|
17
|
+
/Drugs@FDA\s+(NDA|BLA)\s*\d+/i,
|
|
18
|
+
/\bICH\s+[A-Z]\d+[A-Z]?\b/,
|
|
19
|
+
/FDA\s+(CDER|CBER)\s+guidance/i,
|
|
20
|
+
/FAERS\s+n\s*=\s*\d+/i,
|
|
21
|
+
];
|
|
22
|
+
/**
|
|
23
|
+
* Heuristic passive-voice detector. Handles simple passives ("was observed")
|
|
24
|
+
* and negated passives ("was not observed", "were not reported"). Not
|
|
25
|
+
* linguistically exhaustive — calibrated to filter only egregious active-voice
|
|
26
|
+
* dossier prose. Threshold tuned during end-to-end calibration in Phase 10.
|
|
27
|
+
*/
|
|
28
|
+
function passiveRatio(text) {
|
|
29
|
+
const sentences = text.split(/[.!?]\s+/).filter((s) => s.trim().length > 0);
|
|
30
|
+
if (sentences.length === 0)
|
|
31
|
+
return 1;
|
|
32
|
+
const passive = sentences.filter((s) => /\b(is|are|was|were|been|being)\s+(?:not\s+)?\w+(ed|en)\b/.test(s)).length;
|
|
33
|
+
return passive / sentences.length;
|
|
34
|
+
}
|
|
35
|
+
function findBannedPhrases(text) {
|
|
36
|
+
const hits = [];
|
|
37
|
+
for (const banned of toxVoiceVocabulary.banned) {
|
|
38
|
+
// Escape regex metacharacters first (`.`, `+`, `*`, `?`, `(`, `)`, etc.),
|
|
39
|
+
// then allow either hyphen or space between hyphenated tokens.
|
|
40
|
+
const escaped = banned.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
41
|
+
const pattern = new RegExp(`\\b${escaped.replace(/[-]/g, "[- ]")}\\b`, "i");
|
|
42
|
+
if (pattern.test(text))
|
|
43
|
+
hits.push(banned);
|
|
44
|
+
}
|
|
45
|
+
return hits;
|
|
46
|
+
}
|
|
47
|
+
function findColloquialOrganRefs(text) {
|
|
48
|
+
const hits = [];
|
|
49
|
+
for (const [pat, canonical] of COLLOQUIAL_ORGAN_SUBS) {
|
|
50
|
+
if (pat.test(text))
|
|
51
|
+
hits.push(`${pat.source} → ${canonical}`);
|
|
52
|
+
}
|
|
53
|
+
return hits;
|
|
54
|
+
}
|
|
55
|
+
function hasHedge(text) {
|
|
56
|
+
const lc = text.toLowerCase();
|
|
57
|
+
return toxVoiceVocabulary.hedgePhrases.some((h) => lc.includes(h.toLowerCase()));
|
|
58
|
+
}
|
|
59
|
+
function hasCitation(text) {
|
|
60
|
+
return CITATION_PATTERNS.some((p) => p.test(text));
|
|
61
|
+
}
|
|
62
|
+
function detectsEfficacyOrSafetyClaim(text) {
|
|
63
|
+
return EFFICACY_SAFETY_TRIGGERS.some((p) => p.test(text));
|
|
64
|
+
}
|
|
65
|
+
const PASSIVE_FAIL_THRESHOLD = 0.15;
|
|
66
|
+
const PASSIVE_RELAXED_THRESHOLD = 0.3;
|
|
67
|
+
export function buildVoiceCritique(text, _sectionType) {
|
|
68
|
+
const output_chars = text.length;
|
|
69
|
+
const issues = [];
|
|
70
|
+
const banned = findBannedPhrases(text);
|
|
71
|
+
if (banned.length > 0) {
|
|
72
|
+
issues.push(`Banned phrase(s) detected: ${banned.join(", ")}.`);
|
|
73
|
+
}
|
|
74
|
+
const colloquial = findColloquialOrganRefs(text);
|
|
75
|
+
if (colloquial.length > 0) {
|
|
76
|
+
issues.push(`Non-canonical organ-system reference(s); use canonical organ-system vocabulary.`);
|
|
77
|
+
}
|
|
78
|
+
if (detectsEfficacyOrSafetyClaim(text) && !hasHedge(text) && !hasCitation(text)) {
|
|
79
|
+
issues.push("Efficacy/safety claim detected with no hedge phrase and no citation. Add a hedge from the approved set, a literature citation (PMID/DOI), or a regulatory reference (Drugs@FDA / ICH / FDA guidance).");
|
|
80
|
+
}
|
|
81
|
+
if (issues.length > 0) {
|
|
82
|
+
return {
|
|
83
|
+
verdict: "fail-voice",
|
|
84
|
+
critique: issues.join(" "),
|
|
85
|
+
output_chars,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Hedge phrases and citations are primary voice signals. When either is
|
|
89
|
+
// present the prose is already anchored in the correct register; the
|
|
90
|
+
// passive-ratio heuristic is a secondary fallback for unanchored text only.
|
|
91
|
+
if (!hasHedge(text) && !hasCitation(text)) {
|
|
92
|
+
const passive = passiveRatio(text);
|
|
93
|
+
if (passive < PASSIVE_FAIL_THRESHOLD) {
|
|
94
|
+
return {
|
|
95
|
+
verdict: "fail-voice",
|
|
96
|
+
critique: `Passive-voice ratio ${passive.toFixed(2)} below floor ${PASSIVE_FAIL_THRESHOLD}; rewrite in third-person passive (study-summary cadence).`,
|
|
97
|
+
output_chars,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (passive < PASSIVE_RELAXED_THRESHOLD) {
|
|
101
|
+
return {
|
|
102
|
+
verdict: "relaxed",
|
|
103
|
+
critique: `Passive-voice ratio ${passive.toFixed(2)} below preferred ${PASSIVE_RELAXED_THRESHOLD}; rewrite in third-person passive (study-summary cadence) on next iteration.`,
|
|
104
|
+
output_chars,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { verdict: "pass", critique: "", output_chars };
|
|
109
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type SectionType = "liability-bullets" | "target-organ-liabilities" | "translational-commentary" | "executive-recommendation";
|
|
2
|
+
/**
|
|
3
|
+
* Annotated few-shot exemplars per section type. Each is an inlined sample
|
|
4
|
+
* of acceptable tox voice. Implementations may extend this list during
|
|
5
|
+
* editorial review with customer; the probe and prompts both read the
|
|
6
|
+
* exported array, so additions take effect with no other code changes.
|
|
7
|
+
*/
|
|
8
|
+
export declare const toxVoiceExemplars: Record<SectionType, readonly string[]>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Annotated few-shot exemplars per section type. Each is an inlined sample
|
|
3
|
+
* of acceptable tox voice. Implementations may extend this list during
|
|
4
|
+
* editorial review with customer; the probe and prompts both read the
|
|
5
|
+
* exported array, so additions take effect with no other code changes.
|
|
6
|
+
*/
|
|
7
|
+
export const toxVoiceExemplars = {
|
|
8
|
+
"liability-bullets": [
|
|
9
|
+
"Hepatobiliary liability is consistent with on-target pharmacology in the bile-acid receptor class; transaminase elevations at supratherapeutic exposure have been reported across the precedent class (FAERS n=312, Drugs@FDA NDA 022501 §6.1).",
|
|
10
|
+
"Renal liability cannot be excluded on present data; expression in proximal tubule is high (HPA TPM 142) and IMPC homozygotes show albuminuria (p=8.4e-5). Human relevance is uncertain pending dedicated repeat-dose toxicology.",
|
|
11
|
+
],
|
|
12
|
+
"target-organ-liabilities": [
|
|
13
|
+
"Cardiac. Available evidence is consistent with QT-interval prolongation as a class effect (FAERS PT QT-prolonged n=87 across precedent class). Human relevance is supported by hERG inhibition data on three precedent compounds. Mitigation: ICH E14-aligned thorough QT study at first-in-human or matched concentration-QT modelling.",
|
|
14
|
+
"Hepatobiliary. The data suggest dose-dependent transaminase elevation; FAERS reports of clinical hepatic injury (n=42) cluster at exposures >2-fold the recommended human dose. The translational chain from rodent repeat-dose findings to human signal is consistent.",
|
|
15
|
+
],
|
|
16
|
+
"translational-commentary": [
|
|
17
|
+
"IMPC homozygous knockout mice show postnatal lethality with cardiac structural abnormalities (MP:0001297, MP:0010880). Heterozygous viability with cardiac function deficit suggests dose-dependent on-target liability; translatability to humans is supported by conserved expression in fetal myocardium (Bgee, n=14).",
|
|
18
|
+
"Expression is high in haematologic lineages (HPA TPM, lymphoid TPM=78). The data are consistent with on-target myelosuppression observed in two precedent compounds in the same class; human relevance is established for the class.",
|
|
19
|
+
],
|
|
20
|
+
"executive-recommendation": [
|
|
21
|
+
"Disposition: conditional. The available evidence supports tractability for small-molecule modulation; the principal liability is on-target hepatobiliary toxicity, mitigable by exposure margin design and ICH S7A-aligned safety pharmacology. Confidence is moderate; key gaps are an absent first-in-human safety dataset and uncertain reproductive toxicology.",
|
|
22
|
+
"Disposition: de-prioritize. Three precedent compounds in this class were withdrawn for cardiac liability post-approval (Drugs@FDA NDA 020841 §6.2; FAERS n=412); human relevance is established. The therapeutic window does not support advancement absent a structural mitigation strategy.",
|
|
23
|
+
],
|
|
24
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { toxVoiceCore } from "./core.js";
|
|
2
|
+
export { toxVoiceExemplars, type SectionType } from "./exemplars.js";
|
|
3
|
+
export { toxVoiceVocabulary, type OrganSystem, type LiabilityFraming, type HedgePhrase, type BannedTerm } from "./vocabulary.js";
|
|
4
|
+
export { buildVoiceCritique, type VoiceProbe } from "./critique.js";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tox-voice canon. Lists are intentionally not exhaustive — they are the
|
|
3
|
+
* minimum surface the deterministic voice probe enforces. Editorial
|
|
4
|
+
* judgment in the agent prompts covers the long tail.
|
|
5
|
+
*/
|
|
6
|
+
export declare const toxVoiceVocabulary: {
|
|
7
|
+
readonly organSystems: readonly ["hepatobiliary", "renal", "cardiac", "vascular", "haematologic", "central nervous system", "peripheral nervous system", "respiratory", "gastrointestinal", "reproductive", "endocrine", "musculoskeletal", "dermatologic", "ocular", "immunologic"];
|
|
8
|
+
readonly liabilityFraming: readonly ["on-target liability", "off-target liability", "secondary pharmacology", "class liability", "mechanism-related", "exaggerated pharmacology", "target-organ toxicity"];
|
|
9
|
+
readonly hedgePhrases: readonly ["the data are consistent with", "the data suggest", "human relevance is uncertain", "human relevance remains to be established", "interpretation is limited by", "no causal inference is supported", "the available evidence is consistent with", "the available evidence does not support", "translatability to humans is unclear", "species differences"];
|
|
10
|
+
readonly banned: readonly ["groundbreaking", "cutting-edge", "state-of-the-art", "best-in-class", "first-in-class", "revolutionary", "leverages", "leveraging", "robust", "powerful", "seamlessly", "cleanly", "elegant", "unparalleled", "demonstrates the power of", "showcases", "unlocks", "enables breakthrough", "very promising", "extremely", "incredibly", "highly innovative"];
|
|
11
|
+
};
|
|
12
|
+
export type OrganSystem = (typeof toxVoiceVocabulary.organSystems)[number];
|
|
13
|
+
export type LiabilityFraming = (typeof toxVoiceVocabulary.liabilityFraming)[number];
|
|
14
|
+
export type HedgePhrase = (typeof toxVoiceVocabulary.hedgePhrases)[number];
|
|
15
|
+
export type BannedTerm = (typeof toxVoiceVocabulary.banned)[number];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tox-voice canon. Lists are intentionally not exhaustive — they are the
|
|
3
|
+
* minimum surface the deterministic voice probe enforces. Editorial
|
|
4
|
+
* judgment in the agent prompts covers the long tail.
|
|
5
|
+
*/
|
|
6
|
+
export const toxVoiceVocabulary = {
|
|
7
|
+
organSystems: [
|
|
8
|
+
"hepatobiliary",
|
|
9
|
+
"renal",
|
|
10
|
+
"cardiac",
|
|
11
|
+
"vascular",
|
|
12
|
+
"haematologic",
|
|
13
|
+
"central nervous system",
|
|
14
|
+
"peripheral nervous system",
|
|
15
|
+
"respiratory",
|
|
16
|
+
"gastrointestinal",
|
|
17
|
+
"reproductive",
|
|
18
|
+
"endocrine",
|
|
19
|
+
"musculoskeletal",
|
|
20
|
+
"dermatologic",
|
|
21
|
+
"ocular",
|
|
22
|
+
"immunologic",
|
|
23
|
+
],
|
|
24
|
+
liabilityFraming: [
|
|
25
|
+
"on-target liability",
|
|
26
|
+
"off-target liability",
|
|
27
|
+
"secondary pharmacology",
|
|
28
|
+
"class liability",
|
|
29
|
+
"mechanism-related",
|
|
30
|
+
"exaggerated pharmacology",
|
|
31
|
+
"target-organ toxicity",
|
|
32
|
+
],
|
|
33
|
+
hedgePhrases: [
|
|
34
|
+
"the data are consistent with",
|
|
35
|
+
"the data suggest",
|
|
36
|
+
"human relevance is uncertain",
|
|
37
|
+
"human relevance remains to be established",
|
|
38
|
+
"interpretation is limited by",
|
|
39
|
+
"no causal inference is supported",
|
|
40
|
+
"the available evidence is consistent with",
|
|
41
|
+
"the available evidence does not support",
|
|
42
|
+
"translatability to humans is unclear",
|
|
43
|
+
"species differences",
|
|
44
|
+
],
|
|
45
|
+
banned: [
|
|
46
|
+
// Marketing register
|
|
47
|
+
"groundbreaking",
|
|
48
|
+
"cutting-edge",
|
|
49
|
+
"state-of-the-art",
|
|
50
|
+
"best-in-class",
|
|
51
|
+
"first-in-class",
|
|
52
|
+
"revolutionary",
|
|
53
|
+
"leverages",
|
|
54
|
+
"leveraging",
|
|
55
|
+
"robust",
|
|
56
|
+
"powerful",
|
|
57
|
+
"seamlessly",
|
|
58
|
+
"cleanly",
|
|
59
|
+
"elegant",
|
|
60
|
+
"unparalleled",
|
|
61
|
+
// Hype verbs
|
|
62
|
+
"demonstrates the power of",
|
|
63
|
+
"showcases",
|
|
64
|
+
"unlocks",
|
|
65
|
+
"enables breakthrough",
|
|
66
|
+
// Vague absolutes
|
|
67
|
+
"very promising",
|
|
68
|
+
"extremely",
|
|
69
|
+
"incredibly",
|
|
70
|
+
"highly innovative",
|
|
71
|
+
],
|
|
72
|
+
};
|
|
@@ -0,0 +1,148 @@
|
|
|
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
|
+
import type { ArtifactRecord } from "../execution/artifact-record.js";
|
|
15
|
+
import type { ProvenanceRecord, InputRef, InputSource } from "./types.js";
|
|
16
|
+
/** A single observed write from the provenance frame.
|
|
17
|
+
*
|
|
18
|
+
* `hash` is left empty by `feedExecFrame` — it is the
|
|
19
|
+
* responsibility of `reconcileManifestWithDisk` to populate the hash
|
|
20
|
+
* from disk just before registration, so the registered hash always
|
|
21
|
+
* matches the bytes the storage backend will receive at upload time. Callers that
|
|
22
|
+
* synthesize writes from a context where the bytes are already known
|
|
23
|
+
* and stable (e.g., `recordFileToolWrite` for in-process agent tool
|
|
24
|
+
* writes) may pass a non-empty hash directly.
|
|
25
|
+
*/
|
|
26
|
+
export interface ObservedWrite {
|
|
27
|
+
/** Analysis-relative path (e.g., "runs/run-001/step-de/output/results.csv") */
|
|
28
|
+
path: string;
|
|
29
|
+
/** SHA-256 hash of the file content. Empty string when deferred to reconcile. */
|
|
30
|
+
hash: string;
|
|
31
|
+
/** File size in bytes. */
|
|
32
|
+
size: number;
|
|
33
|
+
}
|
|
34
|
+
/** Explicit classification context for a file read. Callers build this
|
|
35
|
+
* from the step's own coordinates (stepId/runId/dependsOn) instead of the
|
|
36
|
+
* collector parsing paths. */
|
|
37
|
+
export interface InputClassificationContext {
|
|
38
|
+
source: InputSource;
|
|
39
|
+
stepId?: string;
|
|
40
|
+
runId?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Build classification context for a file read using known step metadata.
|
|
44
|
+
*
|
|
45
|
+
* Uses prefix matching against structured metadata — no path segment
|
|
46
|
+
* extraction. The caller knows its own stepId/runId and its upstream
|
|
47
|
+
* dependencies (dependsOn).
|
|
48
|
+
*
|
|
49
|
+
* For prior-run reads (paths under runs/ that don't match own run or
|
|
50
|
+
* any dependsOn entry), this falls back to path extraction — see the
|
|
51
|
+
* prior-run branch below for why.
|
|
52
|
+
*/
|
|
53
|
+
export declare function classifyReadPath(relativePath: string, ownStepId: string, ownRunId: string, dependsOn?: string[]): InputClassificationContext;
|
|
54
|
+
export interface ProvenanceCollectorOptions {
|
|
55
|
+
stepId: string;
|
|
56
|
+
runId: string;
|
|
57
|
+
/** Step IDs this step depends on (for upstream mount enumeration). */
|
|
58
|
+
dependsOn?: string[];
|
|
59
|
+
}
|
|
60
|
+
export declare class ProvenanceCollector {
|
|
61
|
+
readonly stepId: string;
|
|
62
|
+
readonly runId: string;
|
|
63
|
+
readonly dependsOn: string[];
|
|
64
|
+
/** Prefix for converting analysis-relative write paths to step-relative. */
|
|
65
|
+
private readonly stepPrefix;
|
|
66
|
+
/**
|
|
67
|
+
* Map from input file relative path (e.g., "inputs/Lab A Storage/trail_0/data.csv")
|
|
68
|
+
* to fileId. Sourced from the data-mount filesystem's inputPathToFileId map
|
|
69
|
+
* (passed by reference, populated lazily during filesystem init).
|
|
70
|
+
*/
|
|
71
|
+
private inputFileIdMap?;
|
|
72
|
+
/** Tracked reads from read-only mounts, keyed by `mountPath:relativePath`. */
|
|
73
|
+
private readonly inputAccesses;
|
|
74
|
+
/** File tool write records, keyed by output path (relative to /artifacts). */
|
|
75
|
+
private readonly fileToolRecords;
|
|
76
|
+
/** Command execution records, keyed by output path (relative to /artifacts). */
|
|
77
|
+
private readonly commandRecords;
|
|
78
|
+
constructor(opts: ProvenanceCollectorOptions);
|
|
79
|
+
/**
|
|
80
|
+
* Set the input file ID map (passed by reference from the data-mount filesystem).
|
|
81
|
+
* Called after construction when the data mount filesystem is available.
|
|
82
|
+
*/
|
|
83
|
+
setInputFileIdMap(map: Map<string, string>): void;
|
|
84
|
+
/**
|
|
85
|
+
* Track a file read from a read-only mount.
|
|
86
|
+
* Called by sandbox exec provenance frame processing.
|
|
87
|
+
*
|
|
88
|
+
* @param mountPath - The workspace mount path (e.g., "/a1/data" or "/a1" for single-mount)
|
|
89
|
+
* @param relativePath - Path relative to the mount root
|
|
90
|
+
* @param hash - SHA-256 hash of the file content, or null if file no longer exists
|
|
91
|
+
* @param context - Explicit classification context from the caller. When provided,
|
|
92
|
+
* the collector uses it directly instead of classifying from the path.
|
|
93
|
+
*/
|
|
94
|
+
trackInputAccess(mountPath: string, relativePath: string, hash: string | null, context?: InputClassificationContext): InputRef;
|
|
95
|
+
/**
|
|
96
|
+
* Record a file tool write (write_file, edit_file).
|
|
97
|
+
* Called after the data-mount filesystem records the artifact.
|
|
98
|
+
*
|
|
99
|
+
* File tool writes are agent-authored content — not derived from input
|
|
100
|
+
* files via execution — so no inputs are attributed.
|
|
101
|
+
*/
|
|
102
|
+
recordFileToolWrite(artifact: ArtifactRecord): void;
|
|
103
|
+
/**
|
|
104
|
+
* Record outputs from a sandbox command execution.
|
|
105
|
+
* Called after provenance frame processing extracts observed writes.
|
|
106
|
+
*
|
|
107
|
+
* When commandReads is provided, uses those as the inputs for this
|
|
108
|
+
* command's provenance records (per-command scoping). Falls back to
|
|
109
|
+
* snapshotting the global inputAccesses accumulator when not provided.
|
|
110
|
+
*/
|
|
111
|
+
recordCommandExecution(command: string, args: string[], exitCode: number, durationMs: number, writes: ObservedWrite[], scriptPath?: string, commandReads?: InputRef[]): void;
|
|
112
|
+
/**
|
|
113
|
+
* Get provenance inputs classified as `source: "data"` (input files read from /data mount).
|
|
114
|
+
*/
|
|
115
|
+
getDataInputs(): InputRef[];
|
|
116
|
+
/**
|
|
117
|
+
* All distinct input refs observed this step, any source. The returned refs
|
|
118
|
+
* are the live objects also held by the per-command records, so repairing a
|
|
119
|
+
* `hash` here (e.g. `reconcileManifestWithDisk` filling read hashes from
|
|
120
|
+
* disk) propagates into the registration payload.
|
|
121
|
+
*/
|
|
122
|
+
getTrackedInputs(): InputRef[];
|
|
123
|
+
/**
|
|
124
|
+
* Drop an input ref from lineage entirely — removes it from the tracked-input
|
|
125
|
+
* map and from every record's `inputs` array (identity match, since the refs
|
|
126
|
+
* are shared objects). `reconcileManifestWithDisk` calls this for a read that
|
|
127
|
+
* resolves to a directory (e.g. an `ls` / `list.files` of a mount): the
|
|
128
|
+
* inotify frame tracks the open, but a directory is not a content-attestable
|
|
129
|
+
* file artifact and must never reach registration. Mirrors the output-side
|
|
130
|
+
* non-file drop.
|
|
131
|
+
*/
|
|
132
|
+
dropInput(ref: InputRef): void;
|
|
133
|
+
/**
|
|
134
|
+
* Get merged, deduplicated provenance records.
|
|
135
|
+
* Command records win over file-tool records for the same output path.
|
|
136
|
+
*/
|
|
137
|
+
getRecords(): ProvenanceRecord[];
|
|
138
|
+
/** Remove any record (command or file-tool) for the given output path. */
|
|
139
|
+
removeRecord(path: string): void;
|
|
140
|
+
/**
|
|
141
|
+
* Replace the existing record for `record.outputPath` while preserving
|
|
142
|
+
* last-write-wins ordering (command beats file-tool). If a command record
|
|
143
|
+
* exists, the replacement overwrites it; otherwise the file-tool record
|
|
144
|
+
* is overwritten. If neither exists, the replacement is stored as a
|
|
145
|
+
* file-tool record so `getRecords()` surfaces it.
|
|
146
|
+
*/
|
|
147
|
+
replaceRecord(record: ProvenanceRecord): void;
|
|
148
|
+
}
|