@inflexa-ai/harness 0.45.1 → 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 +9 -3
- package/dist/agents/conversation-agent.js +34 -33
- 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 +12 -14
- package/dist/agents/sandbox/shared.js +18 -12
- package/dist/agents/sandbox/types.d.ts +4 -4
- 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 +2 -2
- package/dist/agents/sandbox-catalog.js +3 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- 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 +123 -100
- 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 +6 -6
- 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 +38 -24
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +64 -41
- 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 +2 -2
- 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 +30 -16
- package/dist/contracts/schemas/chat-events.js +15 -6
- package/dist/contracts/schemas/chat-parts.d.ts +175 -102
- package/dist/contracts/schemas/chat-parts.js +33 -7
- 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 +5 -6
- package/dist/execution/dbos-workflow-purger.js +8 -7
- 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 +7 -7
- package/dist/execution/run-canceler.js +14 -7
- package/dist/execution/run-end-record.d.ts +2 -3
- 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 +17 -20
- package/dist/index.js +25 -36
- 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 +9 -9
- package/dist/loop/compaction.js +1 -1
- 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 +29 -38
- 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 -4
- package/dist/memory/conversation-display-recorder.js +43 -24
- 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 +36 -21
- package/dist/memory/thread-history.js +78 -54
- 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 +12 -12
- package/dist/prompts/briefing.js +1 -1
- 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 +1 -4
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +283 -518
- 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 +55 -94
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +25 -8
- 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 +211 -233
- 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.js +15 -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 +343 -298
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +31 -31
- 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 +19 -19
- package/dist/schemas/workflow-state.js +2 -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 +32 -19
- package/dist/state/artifacts.js +28 -5
- 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 +4 -4
- package/dist/state/index.js +2 -2
- 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 +30 -19
- package/dist/state/runs.js +43 -51
- 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 +20 -8
- package/dist/state/step-executions.js +6 -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 +9 -9
- package/dist/tools/ad-hoc-router.js +65 -52
- 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 +9 -5
- package/dist/tools/capability-data.js +2 -1
- 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 +19 -10
- package/dist/tools/execute-analysis.js +83 -62
- package/dist/tools/knowledge/check.d.ts +166 -44
- package/dist/tools/knowledge/check.js +5 -3
- package/dist/tools/knowledge/client.d.ts +31 -62
- package/dist/tools/knowledge/client.js +44 -27
- package/dist/tools/knowledge/environment.d.ts +6 -6
- package/dist/tools/knowledge/environment.js +18 -7
- package/dist/tools/knowledge/index.d.ts +2 -2
- package/dist/tools/knowledge/index.js +9 -9
- package/dist/tools/knowledge/local-slots.d.ts +4 -4
- package/dist/tools/knowledge/local-slots.js +11 -4
- package/dist/tools/knowledge/pin.d.ts +2 -2
- package/dist/tools/knowledge/recommend.d.ts +20 -45
- package/dist/tools/knowledge/recommend.js +27 -19
- package/dist/tools/knowledge/situation.d.ts +40 -40
- package/dist/tools/knowledge/situation.js +2 -9
- package/dist/tools/knowledge/skeleton.d.ts +4 -4
- package/dist/tools/knowledge/skeleton.js +10 -11
- package/dist/tools/knowledge/template.d.ts +20 -18
- package/dist/tools/knowledge/template.js +38 -32
- 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 +16 -16
- package/dist/tools/research/generate-plan.js +410 -374
- package/dist/tools/research/guarded-address.js +3 -2
- 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 +2 -2
- package/dist/tools/research/searxng-engine.js +6 -4
- package/dist/tools/research/web-fetch.d.ts +24 -21
- package/dist/tools/research/web-fetch.js +65 -74
- package/dist/tools/research/web-search.d.ts +26 -17
- package/dist/tools/research/web-search.js +26 -21
- 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 +17 -8
- package/dist/tools/sandbox/list-available-packages.js +31 -25
- package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
- package/dist/tools/sandbox/list-available-refs.js +61 -36
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +23 -73
- 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 +5 -2
- package/dist/tools/terminal-text.js +35 -3
- package/dist/tools/workspace/decision-record.d.ts +4 -4
- package/dist/tools/workspace/decision-record.js +23 -13
- package/dist/tools/workspace/edit-file.d.ts +59 -20
- package/dist/tools/workspace/edit-file.js +81 -16
- package/dist/tools/workspace/execute-command.d.ts +15 -13
- package/dist/tools/workspace/execute-command.js +11 -9
- 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/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 +46 -62
- package/dist/workflows/execute-analysis.js +137 -219
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +38 -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 +21 -22
- package/dist/loop/call-guard.d.ts +0 -50
- package/dist/loop/call-guard.js +0 -90
- 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 -245
- package/dist/loop/run-agent.js +0 -1124
- 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 -93
- 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
|
@@ -10,7 +10,7 @@ import type { Logger } from "../lib/logger.js";
|
|
|
10
10
|
import { type SuspendOn } from "./errors.js";
|
|
11
11
|
import type { ResolveRequestHeaders } from "./request-headers.js";
|
|
12
12
|
import type { EmbeddingProvider, FetchLike } from "./types.js";
|
|
13
|
-
export
|
|
13
|
+
export type EmbeddingProviderDeps = {
|
|
14
14
|
/** Gateway base URL — all embedding traffic is routed through it. */
|
|
15
15
|
readonly baseURL: string;
|
|
16
16
|
/** API token presented to the gateway. */
|
|
@@ -34,5 +34,5 @@ export interface EmbeddingProviderDeps {
|
|
|
34
34
|
* tests inject a fake to feed a recorded response.
|
|
35
35
|
*/
|
|
36
36
|
readonly fetch?: FetchLike;
|
|
37
|
-
}
|
|
37
|
+
};
|
|
38
38
|
export declare function createEmbeddingProvider(deps: EmbeddingProviderDeps): EmbeddingProvider;
|
|
@@ -27,7 +27,7 @@ export function createEmbeddingProvider(deps) {
|
|
|
27
27
|
baseURL: deps.baseURL,
|
|
28
28
|
apiKey: deps.token,
|
|
29
29
|
maxRetries: 0,
|
|
30
|
-
|
|
30
|
+
fetch: deps.fetch,
|
|
31
31
|
});
|
|
32
32
|
const model = deps.model ?? DEFAULT_EMBEDDING_MODEL;
|
|
33
33
|
const dimensions = deps.dimensions ?? DEFAULT_EMBEDDING_DIMENSIONS;
|
|
@@ -91,6 +91,26 @@ export type SuspendError = Extract<ProviderError, {
|
|
|
91
91
|
export declare function findSuspendError(err: unknown): SuspendError | undefined;
|
|
92
92
|
/** Find a `ProviderError` of any kind, by the walk of {@link findSuspendError}. */
|
|
93
93
|
export declare function findProviderError(err: unknown): ProviderError | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* The class of a model call that failed after its retries. Each failure that
|
|
96
|
+
* time or a person can repair is named here, and nowhere else:
|
|
97
|
+
*
|
|
98
|
+
* - `outage`: a transient provider failure that outlived each retry.
|
|
99
|
+
* - `billing`: a status that the `suspendOn` map of the host names, with its reason.
|
|
100
|
+
* - `credential`: the endpoint refused the credential.
|
|
101
|
+
* - `other`: each other failure.
|
|
102
|
+
*/
|
|
103
|
+
export type ModelFailure = {
|
|
104
|
+
readonly kind: "outage";
|
|
105
|
+
} | {
|
|
106
|
+
readonly kind: "billing";
|
|
107
|
+
readonly reason: string;
|
|
108
|
+
} | {
|
|
109
|
+
readonly kind: "credential";
|
|
110
|
+
} | {
|
|
111
|
+
readonly kind: "other";
|
|
112
|
+
};
|
|
113
|
+
export declare function modelFailureOf(err: unknown): ModelFailure;
|
|
94
114
|
/**
|
|
95
115
|
* Turn a caught SDK throwable into a `ProviderError` value. Routes through
|
|
96
116
|
* `classifyProviderError` with the `suspendOn` map of the provider, so the
|
|
@@ -98,8 +118,8 @@ export declare function findProviderError(err: unknown): ProviderError | undefin
|
|
|
98
118
|
* classification and a mapped status becomes a `suspend` error. `cause` is the
|
|
99
119
|
* original throwable verbatim.
|
|
100
120
|
*
|
|
101
|
-
* Idempotent:
|
|
102
|
-
*
|
|
121
|
+
* Idempotent: the retry envelope of the provider throws a `ProviderError`
|
|
122
|
+
* value, and a caller can wrap it again. Returning an
|
|
103
123
|
* already-constructed `ProviderError` unchanged stops that second pass from
|
|
104
124
|
* `String()`-ing the object (a `ProviderError` is not an `Error`) into a
|
|
105
125
|
* `"[object Object]"` message that would bury the real inner one.
|
package/dist/providers/errors.js
CHANGED
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
* which is a different remedy from every other non-retryable 4xx, so it is a
|
|
18
18
|
* different kind.
|
|
19
19
|
*/
|
|
20
|
+
import { errorMessageOf } from "../lib/thrown.js";
|
|
21
|
+
import { textOf } from "../lib/unknown-text.js";
|
|
20
22
|
import { redactSecrets } from "../input-sanitization.js";
|
|
23
|
+
import { collapseWhitespace } from "../lib/text.js";
|
|
21
24
|
/**
|
|
22
25
|
* The sentinel that the request-timeout guard uses as an abort reason. The guard
|
|
23
26
|
* arms a timer for each fetch attempt. On expiry the guard aborts the attempt
|
|
@@ -47,8 +50,11 @@ export const DEFAULT_SUSPEND_ON = { 402: "payment_required" };
|
|
|
47
50
|
export function isProviderError(value) {
|
|
48
51
|
if (typeof value !== "object" || value === null)
|
|
49
52
|
return false;
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
if (!("type" in value && "retryable" in value && "message" in value))
|
|
54
|
+
return false;
|
|
55
|
+
return ((value.type === "auth" || value.type === "suspend" || value.type === "provider") &&
|
|
56
|
+
typeof value.retryable === "boolean" &&
|
|
57
|
+
typeof value.message === "string");
|
|
52
58
|
}
|
|
53
59
|
/**
|
|
54
60
|
* Find a `suspend` error on a failure or on its `cause` chain. A step boundary
|
|
@@ -61,12 +67,25 @@ export function isProviderError(value) {
|
|
|
61
67
|
*/
|
|
62
68
|
export function findSuspendError(err) {
|
|
63
69
|
const asSuspend = (value) => (isProviderError(value) && value.type === "suspend" ? value : undefined);
|
|
64
|
-
return findInCauseChain(err, (link) => asSuspend(link) ?? (
|
|
70
|
+
return findInCauseChain(err, (link) => asSuspend(link) ?? ("value" in link ? asSuspend(link.value) : undefined));
|
|
65
71
|
}
|
|
66
72
|
/** Find a `ProviderError` of any kind, by the walk of {@link findSuspendError}. */
|
|
67
73
|
export function findProviderError(err) {
|
|
68
74
|
const asProviderError = (value) => (isProviderError(value) ? value : undefined);
|
|
69
|
-
return findInCauseChain(err, (link) => asProviderError(link) ?? (
|
|
75
|
+
return findInCauseChain(err, (link) => asProviderError(link) ?? ("value" in link ? asProviderError(link.value) : undefined));
|
|
76
|
+
}
|
|
77
|
+
export function modelFailureOf(err) {
|
|
78
|
+
const error = findProviderError(err);
|
|
79
|
+
switch (error?.type) {
|
|
80
|
+
case "suspend":
|
|
81
|
+
return { kind: "billing", reason: error.reason };
|
|
82
|
+
case "auth":
|
|
83
|
+
return { kind: "credential" };
|
|
84
|
+
case "provider":
|
|
85
|
+
return error.retryable ? { kind: "outage" } : { kind: "other" };
|
|
86
|
+
case undefined:
|
|
87
|
+
return { kind: "other" };
|
|
88
|
+
}
|
|
70
89
|
}
|
|
71
90
|
/**
|
|
72
91
|
* Turn a caught SDK throwable into a `ProviderError` value. Routes through
|
|
@@ -75,8 +94,8 @@ export function findProviderError(err) {
|
|
|
75
94
|
* classification and a mapped status becomes a `suspend` error. `cause` is the
|
|
76
95
|
* original throwable verbatim.
|
|
77
96
|
*
|
|
78
|
-
* Idempotent:
|
|
79
|
-
*
|
|
97
|
+
* Idempotent: the retry envelope of the provider throws a `ProviderError`
|
|
98
|
+
* value, and a caller can wrap it again. Returning an
|
|
80
99
|
* already-constructed `ProviderError` unchanged stops that second pass from
|
|
81
100
|
* `String()`-ing the object (a `ProviderError` is not an `Error`) into a
|
|
82
101
|
* `"[object Object]"` message that would bury the real inner one.
|
|
@@ -94,12 +113,12 @@ export function toProviderError(e, workload, suspendOn = DEFAULT_SUSPEND_ON) {
|
|
|
94
113
|
return {
|
|
95
114
|
type: "provider",
|
|
96
115
|
retryable: true,
|
|
97
|
-
message: `The provider sent no data for ${workload} within the request timeout of ${timeout
|
|
116
|
+
message: `The provider sent no data for ${workload} within the request timeout of ${timeout} ms.`,
|
|
98
117
|
cause: e,
|
|
99
118
|
};
|
|
100
119
|
}
|
|
101
120
|
const classified = classifyProviderError(e, suspendOn);
|
|
102
|
-
const detail = e
|
|
121
|
+
const detail = errorMessageOf(e) ?? textOf(e);
|
|
103
122
|
if (classified.kind === "auth") {
|
|
104
123
|
return {
|
|
105
124
|
type: "auth",
|
|
@@ -165,10 +184,10 @@ const PROVIDER_BODY_EXCERPT_MAX_LEN = 120;
|
|
|
165
184
|
* strings) and is safe on biological data, so a legitimate error body passes through intact.
|
|
166
185
|
*/
|
|
167
186
|
function excerptResponseBody(body) {
|
|
168
|
-
const singleLine = redactSecrets(body)
|
|
187
|
+
const singleLine = collapseWhitespace(redactSecrets(body));
|
|
169
188
|
// Slice by CODE POINT, not UTF-16 unit: a raw byte body can carry astral characters, and a plain
|
|
170
189
|
// `.slice` could bisect a surrogate pair into a lone half that renders as U+FFFD.
|
|
171
|
-
const chars =
|
|
190
|
+
const chars = Array.from(singleLine);
|
|
172
191
|
return chars.length > PROVIDER_BODY_EXCERPT_MAX_LEN ? chars.slice(0, PROVIDER_BODY_EXCERPT_MAX_LEN - 1).join("") + "…" : singleLine;
|
|
173
192
|
}
|
|
174
193
|
/** Max links walked on the `cause` chain looking for a structured status. */
|
|
@@ -185,20 +204,41 @@ const CONNECTION_ERROR_CODES = new Set([
|
|
|
185
204
|
"UND_ERR_HEADERS_TIMEOUT",
|
|
186
205
|
"UND_ERR_SOCKET",
|
|
187
206
|
]);
|
|
188
|
-
|
|
207
|
+
/** The transport-failure phrases of the fetch stack, as the providers write them; the compare lowercases the link message. */
|
|
208
|
+
const CONNECTION_ERROR_PHRASES = [
|
|
209
|
+
"fetch failed",
|
|
210
|
+
"socket hang up",
|
|
211
|
+
"network error",
|
|
212
|
+
"connection refused",
|
|
213
|
+
"connection reset",
|
|
214
|
+
"connection error",
|
|
215
|
+
"connection closed",
|
|
216
|
+
"econnrefused",
|
|
217
|
+
"enotfound",
|
|
218
|
+
"etimedout",
|
|
219
|
+
"terminated",
|
|
220
|
+
];
|
|
189
221
|
/**
|
|
190
222
|
* Walk the `cause` chain up to {@link MAX_CAUSE_HOPS} links, and return the first
|
|
191
223
|
* result that `probe` gives. `probe` gives a value for a link that matches, or
|
|
192
224
|
* `undefined` for a link that does not. The walk stops at the first match, at
|
|
193
|
-
* the hop cap, or at the end of the chain.
|
|
225
|
+
* the hop cap, or at the end of the chain. Each probe receives a link that the
|
|
226
|
+
* walk verified to be an object, so the probe reads its fields through the `in`
|
|
227
|
+
* narrowing and no assertion restates the check.
|
|
194
228
|
*/
|
|
195
229
|
function findInCauseChain(err, probe) {
|
|
196
230
|
let cursor = err;
|
|
197
|
-
for (let i = 0; i < MAX_CAUSE_HOPS
|
|
231
|
+
for (let i = 0; i < MAX_CAUSE_HOPS; i++) {
|
|
232
|
+
// A link of a cause chain is whatever a `throw` carried — most links are Error
|
|
233
|
+
// instances, whose own fields a record schema cannot reach — so the gate is the
|
|
234
|
+
// hand object check (a null-prototype thrown value fails `instanceof Object`),
|
|
235
|
+
// and each probe narrows the fields it reads.
|
|
236
|
+
if (cursor === null || typeof cursor !== "object")
|
|
237
|
+
return undefined;
|
|
198
238
|
const found = probe(cursor);
|
|
199
239
|
if (found !== undefined)
|
|
200
240
|
return found;
|
|
201
|
-
cursor = cursor.cause;
|
|
241
|
+
cursor = "cause" in cursor ? cursor.cause : undefined;
|
|
202
242
|
}
|
|
203
243
|
return undefined;
|
|
204
244
|
}
|
|
@@ -210,11 +250,10 @@ function findInCauseChain(err, probe) {
|
|
|
210
250
|
*/
|
|
211
251
|
export function extractStatus(err) {
|
|
212
252
|
return findInCauseChain(err, (link) => {
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
return e.statusCode;
|
|
253
|
+
if ("status" in link && typeof link.status === "number")
|
|
254
|
+
return link.status;
|
|
255
|
+
if ("statusCode" in link && typeof link.statusCode === "number")
|
|
256
|
+
return link.statusCode;
|
|
218
257
|
return undefined;
|
|
219
258
|
});
|
|
220
259
|
}
|
|
@@ -228,29 +267,27 @@ export function extractStatus(err) {
|
|
|
228
267
|
* `— response body:` segment says less than no segment at all.
|
|
229
268
|
*/
|
|
230
269
|
function extractResponseBody(err) {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
cursor = e.cause;
|
|
237
|
-
}
|
|
238
|
-
return undefined;
|
|
270
|
+
return findInCauseChain(err, (link) => {
|
|
271
|
+
if ("responseBody" in link && typeof link.responseBody === "string" && link.responseBody.trim() !== "")
|
|
272
|
+
return link.responseBody;
|
|
273
|
+
return undefined;
|
|
274
|
+
});
|
|
239
275
|
}
|
|
240
276
|
/**
|
|
241
|
-
* Walk the `cause` chain for the request-timeout
|
|
242
|
-
*
|
|
243
|
-
*
|
|
277
|
+
* Walk the `cause` chain for the request-timeout bound. The guard aborts a fetch
|
|
278
|
+
* with a `RequestTimeoutError`. The SDK carries the abort reason down the `cause`
|
|
279
|
+
* chain, thus the sentinel can sit one or more hops down. The bound rides the
|
|
280
|
+
* sentinel, so the walk returns it directly.
|
|
244
281
|
*/
|
|
245
282
|
function findRequestTimeout(err) {
|
|
246
283
|
return findInCauseChain(err, (link) => {
|
|
247
284
|
if (link instanceof RequestTimeoutError)
|
|
248
|
-
return link;
|
|
249
|
-
// A duplicate class identity across a realm boundary fails `instanceof`,
|
|
250
|
-
//
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
285
|
+
return link.requestTimeoutMs;
|
|
286
|
+
// A duplicate class identity across a realm boundary fails `instanceof`, thus match
|
|
287
|
+
// the name and the field as a fallback.
|
|
288
|
+
if ("name" in link && link.name === "RequestTimeoutError" && "requestTimeoutMs" in link && typeof link.requestTimeoutMs === "number") {
|
|
289
|
+
return link.requestTimeoutMs;
|
|
290
|
+
}
|
|
254
291
|
return undefined;
|
|
255
292
|
});
|
|
256
293
|
}
|
|
@@ -267,22 +304,27 @@ const SDK_TIMEOUT_ERROR_NAME = "TimeoutError";
|
|
|
267
304
|
* an abort reason down the `cause` chain, thus the reason can sit one or more
|
|
268
305
|
* hops down.
|
|
269
306
|
*/
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
307
|
+
/**
|
|
308
|
+
* Does the `cause` chain hold the timeout that the SDK raises? The `DOMException`
|
|
309
|
+
* carries no field of its own, thus the name is the one signal. The SDK carries
|
|
310
|
+
* an abort reason down the `cause` chain, thus the reason can sit one or more
|
|
311
|
+
* hops down.
|
|
312
|
+
*/
|
|
313
|
+
function hasSdkTimeout(err) {
|
|
314
|
+
return findInCauseChain(err, (link) => ("name" in link && link.name === SDK_TIMEOUT_ERROR_NAME ? true : undefined)) ?? false;
|
|
275
315
|
}
|
|
276
316
|
/** Does any link of the `cause` chain look like a transport-level failure? */
|
|
277
317
|
function looksLikeConnectionError(err) {
|
|
278
318
|
return (findInCauseChain(err, (link) => {
|
|
279
|
-
|
|
280
|
-
if (typeof e.code === "string" && CONNECTION_ERROR_CODES.has(e.code))
|
|
281
|
-
return true;
|
|
282
|
-
if (typeof e.name === "string" && /^APIConnection/.test(e.name))
|
|
319
|
+
if ("code" in link && typeof link.code === "string" && CONNECTION_ERROR_CODES.has(link.code))
|
|
283
320
|
return true;
|
|
284
|
-
if (typeof
|
|
321
|
+
if ("name" in link && typeof link.name === "string" && link.name.startsWith("APIConnection"))
|
|
285
322
|
return true;
|
|
323
|
+
if ("message" in link && typeof link.message === "string") {
|
|
324
|
+
const message = link.message.toLowerCase();
|
|
325
|
+
if (CONNECTION_ERROR_PHRASES.some((phrase) => message.includes(phrase)))
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
286
328
|
return undefined;
|
|
287
329
|
}) ?? false);
|
|
288
330
|
}
|
|
@@ -302,11 +344,17 @@ export function classifyProviderError(e, suspendOn = DEFAULT_SUSPEND_ON) {
|
|
|
302
344
|
// policy as a connection error. This runs before the status and the
|
|
303
345
|
// connection paths, because a timeout carries no HTTP status, and it must not
|
|
304
346
|
// fall to a non-retryable path.
|
|
305
|
-
if (findRequestTimeout(e) !== undefined ||
|
|
347
|
+
if (findRequestTimeout(e) !== undefined || hasSdkTimeout(e))
|
|
306
348
|
return { kind: "provider", retryable: true };
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
349
|
+
// A status below 400 is the status of a response that started well, and the failure came later, for example a
|
|
350
|
+
// stream that a reset connection broke. Thus only an error status classifies, and the rest falls to the
|
|
351
|
+
// connection check.
|
|
352
|
+
const found = extractStatus(e);
|
|
353
|
+
const status = found !== undefined && found >= 400 ? found : undefined;
|
|
354
|
+
if (status !== undefined) {
|
|
355
|
+
const reason = suspendOn[status];
|
|
356
|
+
if (reason !== undefined)
|
|
357
|
+
return { kind: "suspend", retryable: false, reason, status };
|
|
310
358
|
}
|
|
311
359
|
// `auth` is its own kind rather than a plain non-retryable 4xx because the
|
|
312
360
|
// remedy is categorically different: the request was well-formed and the
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Prompt-cache policy → provider wire options.
|
|
3
3
|
*
|
|
4
4
|
* This is the **only** place in the harness that names a vendor for caching.
|
|
5
|
-
* Everything upstream — `PromptCachePolicy`, `ChatUsage`, `
|
|
5
|
+
* Everything upstream — `PromptCachePolicy`, `ChatUsage`, `LoopOptions` —
|
|
6
6
|
* speaks the neutral harness concept; this module translates it once, at the
|
|
7
7
|
* provider seam, so the loop never learns which vendor it is talking to.
|
|
8
8
|
*
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
* ## Cache defeaters — what silently kills the hit rate
|
|
55
55
|
*
|
|
56
56
|
* The cache keys on an *exact prefix*, so anything that perturbs the head of the
|
|
57
|
-
* request invalidates everything after it. The
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
57
|
+
* request invalidates everything after it. The salvage of `runWithSalvage`, and
|
|
58
|
+
* a step's summary and file-metadata follow-up requests, extend one
|
|
59
|
+
* conversation under a tool mask, thus they keep its prefix
|
|
60
|
+
* (`loop/run-loop.ts`). A tool choice that forbids a call would defeat the
|
|
61
|
+
* cache, because `@ai-sdk/anthropic` removes the tools from such a request.
|
|
62
62
|
*
|
|
63
63
|
* `loadRecent` gives the view of the latest compaction marker
|
|
64
64
|
* (`memory/conversation-view.ts`). A compaction moves the start of the view one
|
|
@@ -132,8 +132,8 @@ export declare const CONVERSATION_PROMPT_CACHE: PromptCachePolicy;
|
|
|
132
132
|
* `cacheControl` has already been renamed once, and the provider still accepts
|
|
133
133
|
* `cache_control` as its alias.
|
|
134
134
|
*
|
|
135
|
-
* CAUTION: this is the marker's VALUE, not its placement. Attaching it to
|
|
136
|
-
*
|
|
135
|
+
* CAUTION: this is the marker's VALUE, not its placement. Attaching it to the
|
|
136
|
+
* options of a request emits the invisible top-level field the module header warns
|
|
137
137
|
* about. Place it with {@link withSystemPromptBreakpoint} and
|
|
138
138
|
* {@link withPromptCacheBreakpoint}.
|
|
139
139
|
*/
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Prompt-cache policy → provider wire options.
|
|
3
3
|
*
|
|
4
4
|
* This is the **only** place in the harness that names a vendor for caching.
|
|
5
|
-
* Everything upstream — `PromptCachePolicy`, `ChatUsage`, `
|
|
5
|
+
* Everything upstream — `PromptCachePolicy`, `ChatUsage`, `LoopOptions` —
|
|
6
6
|
* speaks the neutral harness concept; this module translates it once, at the
|
|
7
7
|
* provider seam, so the loop never learns which vendor it is talking to.
|
|
8
8
|
*
|
|
@@ -54,11 +54,11 @@
|
|
|
54
54
|
* ## Cache defeaters — what silently kills the hit rate
|
|
55
55
|
*
|
|
56
56
|
* The cache keys on an *exact prefix*, so anything that perturbs the head of the
|
|
57
|
-
* request invalidates everything after it. The
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
57
|
+
* request invalidates everything after it. The salvage of `runWithSalvage`, and
|
|
58
|
+
* a step's summary and file-metadata follow-up requests, extend one
|
|
59
|
+
* conversation under a tool mask, thus they keep its prefix
|
|
60
|
+
* (`loop/run-loop.ts`). A tool choice that forbids a call would defeat the
|
|
61
|
+
* cache, because `@ai-sdk/anthropic` removes the tools from such a request.
|
|
62
62
|
*
|
|
63
63
|
* `loadRecent` gives the view of the latest compaction marker
|
|
64
64
|
* (`memory/conversation-view.ts`). A compaction moves the start of the view one
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
* flat-zero read counter beside a non-zero write counter is still the signature
|
|
93
93
|
* of an endpoint billing for writes and serving no reads.
|
|
94
94
|
*/
|
|
95
|
+
import { parseUnknownRecord } from "../lib/unknown-containers.js";
|
|
95
96
|
/**
|
|
96
97
|
* The default policy: cache with the 5-minute TTL.
|
|
97
98
|
*
|
|
@@ -130,8 +131,8 @@ export const CONVERSATION_PROMPT_CACHE = { ttl: "1h" };
|
|
|
130
131
|
* `cacheControl` has already been renamed once, and the provider still accepts
|
|
131
132
|
* `cache_control` as its alias.
|
|
132
133
|
*
|
|
133
|
-
* CAUTION: this is the marker's VALUE, not its placement. Attaching it to
|
|
134
|
-
*
|
|
134
|
+
* CAUTION: this is the marker's VALUE, not its placement. Attaching it to the
|
|
135
|
+
* options of a request emits the invisible top-level field the module header warns
|
|
135
136
|
* about. Place it with {@link withSystemPromptBreakpoint} and
|
|
136
137
|
* {@link withPromptCacheBreakpoint}.
|
|
137
138
|
*/
|
|
@@ -188,9 +189,10 @@ function canHostBreakpoint(message) {
|
|
|
188
189
|
if (!Array.isArray(content))
|
|
189
190
|
return false;
|
|
190
191
|
const last = content.at(-1);
|
|
191
|
-
|
|
192
|
+
const part = parseUnknownRecord(last);
|
|
193
|
+
if (part === undefined)
|
|
192
194
|
return false;
|
|
193
|
-
return
|
|
195
|
+
return !("type" in part) || part["type"] !== "reasoning";
|
|
194
196
|
}
|
|
195
197
|
/** The index of the last message that can host the breakpoint, or `-1` when none can. */
|
|
196
198
|
function lastHostIndex(messages) {
|
|
@@ -227,7 +229,7 @@ function withoutBreakpoint(message) {
|
|
|
227
229
|
continue;
|
|
228
230
|
const { [key]: _dropped, ...rest } = bag;
|
|
229
231
|
if (Object.keys(rest).length === 0)
|
|
230
|
-
|
|
232
|
+
Reflect.deleteProperty(remaining, namespace);
|
|
231
233
|
else
|
|
232
234
|
remaining[namespace] = rest;
|
|
233
235
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The reasoning depth of a call.
|
|
3
3
|
*
|
|
4
|
-
* The effort resolves in order: `
|
|
5
|
-
*
|
|
4
|
+
* The effort resolves in order: the effort of the run (`LoopOptions.reasoning`),
|
|
5
|
+
* the provider configuration's `reasoning`, then
|
|
6
6
|
* {@link DEFAULT_REASONING}. Anthropic discards its message cache when the
|
|
7
7
|
* top-level effort changes between calls.
|
|
8
8
|
*
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The reasoning depth of a call.
|
|
3
3
|
*
|
|
4
|
-
* The effort resolves in order: `
|
|
5
|
-
*
|
|
4
|
+
* The effort resolves in order: the effort of the run (`LoopOptions.reasoning`),
|
|
5
|
+
* the provider configuration's `reasoning`, then
|
|
6
6
|
* {@link DEFAULT_REASONING}. Anthropic discards its message cache when the
|
|
7
7
|
* top-level effort changes between calls.
|
|
8
8
|
*
|
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* vendor-neutral interfaces. Every call carries an `AgentSession`; billing
|
|
6
6
|
* attribution is resolved lazily at the provider wire boundary.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
9
|
-
import type { LanguageModelV4CallOptions } from "@ai-sdk/provider";
|
|
10
|
-
import type { ProviderOptions } from "@ai-sdk/provider-utils";
|
|
8
|
+
import type { TelemetryOptions } from "ai";
|
|
9
|
+
import type { LanguageModelV4, LanguageModelV4CallOptions } from "@ai-sdk/provider";
|
|
11
10
|
import type { ResultAsync } from "neverthrow";
|
|
12
11
|
import type { AgentSession } from "../auth/types.js";
|
|
13
12
|
import type { ProviderError } from "./errors.js";
|
|
14
|
-
export type { FinishReason, LanguageModel, ModelMessage,
|
|
15
|
-
|
|
13
|
+
export type { FinishReason, LanguageModel, ModelMessage, ToolSet } from "ai";
|
|
14
|
+
import type { ProviderOptions } from "@ai-sdk/provider-utils";
|
|
15
|
+
export type { ProviderOptions } from "@ai-sdk/provider-utils";
|
|
16
|
+
export type ProviderCapabilities = {
|
|
16
17
|
readonly toolCalling: boolean;
|
|
17
18
|
/**
|
|
18
19
|
* Whether the wire can carry a picture inside a tool result. The loop moves a
|
|
@@ -23,48 +24,13 @@ export interface ProviderCapabilities {
|
|
|
23
24
|
* see it. Absent means "cannot carry", never "unknown".
|
|
24
25
|
*/
|
|
25
26
|
readonly imageToolResults?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Whether the wire can carry a picture inside a user message. The loop uses
|
|
28
|
-
* this placement only when the tool result cannot carry the picture. The tool
|
|
29
|
-
* result then keeps its JSON text, and one user message after the tool message
|
|
30
|
-
* of the round carries the bytes. Absent means "cannot carry", never
|
|
31
|
-
* "unknown".
|
|
32
|
-
*/
|
|
33
|
-
readonly imageUserMessages?: boolean;
|
|
34
27
|
/**
|
|
35
28
|
* The context window of the model in tokens, when the host knows it. A chat
|
|
36
29
|
* thread then compacts at 80% of the window at the latest. Absent means "at
|
|
37
30
|
* least the compaction budget of the agent", thus the budget stays as declared.
|
|
38
31
|
*/
|
|
39
32
|
readonly contextWindow?: number;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* The request carries no free-form provider options. That would let a caller
|
|
43
|
-
* set a vendor key that bypasses the provider's per-model table.
|
|
44
|
-
*/
|
|
45
|
-
export interface ChatRequest {
|
|
46
|
-
/**
|
|
47
|
-
* The system prompt: a plain string, or a system message that carries the
|
|
48
|
-
* cache marker at its end (`withSystemPromptBreakpoint`).
|
|
49
|
-
*/
|
|
50
|
-
readonly system: string | SystemModelMessage;
|
|
51
|
-
readonly messages: readonly ModelMessage[];
|
|
52
|
-
readonly tools: ToolSet;
|
|
53
|
-
/**
|
|
54
|
-
* A forced choice (`required`, or one named tool) is absent on purpose: some
|
|
55
|
-
* Claude models reject it with a 400, and the model is chosen at run time.
|
|
56
|
-
*
|
|
57
|
-
* CAUTION: `@ai-sdk/anthropic` strips the tools when this is `"none"`, and
|
|
58
|
-
* Anthropic drops its cache on any `tool_choice` change — taking a signed
|
|
59
|
-
* thinking block with it. Use a tool mask instead of sending `"none"`.
|
|
60
|
-
*/
|
|
61
|
-
readonly toolChoice?: "auto" | "none";
|
|
62
|
-
/**
|
|
63
|
-
* How deep the model reasons. Absent, the effort falls back to the provider
|
|
64
|
-
* configuration's `reasoning`, then `DEFAULT_REASONING`.
|
|
65
|
-
*/
|
|
66
|
-
readonly reasoning?: ReasoningPolicy;
|
|
67
|
-
}
|
|
33
|
+
};
|
|
68
34
|
/**
|
|
69
35
|
* Vendor-neutral prompt-cache policy — a harness concept, not a vendor one.
|
|
70
36
|
*
|
|
@@ -116,74 +82,69 @@ export type ReasoningPolicy = NonNullable<LanguageModelV4CallOptions["reasoning"
|
|
|
116
82
|
* totals without a cache breakdown, is legitimate. Absent means "not reported",
|
|
117
83
|
* never "zero".
|
|
118
84
|
*/
|
|
119
|
-
export
|
|
85
|
+
export type ChatUsage = {
|
|
120
86
|
readonly inputTokens?: number;
|
|
121
87
|
readonly outputTokens?: number;
|
|
122
88
|
readonly cacheCreationInputTokens?: number;
|
|
123
89
|
readonly cacheReadInputTokens?: number;
|
|
124
90
|
readonly reasoningTokens?: number;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
readonly message: Extract<ModelMessage, {
|
|
128
|
-
role: "assistant";
|
|
129
|
-
}>;
|
|
130
|
-
/**
|
|
131
|
-
* The terminal reason for this reply. `"aborted"` is produced ONLY by the
|
|
132
|
-
* streaming wrapper (`createStreamingChat`), which resolves a client abort
|
|
133
|
-
* with the partial assistant text assembled from the deltas it already
|
|
134
|
-
* forwarded. The non-streaming `ChatProvider.chat` never yields `"aborted"`:
|
|
135
|
-
* it propagates a client abort as a throw, because durable workflow loops —
|
|
136
|
-
* the non-streaming provider's callers — record cancellation only when it
|
|
137
|
-
* surfaces as a thrown exception.
|
|
138
|
-
*/
|
|
139
|
-
readonly finishReason: FinishReason | "aborted";
|
|
140
|
-
readonly rawFinishReason?: string;
|
|
141
|
-
readonly usage?: ChatUsage;
|
|
142
|
-
/**
|
|
143
|
-
* The id of the model this provider instance is bound to — what the caller
|
|
144
|
-
* asked for. Absent when the binding names no id.
|
|
145
|
-
*/
|
|
146
|
-
readonly requestedModelId?: string;
|
|
147
|
-
/**
|
|
148
|
-
* The model id the provider itself reported as having answered. Absent
|
|
149
|
-
* whenever the provider reported none — it is NEVER filled in from
|
|
150
|
-
* `requestedModelId`, because a claim about which model answered is only
|
|
151
|
-
* worth anything when the endpoint actually made it.
|
|
152
|
-
*
|
|
153
|
-
* A value differing from `requestedModelId` is not an error: the pair exists
|
|
154
|
-
* so a consumer can observe an endpoint or proxy serving a different model
|
|
155
|
-
* version than the one configured. Treat the comparison as best-effort
|
|
156
|
-
* diagnostics, never as an invariant.
|
|
157
|
-
*/
|
|
158
|
-
readonly servedModelId?: string;
|
|
159
|
-
/**
|
|
160
|
-
* The AI SDK's `LanguageModel.provider` id, for example `anthropic.messages`.
|
|
161
|
-
* Absent for a bare model-id string, which names no provider.
|
|
162
|
-
*/
|
|
163
|
-
readonly provider?: string;
|
|
164
|
-
}
|
|
91
|
+
};
|
|
92
|
+
/** A text delta of the reply that streams to a reader. */
|
|
165
93
|
export type ChatStreamEvent = {
|
|
166
94
|
readonly type: "text-delta";
|
|
167
95
|
readonly text: string;
|
|
168
|
-
} | {
|
|
169
|
-
readonly type: "done";
|
|
170
|
-
readonly response: ChatResponse;
|
|
171
96
|
};
|
|
172
|
-
|
|
97
|
+
/** The facts of one run that bind a model: the session of its calls, its effort, and whether a reader sees its reply live. */
|
|
98
|
+
export type ModelBinding = {
|
|
99
|
+
readonly session: AgentSession;
|
|
100
|
+
/** Absent: the effort of the provider configuration, then `DEFAULT_REASONING`. */
|
|
101
|
+
readonly reasoning?: ReasoningPolicy;
|
|
102
|
+
/**
|
|
103
|
+
* A reader sees the reply as it streams. A live call retries only before its first output part, and a
|
|
104
|
+
* call with no live reader takes its whole reply inside each attempt.
|
|
105
|
+
*/
|
|
106
|
+
readonly live: boolean;
|
|
107
|
+
/** Called before the wait of each retry of a request inside the retry envelope. */
|
|
108
|
+
readonly onRetry?: (retry: ModelRetry) => void;
|
|
109
|
+
};
|
|
110
|
+
/** One retry of a model request inside the retry envelope of the provider. */
|
|
111
|
+
export type ModelRetry = {
|
|
112
|
+
/** The id of the request. Each retry of one request carries the same id. */
|
|
113
|
+
readonly requestId: string;
|
|
114
|
+
/** The number of this retry, from 1. */
|
|
115
|
+
readonly attempt: number;
|
|
116
|
+
readonly maxRetries: number;
|
|
117
|
+
/** The wait before the next attempt, in milliseconds. */
|
|
118
|
+
readonly delayMs: number;
|
|
119
|
+
/** The HTTP error status of the failed attempt, 400 or higher. Absent for a failure with no error status. */
|
|
120
|
+
readonly status?: number;
|
|
121
|
+
};
|
|
122
|
+
/** The model of one run, under the retry envelope of its provider, and the call settings of each request. */
|
|
123
|
+
export type BoundModel = {
|
|
124
|
+
readonly model: LanguageModelV4;
|
|
125
|
+
readonly settings: {
|
|
126
|
+
readonly maxOutputTokens?: number;
|
|
127
|
+
readonly reasoning: ReasoningPolicy;
|
|
128
|
+
readonly providerOptions?: ProviderOptions;
|
|
129
|
+
};
|
|
130
|
+
readonly telemetry: TelemetryOptions;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* The model configuration of the harness: one model over one connection. The loop binds it for each run, and
|
|
134
|
+
* the AI SDK drives each request.
|
|
135
|
+
*/
|
|
136
|
+
export type ChatProvider = {
|
|
173
137
|
readonly capabilities: ProviderCapabilities;
|
|
174
|
-
chat(req: ChatRequest, session: AgentSession, signal?: AbortSignal): ResultAsync<ChatResponse, ProviderError>;
|
|
175
|
-
}
|
|
176
|
-
export interface ChatProvider extends AgentChat {
|
|
177
|
-
chatStream(req: ChatRequest, session: AgentSession, signal?: AbortSignal): AsyncIterable<ChatStreamEvent>;
|
|
178
138
|
/**
|
|
179
139
|
* The request-timeout limit that this provider enforces, in milliseconds, or
|
|
180
140
|
* absent when it enforces none. The value bounds each silent interval of a
|
|
181
141
|
* request attempt: the wait until the response starts, and each gap between
|
|
182
|
-
* two content
|
|
142
|
+
* two content parts of a stream. A consumer that scales a deadline reads this
|
|
183
143
|
* value from the provider instance, not from a harness constant.
|
|
184
144
|
*/
|
|
185
145
|
readonly requestTimeoutMs?: number;
|
|
186
|
-
|
|
146
|
+
bind(binding: ModelBinding): BoundModel;
|
|
147
|
+
};
|
|
187
148
|
/**
|
|
188
149
|
* The effective deadline in milliseconds for a provider-bound operation.
|
|
189
150
|
*
|
|
@@ -192,7 +153,7 @@ export interface ChatProvider extends AgentChat {
|
|
|
192
153
|
* a configured request timeout can raise the floor. It cannot lower the floor.
|
|
193
154
|
*/
|
|
194
155
|
export declare function effectiveDeadlineMs(provider: Pick<ChatProvider, "requestTimeoutMs">, floorMs: number, explicitMs?: number): number;
|
|
195
|
-
export
|
|
156
|
+
export type EmbeddingProvider = {
|
|
196
157
|
/**
|
|
197
158
|
* Width of every vector `embed` returns. The write-side index paths create
|
|
198
159
|
* each per-analysis pgvector index at exactly this width (`ensureSearchIndex`),
|
|
@@ -202,5 +163,5 @@ export interface EmbeddingProvider {
|
|
|
202
163
|
*/
|
|
203
164
|
readonly dimensions: number;
|
|
204
165
|
embed(texts: readonly string[], session: AgentSession): ResultAsync<number[][], ProviderError>;
|
|
205
|
-
}
|
|
166
|
+
};
|
|
206
167
|
export type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|