@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
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* the profile cover" stops being a question and becomes a census.
|
|
18
18
|
*/
|
|
19
19
|
import { assessCompleteness } from "../input-scan/companions.js";
|
|
20
|
+
import { presentAt, presentFirst, presentGet } from "../lib/present.js";
|
|
20
21
|
import { buildSetMenu } from "../input-scan/menu.js";
|
|
21
22
|
import { MAX_SLOT_SAMPLE_VALUES } from "../input-scan/tuning.js";
|
|
22
23
|
import { dimensionScope } from "../contracts/profile-vocabulary.js";
|
|
@@ -35,12 +36,24 @@ export const MAX_UNCLASSIFIED_RECIPE_PATHS = 1000;
|
|
|
35
36
|
/** Contested paths named in the accounting before the count stands alone. */
|
|
36
37
|
export const MAX_CONTESTED_SAMPLE = 10;
|
|
37
38
|
function slug(value) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
.
|
|
42
|
-
|
|
39
|
+
let out = "";
|
|
40
|
+
let inRun = false;
|
|
41
|
+
for (const char of value.toLowerCase()) {
|
|
42
|
+
if (out.length >= SLUG_MAX_LENGTH)
|
|
43
|
+
break;
|
|
44
|
+
const isSlugChar = (char >= "a" && char <= "z") || (char >= "0" && char <= "9");
|
|
45
|
+
if (!isSlugChar) {
|
|
46
|
+
inRun = true;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (inRun && out.length > 0)
|
|
50
|
+
out += "-";
|
|
51
|
+
inRun = false;
|
|
52
|
+
out += char;
|
|
53
|
+
}
|
|
54
|
+
return out.slice(0, SLUG_MAX_LENGTH) || "group";
|
|
43
55
|
}
|
|
56
|
+
const SLUG_MAX_LENGTH = 60;
|
|
44
57
|
function fileCountOf(members) {
|
|
45
58
|
return members.reduce((total, member) => total + 1 + member.companions.length, 0);
|
|
46
59
|
}
|
|
@@ -82,13 +95,13 @@ function narrowSlot(slot, values) {
|
|
|
82
95
|
tokenClass: slot.tokenClass,
|
|
83
96
|
distinctValues: distinct.length,
|
|
84
97
|
sampleValues: distinct.slice(0, MAX_SLOT_SAMPLE_VALUES),
|
|
85
|
-
|
|
98
|
+
sameAsSlot: slot.sameAsSlot,
|
|
86
99
|
};
|
|
87
100
|
}
|
|
88
101
|
function groupSlots(detected, draft, claims) {
|
|
89
102
|
const slots = [];
|
|
90
103
|
for (const set of draft.sets) {
|
|
91
|
-
const indices = claims.
|
|
104
|
+
const indices = claims.flatMap((claim) => (claim.set?.id === set.id && claim.memberIndex !== undefined ? [claim.memberIndex] : []));
|
|
92
105
|
for (const slot of set.slots) {
|
|
93
106
|
const values = detected.memberSlotValues.get(slot.id);
|
|
94
107
|
if (!values)
|
|
@@ -103,39 +116,40 @@ function finalizeGroup(detected, draft, id, claims) {
|
|
|
103
116
|
const { annotation } = draft;
|
|
104
117
|
const { completeness } = assessCompleteness(members);
|
|
105
118
|
const slots = groupSlots(detected, draft, claims);
|
|
106
|
-
|
|
119
|
+
const group = {
|
|
107
120
|
id,
|
|
108
121
|
name: draft.nameOverride ?? annotation.name,
|
|
109
122
|
memberRepresents: annotation.memberRepresents,
|
|
110
123
|
description: annotation.description,
|
|
111
124
|
role: annotation.role,
|
|
112
125
|
category: annotation.category,
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
126
|
+
categoryLabel: annotation.categoryLabel ? annotation.categoryLabel : undefined,
|
|
127
|
+
subtype: annotation.subtype ? annotation.subtype : undefined,
|
|
128
|
+
categoryReason: annotation.categoryReason ? annotation.categoryReason : undefined,
|
|
129
|
+
reason: draft.reason ? draft.reason : undefined,
|
|
117
130
|
count: members.length,
|
|
118
131
|
fileCount: fileCountOf(members),
|
|
119
132
|
totalBytes: bytesOf(members),
|
|
120
133
|
displayPattern: draft.displayPattern,
|
|
121
134
|
formats: formatCensus(members),
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
...(completeness.expectedCompanions.length > 0
|
|
135
|
+
memberAnnotations: annotation.memberAnnotations !== undefined && annotation.memberAnnotations.length > 0
|
|
136
|
+
? annotation.memberAnnotations.map((entry) => ({ path: entry.path, note: entry.note }))
|
|
137
|
+
: undefined,
|
|
138
|
+
completeness: completeness.expectedCompanions.length > 0
|
|
127
139
|
? {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
incompleteSample: completeness.incompleteSample.map((entry) => ({ path: entry.path, missingCompanions: [...entry.missingCompanions] })),
|
|
133
|
-
},
|
|
140
|
+
expectedCompanions: [...completeness.expectedCompanions],
|
|
141
|
+
completeMembers: completeness.completeMembers,
|
|
142
|
+
incompleteMembers: completeness.incompleteMembers,
|
|
143
|
+
incompleteSample: completeness.incompleteSample.map((entry) => ({ path: entry.path, missingCompanions: [...entry.missingCompanions] })),
|
|
134
144
|
}
|
|
135
|
-
:
|
|
136
|
-
...(draft.unclassified ? { unclassified: true } : {}),
|
|
145
|
+
: undefined,
|
|
137
146
|
memberPaths: members.map((member) => member.path),
|
|
138
147
|
};
|
|
148
|
+
if (slots.length > 0)
|
|
149
|
+
group.slots = slots;
|
|
150
|
+
if (draft.unclassified)
|
|
151
|
+
group.unclassified = true;
|
|
152
|
+
return group;
|
|
139
153
|
}
|
|
140
154
|
/** The residue group. Authored by nobody, which is exactly why it says so. */
|
|
141
155
|
function unclassifiedDraft(claims) {
|
|
@@ -177,7 +191,7 @@ function allClaims(set) {
|
|
|
177
191
|
return set.members.map((member, index) => ({ member, set, memberIndex: index }));
|
|
178
192
|
}
|
|
179
193
|
function claimsAt(set, indices) {
|
|
180
|
-
return indices.map((index) => ({ member: set.members
|
|
194
|
+
return indices.map((index) => ({ member: presentAt(set.members, index, "the claimed member"), set, memberIndex: index }));
|
|
181
195
|
}
|
|
182
196
|
function applyUse(ctx, op) {
|
|
183
197
|
const set = resolveSet(ctx, op.setId, "use");
|
|
@@ -220,7 +234,7 @@ function applySplit(ctx, op) {
|
|
|
220
234
|
reason: op.reason,
|
|
221
235
|
displayPattern: set.pathTemplate,
|
|
222
236
|
sets: [set],
|
|
223
|
-
claims: claimsAt(set, byValue
|
|
237
|
+
claims: claimsAt(set, presentGet(byValue, value, `the members with value "${value}"`)),
|
|
224
238
|
splitValues: [value],
|
|
225
239
|
});
|
|
226
240
|
}
|
|
@@ -263,7 +277,7 @@ function applySplit(ctx, op) {
|
|
|
263
277
|
if (restValues.length === 0)
|
|
264
278
|
return;
|
|
265
279
|
if (!op.by.rest) {
|
|
266
|
-
const restMembers = restValues.reduce((total, value) => total + byValue
|
|
280
|
+
const restMembers = restValues.reduce((total, value) => total + presentGet(byValue, value, `the members with value "${value}"`).length, 0);
|
|
267
281
|
ctx.errors.push(`split ${op.setId} by ${slot.id}: ${restMembers} members take a value the mapping did not name. ` +
|
|
268
282
|
'Name the remaining values, or add a "rest" group for them.');
|
|
269
283
|
return;
|
|
@@ -273,7 +287,7 @@ function applySplit(ctx, op) {
|
|
|
273
287
|
reason: op.reason,
|
|
274
288
|
displayPattern: set.pathTemplate,
|
|
275
289
|
sets: [set],
|
|
276
|
-
claims: claimsAt(set, restValues.flatMap((value) => byValue
|
|
290
|
+
claims: claimsAt(set, restValues.flatMap((value) => presentGet(byValue, value, `the members with value "${value}"`))),
|
|
277
291
|
splitValues: restValues,
|
|
278
292
|
});
|
|
279
293
|
}
|
|
@@ -320,7 +334,7 @@ function applyGroup(ctx, op) {
|
|
|
320
334
|
const entry = openStep(ctx, { op: "group", templates: [], paths: [...op.paths], groupIds: [] });
|
|
321
335
|
emit(ctx, entry, {
|
|
322
336
|
annotation: op.group,
|
|
323
|
-
displayPattern: paths.length === 1 ? paths
|
|
337
|
+
displayPattern: paths.length === 1 ? presentFirst(paths, "the single path") : `${commonDirectory(paths) || "."}/… (${paths.length} paths)`,
|
|
324
338
|
sets: [],
|
|
325
339
|
claims,
|
|
326
340
|
});
|
|
@@ -351,7 +365,7 @@ function resolveObservation(observation, ctx) {
|
|
|
351
365
|
return undefined;
|
|
352
366
|
}
|
|
353
367
|
const values = ctx.detected.slotValues.get(slot.id) ?? [];
|
|
354
|
-
|
|
368
|
+
const resolvedObservation = {
|
|
355
369
|
kind: "slot",
|
|
356
370
|
groupIds: [...(ctx.groupsBySet.get(set.id) ?? [])],
|
|
357
371
|
slotId: slot.id,
|
|
@@ -362,8 +376,10 @@ function resolveObservation(observation, ctx) {
|
|
|
362
376
|
tokenClass: slot.tokenClass,
|
|
363
377
|
cardinality: slot.distinctValues,
|
|
364
378
|
sampleValues: [...values].sort((a, b) => a.localeCompare(b, "en")).slice(0, MAX_SLOT_SAMPLE_VALUES),
|
|
365
|
-
...(observation.note ? { note: observation.note } : {}),
|
|
366
379
|
};
|
|
380
|
+
if (observation.note)
|
|
381
|
+
resolvedObservation.note = observation.note;
|
|
382
|
+
return resolvedObservation;
|
|
367
383
|
}
|
|
368
384
|
/** Every slot of the scan, keyed by id — the scanner's own view of what a slot observation points at. */
|
|
369
385
|
function slotsById(detected) {
|
|
@@ -388,7 +404,7 @@ function slotsById(detected) {
|
|
|
388
404
|
*/
|
|
389
405
|
function crossCheckSlots(detected, observations) {
|
|
390
406
|
const reference = observations.find((observation) => observation.kind === "slot");
|
|
391
|
-
if (!reference
|
|
407
|
+
if (!reference)
|
|
392
408
|
return [...observations];
|
|
393
409
|
const byId = slotsById(detected);
|
|
394
410
|
const referenceSlot = byId.get(reference.slotId);
|
|
@@ -402,7 +418,7 @@ function crossCheckSlots(detected, observations) {
|
|
|
402
418
|
return {
|
|
403
419
|
...observation,
|
|
404
420
|
sameAsSlot: reference.slotId,
|
|
405
|
-
|
|
421
|
+
sameAsSlotMismatches: linked?.crossCheckMismatches,
|
|
406
422
|
};
|
|
407
423
|
}
|
|
408
424
|
if (referenceValues.size === 0)
|
|
@@ -432,24 +448,28 @@ function resolveDimensions(submission, detected, menuSets, groupsBySet, errors)
|
|
|
432
448
|
errors.push(`dimension "${dimension.label}": every observation failed to resolve, so nothing evidences it.`);
|
|
433
449
|
continue;
|
|
434
450
|
}
|
|
435
|
-
|
|
451
|
+
const reconciliations = dimension.reconciliations !== undefined && dimension.reconciliations.length > 0
|
|
452
|
+
? dimension.reconciliations.map((entry) => ({
|
|
453
|
+
note: entry.note,
|
|
454
|
+
delta: entry.delta,
|
|
455
|
+
}))
|
|
456
|
+
: undefined;
|
|
457
|
+
const resolvedDimension = {
|
|
436
458
|
label: dimension.label,
|
|
437
459
|
category: dimension.category,
|
|
438
|
-
...(dimension.categoryLabel ? { categoryLabel: dimension.categoryLabel } : {}),
|
|
439
460
|
scope: dimensionScope(dimension.category, dimension.scope),
|
|
440
|
-
...(dimension.description ? { description: dimension.description } : {}),
|
|
441
461
|
observations: crossCheckSlots(detected, observations),
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
462
|
+
nestsUnder: dimension.nestsUnder === undefined ? undefined : { ...dimension.nestsUnder },
|
|
463
|
+
};
|
|
464
|
+
if (dimension.categoryLabel)
|
|
465
|
+
resolvedDimension.categoryLabel = dimension.categoryLabel;
|
|
466
|
+
if (dimension.description)
|
|
467
|
+
resolvedDimension.description = dimension.description;
|
|
468
|
+
if (dimension.treatmentReason)
|
|
469
|
+
resolvedDimension.treatmentReason = dimension.treatmentReason;
|
|
470
|
+
if (reconciliations)
|
|
471
|
+
resolvedDimension.reconciliations = reconciliations;
|
|
472
|
+
resolved.push(resolvedDimension);
|
|
453
473
|
}
|
|
454
474
|
return resolved;
|
|
455
475
|
}
|
|
@@ -509,7 +529,7 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
|
|
|
509
529
|
const claimsByDraft = new Map();
|
|
510
530
|
const claimants = new Map();
|
|
511
531
|
for (const draft of ctx.drafts) {
|
|
512
|
-
const id = ids
|
|
532
|
+
const id = presentGet(ids, draft, "the group id of the draft");
|
|
513
533
|
const seen = new Set();
|
|
514
534
|
const kept = [];
|
|
515
535
|
for (const claim of draft.claims) {
|
|
@@ -546,14 +566,14 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
|
|
|
546
566
|
}
|
|
547
567
|
else {
|
|
548
568
|
for (const path of contested) {
|
|
549
|
-
const owners = claimants
|
|
550
|
-
errors.push(`"${path}" is claimed by both "${owners[0]}" and "${owners[1]}". A kept file belongs to exactly one group.`);
|
|
569
|
+
const owners = presentGet(claimants, path, `the claimants of "${path}"`);
|
|
570
|
+
errors.push(`"${path}" is claimed by both "${String(owners[0])}" and "${String(owners[1])}". A kept file belongs to exactly one group.`);
|
|
551
571
|
}
|
|
552
572
|
// The repair round decides who keeps it. Until then the first claimant holds it,
|
|
553
573
|
// so the accounting handed back to the agent still sums.
|
|
554
574
|
for (const [draft, kept] of claimsByDraft) {
|
|
555
|
-
const id = ids
|
|
556
|
-
claimsByDraft.set(draft, kept.filter((claim) => !disputed.has(claim.member.path) || claimants.
|
|
575
|
+
const id = presentGet(ids, draft, "the group id of the draft");
|
|
576
|
+
claimsByDraft.set(draft, kept.filter((claim) => !disputed.has(claim.member.path) || presentGet(claimants, claim.member.path, `the claimants of "${claim.member.path}"`)[0] === id));
|
|
557
577
|
}
|
|
558
578
|
}
|
|
559
579
|
}
|
|
@@ -564,29 +584,34 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
|
|
|
564
584
|
const unclaimed = [...byPath.keys()].filter((path) => !claimed.has(path)).sort((a, b) => a.localeCompare(b, "en"));
|
|
565
585
|
const drafts = [...ctx.drafts];
|
|
566
586
|
if (unclaimed.length > 0) {
|
|
567
|
-
const residue = unclassifiedDraft(unclaimed.map((path) => byPath
|
|
587
|
+
const residue = unclassifiedDraft(unclaimed.map((path) => presentGet(byPath, path, `the entry for "${path}"`)));
|
|
568
588
|
drafts.push(residue);
|
|
569
589
|
ids.set(residue, UNCLASSIFIED_GROUP_ID);
|
|
570
590
|
claimsByDraft.set(residue, [...residue.claims]);
|
|
571
591
|
}
|
|
572
592
|
for (const entry of ctx.recipe) {
|
|
573
|
-
entry.step.groupIds = entry.drafts.map((draft) => ids
|
|
593
|
+
entry.step.groupIds = entry.drafts.map((draft) => presentGet(ids, draft, "the group id of the draft"));
|
|
574
594
|
if (entry.step.op === "split") {
|
|
575
|
-
entry.step.valueMapping = entry.drafts.map((draft) => ({
|
|
595
|
+
entry.step.valueMapping = entry.drafts.map((draft) => ({
|
|
596
|
+
groupId: presentGet(ids, draft, "the group id of the draft"),
|
|
597
|
+
values: [...(draft.splitValues ?? [])],
|
|
598
|
+
}));
|
|
576
599
|
}
|
|
577
600
|
}
|
|
578
601
|
const recipe = ctx.recipe.map((entry) => entry.step);
|
|
579
602
|
if (unclaimed.length > 0) {
|
|
580
603
|
const paths = unclaimed.slice(0, MAX_UNCLASSIFIED_RECIPE_PATHS);
|
|
581
|
-
|
|
604
|
+
const sweep = {
|
|
582
605
|
op: "unclassified",
|
|
583
606
|
templates: [],
|
|
584
607
|
paths,
|
|
585
|
-
...(unclaimed.length > paths.length ? { pathsTruncated: true } : {}),
|
|
586
608
|
groupIds: [UNCLASSIFIED_GROUP_ID],
|
|
587
|
-
}
|
|
609
|
+
};
|
|
610
|
+
if (unclaimed.length > paths.length)
|
|
611
|
+
sweep.pathsTruncated = true;
|
|
612
|
+
recipe.push(sweep);
|
|
588
613
|
}
|
|
589
|
-
const groups = drafts.map((draft) => finalizeGroup(detected, draft, ids
|
|
614
|
+
const groups = drafts.map((draft) => finalizeGroup(detected, draft, presentGet(ids, draft, "the group id of the draft"), claimsByDraft.get(draft) ?? []));
|
|
590
615
|
const unclassifiedGroup = groups.find((group) => group.unclassified);
|
|
591
616
|
const partition = {
|
|
592
617
|
scannedFiles: detected.fileCount,
|
|
@@ -601,9 +626,10 @@ export function resolveProfileSubmission(submission, detected, menu = buildSetMe
|
|
|
601
626
|
reasons: detected.quarantine.reasons.map((entry) => ({ reason: entry.reason, count: entry.count })),
|
|
602
627
|
sample: [...detected.quarantine.sample],
|
|
603
628
|
},
|
|
604
|
-
|
|
605
|
-
...(menu.truncated ? { scanTruncated: true } : {}),
|
|
629
|
+
contested: contested.length > 0 ? { members: contested.length, sample: contested.slice(0, MAX_CONTESTED_SAMPLE) } : undefined,
|
|
606
630
|
};
|
|
631
|
+
if (menu.truncated)
|
|
632
|
+
partition.scanTruncated = true;
|
|
607
633
|
return {
|
|
608
634
|
errors,
|
|
609
635
|
unclaimed,
|
|
@@ -18,16 +18,17 @@
|
|
|
18
18
|
* UPDATE wins); each winning attempt starts a workflow under a per-attempt id.
|
|
19
19
|
*/
|
|
20
20
|
import { ResultAsync } from "neverthrow";
|
|
21
|
-
import type { Pool } from "pg";
|
|
22
21
|
import { type AuthContext, type RunSession } from "../auth/types.js";
|
|
23
22
|
import type { EnvironmentStorePaths } from "../config/environment-stores.js";
|
|
24
23
|
import type { ExtendAnalysisFarm } from "../sandbox/types.js";
|
|
25
|
-
import type {
|
|
24
|
+
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
25
|
+
import type { RunLauncher } from "../execution/run-launcher.js";
|
|
26
26
|
import type { StagedInput } from "../execution/staged-input.js";
|
|
27
27
|
import type { SandboxAgentDeps } from "../agents/sandbox/shared.js";
|
|
28
28
|
import type { BioToolKeys } from "../tools/bio/keys.js";
|
|
29
29
|
import type { ToolOutputStore } from "../loop/tool-output.js";
|
|
30
30
|
import type { DbError } from "../lib/db-result.js";
|
|
31
|
+
import type { Querier } from "../state/db.js";
|
|
31
32
|
import { type GateRefusal, type NoticeFailure } from "../lib/hooks.js";
|
|
32
33
|
import type { Logger } from "../lib/logger.js";
|
|
33
34
|
import type { UsageRecorder } from "../billing/usage-recorder.js";
|
|
@@ -39,20 +40,20 @@ import { type ProfileSubmission } from "../schemas/data-profile-schemas.js";
|
|
|
39
40
|
import { type ProfileResolution } from "./data-profile-resolve.js";
|
|
40
41
|
import { type DataProfileResult } from "../state/index.js";
|
|
41
42
|
/** The settle of one profile claim: the ledger row left `running`, and the terminal write stamped it. */
|
|
42
|
-
export
|
|
43
|
+
export type DataProfileSettlement = {
|
|
43
44
|
readonly analysisId: string;
|
|
44
45
|
readonly status: "completed" | "failed";
|
|
45
46
|
/** The `data_profile_completed_at` that the terminal write stamped, as an ISO 8601 string. */
|
|
46
47
|
readonly completedAt: string;
|
|
47
|
-
}
|
|
48
|
+
};
|
|
48
49
|
/** The notice of a profile settle. The workflow body calls it one time for each settled claim. */
|
|
49
50
|
export type NotifyDataProfileSettled = (settlement: DataProfileSettlement) => ResultAsync<void, NoticeFailure>;
|
|
50
51
|
/** The body's construction-time deps — closed over at registration. */
|
|
51
|
-
export
|
|
52
|
+
export type DataProfileDeps = EnvironmentStorePaths & {
|
|
52
53
|
/** Operational logging seam; omitted falls back to no-op. */
|
|
53
54
|
readonly logger?: Logger;
|
|
54
55
|
readonly provider: ChatProvider;
|
|
55
|
-
readonly pool:
|
|
56
|
+
readonly pool: Querier;
|
|
56
57
|
readonly sandboxClient: SandboxClient;
|
|
57
58
|
readonly workspaceFs: WorkspaceFilesystem;
|
|
58
59
|
/** Workspace-root resolution seam (see workspace/paths.ts). */
|
|
@@ -87,13 +88,15 @@ export interface DataProfileDeps extends EnvironmentStorePaths {
|
|
|
87
88
|
* body calls nothing. It is not a provenance hook.
|
|
88
89
|
*/
|
|
89
90
|
readonly notifyDataProfileSettled?: NotifyDataProfileSettled;
|
|
90
|
-
|
|
91
|
+
/** The delays of the timer of an outage. Absent: the default of the pause. */
|
|
92
|
+
readonly pauseRetryDelaysMs?: readonly number[];
|
|
93
|
+
};
|
|
91
94
|
/**
|
|
92
95
|
* Workflow input. JSON-serialisable — DBOS persists it as the workflow's
|
|
93
96
|
* input row. The `RunSession` carries the run authorization; the body reads it
|
|
94
97
|
* and never mints.
|
|
95
98
|
*/
|
|
96
|
-
export
|
|
99
|
+
export type DataProfileWorkflowInput = {
|
|
97
100
|
readonly analysisId: string;
|
|
98
101
|
readonly runSession: RunSession;
|
|
99
102
|
/**
|
|
@@ -103,19 +106,7 @@ export interface DataProfileWorkflowInput {
|
|
|
103
106
|
* DBOS workflow input and survives recovery.
|
|
104
107
|
*/
|
|
105
108
|
readonly stagedInputs: readonly StagedInput[];
|
|
106
|
-
|
|
107
|
-
* True when Cortex owns the run-authorization lifecycle and therefore must
|
|
108
|
-
* revoke it on every terminal path. False when the caller supplied its own
|
|
109
|
-
* authorization: the caller owns the lifecycle, so the body must NOT revoke
|
|
110
|
-
* it. The ownership decision is made by the `RunAuthorizer` seam — see
|
|
111
|
-
* `authorizeDataProfile`.
|
|
112
|
-
*
|
|
113
|
-
* Optional because a workflow persisted before this field existed (recovered
|
|
114
|
-
* across the deploy that added it) deserializes without it; the body defaults
|
|
115
|
-
* absent → true, matching the prior Cortex-owned behavior.
|
|
116
|
-
*/
|
|
117
|
-
readonly ownsMandate?: boolean;
|
|
118
|
-
}
|
|
109
|
+
};
|
|
119
110
|
/**
|
|
120
111
|
* Project the profiler's structured output plus the staged manifest into the record
|
|
121
112
|
* persisted on `cortex_analysis_state`.
|
|
@@ -145,7 +136,7 @@ export declare function buildDataProfileResult(submission: ProfileSubmission, re
|
|
|
145
136
|
export declare function buildAbsorbedResult(prior: DataProfileResult, resolution: ProfileResolution, stagedInputs: readonly StagedInput[], profiledAt: string): DataProfileResult;
|
|
146
137
|
/**
|
|
147
138
|
* Register the data-profile workflow with DBOS. Returns the registered
|
|
148
|
-
* callable so `triggerDataProfile` can dispatch
|
|
139
|
+
* callable so `triggerDataProfile` can dispatch it through the run launcher.
|
|
149
140
|
*/
|
|
150
141
|
/**
|
|
151
142
|
* Project the workflow deps onto the profiler agent bag. The farm-extension
|
|
@@ -192,31 +183,35 @@ export declare function describeDataProfileStartError(e: DataProfileStartError):
|
|
|
192
183
|
* construction-time deps are closed over at registration
|
|
193
184
|
* (`registerDataProfileWorkflow`); the route never holds them.
|
|
194
185
|
*/
|
|
195
|
-
export
|
|
186
|
+
export type DataProfileTriggerDeps = {
|
|
196
187
|
/** Operational logging seam; omitted falls back to no-op. */
|
|
197
188
|
readonly logger?: Logger;
|
|
198
|
-
readonly pool:
|
|
189
|
+
readonly pool: Querier;
|
|
199
190
|
readonly runAuthorizer: RunAuthorizer;
|
|
191
|
+
/**
|
|
192
|
+
* Starts the profile workflow. A tool call of a chat turn runs in a step, and DBOS refuses a workflow start
|
|
193
|
+
* inside a step, thus the start goes through the launcher, which enqueues there.
|
|
194
|
+
*/
|
|
195
|
+
readonly runLauncher: RunLauncher;
|
|
200
196
|
readonly workflow: (input: DataProfileWorkflowInput) => Promise<void>;
|
|
201
|
-
}
|
|
197
|
+
};
|
|
202
198
|
/**
|
|
203
199
|
* Identity + staged inputs for a profile run. The caller (the managed route /
|
|
204
200
|
* the CLI) stages `data/inputs/` BEFORE triggering (see the data-profile-init spec) and passes the
|
|
205
201
|
* resulting manifest here; this trigger never stages — it forwards the manifest
|
|
206
202
|
* into the workflow input.
|
|
207
203
|
*/
|
|
208
|
-
export
|
|
204
|
+
export type DataProfileTriggerParams = {
|
|
209
205
|
readonly auth: AuthContext;
|
|
210
206
|
readonly analysisId: string;
|
|
211
207
|
readonly stagedInputs: readonly StagedInput[];
|
|
212
|
-
}
|
|
208
|
+
};
|
|
213
209
|
/**
|
|
214
210
|
* Resolve the `RunSession` the workflow runs under. Whether the authorization
|
|
215
|
-
* is freshly minted
|
|
216
|
-
*
|
|
217
|
-
* through and never inspects it.
|
|
211
|
+
* is freshly minted or reused is decided by the `RunAuthorizer` seam from the
|
|
212
|
+
* opaque auth; this passes that auth straight through and never inspects it.
|
|
218
213
|
*/
|
|
219
|
-
export declare function authorizeDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<
|
|
214
|
+
export declare function authorizeDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<RunSession, GateRefusal>;
|
|
220
215
|
/**
|
|
221
216
|
* Per-attempt DBOS workflow id. The `nonce` is fresh per attempt (a bare
|
|
222
217
|
* `randomUUID()` minted at the trigger), so each (re-)profile of the same
|
|
@@ -261,3 +256,17 @@ export declare function triggerDataProfile(deps: DataProfileTriggerDeps, params:
|
|
|
261
256
|
* can revoke it.
|
|
262
257
|
*/
|
|
263
258
|
export declare function runDataProfile(deps: DataProfileTriggerDeps, params: DataProfileTriggerParams): ResultAsync<void, DataProfileStartError>;
|
|
259
|
+
/** The ledger error of a profile that a stop ended. A client shows it, and a retry can follow it. */
|
|
260
|
+
export declare const DATA_PROFILE_STOPPED = "Data profiling was stopped";
|
|
261
|
+
/** What the stop of a data profile reaches: the ledger pool, and the notice of a settled profile. */
|
|
262
|
+
export type DataProfileStopDeps = {
|
|
263
|
+
readonly pool: Querier;
|
|
264
|
+
readonly logger?: Logger;
|
|
265
|
+
readonly notifyDataProfileSettled?: NotifyDataProfileSettled;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Stop the profile workflow of an analysis, and fail its row. The body passes a cancel through its failure path,
|
|
269
|
+
* thus the row, the rows of its pauses, and the settled notice converge here. The revoke of the mandate and the
|
|
270
|
+
* teardown of the sandbox stay in the body, which runs them on its way out. The `running` guard of the row write keeps a profile that settled first.
|
|
271
|
+
*/
|
|
272
|
+
export declare function stopDataProfile(deps: DataProfileStopDeps, analysisId: string, workflowId: string): Promise<void>;
|