@inflexa-ai/harness 0.45.1 → 0.46.2
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 +306 -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 +32 -7
- package/dist/lib/hooks.js +22 -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 +160 -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 +39 -0
- package/dist/loop/turn-credentials.js +90 -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/request-headers.js +12 -3
- 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 +62 -0
- package/dist/testing.js +101 -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
|
@@ -12,16 +12,20 @@
|
|
|
12
12
|
* logger. The error contract: an expected
|
|
13
13
|
* outcome ("not found", "no results") stays in the ok channel as a data
|
|
14
14
|
* variant (`ok({ found: false })`); an unexpected failure is an `err(ToolError)`
|
|
15
|
-
* or a throw. The
|
|
16
|
-
*
|
|
15
|
+
* or a throw. The tool adapter of the loop (`loop/tool-adapter.ts`) maps both
|
|
16
|
+
* `err` and a thrown error to one error result.
|
|
17
|
+
*
|
|
18
|
+
* Each call runs as one durable step inside a workflow. Thus a tool body must be
|
|
19
|
+
* safe to run again from its start, and its result must carry each fact that a
|
|
20
|
+
* caller reads later.
|
|
17
21
|
*/
|
|
18
22
|
import type { Result } from "neverthrow";
|
|
19
23
|
import { z } from "zod";
|
|
20
24
|
import type { AgentSession } from "../auth/types.js";
|
|
21
25
|
import type { AgentRunUsage } from "../loop/metrics.js";
|
|
22
26
|
import type { EmitFn } from "../loop/types.js";
|
|
23
|
-
import type {
|
|
24
|
-
export type { EmitFn };
|
|
27
|
+
import type { AskRequest } from "./approval/contract.js";
|
|
28
|
+
export type { EmitFn } from "../loop/types.js";
|
|
25
29
|
/**
|
|
26
30
|
* The error channel of a tool's `Result`. `error` is the message surfaced to
|
|
27
31
|
* the model in the `is_error` `tool_result`; `retryable` tells it whether
|
|
@@ -30,18 +34,11 @@ export type { EmitFn };
|
|
|
30
34
|
* builds one by hand — most failures stay thrown and the loop's backstop
|
|
31
35
|
* derives the same shape via `classifyProviderError`.
|
|
32
36
|
*/
|
|
33
|
-
export
|
|
37
|
+
export type ToolError = {
|
|
34
38
|
readonly error: string;
|
|
35
39
|
readonly retryable: boolean;
|
|
36
40
|
readonly cause?: unknown;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* How the loop runs a tool call. `step` (the default) wraps the whole call in
|
|
40
|
-
* one durable step, thus a replay returns the cached result and never runs the
|
|
41
|
-
* body again. `inline` runs the call with no step, for a tool whose effects are
|
|
42
|
-
* not durable work.
|
|
43
|
-
*/
|
|
44
|
-
export type ToolExecutionMode = "step" | "inline";
|
|
41
|
+
};
|
|
45
42
|
/** Runtime guard — does a `Result`'s error value carry the `ToolError` shape? */
|
|
46
43
|
export declare function isToolError(value: unknown): value is ToolError;
|
|
47
44
|
/**
|
|
@@ -51,10 +48,10 @@ export declare function isToolError(value: unknown): value is ToolError;
|
|
|
51
48
|
* an image content block. Thus the model sees the picture, and the JSON text
|
|
52
49
|
* holds no bytes.
|
|
53
50
|
*/
|
|
54
|
-
export
|
|
51
|
+
export type ToolResultImage = {
|
|
55
52
|
readonly base64: string;
|
|
56
53
|
readonly mediaType: string;
|
|
57
|
-
}
|
|
54
|
+
};
|
|
58
55
|
/**
|
|
59
56
|
* The reserved key that carries the pictures on a tool ok value. It is a symbol,
|
|
60
57
|
* thus it never collides with a data field. `JSON.stringify` also omits a symbol
|
|
@@ -89,10 +86,10 @@ export declare function readToolResultImages(value: unknown): ToolResultImage[];
|
|
|
89
86
|
*
|
|
90
87
|
* A call record is what a call leaves for process-local state, for example the
|
|
91
88
|
* lineage collector of a sandbox step. A replay returns the cached result of a
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
89
|
+
* call and never runs its body, thus a side effect of the body on such state is
|
|
90
|
+
* lost on recovery. The record goes into the output of the step instead, and
|
|
91
|
+
* the loop hands it to `foldCallRecord` after each round, on the first run and
|
|
92
|
+
* on each replay alike.
|
|
96
93
|
*
|
|
97
94
|
* It is a symbol, thus `JSON.stringify` omits it and the model never reads it.
|
|
98
95
|
* The record itself must be plain JSON, because the step cache serializes it.
|
|
@@ -113,59 +110,58 @@ export declare function readToolCallRecord(value: unknown): unknown;
|
|
|
113
110
|
/**
|
|
114
111
|
* The request-scoped values passed to every tool's `execute`. No injected
|
|
115
112
|
* dependencies (see the harness-durable-runtime spec) — invocation identity,
|
|
116
|
-
* `session`, `signal`, `emit`,
|
|
117
|
-
*
|
|
113
|
+
* `session`, `signal`, `emit`, and the turn's usage accumulator a
|
|
114
|
+
* sub-agent-running tool hands to its child loop.
|
|
118
115
|
*/
|
|
119
|
-
export
|
|
116
|
+
export type ToolContext = {
|
|
120
117
|
/** Stable identity of this AI SDK tool call. Redelivery preserves it; a new
|
|
121
118
|
* model-issued call receives a new value. */
|
|
122
119
|
readonly invocationId: string;
|
|
123
120
|
readonly session: AgentSession;
|
|
124
121
|
readonly signal: AbortSignal;
|
|
125
122
|
readonly emit: EmitFn;
|
|
126
|
-
/**
|
|
127
|
-
* Pause for an explicit user decision on a concrete action. Resolves with the
|
|
128
|
-
* approval (`once`/`always`) or throws `AskRejectedError` on denial. Resolves
|
|
129
|
-
* to a deny-by-default realization when the embedder wires none, so a tool
|
|
130
|
-
* that calls it in a non-interactive context is denied rather than left
|
|
131
|
-
* waiting on a surface that cannot answer.
|
|
132
|
-
*/
|
|
133
|
-
readonly ask: (request: AskRequest) => Promise<AskApproval>;
|
|
134
123
|
/**
|
|
135
124
|
* The turn's usage accumulator — the mutable total every loop under this
|
|
136
|
-
* turn folds its LLM calls into. A tool that drives a child
|
|
125
|
+
* turn folds its LLM calls into. A tool that drives a child loop
|
|
137
126
|
* passes it straight into that run's options, which is what puts the
|
|
138
127
|
* child's tokens in the turn total its root loop reports. A tool that runs
|
|
139
128
|
* no child agent ignores it.
|
|
140
129
|
*/
|
|
141
130
|
readonly turnUsage?: AgentRunUsage;
|
|
142
|
-
}
|
|
131
|
+
};
|
|
132
|
+
/** What the approval hook of a tool reads of its call. */
|
|
133
|
+
export type ToolApprovalContext = {
|
|
134
|
+
readonly invocationId: string;
|
|
135
|
+
readonly session: AgentSession;
|
|
136
|
+
};
|
|
143
137
|
/**
|
|
144
138
|
* A packaged tool: identity, the Zod input contract, the emitted AI SDK input
|
|
145
|
-
* schema,
|
|
139
|
+
* schema, the optional hooks, and the executor.
|
|
146
140
|
*/
|
|
147
|
-
export
|
|
141
|
+
export type Tool<Input = unknown, Output = unknown> = {
|
|
148
142
|
readonly id: string;
|
|
149
143
|
readonly description: string;
|
|
150
|
-
readonly inputSchema: z.ZodType
|
|
144
|
+
readonly inputSchema: z.ZodType<Input>;
|
|
151
145
|
readonly jsonSchema: Record<string, unknown>;
|
|
152
|
-
readonly executionMode: ToolExecutionMode;
|
|
153
146
|
/** See {@link ToolDefinition.describeCall}. Absent when the tool declares none. */
|
|
154
|
-
describeCall?(input: Input): string;
|
|
147
|
+
describeCall?(input: Input): string | undefined;
|
|
155
148
|
/** See {@link ToolDefinition.describeResult}. Absent when the tool declares none. */
|
|
156
|
-
describeResult?(input: Input, result: Output): string;
|
|
149
|
+
describeResult?(input: Input, result: Output): string | undefined;
|
|
157
150
|
/**
|
|
158
151
|
* See {@link ToolDefinition.foldCallRecord}. The record arrives untyped: the
|
|
159
152
|
* loop passes back only what the `execute` of the same tool attached.
|
|
160
153
|
*/
|
|
161
154
|
foldCallRecord?(record: unknown): void;
|
|
155
|
+
/** See {@link ToolDefinition.approval}. Absent when the call of the tool never needs the decision of a user. */
|
|
156
|
+
approval?(input: Input, ctx: ToolApprovalContext): AskRequest | undefined | Promise<AskRequest | undefined>;
|
|
157
|
+
/** See {@link ToolDefinition.startsWorkflow}. */
|
|
158
|
+
readonly startsWorkflow?: boolean;
|
|
162
159
|
execute(input: Input, ctx: ToolContext): Promise<Result<Output, ToolError>>;
|
|
163
|
-
}
|
|
164
|
-
export
|
|
160
|
+
};
|
|
161
|
+
export type ToolDefinition<Schema extends z.ZodType<z.output<Schema>>, Output> = {
|
|
165
162
|
readonly id: string;
|
|
166
163
|
readonly description: string;
|
|
167
164
|
readonly inputSchema: Schema;
|
|
168
|
-
readonly executionMode?: ToolExecutionMode;
|
|
169
165
|
/**
|
|
170
166
|
* One line that names what THIS call does — the call-time counterpart of
|
|
171
167
|
* `description`. `description` self-describes the tool at attach time, so an
|
|
@@ -198,7 +194,7 @@ export interface ToolDefinition<Schema extends z.ZodType, Output> {
|
|
|
198
194
|
*
|
|
199
195
|
* The hook never reaches the model.
|
|
200
196
|
*/
|
|
201
|
-
describeCall: ((input: z.infer<Schema>) => string) | "none";
|
|
197
|
+
describeCall: ((input: z.infer<Schema>) => string | undefined) | "none";
|
|
202
198
|
/**
|
|
203
199
|
* One line that names what THIS call PRODUCED — the outcome-time counterpart
|
|
204
200
|
* of `describeCall`. A page path, a recorded id, and a listed count are facts
|
|
@@ -228,12 +224,12 @@ export interface ToolDefinition<Schema extends z.ZodType, Output> {
|
|
|
228
224
|
*
|
|
229
225
|
* The hook never reaches the model.
|
|
230
226
|
*/
|
|
231
|
-
readonly describeResult?: (input: z.infer<Schema>, result: Output) => string;
|
|
227
|
+
readonly describeResult?: (input: z.infer<Schema>, result: Output) => string | undefined;
|
|
232
228
|
/**
|
|
233
229
|
* Fold the call record of one settled call into process-local state. The
|
|
234
230
|
* record is the one that `execute` attached with `withToolCallRecord`.
|
|
235
231
|
*
|
|
236
|
-
* The loop runs the hook after
|
|
232
|
+
* The loop runs the hook after each round, in the order of the tool
|
|
237
233
|
* calls, on the first run and on each replay alike. Thus state that a
|
|
238
234
|
* replay rebuilds from scratch sees the same records in the same order. A
|
|
239
235
|
* call whose ok value carries no record, and a failed call, never reach it.
|
|
@@ -242,8 +238,21 @@ export interface ToolDefinition<Schema extends z.ZodType, Output> {
|
|
|
242
238
|
* and its result may already be cached. The loop logs a throw and goes on.
|
|
243
239
|
*/
|
|
244
240
|
readonly foldCallRecord?: (record: ToolCallRecordOf<Output>) => void;
|
|
241
|
+
/**
|
|
242
|
+
* The approval that a call needs, decided from its input before `execute` runs. The hook gives the request that
|
|
243
|
+
* a surface shows the user, or nothing when the call runs with no question. It can read the disk and the
|
|
244
|
+
* database, and it changes nothing. `execute` checks its input again, because a file can change while the user
|
|
245
|
+
* decides. A loop where no surface can answer denies each request.
|
|
246
|
+
*/
|
|
247
|
+
readonly approval?: (input: z.infer<Schema>, ctx: ToolApprovalContext) => AskRequest | undefined | Promise<AskRequest | undefined>;
|
|
248
|
+
/**
|
|
249
|
+
* The call starts a child workflow, for example a sub-agent. A step cannot start a workflow, thus such a call
|
|
250
|
+
* runs in the body of the workflow, and its child holds the checkpoints of its work. `execute` must start the
|
|
251
|
+
* child before its first `await`, thus the parallel calls of one reply keep their order on a replay.
|
|
252
|
+
*/
|
|
253
|
+
readonly startsWorkflow?: boolean;
|
|
245
254
|
execute(input: z.infer<Schema>, ctx: ToolContext): Promise<Result<Output, ToolError>>;
|
|
246
|
-
}
|
|
255
|
+
};
|
|
247
256
|
/**
|
|
248
257
|
* Package a `Tool`. The emitted JSON Schema must have a top-level
|
|
249
258
|
* `"type": "object"` — model tool calling rejects anything else. A `z.discriminatedUnion`
|
|
@@ -251,4 +260,4 @@ export interface ToolDefinition<Schema extends z.ZodType, Output> {
|
|
|
251
260
|
* the first LLM call). Union-shaped inputs must be modelled as a flat object
|
|
252
261
|
* with a discriminator field.
|
|
253
262
|
*/
|
|
254
|
-
export declare function defineTool<Schema extends z.ZodType
|
|
263
|
+
export declare function defineTool<Schema extends z.ZodType<z.output<Schema>>, Output>(def: ToolDefinition<Schema, Output>): Tool<z.infer<Schema>, Output>;
|
|
@@ -12,13 +12,22 @@
|
|
|
12
12
|
* logger. The error contract: an expected
|
|
13
13
|
* outcome ("not found", "no results") stays in the ok channel as a data
|
|
14
14
|
* variant (`ok({ found: false })`); an unexpected failure is an `err(ToolError)`
|
|
15
|
-
* or a throw. The
|
|
16
|
-
*
|
|
15
|
+
* or a throw. The tool adapter of the loop (`loop/tool-adapter.ts`) maps both
|
|
16
|
+
* `err` and a thrown error to one error result.
|
|
17
|
+
*
|
|
18
|
+
* Each call runs as one durable step inside a workflow. Thus a tool body must be
|
|
19
|
+
* safe to run again from its start, and its result must carry each fact that a
|
|
20
|
+
* caller reads later.
|
|
17
21
|
*/
|
|
18
22
|
import { z } from "zod";
|
|
19
23
|
/** Runtime guard — does a `Result`'s error value carry the `ToolError` shape? */
|
|
20
24
|
export function isToolError(value) {
|
|
21
|
-
return typeof value === "object" &&
|
|
25
|
+
return (typeof value === "object" &&
|
|
26
|
+
value !== null &&
|
|
27
|
+
"error" in value &&
|
|
28
|
+
typeof value.error === "string" &&
|
|
29
|
+
"retryable" in value &&
|
|
30
|
+
typeof value.retryable === "boolean");
|
|
22
31
|
}
|
|
23
32
|
/**
|
|
24
33
|
* The reserved key that carries the pictures on a tool ok value. It is a symbol,
|
|
@@ -46,8 +55,7 @@ export function withToolResultImages(value, images) {
|
|
|
46
55
|
function isToolResultImage(entry) {
|
|
47
56
|
if (typeof entry !== "object" || entry === null)
|
|
48
57
|
return false;
|
|
49
|
-
|
|
50
|
-
return typeof base64 === "string" && typeof mediaType === "string";
|
|
58
|
+
return "base64" in entry && typeof entry.base64 === "string" && "mediaType" in entry && typeof entry.mediaType === "string";
|
|
51
59
|
}
|
|
52
60
|
/**
|
|
53
61
|
* Read the pictures that a tool ok value carries, in order. A value with none
|
|
@@ -58,7 +66,7 @@ function isToolResultImage(entry) {
|
|
|
58
66
|
export function readToolResultImages(value) {
|
|
59
67
|
if (typeof value !== "object" || value === null)
|
|
60
68
|
return [];
|
|
61
|
-
const carried = value[toolResultImageKey];
|
|
69
|
+
const carried = toolResultImageKey in value ? value[toolResultImageKey] : undefined;
|
|
62
70
|
const entries = Array.isArray(carried) ? carried : [carried];
|
|
63
71
|
return entries.filter(isToolResultImage);
|
|
64
72
|
}
|
|
@@ -67,10 +75,10 @@ export function readToolResultImages(value) {
|
|
|
67
75
|
*
|
|
68
76
|
* A call record is what a call leaves for process-local state, for example the
|
|
69
77
|
* lineage collector of a sandbox step. A replay returns the cached result of a
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
78
|
+
* call and never runs its body, thus a side effect of the body on such state is
|
|
79
|
+
* lost on recovery. The record goes into the output of the step instead, and
|
|
80
|
+
* the loop hands it to `foldCallRecord` after each round, on the first run and
|
|
81
|
+
* on each replay alike.
|
|
74
82
|
*
|
|
75
83
|
* It is a symbol, thus `JSON.stringify` omits it and the model never reads it.
|
|
76
84
|
* The record itself must be plain JSON, because the step cache serializes it.
|
|
@@ -84,7 +92,7 @@ export function withToolCallRecord(value, record) {
|
|
|
84
92
|
export function readToolCallRecord(value) {
|
|
85
93
|
if (typeof value !== "object" || value === null)
|
|
86
94
|
return undefined;
|
|
87
|
-
return value[toolCallRecordKey];
|
|
95
|
+
return toolCallRecordKey in value ? value[toolCallRecordKey] : undefined;
|
|
88
96
|
}
|
|
89
97
|
/**
|
|
90
98
|
* Package a `Tool`. The emitted JSON Schema must have a top-level
|
|
@@ -103,25 +111,29 @@ export function defineTool(def) {
|
|
|
103
111
|
`top-level "type" — model the input as a flat object with a ` +
|
|
104
112
|
`discriminator field instead.`);
|
|
105
113
|
}
|
|
106
|
-
const
|
|
107
|
-
return {
|
|
114
|
+
const packaged = {
|
|
108
115
|
id: def.id,
|
|
109
116
|
description: def.description,
|
|
110
117
|
inputSchema: def.inputSchema,
|
|
111
118
|
jsonSchema,
|
|
112
|
-
|
|
113
|
-
// Spread rather than assigned: a tool that declines carries no
|
|
114
|
-
// `describeCall` key at all, so "has a hook" is one property check.
|
|
115
|
-
// `typeof` is the discriminator, not equality with the sentinel, so a
|
|
116
|
-
// hook that returns the string `"none"` still packages as a hook.
|
|
117
|
-
...(typeof def.describeCall === "function" ? { describeCall: def.describeCall } : {}),
|
|
118
|
-
// The same property-presence pattern as `describeCall`: a tool that
|
|
119
|
-
// declares no result hook carries no key, thus "has a hook" is one
|
|
120
|
-
// property check on either side.
|
|
121
|
-
...(typeof def.describeResult === "function" ? { describeResult: def.describeResult } : {}),
|
|
122
|
-
// The loop passes back only a record that this tool's `execute`
|
|
123
|
-
// attached, thus the record has the declared type.
|
|
124
|
-
...(typeof def.foldCallRecord === "function" ? { foldCallRecord: def.foldCallRecord } : {}),
|
|
125
|
-
execute: def.execute,
|
|
119
|
+
execute: def.execute.bind(def),
|
|
126
120
|
};
|
|
121
|
+
if (typeof def.foldCallRecord === "function")
|
|
122
|
+
packaged.foldCallRecord = def.foldCallRecord.bind(def);
|
|
123
|
+
if (typeof def.approval === "function")
|
|
124
|
+
packaged.approval = def.approval.bind(def);
|
|
125
|
+
// A tool that declines carries no `describeCall` key at all, so "has a
|
|
126
|
+
// hook" is one property check. The test is equality with the `"none"`
|
|
127
|
+
// sentinel: a function never equals it, so a hook that returns the string
|
|
128
|
+
// `"none"` still packages as a hook.
|
|
129
|
+
if (def.describeCall !== "none")
|
|
130
|
+
packaged.describeCall = def.describeCall;
|
|
131
|
+
// The same property-presence pattern as `describeCall`: a tool that
|
|
132
|
+
// declares no result hook carries no key, thus "has a hook" is one
|
|
133
|
+
// property check on either side.
|
|
134
|
+
if (def.describeResult !== undefined)
|
|
135
|
+
packaged.describeResult = def.describeResult;
|
|
136
|
+
if (def.startsWorkflow === true)
|
|
137
|
+
return { ...packaged, startsWorkflow: true };
|
|
138
|
+
return packaged;
|
|
127
139
|
}
|
|
@@ -20,13 +20,13 @@
|
|
|
20
20
|
* Pure: the input spec is never mutated. Modified branches are copy-on-write; untouched branches are
|
|
21
21
|
* shared by reference. `normalize(normalize(x))` deep-equals `normalize(x)`.
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export type NormalizeEchartSpecOptions = {
|
|
24
24
|
/**
|
|
25
25
|
* The `show_user` `title` param — the card heading rendered above the chart canvas. Seeds the
|
|
26
26
|
* `saveAsImage` download filename when the author supplied none.
|
|
27
27
|
*/
|
|
28
28
|
title?: string;
|
|
29
|
-
}
|
|
29
|
+
};
|
|
30
30
|
/**
|
|
31
31
|
* Kebab-case download filename: `"HMGCR — VST Expression"` → `"hmgcr-vst-expression"`.
|
|
32
32
|
* Diacritics are folded, every other non-alphanumeric run collapses to a single dash.
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* Pure: the input spec is never mutated. Modified branches are copy-on-write; untouched branches are
|
|
21
21
|
* shared by reference. `normalize(normalize(x))` deep-equals `normalize(x)`.
|
|
22
22
|
*/
|
|
23
|
+
import { isUnknownArray } from "../../lib/unknown-array.js";
|
|
23
24
|
/** Max length of a derived `saveAsImage` filename. */
|
|
24
25
|
const MAX_FILENAME_LEN = 64;
|
|
25
26
|
/** Fallback download filename when no heading is available to derive one from. */
|
|
@@ -38,14 +39,29 @@ function axisEntries(axis) {
|
|
|
38
39
|
* Diacritics are folded, every other non-alphanumeric run collapses to a single dash.
|
|
39
40
|
*/
|
|
40
41
|
export function kebabFilename(source) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
let out = "";
|
|
43
|
+
let inRun = false;
|
|
44
|
+
for (const char of (source ?? "").normalize("NFKD").toLowerCase()) {
|
|
45
|
+
if (char >= "\u0300" && char <= "\u036f")
|
|
46
|
+
continue;
|
|
47
|
+
const isSlugChar = (char >= "a" && char <= "z") || (char >= "0" && char <= "9");
|
|
48
|
+
if (!isSlugChar) {
|
|
49
|
+
inRun = true;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (inRun && out.length > 0)
|
|
53
|
+
out += "-";
|
|
54
|
+
inRun = false;
|
|
55
|
+
out += char;
|
|
56
|
+
if (out.length >= MAX_FILENAME_LEN)
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
// One append can add two characters, so the cap can land between a dash and the letter it introduces.
|
|
60
|
+
if (out.length > MAX_FILENAME_LEN)
|
|
61
|
+
out = out.slice(0, MAX_FILENAME_LEN);
|
|
62
|
+
if (out.endsWith("-"))
|
|
63
|
+
out = out.slice(0, -1);
|
|
64
|
+
return out.length > 0 ? out : DEFAULT_FILENAME;
|
|
49
65
|
}
|
|
50
66
|
/** Declared series count. `0` = none declared, which is also "nothing a legend could label". */
|
|
51
67
|
function seriesCount(spec) {
|
|
@@ -164,7 +180,7 @@ export function normalizeEchartSpec(spec, opts = {}) {
|
|
|
164
180
|
const axis = out[key];
|
|
165
181
|
// A malformed entry is passed through rather than dropped — normalization rewrites layout,
|
|
166
182
|
// never the shape of the spec it was handed.
|
|
167
|
-
if (
|
|
183
|
+
if (isUnknownArray(axis))
|
|
168
184
|
out[key] = axis.map((entry) => (isRecord(entry) ? normalizeAxis(entry, key === "xAxis") : entry));
|
|
169
185
|
else if (isRecord(axis))
|
|
170
186
|
out[key] = normalizeAxis(axis, key === "xAxis");
|
|
@@ -178,13 +194,18 @@ export function normalizeEchartSpec(spec, opts = {}) {
|
|
|
178
194
|
const gridNormalizable = cartesian && !Array.isArray(grid) && (grid === undefined || (isRecord(grid) && grid.width === undefined && grid.height === undefined));
|
|
179
195
|
if (gridNormalizable) {
|
|
180
196
|
const authored = isRecord(grid) ? grid : {};
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
197
|
+
const filled = { ...authored };
|
|
198
|
+
const annotated = out.graphic !== undefined && !(isUnknownArray(out.graphic) && out.graphic.length === 0);
|
|
199
|
+
if (authored.top === undefined)
|
|
200
|
+
filled.top = annotated ? "12%" : "8%";
|
|
201
|
+
// oxlint-disable-next-line no-unnecessary-condition -- tsgolint cannot see the normalizeAxis closure that sets rotated; the check is live (rotated labels get the larger bottom margin).
|
|
202
|
+
if (authored.bottom === undefined)
|
|
203
|
+
filled.bottom = rotated ? (bottomLegend ? "30%" : "25%") : "20%";
|
|
204
|
+
if (authored.left === undefined)
|
|
205
|
+
filled.left = "10%";
|
|
206
|
+
if (authored.right === undefined)
|
|
207
|
+
filled.right = "5%";
|
|
208
|
+
out.grid = filled;
|
|
188
209
|
}
|
|
189
210
|
// ── Toolbox ─────────────────────────────────────────────────────────
|
|
190
211
|
if (!Array.isArray(out.toolbox)) {
|
|
@@ -194,18 +215,21 @@ export function normalizeEchartSpec(spec, opts = {}) {
|
|
|
194
215
|
// The in-spec title is stripped, but it is still the author's own description of the chart —
|
|
195
216
|
// a better filename seed than the generic fallback when no card title was given.
|
|
196
217
|
const specTitleText = isRecord(specTitle) && typeof specTitle.text === "string" ? specTitle.text : undefined;
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
218
|
+
const placed = { ...authored };
|
|
219
|
+
if (!hasPlacement(authored)) {
|
|
220
|
+
placed.right = 0;
|
|
221
|
+
placed.top = 0;
|
|
222
|
+
}
|
|
223
|
+
const saved = { ...saveAsImage };
|
|
224
|
+
if (saveAsImage.type === undefined)
|
|
225
|
+
saved.type = "png";
|
|
226
|
+
if (saveAsImage.name === undefined)
|
|
227
|
+
saved.name = kebabFilename(opts.title ?? specTitleText);
|
|
228
|
+
placed.feature = {
|
|
229
|
+
...feature,
|
|
230
|
+
saveAsImage: saved,
|
|
208
231
|
};
|
|
232
|
+
out.toolbox = placed;
|
|
209
233
|
}
|
|
210
234
|
return out;
|
|
211
235
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* The presentation `id` is derived deterministically from the content, so
|
|
11
11
|
* an identical re-emission carries the same id — duplicate suppression is a
|
|
12
|
-
* downstream reconciliation concern of the emit pipeline
|
|
12
|
+
* downstream reconciliation concern of the emit pipeline, not a
|
|
13
13
|
* per-request `Set` smuggled through an ambient context bag.
|
|
14
14
|
*
|
|
15
15
|
* An `echart` spec's layout is normalized (`normalize-echart-spec.ts`) inside
|
|
@@ -26,7 +26,7 @@ type ShowUserOutput = {
|
|
|
26
26
|
id: string;
|
|
27
27
|
};
|
|
28
28
|
export declare const showUserTool: import("../define-tool.js").Tool<{
|
|
29
|
-
kind: "code" | "echart" | "markdown" | "
|
|
29
|
+
kind: "code" | "echart" | "markdown" | "structure" | "svg" | "table";
|
|
30
30
|
title?: string | undefined;
|
|
31
31
|
spec?: Record<string, unknown> | undefined;
|
|
32
32
|
dataPath?: string | undefined;
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* The presentation `id` is derived deterministically from the content, so
|
|
11
11
|
* an identical re-emission carries the same id — duplicate suppression is a
|
|
12
|
-
* downstream reconciliation concern of the emit pipeline
|
|
12
|
+
* downstream reconciliation concern of the emit pipeline, not a
|
|
13
13
|
* per-request `Set` smuggled through an ambient context bag.
|
|
14
14
|
*
|
|
15
15
|
* An `echart` spec's layout is normalized (`normalize-echart-spec.ts`) inside
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* hoc analyses. Both modes launch the ordinary executeAnalysis workflow.
|
|
4
4
|
*/
|
|
5
5
|
import { ResultAsync } from "neverthrow";
|
|
6
|
-
import type
|
|
6
|
+
import { type Connectable } from "../lib/db-result.js";
|
|
7
|
+
import type { Querier } from "../state/db.js";
|
|
8
|
+
import { z } from "zod";
|
|
7
9
|
import type { AgentSession } from "../auth/types.js";
|
|
8
10
|
import type { UsageRecorder } from "../billing/usage-recorder.js";
|
|
9
11
|
import type { EnvironmentStorePaths } from "../config/environment-stores.js";
|
|
@@ -16,9 +18,18 @@ import type { ExtendAnalysisFarm } from "../sandbox/types.js";
|
|
|
16
18
|
import { type AnalysisPlan } from "../schemas/workflow-state.js";
|
|
17
19
|
import type { ExecuteAnalysisInput, ExecuteAnalysisResult } from "../workflows/execute-analysis.js";
|
|
18
20
|
import { type AdHocRoute } from "./ad-hoc-router.js";
|
|
21
|
+
import { type Tool } from "./define-tool.js";
|
|
22
|
+
declare const inputSchema: z.ZodObject<{
|
|
23
|
+
mode: z.ZodEnum<{
|
|
24
|
+
adhoc: "adhoc";
|
|
25
|
+
plan: "plan";
|
|
26
|
+
}>;
|
|
27
|
+
planId: z.ZodOptional<z.ZodString>;
|
|
28
|
+
request: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, z.core.$strip>;
|
|
19
30
|
type ExecuteAnalysisWorkflow = (input: ExecuteAnalysisInput) => Promise<ExecuteAnalysisResult>;
|
|
20
|
-
export
|
|
21
|
-
readonly pool:
|
|
31
|
+
export type ExecuteAnalysisToolDeps = Pick<EnvironmentStorePaths, "farmLockFile" | "imagePackagesFile" | "readPoolInventory" | "refStorePath"> & {
|
|
32
|
+
readonly pool: Querier & Connectable;
|
|
22
33
|
readonly executeAnalysisWorkflow: ExecuteAnalysisWorkflow;
|
|
23
34
|
readonly runAuthorizer: RunAuthorizer;
|
|
24
35
|
readonly runLauncher: RunLauncher;
|
|
@@ -34,7 +45,7 @@ export interface ExecuteAnalysisToolDeps extends Pick<EnvironmentStorePaths, "fa
|
|
|
34
45
|
readonly extendAnalysisFarm?: ExtendAnalysisFarm;
|
|
35
46
|
/** Falls back to the no-op recorder when omitted. */
|
|
36
47
|
readonly usageRecorder?: UsageRecorder;
|
|
37
|
-
}
|
|
48
|
+
};
|
|
38
49
|
export declare class PlanNotFoundError extends Error {
|
|
39
50
|
constructor(planId: string);
|
|
40
51
|
}
|
|
@@ -116,12 +127,14 @@ export type LaunchPlanRunRefusal = {
|
|
|
116
127
|
export declare function buildAdHocPlan(request: string, route: AdHocRoute, createdAt?: string): AnalysisPlan;
|
|
117
128
|
/**
|
|
118
129
|
* `newestRunId` is the newest run of the plan that the caller saw, or `null` when the caller saw no run.
|
|
119
|
-
* Without it, the launch compares no run.
|
|
130
|
+
* Without it, the launch compares no run. `runId` is the id of the run that this launch starts, and a
|
|
131
|
+
* second launch with the same id starts nothing new. Without it, the launch takes a random id.
|
|
120
132
|
*/
|
|
121
133
|
export type LaunchPlanRunInput = {
|
|
122
134
|
session: AgentSession;
|
|
123
135
|
planId: string;
|
|
124
136
|
newestRunId?: string | null;
|
|
137
|
+
runId?: string;
|
|
125
138
|
};
|
|
126
139
|
/**
|
|
127
140
|
* Start the run of a stored plan. It reads the plan under the analysis of the session, validates it,
|
|
@@ -134,11 +147,7 @@ export type LaunchPlanRunInput = {
|
|
|
134
147
|
* promise.
|
|
135
148
|
*/
|
|
136
149
|
export declare function launchPlanRun(deps: LaunchPlanRunDeps, input: LaunchPlanRunInput): ResultAsync<PlanLaunch, LaunchPlanRunRefusal>;
|
|
137
|
-
export declare function createExecuteAnalysisTool(deps: ExecuteAnalysisToolDeps):
|
|
138
|
-
mode: "plan" | "adhoc";
|
|
139
|
-
planId?: string | undefined;
|
|
140
|
-
request?: string | undefined;
|
|
141
|
-
}, {
|
|
150
|
+
export declare function createExecuteAnalysisTool(deps: ExecuteAnalysisToolDeps): Tool<z.infer<typeof inputSchema>, {
|
|
142
151
|
runId: string;
|
|
143
152
|
status: "in_progress";
|
|
144
153
|
}>;
|