@inflexa-ai/harness 0.45.0 → 0.46.0
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/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +19 -3
- package/dist/agents/conversation-agent.js +49 -30
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +35 -16
- package/dist/agents/sandbox/shared.js +63 -24
- package/dist/agents/sandbox/translational-safety-agent.js +26 -0
- package/dist/agents/sandbox/types.d.ts +26 -3
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +16 -2
- package/dist/agents/sandbox-catalog.js +22 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/approve-plan.d.ts +5 -2
- package/dist/app/approve-plan.js +1 -1
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +125 -99
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +10 -8
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +46 -22
- package/dist/contracts/chat-events.js +1 -1
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +67 -40
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +45 -6
- package/dist/contracts/schemas/chat-events.js +16 -0
- package/dist/contracts/schemas/chat-parts.d.ts +214 -102
- package/dist/contracts/schemas/chat-parts.js +50 -7
- package/dist/contracts/schemas/index.d.ts +1 -1
- package/dist/contracts/schemas/index.js +1 -1
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +7 -6
- package/dist/execution/dbos-workflow-purger.js +29 -21
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +39 -17
- package/dist/execution/run-canceler.js +137 -28
- package/dist/execution/run-end-record.d.ts +29 -0
- package/dist/execution/run-end-record.js +27 -0
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +36 -37
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +14 -9
- package/dist/loop/compaction.js +17 -0
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +34 -37
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -6
- package/dist/memory/conversation-display-recorder.js +64 -20
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +66 -24
- package/dist/memory/thread-history.js +212 -79
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +63 -9
- package/dist/prompts/briefing.js +130 -3
- package/dist/prompts/planner.js +13 -2
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +24 -19
- package/dist/provenance/seam.js +7 -5
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +303 -458
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +59 -92
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +166 -10
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +209 -231
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.d.ts +26 -4
- package/dist/sandbox/image-packages.js +29 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +351 -306
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +79 -25
- package/dist/schemas/plan-schemas.js +1 -1
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +127 -14
- package/dist/schemas/workflow-state.js +56 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +47 -18
- package/dist/state/artifacts.js +48 -7
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +3 -3
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +70 -25
- package/dist/state/runs.js +127 -64
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +29 -8
- package/dist/state/step-executions.js +28 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +11 -9
- package/dist/tools/ad-hoc-router.js +80 -51
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +40 -0
- package/dist/tools/capability-data.js +74 -0
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +54 -17
- package/dist/tools/execute-analysis.js +193 -62
- package/dist/tools/knowledge/check.d.ts +182 -0
- package/dist/tools/knowledge/check.js +94 -0
- package/dist/tools/knowledge/client.d.ts +351 -0
- package/dist/tools/knowledge/client.js +319 -0
- package/dist/tools/knowledge/environment.d.ts +78 -0
- package/dist/tools/knowledge/environment.js +116 -0
- package/dist/tools/knowledge/index.d.ts +49 -0
- package/dist/tools/knowledge/index.js +70 -0
- package/dist/tools/knowledge/local-slots.d.ts +62 -0
- package/dist/tools/knowledge/local-slots.js +184 -0
- package/dist/tools/knowledge/pin.d.ts +14 -0
- package/dist/tools/knowledge/pin.js +17 -0
- package/dist/tools/knowledge/recommend.d.ts +67 -0
- package/dist/tools/knowledge/recommend.js +106 -0
- package/dist/tools/knowledge/situation.d.ts +143 -0
- package/dist/tools/knowledge/situation.js +157 -0
- package/dist/tools/knowledge/skeleton.d.ts +69 -0
- package/dist/tools/knowledge/skeleton.js +201 -0
- package/dist/tools/knowledge/template.d.ts +139 -0
- package/dist/tools/knowledge/template.js +273 -0
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +39 -16
- package/dist/tools/research/generate-plan.js +565 -338
- package/dist/tools/research/guarded-address.d.ts +20 -0
- package/dist/tools/research/guarded-address.js +149 -0
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +40 -0
- package/dist/tools/research/searxng-engine.js +122 -0
- package/dist/tools/research/web-fetch.d.ts +127 -0
- package/dist/tools/research/web-fetch.js +618 -0
- package/dist/tools/research/web-search.d.ts +84 -0
- package/dist/tools/research/web-search.js +117 -0
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
- package/dist/tools/sandbox/list-available-packages.js +43 -29
- package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
- package/dist/tools/sandbox/list-available-refs.js +119 -37
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +22 -68
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +14 -0
- package/dist/tools/terminal-text.js +51 -0
- package/dist/tools/workspace/decision-record.d.ts +81 -0
- package/dist/tools/workspace/decision-record.js +127 -0
- package/dist/tools/workspace/edit-file.d.ts +59 -18
- package/dist/tools/workspace/edit-file.js +98 -15
- package/dist/tools/workspace/execute-command.d.ts +31 -12
- package/dist/tools/workspace/execute-command.js +37 -8
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/index.d.ts +1 -0
- package/dist/tools/workspace/index.js +1 -0
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +100 -76
- package/dist/workflows/execute-analysis.js +380 -247
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +50 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +25 -22
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -236
- package/dist/loop/run-agent.js +0 -1110
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -90
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* not `.nullable()`.
|
|
10
10
|
*/
|
|
11
11
|
import { z } from "zod";
|
|
12
|
+
import { isUnknownArray } from "../../lib/unknown-array.js";
|
|
13
|
+
import { presentGet } from "../../lib/present.js";
|
|
14
|
+
import { parseUnknownRecord } from "../../lib/unknown-containers.js";
|
|
12
15
|
import { apiFetchValidated, describeApiError, isUnexpectedApiError } from "./api-utils.js";
|
|
13
16
|
const IMPC_BASE = "https://www.ebi.ac.uk/mi/impc/solr";
|
|
14
17
|
const PHENOTYPE_ROW_CAP = 500;
|
|
@@ -40,14 +43,14 @@ const ORGAN_SYSTEM_MAP = {
|
|
|
40
43
|
"embryo phenotype": "growth",
|
|
41
44
|
};
|
|
42
45
|
// A single IMPC Solr document — fields vary by core; all optional. `top_level_mp_term_name`
|
|
43
|
-
// and `sex`
|
|
46
|
+
// and `sex` ride as JSON values: the code reads them defensively (`Array.isArray`,
|
|
44
47
|
// `typeof === "string"`) rather than trusting a wire type.
|
|
45
48
|
const ImpcSolrDocSchema = z.object({
|
|
46
49
|
mp_term_id: z.string().optional(),
|
|
47
50
|
mp_term_name: z.string().optional(),
|
|
48
51
|
p_value: z.number().optional(),
|
|
49
|
-
top_level_mp_term_name: z.
|
|
50
|
-
sex: z.
|
|
52
|
+
top_level_mp_term_name: z.json().optional(),
|
|
53
|
+
sex: z.json().optional(),
|
|
51
54
|
parameter_stable_id: z.string().optional(),
|
|
52
55
|
parameter_name: z.string().optional(),
|
|
53
56
|
marker_symbol: z.string().optional(),
|
|
@@ -57,14 +60,21 @@ const ImpcSolrDocSchema = z.object({
|
|
|
57
60
|
const ImpcSolrResponseSchema = z.object({
|
|
58
61
|
response: z.object({ docs: z.array(ImpcSolrDocSchema).optional(), numFound: z.number().optional() }).optional(),
|
|
59
62
|
});
|
|
63
|
+
import { hasWhitespace } from "../../lib/text.js";
|
|
60
64
|
function escapeSolrValue(value) {
|
|
61
|
-
|
|
65
|
+
const specials = '+-&|!(){}[]^"~*?:\\/';
|
|
66
|
+
let out = "";
|
|
67
|
+
for (const char of value) {
|
|
68
|
+
if (specials.includes(char) || hasWhitespace(char))
|
|
69
|
+
out += "\\" + char;
|
|
70
|
+
else
|
|
71
|
+
out += char;
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
62
74
|
}
|
|
63
75
|
export function parsePhenotypeResponse(raw) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const docs = raw?.response?.docs ?? [];
|
|
67
|
-
if (!Array.isArray(docs) || docs.length === 0) {
|
|
76
|
+
const docs = solrDocsOf(raw);
|
|
77
|
+
if (docs.length === 0) {
|
|
68
78
|
return { mpTerms: [], organSystems: [], sexDimorphic: false, phenotypeCount: 0 };
|
|
69
79
|
}
|
|
70
80
|
const byMp = new Map();
|
|
@@ -72,13 +82,13 @@ export function parsePhenotypeResponse(raw) {
|
|
|
72
82
|
const mpToSexes = new Map();
|
|
73
83
|
const allSexes = new Set();
|
|
74
84
|
for (const doc of docs) {
|
|
75
|
-
const mpId = doc
|
|
85
|
+
const mpId = readString(doc, "mp_term_id");
|
|
76
86
|
if (!mpId)
|
|
77
87
|
continue;
|
|
78
88
|
const newP = typeof doc.p_value === "number" && Number.isFinite(doc.p_value) ? doc.p_value : null;
|
|
79
89
|
const existing = byMp.get(mpId);
|
|
80
90
|
if (!existing) {
|
|
81
|
-
byMp.set(mpId, { id: mpId, term: doc
|
|
91
|
+
byMp.set(mpId, { id: mpId, term: readString(doc, "mp_term_name") ?? "", bestPValue: newP });
|
|
82
92
|
}
|
|
83
93
|
else if (newP !== null && (existing.bestPValue === null || newP < existing.bestPValue)) {
|
|
84
94
|
existing.bestPValue = newP;
|
|
@@ -97,7 +107,7 @@ export function parsePhenotypeResponse(raw) {
|
|
|
97
107
|
allSexes.add(sex);
|
|
98
108
|
if (!mpToSexes.has(mpId))
|
|
99
109
|
mpToSexes.set(mpId, new Set());
|
|
100
|
-
mpToSexes
|
|
110
|
+
presentGet(mpToSexes, mpId, "the sex set of the phenotype").add(sex);
|
|
101
111
|
}
|
|
102
112
|
}
|
|
103
113
|
const mpTerms = [...byMp.values()].sort((a, b) => {
|
|
@@ -110,33 +120,34 @@ export function parsePhenotypeResponse(raw) {
|
|
|
110
120
|
const sexDimorphic = bothSexesTested && [...mpToSexes.values()].some((sexes) => (sexes.has("male") && !sexes.has("female")) || (sexes.has("female") && !sexes.has("male")));
|
|
111
121
|
return { mpTerms, organSystems, sexDimorphic, phenotypeCount: byMp.size };
|
|
112
122
|
}
|
|
123
|
+
function readString(record, key) {
|
|
124
|
+
const value = record[key];
|
|
125
|
+
return typeof value === "string" ? value : undefined;
|
|
126
|
+
}
|
|
127
|
+
/** The `.response.docs` of a Solr envelope, each doc as the record its fields are read off; a non-record doc is skipped. */
|
|
128
|
+
function solrDocsOf(raw) {
|
|
129
|
+
const docs = parseUnknownRecord(parseUnknownRecord(raw)?.response)?.docs;
|
|
130
|
+
if (!isUnknownArray(docs))
|
|
131
|
+
return [];
|
|
132
|
+
return docs.flatMap((doc) => {
|
|
133
|
+
const record = parseUnknownRecord(doc);
|
|
134
|
+
return record === undefined ? [] : [record];
|
|
135
|
+
});
|
|
136
|
+
}
|
|
113
137
|
export function buildViabilityCalls(docsB, docsC) {
|
|
114
|
-
// `docsB`/`docsC` are untyped IMPC Solr responses; the `.response.docs` reach is
|
|
115
|
-
// optional-chained + defaulted, so a shape mismatch degrades to an empty result.
|
|
116
|
-
const bDocs = docsB?.response?.docs ?? [];
|
|
117
|
-
const cDocs = docsC?.response?.docs ?? [];
|
|
118
138
|
const seen = new Set();
|
|
119
139
|
const out = [];
|
|
120
|
-
for (const d of
|
|
121
|
-
const pid = d
|
|
122
|
-
if (!pid || seen.has(pid))
|
|
123
|
-
continue;
|
|
124
|
-
seen.add(pid);
|
|
125
|
-
out.push({
|
|
126
|
-
zygosity: d.parameter_name ?? "",
|
|
127
|
-
parameterStableId: pid,
|
|
128
|
-
mpTerm: d.mp_term_id && d.mp_term_name ? { id: d.mp_term_id, name: d.mp_term_name } : null,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
for (const d of cDocs) {
|
|
132
|
-
const pid = d.parameter_stable_id;
|
|
140
|
+
for (const d of [...solrDocsOf(docsB), ...solrDocsOf(docsC)]) {
|
|
141
|
+
const pid = readString(d, "parameter_stable_id");
|
|
133
142
|
if (!pid || seen.has(pid))
|
|
134
143
|
continue;
|
|
135
144
|
seen.add(pid);
|
|
145
|
+
const mpId = readString(d, "mp_term_id");
|
|
146
|
+
const mpName = readString(d, "mp_term_name");
|
|
136
147
|
out.push({
|
|
137
|
-
zygosity: d
|
|
148
|
+
zygosity: readString(d, "parameter_name") ?? "",
|
|
138
149
|
parameterStableId: pid,
|
|
139
|
-
mpTerm: null,
|
|
150
|
+
mpTerm: mpId && mpName ? { id: mpId, name: mpName } : null,
|
|
140
151
|
});
|
|
141
152
|
}
|
|
142
153
|
return out;
|
|
@@ -159,15 +170,15 @@ async function resolveImpcGene(humanSymbol) {
|
|
|
159
170
|
throw new Error(describeApiError(res.error));
|
|
160
171
|
return null;
|
|
161
172
|
}
|
|
162
|
-
const docs = res.value
|
|
173
|
+
const docs = res.value.response?.docs ?? [];
|
|
163
174
|
if (!Array.isArray(docs) || docs.length === 0)
|
|
164
175
|
return null;
|
|
165
176
|
const doc = docs[0];
|
|
166
|
-
if (!doc.marker_symbol || !doc.mgi_accession_id)
|
|
177
|
+
if (doc === undefined || !doc.marker_symbol || !doc.mgi_accession_id)
|
|
167
178
|
return null;
|
|
168
179
|
return {
|
|
169
|
-
mouseMarkerSymbol:
|
|
170
|
-
mgiAccessionId:
|
|
180
|
+
mouseMarkerSymbol: doc.marker_symbol,
|
|
181
|
+
mgiAccessionId: doc.mgi_accession_id,
|
|
171
182
|
};
|
|
172
183
|
}
|
|
173
184
|
async function fetchPhenotypes(mouseSym) {
|
|
@@ -179,7 +190,7 @@ async function fetchPhenotypes(mouseSym) {
|
|
|
179
190
|
throw new Error(describeApiError(res.error));
|
|
180
191
|
return { raw: { response: { docs: [] } }, numFound: 0 };
|
|
181
192
|
}
|
|
182
|
-
const numFound =
|
|
193
|
+
const numFound = res.value.response?.numFound ?? 0;
|
|
183
194
|
return { raw: res.value, numFound };
|
|
184
195
|
}
|
|
185
196
|
async function fetchAssignedViability(mouseSym) {
|
|
@@ -19,14 +19,14 @@ export declare const IupharTargetSchema: z.ZodObject<{
|
|
|
19
19
|
subunitType: z.ZodOptional<z.ZodString>;
|
|
20
20
|
}, z.core.$strip>;
|
|
21
21
|
export type IupharTarget = z.infer<typeof IupharTargetSchema>;
|
|
22
|
-
export
|
|
22
|
+
export type IupharHeterodimer = {
|
|
23
23
|
/** Complex target record (e.g., the AMY1 receptor). */
|
|
24
24
|
complex: IupharTarget;
|
|
25
25
|
/** All subunits of the complex, including the primary protein and accessory(ies). */
|
|
26
26
|
subunits: IupharTarget[];
|
|
27
27
|
/** Accessory-protein subunits only (type === "AccessoryProtein"). */
|
|
28
28
|
accessories: IupharTarget[];
|
|
29
|
-
}
|
|
29
|
+
};
|
|
30
30
|
export declare function findTargetByGeneSymbol(geneSymbol: string): Promise<IupharTarget | null>;
|
|
31
31
|
export declare function findTargetByUniprot(accession: string): Promise<IupharTarget | null>;
|
|
32
32
|
/**
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
import { createNoopLogger } from "../../lib/console-logger.js";
|
|
12
|
+
import { presentAt } from "../../lib/present.js";
|
|
13
|
+
import { stripHtmlTags } from "./html-text.js";
|
|
12
14
|
import { apiFetchValidated, describeApiError, isUnexpectedApiError } from "./api-utils.js";
|
|
13
15
|
import { IUPHAR_BASE, IUPHAR_HEADERS as HEADERS } from "./iuphar-config.js";
|
|
14
16
|
// Validated at the fetch boundary. GtoPdb serves the target record in three
|
|
@@ -36,19 +38,8 @@ export const IupharTargetSchema = z.object({
|
|
|
36
38
|
complexIds: z.array(z.number()).optional(),
|
|
37
39
|
subunitType: z.string().optional(),
|
|
38
40
|
});
|
|
41
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the issued UniProt accession shape is the identifier rule of the target records.
|
|
39
42
|
const UNIPROT_ACCESSION_RE = /^[A-Z][0-9][A-Z0-9]{3}[0-9]$/;
|
|
40
|
-
function stripHtml(name) {
|
|
41
|
-
// Strip tags to a fixpoint: a single pass can leave a `<…>` behind when
|
|
42
|
-
// removing an inner tag lets the surrounding angle brackets form a new one,
|
|
43
|
-
// so repeat until the string stops changing.
|
|
44
|
-
let out = name;
|
|
45
|
-
let prev;
|
|
46
|
-
do {
|
|
47
|
-
prev = out;
|
|
48
|
-
out = out.replace(/<[^>]+>/g, "");
|
|
49
|
-
} while (out !== prev);
|
|
50
|
-
return out;
|
|
51
|
-
}
|
|
52
43
|
function notFound(error) {
|
|
53
44
|
return error.type === "http_status" && (error.status === 404 || error.status === 204);
|
|
54
45
|
}
|
|
@@ -123,9 +114,9 @@ export async function getFamilyHeterodimers(uniprotOrGeneSymbol) {
|
|
|
123
114
|
const batch = complexes.slice(i, i + concurrency);
|
|
124
115
|
const subunitLists = await Promise.all(batch.map((c) => getSubunits(c.targetId)));
|
|
125
116
|
for (let j = 0; j < batch.length; j++) {
|
|
126
|
-
const complex = batch
|
|
127
|
-
const subunits = subunitLists
|
|
128
|
-
const cleanedSubunits = subunits.map((s) => ({ ...s, name:
|
|
117
|
+
const complex = presentAt(batch, j, "the complex of the batch");
|
|
118
|
+
const subunits = presentAt(subunitLists, j, "the subunits of the complex");
|
|
119
|
+
const cleanedSubunits = subunits.map((s) => ({ ...s, name: stripHtmlTags(s.name) }));
|
|
129
120
|
// Only a shape B row reaches this filter, because `getSubunits`
|
|
130
121
|
// calls `/targets/{id}/subunits`. Shape B is the one shape that
|
|
131
122
|
// names the kind of a target as `AccessoryProtein`, and the
|
|
@@ -134,7 +125,7 @@ export async function getFamilyHeterodimers(uniprotOrGeneSymbol) {
|
|
|
134
125
|
// row or a single-target row would match nothing.
|
|
135
126
|
const accessories = cleanedSubunits.filter((s) => (s.type ?? "").toLowerCase() === "accessoryprotein");
|
|
136
127
|
results.push({
|
|
137
|
-
complex: { ...complex, name:
|
|
128
|
+
complex: { ...complex, name: stripHtmlTags(complex.name) },
|
|
138
129
|
subunits: cleanedSubunits,
|
|
139
130
|
accessories,
|
|
140
131
|
});
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* field carries `.nullish()` exactly.
|
|
18
18
|
*/
|
|
19
19
|
/** A curated human phenotype attributed to variation in the gene. */
|
|
20
|
-
export
|
|
20
|
+
export type MonarchPhenotypeAssociation = {
|
|
21
21
|
/** HPO term id, e.g. `HP:0001392`. */
|
|
22
22
|
readonly hpoId: string;
|
|
23
23
|
readonly label: string;
|
|
@@ -30,12 +30,12 @@ export interface MonarchPhenotypeAssociation {
|
|
|
30
30
|
/** Share of affected individuals showing the phenotype, when annotated. */
|
|
31
31
|
readonly frequencyPercent: number | null;
|
|
32
32
|
readonly primaryKnowledgeSource: string | null;
|
|
33
|
-
}
|
|
34
|
-
export
|
|
33
|
+
};
|
|
34
|
+
export type MonarchGeneProfile = {
|
|
35
35
|
/** The curie the gene was queried by, e.g. `HGNC:1097`. */
|
|
36
36
|
readonly geneCurie: string;
|
|
37
37
|
readonly phenotypes: MonarchPhenotypeAssociation[];
|
|
38
|
-
}
|
|
38
|
+
};
|
|
39
39
|
/**
|
|
40
40
|
* Curated human phenotype associations for one gene.
|
|
41
41
|
*
|
|
@@ -9,11 +9,11 @@
|
|
|
9
9
|
* not `.nullable()`.
|
|
10
10
|
*/
|
|
11
11
|
import { z } from "zod";
|
|
12
|
-
export
|
|
12
|
+
export type AdverseEventCount = {
|
|
13
13
|
reaction: string;
|
|
14
14
|
count: number;
|
|
15
|
-
}
|
|
16
|
-
export
|
|
15
|
+
};
|
|
16
|
+
export type DrugLabelAction = {
|
|
17
17
|
applicationNumber: string | null;
|
|
18
18
|
brandName: string | null;
|
|
19
19
|
genericName: string | null;
|
|
@@ -23,8 +23,8 @@ export interface DrugLabelAction {
|
|
|
23
23
|
warningsAndCautions: string | null;
|
|
24
24
|
hasRems: boolean;
|
|
25
25
|
sourceUrl: string;
|
|
26
|
-
}
|
|
27
|
-
export
|
|
26
|
+
};
|
|
27
|
+
export type SeriousnessProfile = {
|
|
28
28
|
totalReports: number;
|
|
29
29
|
fatalCount: number;
|
|
30
30
|
hospitalizationCount: number;
|
|
@@ -32,7 +32,7 @@ export interface SeriousnessProfile {
|
|
|
32
32
|
disablingCount: number;
|
|
33
33
|
congenitalAnomalyCount: number;
|
|
34
34
|
otherSeriousCount: number;
|
|
35
|
-
}
|
|
35
|
+
};
|
|
36
36
|
/** Top adverse-reaction terms by count for a generic drug name. */
|
|
37
37
|
export declare function getFaersByDrug(drugName: string, options?: {
|
|
38
38
|
limit?: number;
|
|
@@ -49,29 +49,29 @@ export declare function getFaersByDrug(drugName: string, options?: {
|
|
|
49
49
|
export declare function getFaersSeriousness(drugName: string): Promise<SeriousnessProfile | null>;
|
|
50
50
|
export declare const OpenFdaLabelResponseSchema: z.ZodObject<{
|
|
51
51
|
results: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodObject<{
|
|
52
|
-
set_id: z.ZodOptional<z.
|
|
52
|
+
set_id: z.ZodOptional<z.ZodJSONSchema>;
|
|
53
53
|
openfda: z.ZodOptional<z.ZodObject<{
|
|
54
|
-
application_number: z.ZodOptional<z.
|
|
55
|
-
brand_name: z.ZodOptional<z.
|
|
56
|
-
generic_name: z.ZodOptional<z.
|
|
54
|
+
application_number: z.ZodOptional<z.ZodJSONSchema>;
|
|
55
|
+
brand_name: z.ZodOptional<z.ZodJSONSchema>;
|
|
56
|
+
generic_name: z.ZodOptional<z.ZodJSONSchema>;
|
|
57
57
|
}, z.core.$strip>>;
|
|
58
|
-
effective_time: z.ZodOptional<z.
|
|
59
|
-
boxed_warning: z.ZodOptional<z.
|
|
60
|
-
warnings_and_cautions: z.ZodOptional<z.
|
|
61
|
-
warnings: z.ZodOptional<z.
|
|
58
|
+
effective_time: z.ZodOptional<z.ZodJSONSchema>;
|
|
59
|
+
boxed_warning: z.ZodOptional<z.ZodJSONSchema>;
|
|
60
|
+
warnings_and_cautions: z.ZodOptional<z.ZodJSONSchema>;
|
|
61
|
+
warnings: z.ZodOptional<z.ZodJSONSchema>;
|
|
62
62
|
spl_medguide: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
63
63
|
patient_medication_information: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
64
64
|
}, z.core.$strip>, z.ZodTransform<DrugLabelAction, {
|
|
65
|
-
set_id?:
|
|
65
|
+
set_id?: z.JSONType | undefined;
|
|
66
66
|
openfda?: {
|
|
67
|
-
application_number?:
|
|
68
|
-
brand_name?:
|
|
69
|
-
generic_name?:
|
|
67
|
+
application_number?: z.JSONType | undefined;
|
|
68
|
+
brand_name?: z.JSONType | undefined;
|
|
69
|
+
generic_name?: z.JSONType | undefined;
|
|
70
70
|
} | undefined;
|
|
71
|
-
effective_time?:
|
|
72
|
-
boxed_warning?:
|
|
73
|
-
warnings_and_cautions?:
|
|
74
|
-
warnings?:
|
|
71
|
+
effective_time?: z.JSONType | undefined;
|
|
72
|
+
boxed_warning?: z.JSONType | undefined;
|
|
73
|
+
warnings_and_cautions?: z.JSONType | undefined;
|
|
74
|
+
warnings?: z.JSONType | undefined;
|
|
75
75
|
spl_medguide?: string[] | undefined;
|
|
76
76
|
patient_medication_information?: string[] | undefined;
|
|
77
77
|
}>>>>;
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* not `.nullable()`.
|
|
10
10
|
*/
|
|
11
11
|
import { z } from "zod";
|
|
12
|
+
import { isUnknownArray } from "../../lib/unknown-array.js";
|
|
12
13
|
import { apiFetchValidated, describeApiError } from "./api-utils.js";
|
|
13
14
|
import { OPENFDA_BASE, OPENFDA_LABEL_BASE } from "./openfda-config.js";
|
|
14
15
|
// FAERS count/meta wire shapes, validated at the fetch boundary. Every field is
|
|
@@ -22,9 +23,9 @@ const FaersMetaResponseSchema = z.object({
|
|
|
22
23
|
});
|
|
23
24
|
/** openFDA drug-label metadata block (`openfda`) — all fields free-form JSON. */
|
|
24
25
|
const OpenFdaLabelMetaSchema = z.object({
|
|
25
|
-
application_number: z.
|
|
26
|
-
brand_name: z.
|
|
27
|
-
generic_name: z.
|
|
26
|
+
application_number: z.json().optional(),
|
|
27
|
+
brand_name: z.json().optional(),
|
|
28
|
+
generic_name: z.json().optional(),
|
|
28
29
|
});
|
|
29
30
|
/**
|
|
30
31
|
* A single openFDA structured-product-label record (raw wire shape).
|
|
@@ -34,12 +35,12 @@ const OpenFdaLabelMetaSchema = z.object({
|
|
|
34
35
|
* provider types both as an array of string.
|
|
35
36
|
*/
|
|
36
37
|
const OpenFdaLabelSchema = z.object({
|
|
37
|
-
set_id: z.
|
|
38
|
+
set_id: z.json().optional(),
|
|
38
39
|
openfda: OpenFdaLabelMetaSchema.optional(),
|
|
39
|
-
effective_time: z.
|
|
40
|
-
boxed_warning: z.
|
|
41
|
-
warnings_and_cautions: z.
|
|
42
|
-
warnings: z.
|
|
40
|
+
effective_time: z.json().optional(),
|
|
41
|
+
boxed_warning: z.json().optional(),
|
|
42
|
+
warnings_and_cautions: z.json().optional(),
|
|
43
|
+
warnings: z.json().optional(),
|
|
43
44
|
spl_medguide: z.array(z.string()).optional(),
|
|
44
45
|
patient_medication_information: z.array(z.string()).optional(),
|
|
45
46
|
});
|
|
@@ -49,7 +50,7 @@ const OpenFdaLabelSchema = z.object({
|
|
|
49
50
|
* unescaped `"` past the quote escaping and break out of the phrase.
|
|
50
51
|
*/
|
|
51
52
|
function escapeQueryPhrase(value) {
|
|
52
|
-
return value.
|
|
53
|
+
return value.replaceAll("\\", "\\\\").replaceAll('"', '\\"');
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* A boolean operator is separated by a space, never by a literal `+`. The whole
|
|
@@ -76,13 +77,13 @@ export async function getFaersByDrug(drugName, options = {}) {
|
|
|
76
77
|
return { totalReports: 0, adverseEvents: [] };
|
|
77
78
|
throw new Error(describeApiError(res.error));
|
|
78
79
|
}
|
|
79
|
-
const adverseEvents = (res.value
|
|
80
|
+
const adverseEvents = (res.value.results ?? []).map((r) => ({
|
|
80
81
|
reaction: r.term ?? "Unknown",
|
|
81
82
|
count: r.count ?? 0,
|
|
82
83
|
}));
|
|
83
84
|
const totalUrl = `${OPENFDA_BASE}?search=${encodeURIComponent(search)}&limit=1`;
|
|
84
85
|
const totalRes = await apiFetchValidated(totalUrl, FaersMetaResponseSchema);
|
|
85
|
-
const totalReports = totalRes.isOk() ? totalRes.value
|
|
86
|
+
const totalReports = totalRes.isOk() ? totalRes.value.meta?.results?.total : undefined;
|
|
86
87
|
return { totalReports, adverseEvents };
|
|
87
88
|
}
|
|
88
89
|
/**
|
|
@@ -100,7 +101,7 @@ export async function getFaersSeriousness(drugName) {
|
|
|
100
101
|
return null;
|
|
101
102
|
throw new Error(describeApiError(totalRes.error));
|
|
102
103
|
}
|
|
103
|
-
const totalReports = totalRes.value
|
|
104
|
+
const totalReports = totalRes.value.meta?.results?.total ?? 0;
|
|
104
105
|
if (totalReports === 0) {
|
|
105
106
|
return {
|
|
106
107
|
totalReports: 0,
|
|
@@ -118,7 +119,7 @@ export async function getFaersSeriousness(drugName) {
|
|
|
118
119
|
const res = await apiFetchValidated(url, FaersMetaResponseSchema);
|
|
119
120
|
if (res.isErr())
|
|
120
121
|
return 0;
|
|
121
|
-
return res.value
|
|
122
|
+
return res.value.meta?.results?.total ?? 0;
|
|
122
123
|
}
|
|
123
124
|
const [fatal, hosp, lifeT, dis, cong, other] = await Promise.all([
|
|
124
125
|
countWith("seriousnessdeath"),
|
|
@@ -139,7 +140,7 @@ export async function getFaersSeriousness(drugName) {
|
|
|
139
140
|
};
|
|
140
141
|
}
|
|
141
142
|
function firstString(value) {
|
|
142
|
-
if (
|
|
143
|
+
if (isUnknownArray(value)) {
|
|
143
144
|
const first = value.find((v) => typeof v === "string" && v.trim());
|
|
144
145
|
return typeof first === "string" ? first : null;
|
|
145
146
|
}
|
|
@@ -149,7 +150,7 @@ function firstString(value) {
|
|
|
149
150
|
}
|
|
150
151
|
function joinSection(value) {
|
|
151
152
|
if (Array.isArray(value)) {
|
|
152
|
-
const parts = value.
|
|
153
|
+
const parts = value.flatMap((v) => (typeof v === "string" && v.trim().length > 0 ? [v] : []));
|
|
153
154
|
if (parts.length === 0)
|
|
154
155
|
return null;
|
|
155
156
|
return parts.join("\n\n");
|
|
@@ -164,30 +165,30 @@ function joinSection(value) {
|
|
|
164
165
|
* keyed by application number when only that is available.
|
|
165
166
|
*/
|
|
166
167
|
function buildLabelSourceUrl(label) {
|
|
167
|
-
const setId = typeof label
|
|
168
|
+
const setId = typeof label.set_id === "string" ? label.set_id : null;
|
|
168
169
|
if (setId)
|
|
169
170
|
return `https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=${setId}`;
|
|
170
|
-
const appNum = firstString(label
|
|
171
|
+
const appNum = firstString(label.openfda?.application_number);
|
|
171
172
|
if (appNum) {
|
|
172
173
|
return `https://www.accessdata.fda.gov/scripts/cder/daf/index.cfm?event=overview.process&ApplNo=${encodeURIComponent(appNum)}`;
|
|
173
174
|
}
|
|
174
175
|
return "https://www.accessdata.fda.gov/scripts/cder/daf/";
|
|
175
176
|
}
|
|
176
177
|
function mapLabel(raw) {
|
|
177
|
-
const openfda = raw
|
|
178
|
+
const openfda = raw.openfda ?? {};
|
|
178
179
|
// The label reference carries no REMS field, thus the signal is the word
|
|
179
180
|
// itself in one of the three sections that a REMS program writes to. The
|
|
180
181
|
// presence of a medication guide alone is not the signal: many labels with no
|
|
181
182
|
// REMS carry one, and a presence test would report a REMS that does not exist.
|
|
182
|
-
const remsTextCandidates = [raw
|
|
183
|
+
const remsTextCandidates = [raw.boxed_warning, raw.spl_medguide, raw.patient_medication_information];
|
|
183
184
|
const hasRems = remsTextCandidates.some((v) => joinSection(v)?.toLowerCase().includes("rems") ?? false);
|
|
184
185
|
return {
|
|
185
186
|
applicationNumber: firstString(openfda.application_number),
|
|
186
187
|
brandName: firstString(openfda.brand_name),
|
|
187
188
|
genericName: firstString(openfda.generic_name),
|
|
188
|
-
effectiveTime: typeof raw
|
|
189
|
-
boxedWarning: joinSection(raw
|
|
190
|
-
warningsAndCautions: joinSection(raw
|
|
189
|
+
effectiveTime: typeof raw.effective_time === "string" ? raw.effective_time : null,
|
|
190
|
+
boxedWarning: joinSection(raw.boxed_warning),
|
|
191
|
+
warningsAndCautions: joinSection(raw.warnings_and_cautions) ?? joinSection(raw.warnings),
|
|
191
192
|
hasRems,
|
|
192
193
|
sourceUrl: buildLabelSourceUrl(raw),
|
|
193
194
|
};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* thus the SDL gives each modifier and `.optional()` is wrong.
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
export
|
|
11
|
+
export type Association = {
|
|
12
12
|
diseaseId: string;
|
|
13
13
|
diseaseName: string;
|
|
14
14
|
targetId?: string;
|
|
@@ -21,42 +21,42 @@ export interface Association {
|
|
|
21
21
|
animalModelScore: number | null;
|
|
22
22
|
somaticMutationScore: number | null;
|
|
23
23
|
literaturePmids: string[];
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
/**
|
|
26
26
|
* The positive tractability buckets of each modality, by their Open Targets label
|
|
27
27
|
* ('Approved Drug', 'Structure with Ligand', 'UniProt loc high conf', …). An empty
|
|
28
28
|
* list means no positive bucket. `null` means Open Targets gives no row for the modality.
|
|
29
29
|
*/
|
|
30
|
-
export
|
|
30
|
+
export type TargetTractability = {
|
|
31
31
|
smallMolecule: string[] | null;
|
|
32
32
|
antibody: string[] | null;
|
|
33
33
|
otherModalities: string[] | null;
|
|
34
|
-
}
|
|
35
|
-
export
|
|
34
|
+
};
|
|
35
|
+
export type TargetInfo = {
|
|
36
36
|
ensemblId: string;
|
|
37
37
|
approvedSymbol: string;
|
|
38
38
|
approvedName: string;
|
|
39
39
|
tractability: TargetTractability | null;
|
|
40
40
|
associations: Association[];
|
|
41
|
-
}
|
|
42
|
-
export
|
|
41
|
+
};
|
|
42
|
+
export type SafetyLiability = {
|
|
43
43
|
event: string;
|
|
44
44
|
biosamples: string[];
|
|
45
45
|
effects: string | null;
|
|
46
46
|
source: string;
|
|
47
|
-
}
|
|
47
|
+
};
|
|
48
48
|
/**
|
|
49
49
|
* One disease or trait that Open Targets holds, as the free-text resolver
|
|
50
50
|
* returns it. The `id` is the identifier that `searchDiseaseAssociations`
|
|
51
51
|
* accepts. Open Targets keys a disease on the EFO ontology, which imports
|
|
52
52
|
* MONDO, Orphanet and HP, thus an id can read `EFO_…`, `MONDO_…` or `HP_…`.
|
|
53
53
|
*/
|
|
54
|
-
export
|
|
54
|
+
export type DiseaseCandidate = {
|
|
55
55
|
id: string;
|
|
56
56
|
name: string;
|
|
57
57
|
description: string | null;
|
|
58
|
-
}
|
|
59
|
-
export
|
|
58
|
+
};
|
|
59
|
+
export type BaselineExpressionEntry = {
|
|
60
60
|
tissueId: string;
|
|
61
61
|
tissueLabel: string;
|
|
62
62
|
organSystem: string | null;
|
|
@@ -74,7 +74,7 @@ export interface BaselineExpressionEntry {
|
|
|
74
74
|
protein: {
|
|
75
75
|
level: number | null;
|
|
76
76
|
} | null;
|
|
77
|
-
}
|
|
77
|
+
};
|
|
78
78
|
export declare const TargetAssociationsDataSchema: z.ZodObject<{
|
|
79
79
|
target: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
80
80
|
id: z.ZodString;
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
export declare function stripHtmlAndCollapseWs(s: string): string;
|
|
12
12
|
export type PathwaySource = "kegg" | "reactome";
|
|
13
|
-
export
|
|
13
|
+
export type Pathway = {
|
|
14
14
|
id: string;
|
|
15
15
|
name: string;
|
|
16
16
|
source: PathwaySource;
|
|
@@ -18,7 +18,7 @@ export interface Pathway {
|
|
|
18
18
|
genes?: string[];
|
|
19
19
|
entity_uniprots?: string[];
|
|
20
20
|
url?: string;
|
|
21
|
-
}
|
|
21
|
+
};
|
|
22
22
|
export declare const ReactomeSearchResponseSchema: z.ZodObject<{
|
|
23
23
|
results: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
24
24
|
entries: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -38,12 +38,12 @@ export declare const ReactomeParticipantEntitiesSchema: z.ZodArray<z.ZodObject<{
|
|
|
38
38
|
identifier: z.ZodOptional<z.ZodString>;
|
|
39
39
|
}, z.core.$strip>>>;
|
|
40
40
|
}, z.core.$strip>>;
|
|
41
|
-
export
|
|
41
|
+
export type PathwaySearchOptions = {
|
|
42
42
|
source?: "kegg" | "reactome" | "both";
|
|
43
43
|
organism?: string;
|
|
44
44
|
includeGenes?: boolean;
|
|
45
45
|
maxResults?: number;
|
|
46
|
-
}
|
|
46
|
+
};
|
|
47
47
|
export declare function searchKegg(query: string, organism: string, maxResults: number, includeGenes: boolean): Promise<Pathway[]>;
|
|
48
48
|
/**
|
|
49
49
|
* Read the KEGG gene identifier of a symbol, for example `hsa:7157` for `TP53`.
|