@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
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* key to omit.
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
import {
|
|
11
|
+
import { apiFetchText, apiFetchValidated, parseTSV } from "./api-utils.js";
|
|
12
|
+
import { collapseWhitespace } from "../../lib/text.js";
|
|
13
|
+
import { stripHtmlTags } from "./html-text.js";
|
|
12
14
|
const KEGG_BASE = "https://rest.kegg.jp";
|
|
13
15
|
// Both `reactome.org/ContentService` and `release.reactome.org/ContentService`
|
|
14
16
|
// answer 200 on each path that this file calls. The two hosts serve different
|
|
@@ -17,16 +19,7 @@ const KEGG_BASE = "https://rest.kegg.jp";
|
|
|
17
19
|
// links to stay on the primary host.
|
|
18
20
|
const REACTOME_BASE = "https://release.reactome.org/ContentService";
|
|
19
21
|
export function stripHtmlAndCollapseWs(s) {
|
|
20
|
-
|
|
21
|
-
// removing an inner tag lets the surrounding angle brackets form a new one,
|
|
22
|
-
// so repeat until the string stops changing.
|
|
23
|
-
let out = s;
|
|
24
|
-
let prev;
|
|
25
|
-
do {
|
|
26
|
-
prev = out;
|
|
27
|
-
out = out.replace(/<[^>]+>/g, "");
|
|
28
|
-
} while (out !== prev);
|
|
29
|
-
return out.replace(/\s+/g, " ").trim();
|
|
22
|
+
return collapseWhitespace(stripHtmlTags(s));
|
|
30
23
|
}
|
|
31
24
|
const ORGANISM_MAP = {
|
|
32
25
|
hsa: "Homo sapiens",
|
|
@@ -60,7 +53,7 @@ export const ReactomeParticipantEntitiesSchema = z.array(z.object({
|
|
|
60
53
|
refEntities: z.array(z.object({ schemaClass: z.string().optional(), identifier: z.string().optional() })).optional(),
|
|
61
54
|
}));
|
|
62
55
|
export async function searchKegg(query, organism, maxResults, includeGenes) {
|
|
63
|
-
const searchRes = await
|
|
56
|
+
const searchRes = await apiFetchText(`${KEGG_BASE}/find/pathway/${encodeURIComponent(query)}`);
|
|
64
57
|
if (searchRes.isErr())
|
|
65
58
|
return [];
|
|
66
59
|
const rows = parseTSV(searchRes.value);
|
|
@@ -75,7 +68,7 @@ export async function searchKegg(query, organism, maxResults, includeGenes) {
|
|
|
75
68
|
});
|
|
76
69
|
if (includeGenes) {
|
|
77
70
|
for (const pw of pathways) {
|
|
78
|
-
const geneRes = await
|
|
71
|
+
const geneRes = await apiFetchText(`${KEGG_BASE}/link/${organism}/${pw.id}`);
|
|
79
72
|
if (geneRes.isOk()) {
|
|
80
73
|
const geneRows = parseTSV(geneRes.value);
|
|
81
74
|
pw.genes = geneRows.map((r) => (r[1] ?? "").replace(`${organism}:`, ""));
|
|
@@ -125,13 +118,13 @@ export function parseKeggPathwayLinks(rows) {
|
|
|
125
118
|
* organism, thus it replaces one `get/{id}` call for each membership.
|
|
126
119
|
*/
|
|
127
120
|
export async function keggPathwaysForGene(geneSymbol, organism, maxResults) {
|
|
128
|
-
const geneRes = await
|
|
121
|
+
const geneRes = await apiFetchText(`${KEGG_BASE}/find/${organism}/${encodeURIComponent(geneSymbol)}`);
|
|
129
122
|
if (geneRes.isErr())
|
|
130
123
|
return [];
|
|
131
124
|
const geneId = selectKeggGeneId(parseTSV(geneRes.value), geneSymbol);
|
|
132
125
|
if (!geneId)
|
|
133
126
|
return [];
|
|
134
|
-
const linkRes = await
|
|
127
|
+
const linkRes = await apiFetchText(`${KEGG_BASE}/link/pathway/${encodeURIComponent(geneId)}`);
|
|
135
128
|
if (linkRes.isErr())
|
|
136
129
|
return [];
|
|
137
130
|
const pathwayIds = parseKeggPathwayLinks(parseTSV(linkRes.value)).slice(0, maxResults);
|
|
@@ -148,7 +141,7 @@ export async function keggPathwaysForGene(geneSymbol, organism, maxResults) {
|
|
|
148
141
|
/** The pathway vocabulary of one organism, keyed by the pathway identifier. */
|
|
149
142
|
async function keggPathwayNames(organism) {
|
|
150
143
|
const names = new Map();
|
|
151
|
-
const res = await
|
|
144
|
+
const res = await apiFetchText(`${KEGG_BASE}/list/pathway/${encodeURIComponent(organism)}`);
|
|
152
145
|
if (res.isErr())
|
|
153
146
|
return names;
|
|
154
147
|
for (const cols of parseTSV(res.value)) {
|
|
@@ -217,16 +210,19 @@ export async function searchPathways(query, options = {}) {
|
|
|
217
210
|
return results.flat();
|
|
218
211
|
}
|
|
219
212
|
/** A Reactome stable identifier, for example `R-HSA-109581`. */
|
|
213
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the Reactome stable-id grammar: R-, three letters, digits, and an optional dotted subnumber.
|
|
220
214
|
const REACTOME_ID_RE = /^R-[A-Z]{3}-\d+(\.\d+)?$/;
|
|
221
215
|
/** A KEGG pathway identifier, for example `hsa04010` or `map04010`. */
|
|
216
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the KEGG pathway-id grammar: three or four lowercase organism letters plus five digits.
|
|
222
217
|
const KEGG_ID_RE = /^[a-z]{3,4}\d{5}$/;
|
|
223
218
|
/** Read one field out of a KEGG flat-file record. */
|
|
224
219
|
function keggField(record, field) {
|
|
220
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the field name is a caller literal ("NAME", "DESCRIPTION"); the anchored multiline form reads the KEGG flat-file grammar.
|
|
225
221
|
const match = new RegExp(`^${field}\\s+(.*)$`, "m").exec(record);
|
|
226
222
|
return match?.[1]?.trim() || null;
|
|
227
223
|
}
|
|
228
224
|
async function getKeggPathway(id) {
|
|
229
|
-
const res = await
|
|
225
|
+
const res = await apiFetchText(`${KEGG_BASE}/get/${encodeURIComponent(id)}`);
|
|
230
226
|
if (res.isErr())
|
|
231
227
|
return null;
|
|
232
228
|
const record = res.value;
|
|
@@ -238,7 +234,7 @@ async function getKeggPathway(id) {
|
|
|
238
234
|
id,
|
|
239
235
|
name,
|
|
240
236
|
source: "kegg",
|
|
241
|
-
|
|
237
|
+
description: description ?? undefined,
|
|
242
238
|
url: `https://www.kegg.jp/pathway/${id}`,
|
|
243
239
|
};
|
|
244
240
|
}
|
|
@@ -255,7 +251,7 @@ async function getReactomePathway(id) {
|
|
|
255
251
|
id: stId,
|
|
256
252
|
name: stripHtmlAndCollapseWs(entry.displayName ?? ""),
|
|
257
253
|
source: "reactome",
|
|
258
|
-
|
|
254
|
+
description: description === undefined ? undefined : stripHtmlAndCollapseWs(description),
|
|
259
255
|
url: `https://reactome.org/content/detail/${stId}`,
|
|
260
256
|
};
|
|
261
257
|
}
|
|
@@ -45,11 +45,11 @@ export declare const PharmgkbResponseSchema: z.ZodObject<{
|
|
|
45
45
|
* phenotype, guideline source and summary live on other PharmGKB resources, so
|
|
46
46
|
* they are absent here rather than present-and-null.
|
|
47
47
|
*/
|
|
48
|
-
export
|
|
48
|
+
export type PharmgkbAnnotation = {
|
|
49
49
|
gene: string;
|
|
50
50
|
drug: string;
|
|
51
51
|
levelOfEvidence: string;
|
|
52
|
-
}
|
|
52
|
+
};
|
|
53
53
|
export declare function searchPharmgkb(query: string, searchType: "gene" | "drug", limit?: number): Promise<{
|
|
54
54
|
annotations: PharmgkbAnnotation[];
|
|
55
55
|
totalFound: number;
|
|
@@ -38,7 +38,7 @@ export async function searchPharmgkb(query, searchType, limit = 20) {
|
|
|
38
38
|
return { annotations: [], totalFound: 0 };
|
|
39
39
|
throw new Error(describeApiError(res.error));
|
|
40
40
|
}
|
|
41
|
-
const data = res.value
|
|
41
|
+
const data = res.value.data ?? [];
|
|
42
42
|
const annotations = data.slice(0, limit).map((ann) => ({
|
|
43
43
|
gene: ann.location?.genes?.map((g) => g.symbol).join(", ") ?? query,
|
|
44
44
|
drug: ann.relatedChemicals?.map((c) => c.name).join(", ") ?? "",
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Protein-family → preferred modality lookup, used by §2.2 Tractability
|
|
3
3
|
* fallback when Open Targets has no tractability assessment for the target.
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export type ModalityFallback = {
|
|
6
6
|
family: string | null;
|
|
7
7
|
preferred_modality: string;
|
|
8
8
|
rationale: string;
|
|
9
9
|
source: "family-match" | "default";
|
|
10
|
-
}
|
|
10
|
+
};
|
|
11
11
|
/**
|
|
12
12
|
* Infer a preferred modality from a free-text protein-family description
|
|
13
13
|
* (typically the UniProt family/keyword). Returns the dataset default when
|
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import familyMappingData from "../../data/protein-family-modality.json" with { type: "json" };
|
|
6
6
|
import { normalizeProteinFamily } from "./protein-family-normalize.js";
|
|
7
|
-
// The JSON import yields an untyped/structurally-wide value; cast to the declared
|
|
8
|
-
// shape, which the bundled data file is authored to satisfy.
|
|
9
7
|
const dataset = familyMappingData;
|
|
10
8
|
function loadDataset() {
|
|
11
9
|
return dataset;
|
|
@@ -11,19 +11,26 @@ const FAMILIES = [
|
|
|
11
11
|
{
|
|
12
12
|
canonical: "g protein-coupled receptor",
|
|
13
13
|
patterns: [
|
|
14
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the GPCR name, matched as whole words.
|
|
14
15
|
/\bg[-\s]?protein[-\s]?coupled\s+receptor\b/i,
|
|
16
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the GPCR abbreviation as a whole word.
|
|
15
17
|
/\bgpcr\b/i,
|
|
18
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the seven-transmembrane spelling of the family name.
|
|
16
19
|
/\b7tm\s+receptor\b/i,
|
|
20
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the rhodopsin-like subfamily spelling.
|
|
17
21
|
/\brhodopsin-like\s+receptor\b/i,
|
|
22
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the secretin-like subfamily spelling.
|
|
18
23
|
/\bsecretin-like\s+receptor\b/i,
|
|
19
24
|
],
|
|
20
25
|
},
|
|
21
26
|
{
|
|
22
27
|
canonical: "serine/threonine-protein kinase",
|
|
28
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the serine/threonine kinase name.
|
|
23
29
|
patterns: [/\bserine\/threonine[-\s]?protein\s+kinase\b/i],
|
|
24
30
|
},
|
|
25
31
|
{
|
|
26
32
|
canonical: "tyrosine-protein kinase",
|
|
33
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the hyphen-variant spellings of the tyrosine kinase name.
|
|
27
34
|
patterns: [/\btyrosine[-\s]?protein\s+kinase\b/i],
|
|
28
35
|
},
|
|
29
36
|
// Extend as additional hyphen-style mismatches surface. The default branch
|
|
@@ -13,14 +13,14 @@
|
|
|
13
13
|
* carries `.optional()`, not `.nullable()`.
|
|
14
14
|
*/
|
|
15
15
|
import { z } from "zod";
|
|
16
|
-
export
|
|
16
|
+
export type PubChemCompoundProperties = {
|
|
17
17
|
cid: number;
|
|
18
18
|
molecularWeight: number | null;
|
|
19
19
|
inchiKey: string | null;
|
|
20
20
|
canonicalSmiles: string | null;
|
|
21
21
|
hBondDonorCount: number | null;
|
|
22
22
|
hBondAcceptorCount: number | null;
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
export declare const PubChemPropertyResponseSchema: z.ZodObject<{
|
|
25
25
|
PropertyTable: z.ZodOptional<z.ZodObject<{
|
|
26
26
|
Properties: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -100,6 +100,7 @@ export async function getCompoundPropertiesByInChIKey(inchiKey) {
|
|
|
100
100
|
return null;
|
|
101
101
|
return getCompoundPropertiesByCID(cid);
|
|
102
102
|
}
|
|
103
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the amide-bond motif C(=O)N read out of a SMILES string; the literal atoms are the chemistry.
|
|
103
104
|
const AMIDE_BOND_RE = /C\(=O\)N/g;
|
|
104
105
|
/**
|
|
105
106
|
* Heuristic molecule-type classifier driven by PubChem properties.
|
|
@@ -102,11 +102,11 @@ export declare const PubChemPropertyResponseSchema: z.ZodObject<{
|
|
|
102
102
|
}>>>>;
|
|
103
103
|
}, z.core.$strip>>;
|
|
104
104
|
}, z.core.$strip>;
|
|
105
|
-
export
|
|
105
|
+
export type PubChemCrossRef = {
|
|
106
106
|
/** The registry that the identifier pattern names, or `null` when no pattern matches. */
|
|
107
107
|
source: string | null;
|
|
108
108
|
id: string;
|
|
109
|
-
}
|
|
109
|
+
};
|
|
110
110
|
export declare const PubChemXrefResponseSchema: z.ZodObject<{
|
|
111
111
|
InformationList: z.ZodOptional<z.ZodObject<{
|
|
112
112
|
Information: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -117,13 +117,13 @@ export declare const PubChemXrefResponseSchema: z.ZodObject<{
|
|
|
117
117
|
}, z.core.$strip>;
|
|
118
118
|
/** The registry of one identifier, or `null` when no pattern matches it. */
|
|
119
119
|
export declare function classifyRegistryId(id: string): string | null;
|
|
120
|
-
export
|
|
120
|
+
export type PubChemAssay = {
|
|
121
121
|
aid: number;
|
|
122
122
|
assayName: string | null;
|
|
123
123
|
targetName: string | null;
|
|
124
124
|
activityOutcome: string | null;
|
|
125
125
|
activityValue: number | null;
|
|
126
|
-
}
|
|
126
|
+
};
|
|
127
127
|
export declare const PugAssaySummarySchema: z.ZodObject<{
|
|
128
128
|
Table: z.ZodOptional<z.ZodObject<{
|
|
129
129
|
Columns: z.ZodOptional<z.ZodObject<{
|
|
@@ -95,18 +95,26 @@ export const PubChemXrefResponseSchema = z.object({
|
|
|
95
95
|
* A loose pattern runs last, thus a specific registry claims its own id first.
|
|
96
96
|
*/
|
|
97
97
|
const REGISTRY_PATTERNS = [
|
|
98
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the ChEMBL id format: the CHEMBL prefix plus digits.
|
|
98
99
|
["ChEMBL", /^CHEMBL\d+$/],
|
|
100
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the ChEBI id format: the CHEBI: prefix plus digits.
|
|
99
101
|
["ChEBI", /^CHEBI:\d+$/],
|
|
102
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the DrugBank id format: the DB prefix plus five digits.
|
|
100
103
|
["DrugBank", /^DB\d{5}$/],
|
|
104
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the KEGG id format: one C or D compound letter plus five digits.
|
|
101
105
|
["KEGG", /^[CD]\d{5}$/],
|
|
106
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the HMDB id format: the HMDB prefix plus digits.
|
|
102
107
|
["HMDB", /^HMDB\d+$/],
|
|
108
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the CAS registry format: two to seven digits, a dash pair, and one check digit.
|
|
103
109
|
["CAS", /^\d{2,7}-\d{2}-\d$/],
|
|
104
110
|
// A PDB id is four characters that start with a digit. The lookahead demands a
|
|
105
111
|
// letter as well, thus a plain registry number does not read as a structure.
|
|
112
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the PDB id format: a digit, then three alphanumerics, with the lookahead that demands a letter among them.
|
|
106
113
|
["PDB", /^[1-9](?=.*[A-Za-z])[0-9A-Za-z]{3}$/],
|
|
107
114
|
// A UNII is ten alphanumeric characters, and the lookahead demands a letter
|
|
108
115
|
// among them. A plain ten-digit registry number, such as `0000050782`, matches
|
|
109
116
|
// the pattern without it, and the row then names the wrong registry.
|
|
117
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the UNII format: ten uppercase alphanumerics, with the lookahead that demands a letter among them.
|
|
110
118
|
["UNII", /^(?=.*[A-Z])[A-Z0-9]{10}$/],
|
|
111
119
|
];
|
|
112
120
|
/** The registry of one identifier, or `null` when no pattern matches it. */
|
|
@@ -9,29 +9,29 @@
|
|
|
9
9
|
* `.optional()`, not `.nullable()`.
|
|
10
10
|
*/
|
|
11
11
|
import { type ArticleDetail, type ArticleSection, type FullTextResult, type PubmedSearchOptions, type PubMedSummary } from "../../literature/sources/pubmed.js";
|
|
12
|
-
export type { PubMedSummary, ArticleDetail, ArticleSection, FullTextResult };
|
|
12
|
+
export type { PubMedSummary, ArticleDetail, ArticleSection, FullTextResult } from "../../literature/sources/pubmed.js";
|
|
13
13
|
export type SearchOptions = PubmedSearchOptions;
|
|
14
14
|
/** PubMed search via esearch + esummary. */
|
|
15
15
|
export declare function searchPubmed(ncbiApiKey: string | undefined, query: string, options?: SearchOptions, signal?: AbortSignal): Promise<{
|
|
16
16
|
totalFound: number;
|
|
17
17
|
results: PubMedSummary[];
|
|
18
18
|
}>;
|
|
19
|
-
export
|
|
19
|
+
export type DetailOptions = {
|
|
20
20
|
/** Authors kept per article before collapsing the rest into `authorCount`. */
|
|
21
21
|
maxAuthors?: number;
|
|
22
22
|
/** MeSH terms kept per article; 0 drops the list entirely. */
|
|
23
23
|
maxMeshTerms?: number;
|
|
24
|
-
}
|
|
24
|
+
};
|
|
25
25
|
/**
|
|
26
26
|
* One article as the tool returns it: `ArticleDetail` with the two unbounded
|
|
27
27
|
* list fields trimmed. A consortium paper can carry hundreds of authors and
|
|
28
28
|
* dozens of MeSH headings — neither is worth the context, so the counts travel
|
|
29
29
|
* instead of the tails.
|
|
30
30
|
*/
|
|
31
|
-
export
|
|
31
|
+
export type BoundedArticleDetail = ArticleDetail & {
|
|
32
32
|
authorCount: number;
|
|
33
33
|
meshTermCount: number;
|
|
34
|
-
}
|
|
34
|
+
};
|
|
35
35
|
/** Fetch full PubMed article details (efetch + ID Converter for PMC). */
|
|
36
36
|
export declare function getArticleDetails(ncbiApiKey: string | undefined, pmids: string[], signal?: AbortSignal): Promise<{
|
|
37
37
|
articles: ArticleDetail[];
|
|
@@ -39,19 +39,19 @@ export declare function getArticleDetails(ncbiApiKey: string | undefined, pmids:
|
|
|
39
39
|
}>;
|
|
40
40
|
/** Trim the two unbounded list fields on each article, recording their true sizes. */
|
|
41
41
|
export declare function boundArticleDetails(articles: ArticleDetail[], options?: DetailOptions): BoundedArticleDetail[];
|
|
42
|
-
export
|
|
42
|
+
export type FullTextOptions = {
|
|
43
43
|
/** Case-insensitive substring match against section headings. */
|
|
44
44
|
sections?: string[];
|
|
45
45
|
/** Character budget across the returned section bodies. */
|
|
46
46
|
maxChars?: number;
|
|
47
|
-
}
|
|
47
|
+
};
|
|
48
48
|
/**
|
|
49
49
|
* A full text trimmed to a character budget. `outline` always lists EVERY
|
|
50
50
|
* section in the article with its size and whether the body came back, so one
|
|
51
51
|
* call is enough to decide which sections a follow-up should request — the
|
|
52
52
|
* alternative is the agent guessing headings it has not seen.
|
|
53
53
|
*/
|
|
54
|
-
export
|
|
54
|
+
export type BoundedFullText = {
|
|
55
55
|
fullText: string;
|
|
56
56
|
sections: ArticleSection[];
|
|
57
57
|
outline: {
|
|
@@ -62,7 +62,7 @@ export interface BoundedFullText {
|
|
|
62
62
|
totalChars: number;
|
|
63
63
|
returnedChars: number;
|
|
64
64
|
truncated: boolean;
|
|
65
|
-
}
|
|
65
|
+
};
|
|
66
66
|
/**
|
|
67
67
|
* Fetch open-access full text from PMC, trimmed to a section filter and a
|
|
68
68
|
* character budget. Returns null when the article is not open-access.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { createPubmedSource, } from "../../literature/sources/pubmed.js";
|
|
12
12
|
function pubmedSource(ncbiApiKey) {
|
|
13
13
|
return createPubmedSource({
|
|
14
|
-
|
|
14
|
+
apiKey: ncbiApiKey,
|
|
15
15
|
maxRetries: 3,
|
|
16
16
|
retryDelayMs: 1_000,
|
|
17
17
|
timeoutMs: 90_000,
|
|
@@ -8,15 +8,15 @@
|
|
|
8
8
|
* `.nullable()`.
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
export
|
|
11
|
+
export type StringInteraction = {
|
|
12
12
|
proteinA: string;
|
|
13
13
|
proteinB: string;
|
|
14
14
|
score: number;
|
|
15
15
|
experimentalScore?: number;
|
|
16
16
|
databaseScore?: number;
|
|
17
17
|
textminingScore?: number;
|
|
18
|
-
}
|
|
19
|
-
export
|
|
18
|
+
};
|
|
19
|
+
export type StringEnrichment = {
|
|
20
20
|
category: string;
|
|
21
21
|
term: string;
|
|
22
22
|
description: string;
|
|
@@ -24,12 +24,12 @@ export interface StringEnrichment {
|
|
|
24
24
|
fdr: number;
|
|
25
25
|
geneCount: number;
|
|
26
26
|
genes: string[];
|
|
27
|
-
}
|
|
28
|
-
export
|
|
27
|
+
};
|
|
28
|
+
export type InteractionOptions = {
|
|
29
29
|
species?: number;
|
|
30
30
|
minScore?: number;
|
|
31
31
|
limit?: number;
|
|
32
|
-
}
|
|
32
|
+
};
|
|
33
33
|
export declare const StringInteractionSchema: z.ZodPipe<z.ZodObject<{
|
|
34
34
|
preferredName_A: z.ZodOptional<z.ZodString>;
|
|
35
35
|
preferredName_B: z.ZodOptional<z.ZodString>;
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
* carries `.optional()`, not `.nullable()`.
|
|
8
8
|
*/
|
|
9
9
|
import { z } from "zod";
|
|
10
|
-
export
|
|
10
|
+
export type UniProtRecord = {
|
|
11
11
|
primaryAccession: string;
|
|
12
12
|
uniProtkbId: string | null;
|
|
13
13
|
geneNames: string[];
|
|
14
14
|
chemblIds: string[];
|
|
15
15
|
reactomePathwayIds: string[];
|
|
16
16
|
proteinFamilyText: string | null;
|
|
17
|
-
}
|
|
17
|
+
};
|
|
18
18
|
/**
|
|
19
19
|
* Fetch a single UniProtKB entry by accession. Returns null on 404; throws
|
|
20
20
|
* on other HTTP errors so callers can surface upstream outages.
|
|
@@ -25,7 +25,7 @@ export declare function getChemblIdsByUniProt(accession: string): Promise<string
|
|
|
25
25
|
/** All Reactome pathway ids cross-referenced from a UniProt accession. */
|
|
26
26
|
export declare function getReactomePathwaysByUniProt(accession: string): Promise<string[]>;
|
|
27
27
|
/** One protein of a UniProtKB search. */
|
|
28
|
-
export
|
|
28
|
+
export type UniProtProtein = {
|
|
29
29
|
accession: string;
|
|
30
30
|
/** The UniProtKB ID, for example `BRCA1_HUMAN`. */
|
|
31
31
|
uniProtkbId: string | null;
|
|
@@ -38,7 +38,7 @@ export interface UniProtProtein {
|
|
|
38
38
|
subcellularLocations: string[];
|
|
39
39
|
/** True for a Swiss-Prot entry, false for a TrEMBL entry. */
|
|
40
40
|
reviewed: boolean;
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
42
|
/**
|
|
43
43
|
* One result row of `uniprotkb/search`, with the same all-optional discipline as
|
|
44
44
|
* `UniProtRecordSchema`: UniProt omits the key of an absent value, thus every
|
|
@@ -131,19 +131,19 @@ export declare const UniProtSearchResponseSchema: z.ZodObject<{
|
|
|
131
131
|
* never reach one, because the 400 fails the whole request.
|
|
132
132
|
*/
|
|
133
133
|
export declare function isUniProtAccession(query: string): boolean;
|
|
134
|
-
export
|
|
134
|
+
export type SearchProteinsOptions = {
|
|
135
135
|
/** NCBI taxonomy id; omit to search every organism. */
|
|
136
136
|
organismId?: number;
|
|
137
137
|
/** Swiss-Prot only when true (the default), Swiss-Prot and TrEMBL when false. */
|
|
138
138
|
reviewedOnly?: boolean;
|
|
139
139
|
/** Max rows returned. */
|
|
140
140
|
limit?: number;
|
|
141
|
-
}
|
|
142
|
-
export
|
|
141
|
+
};
|
|
142
|
+
export type SearchProteinsResult = {
|
|
143
143
|
proteins: UniProtProtein[];
|
|
144
144
|
/** True when UniProt held at least one row beyond `limit`. */
|
|
145
145
|
hasMore: boolean;
|
|
146
|
-
}
|
|
146
|
+
};
|
|
147
147
|
/**
|
|
148
148
|
* Search UniProtKB for a protein by gene symbol or by accession.
|
|
149
149
|
*
|
|
@@ -206,7 +206,10 @@ function toProtein(raw) {
|
|
|
206
206
|
accession: raw.primaryAccession ?? "",
|
|
207
207
|
uniProtkbId: raw.uniProtkbId ?? null,
|
|
208
208
|
proteinName: extractProteinName(raw),
|
|
209
|
-
geneNames: (raw.genes ?? []).
|
|
209
|
+
geneNames: (raw.genes ?? []).flatMap((gene) => {
|
|
210
|
+
const name = gene.geneName?.value;
|
|
211
|
+
return name ? [name] : [];
|
|
212
|
+
}),
|
|
210
213
|
sequenceLength: raw.sequence?.length ?? null,
|
|
211
214
|
function: extractFunctionText(raw),
|
|
212
215
|
subcellularLocations: extractSubcellularLocations(raw),
|
|
@@ -222,6 +225,7 @@ function toProtein(raw) {
|
|
|
222
225
|
* that match this form. Thus the match decides only whether the `accession:`
|
|
223
226
|
* clause is SAFE to send, never which space the query names.
|
|
224
227
|
*/
|
|
228
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the full UniProt accession grammar, both entry-class arms with the optional isoform suffix; the shape overlap with gene symbols is why the match decides safety only.
|
|
225
229
|
const ACCESSION_RE = /^(?:[OPQ][0-9][A-Z0-9]{3}[0-9]|[A-NR-Z][0-9](?:[A-Z][A-Z0-9]{2}[0-9]){1,2})(?:-\d+)?$/i;
|
|
226
230
|
/**
|
|
227
231
|
* Can the query ride in an `accession:` clause?
|
|
@@ -23,41 +23,44 @@
|
|
|
23
23
|
* exists AND belongs to this analysis (`cortex_runs.analysis_id`) before it is
|
|
24
24
|
* stored: an unknown runId is an `err(ToolError)` the model can correct from,
|
|
25
25
|
* not a silent reference to a run that never existed.
|
|
26
|
+
*
|
|
27
|
+
* Inside a durable step, the store records the key of the step in the
|
|
28
|
+
* transaction of the edit. A rerun of the step after the edit, before its
|
|
29
|
+
* checkpoint, then changes nothing and gives ok.
|
|
26
30
|
*/
|
|
27
31
|
import type { Pool } from "pg";
|
|
28
32
|
import { z } from "zod";
|
|
29
33
|
import type { WorkingMemoryStore } from "../../memory/working-memory.js";
|
|
34
|
+
import { type Tool } from "../define-tool.js";
|
|
30
35
|
declare const inputSchema: z.ZodObject<{
|
|
31
36
|
section: z.ZodEnum<{
|
|
32
37
|
constraint: "constraint";
|
|
38
|
+
finding: "finding";
|
|
33
39
|
goal: "goal";
|
|
34
40
|
hypothesis: "hypothesis";
|
|
35
|
-
finding: "finding";
|
|
36
41
|
}>;
|
|
37
42
|
operation: z.ZodOptional<z.ZodEnum<{
|
|
38
43
|
add: "add";
|
|
39
|
-
revise: "revise";
|
|
40
44
|
retire: "retire";
|
|
45
|
+
revise: "revise";
|
|
41
46
|
}>>;
|
|
42
47
|
text: z.ZodOptional<z.ZodString>;
|
|
43
48
|
id: z.ZodOptional<z.ZodString>;
|
|
44
49
|
origin: z.ZodOptional<z.ZodEnum<{
|
|
45
|
-
user: "user";
|
|
46
50
|
agent: "agent";
|
|
51
|
+
user: "user";
|
|
47
52
|
}>>;
|
|
48
53
|
runId: z.ZodOptional<z.ZodString>;
|
|
49
54
|
}, z.core.$strip>;
|
|
50
55
|
type Input = z.infer<typeof inputSchema>;
|
|
51
|
-
|
|
56
|
+
type UpdateOutput = {
|
|
52
57
|
readonly ok: true;
|
|
53
58
|
readonly section: Input["section"];
|
|
54
|
-
}
|
|
55
|
-
export
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
runId?: string | undefined;
|
|
62
|
-
}, UpdateOutput>;
|
|
59
|
+
};
|
|
60
|
+
export type UpdateWorkingMemoryOpts = {
|
|
61
|
+
/** The key of the durable step that runs the call, `undefined` outside one. */
|
|
62
|
+
readonly stepKey: () => string | undefined;
|
|
63
|
+
};
|
|
64
|
+
export declare const DEFAULT_UPDATE_WORKING_MEMORY_OPTS: UpdateWorkingMemoryOpts;
|
|
65
|
+
export declare function createUpdateWorkingMemoryTool(workingMemory: WorkingMemoryStore, pool: Pool, opts?: UpdateWorkingMemoryOpts): Tool<z.infer<typeof inputSchema>, UpdateOutput>;
|
|
63
66
|
export {};
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
* exists AND belongs to this analysis (`cortex_runs.analysis_id`) before it is
|
|
24
24
|
* stored: an unknown runId is an `err(ToolError)` the model can correct from,
|
|
25
25
|
* not a silent reference to a run that never existed.
|
|
26
|
+
*
|
|
27
|
+
* Inside a durable step, the store records the key of the step in the
|
|
28
|
+
* transaction of the edit. A rerun of the step after the edit, before its
|
|
29
|
+
* checkpoint, then changes nothing and gives ok.
|
|
26
30
|
*/
|
|
27
31
|
import { err, ok } from "neverthrow";
|
|
28
32
|
import { z } from "zod";
|
|
@@ -31,6 +35,7 @@ import { toThrowable, unwrapOrThrow } from "../../lib/result.js";
|
|
|
31
35
|
import { isWorkingMemoryRejection, WORKING_MEMORY_LIMITS } from "../../memory/working-memory.js";
|
|
32
36
|
import { queryRun } from "../../state/index.js";
|
|
33
37
|
import { defineTool } from "../define-tool.js";
|
|
38
|
+
import { durableStepKey } from "../workspace/edit-file.js";
|
|
34
39
|
const { goalChars, entryChars, constraints, hypotheses, findings } = WORKING_MEMORY_LIMITS;
|
|
35
40
|
const inputSchema = z
|
|
36
41
|
.object({
|
|
@@ -91,10 +96,16 @@ const inputSchema = z
|
|
|
91
96
|
function toListOp(input) {
|
|
92
97
|
switch (input.operation ?? "add") {
|
|
93
98
|
case "add":
|
|
99
|
+
if (input.text === undefined)
|
|
100
|
+
throw new Error("add requires text");
|
|
94
101
|
return { op: "add", text: input.text };
|
|
95
102
|
case "revise":
|
|
103
|
+
if (input.id === undefined || input.text === undefined)
|
|
104
|
+
throw new Error("revise requires id and text");
|
|
96
105
|
return { op: "revise", id: input.id, text: input.text };
|
|
97
106
|
case "retire":
|
|
107
|
+
if (input.id === undefined)
|
|
108
|
+
throw new Error("retire requires id");
|
|
98
109
|
return { op: "retire", id: input.id };
|
|
99
110
|
}
|
|
100
111
|
}
|
|
@@ -105,12 +116,17 @@ function toConstraintOp(input) {
|
|
|
105
116
|
/** As `toListOp`, but an added finding also carries the run it is attributed to. */
|
|
106
117
|
function toFindingOp(input) {
|
|
107
118
|
const base = toListOp(input);
|
|
108
|
-
|
|
119
|
+
if (base.op !== "add")
|
|
120
|
+
return base;
|
|
121
|
+
if (input.runId === undefined)
|
|
122
|
+
throw new Error("a finding add requires runId");
|
|
123
|
+
return { ...base, runId: input.runId };
|
|
109
124
|
}
|
|
110
|
-
export
|
|
125
|
+
export const DEFAULT_UPDATE_WORKING_MEMORY_OPTS = { stepKey: durableStepKey };
|
|
126
|
+
export function createUpdateWorkingMemoryTool(workingMemory, pool, opts = DEFAULT_UPDATE_WORKING_MEMORY_OPTS) {
|
|
111
127
|
/** Write one amendment, mapping a refused write to a model-visible error. */
|
|
112
128
|
async function apply(analysisId, section, value) {
|
|
113
|
-
const written = await workingMemory.updateSection(analysisId, section, value);
|
|
129
|
+
const written = await workingMemory.updateSection(analysisId, section, value, opts.stepKey());
|
|
114
130
|
if (written.isErr()) {
|
|
115
131
|
// A refused write (cap hit, unknown id) is an expected outcome the model
|
|
116
132
|
// can act on — its message carries the remedy. A DbError is not: it throws,
|
|
@@ -161,6 +177,8 @@ export function createUpdateWorkingMemoryTool(workingMemory, pool) {
|
|
|
161
177
|
const analysisId = scopeResource(ctx.session.scope).resourceId;
|
|
162
178
|
switch (input.section) {
|
|
163
179
|
case "goal":
|
|
180
|
+
if (input.text === undefined)
|
|
181
|
+
throw new Error("goal requires text");
|
|
164
182
|
return apply(analysisId, "goal", { text: input.text });
|
|
165
183
|
case "constraint":
|
|
166
184
|
return apply(analysisId, "constraint", toConstraintOp(input));
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* `read_tool_output` — reads the kept text of a tool result that the loop cut, by a window or by a pattern.
|
|
3
3
|
* Each result stays under the cap of the loop, thus the loop never cuts a result of this tool.
|
|
4
4
|
*/
|
|
5
|
+
import { errorMessageOf } from "../lib/thrown.js";
|
|
6
|
+
import { textOf } from "../lib/unknown-text.js";
|
|
5
7
|
import { ok } from "neverthrow";
|
|
6
8
|
import { z } from "zod";
|
|
7
9
|
import { unwrapOrThrow } from "../lib/result.js";
|
|
@@ -61,10 +63,11 @@ function page(ref, text, start, limit) {
|
|
|
61
63
|
function search(ref, text, start, limit, pattern) {
|
|
62
64
|
let regex;
|
|
63
65
|
try {
|
|
66
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the caller-supplied search pattern is the tool's input; the dynamic form is the feature, and an invalid pattern is the handled error below.
|
|
64
67
|
regex = new RegExp(pattern, "g");
|
|
65
68
|
}
|
|
66
69
|
catch (err) {
|
|
67
|
-
return { status: "invalid_pattern", pattern, error: err
|
|
70
|
+
return { status: "invalid_pattern", pattern, error: errorMessageOf(err) ?? textOf(err) };
|
|
68
71
|
}
|
|
69
72
|
const stop = limit === undefined ? text.length : windowEnd(text, start, limit);
|
|
70
73
|
const window = text.slice(start, stop);
|
|
@@ -97,7 +100,10 @@ function search(ref, text, start, limit, pattern) {
|
|
|
97
100
|
});
|
|
98
101
|
let result = at(end);
|
|
99
102
|
while (!fits(result) && matches.length > 1) {
|
|
100
|
-
|
|
103
|
+
const dropped = matches.pop();
|
|
104
|
+
if (dropped === undefined)
|
|
105
|
+
break;
|
|
106
|
+
end = dropped.offset;
|
|
101
107
|
result = at(end);
|
|
102
108
|
}
|
|
103
109
|
return result;
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type ToolSet } from "ai";
|
|
8
8
|
import type { Tool } from "./define-tool.js";
|
|
9
|
-
export
|
|
9
|
+
export type Registry = {
|
|
10
10
|
/** The AI SDK tool definitions to send with a chat request. */
|
|
11
11
|
definitions(): ToolSet;
|
|
12
12
|
/** Resolve a tool by name for dispatch; `undefined` if unknown. */
|
|
13
13
|
get(name: string): Tool | undefined;
|
|
14
|
-
}
|
|
14
|
+
};
|
|
15
15
|
export declare function createRegistry(tools: readonly Tool[]): Registry;
|