@inflexa-ai/harness 0.45.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +19 -3
- package/dist/agents/conversation-agent.js +49 -30
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +35 -16
- package/dist/agents/sandbox/shared.js +63 -24
- package/dist/agents/sandbox/translational-safety-agent.js +26 -0
- package/dist/agents/sandbox/types.d.ts +26 -3
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +16 -2
- package/dist/agents/sandbox-catalog.js +22 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/approve-plan.d.ts +5 -2
- package/dist/app/approve-plan.js +1 -1
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +125 -99
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +10 -8
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +46 -22
- package/dist/contracts/chat-events.js +1 -1
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +67 -40
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +45 -6
- package/dist/contracts/schemas/chat-events.js +16 -0
- package/dist/contracts/schemas/chat-parts.d.ts +214 -102
- package/dist/contracts/schemas/chat-parts.js +50 -7
- package/dist/contracts/schemas/index.d.ts +1 -1
- package/dist/contracts/schemas/index.js +1 -1
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +7 -6
- package/dist/execution/dbos-workflow-purger.js +29 -21
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +39 -17
- package/dist/execution/run-canceler.js +137 -28
- package/dist/execution/run-end-record.d.ts +29 -0
- package/dist/execution/run-end-record.js +27 -0
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +36 -37
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +14 -9
- package/dist/loop/compaction.js +17 -0
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +34 -37
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -6
- package/dist/memory/conversation-display-recorder.js +64 -20
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +66 -24
- package/dist/memory/thread-history.js +212 -79
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +63 -9
- package/dist/prompts/briefing.js +130 -3
- package/dist/prompts/planner.js +13 -2
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +24 -19
- package/dist/provenance/seam.js +7 -5
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +303 -458
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +59 -92
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +166 -10
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +209 -231
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.d.ts +26 -4
- package/dist/sandbox/image-packages.js +29 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +351 -306
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +79 -25
- package/dist/schemas/plan-schemas.js +1 -1
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +127 -14
- package/dist/schemas/workflow-state.js +56 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +47 -18
- package/dist/state/artifacts.js +48 -7
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +3 -3
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +70 -25
- package/dist/state/runs.js +127 -64
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +29 -8
- package/dist/state/step-executions.js +28 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +11 -9
- package/dist/tools/ad-hoc-router.js +80 -51
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +40 -0
- package/dist/tools/capability-data.js +74 -0
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +54 -17
- package/dist/tools/execute-analysis.js +193 -62
- package/dist/tools/knowledge/check.d.ts +182 -0
- package/dist/tools/knowledge/check.js +94 -0
- package/dist/tools/knowledge/client.d.ts +351 -0
- package/dist/tools/knowledge/client.js +319 -0
- package/dist/tools/knowledge/environment.d.ts +78 -0
- package/dist/tools/knowledge/environment.js +116 -0
- package/dist/tools/knowledge/index.d.ts +49 -0
- package/dist/tools/knowledge/index.js +70 -0
- package/dist/tools/knowledge/local-slots.d.ts +62 -0
- package/dist/tools/knowledge/local-slots.js +184 -0
- package/dist/tools/knowledge/pin.d.ts +14 -0
- package/dist/tools/knowledge/pin.js +17 -0
- package/dist/tools/knowledge/recommend.d.ts +67 -0
- package/dist/tools/knowledge/recommend.js +106 -0
- package/dist/tools/knowledge/situation.d.ts +143 -0
- package/dist/tools/knowledge/situation.js +157 -0
- package/dist/tools/knowledge/skeleton.d.ts +69 -0
- package/dist/tools/knowledge/skeleton.js +201 -0
- package/dist/tools/knowledge/template.d.ts +139 -0
- package/dist/tools/knowledge/template.js +273 -0
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +39 -16
- package/dist/tools/research/generate-plan.js +565 -338
- package/dist/tools/research/guarded-address.d.ts +20 -0
- package/dist/tools/research/guarded-address.js +149 -0
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +40 -0
- package/dist/tools/research/searxng-engine.js +122 -0
- package/dist/tools/research/web-fetch.d.ts +127 -0
- package/dist/tools/research/web-fetch.js +618 -0
- package/dist/tools/research/web-search.d.ts +84 -0
- package/dist/tools/research/web-search.js +117 -0
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
- package/dist/tools/sandbox/list-available-packages.js +43 -29
- package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
- package/dist/tools/sandbox/list-available-refs.js +119 -37
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +22 -68
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +14 -0
- package/dist/tools/terminal-text.js +51 -0
- package/dist/tools/workspace/decision-record.d.ts +81 -0
- package/dist/tools/workspace/decision-record.js +127 -0
- package/dist/tools/workspace/edit-file.d.ts +59 -18
- package/dist/tools/workspace/edit-file.js +98 -15
- package/dist/tools/workspace/execute-command.d.ts +31 -12
- package/dist/tools/workspace/execute-command.js +37 -8
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/index.d.ts +1 -0
- package/dist/tools/workspace/index.js +1 -0
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +100 -76
- package/dist/workflows/execute-analysis.js +380 -247
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +50 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +25 -22
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -236
- package/dist/loop/run-agent.js +0 -1110
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -90
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
|
@@ -4,16 +4,28 @@
|
|
|
4
4
|
* module.
|
|
5
5
|
*/
|
|
6
6
|
import type { ResultAsync } from "neverthrow";
|
|
7
|
+
import type { QueryConfig } from "pg";
|
|
7
8
|
import { type DbError } from "../lib/db-result.js";
|
|
8
9
|
import type { Querier } from "./db.js";
|
|
9
|
-
import type
|
|
10
|
-
|
|
10
|
+
import { type StepExecutionRow } from "./schema.js";
|
|
11
|
+
/**
|
|
12
|
+
* The row-reading surface of this module: one query over the text or config form, whose rows the
|
|
13
|
+
* mapStepExecutionRow parser types. A computed test fake satisfies this shape directly, where the
|
|
14
|
+
* row-generic of `Querier` cannot be implemented by a fake that computes its rows.
|
|
15
|
+
*/
|
|
16
|
+
export type StepRowQuerier = {
|
|
17
|
+
query(queryTextOrConfig: string | QueryConfig, values?: unknown[]): Promise<{
|
|
18
|
+
rows: Record<string, unknown>[];
|
|
19
|
+
rowCount: number | null;
|
|
20
|
+
}>;
|
|
21
|
+
};
|
|
22
|
+
export type SeedStepExecutionRow = {
|
|
11
23
|
runId: string;
|
|
12
24
|
stepId: string;
|
|
13
25
|
analysisId: string;
|
|
14
26
|
wave: number;
|
|
15
27
|
agentId: string;
|
|
16
|
-
}
|
|
28
|
+
};
|
|
17
29
|
/**
|
|
18
30
|
* Seed one `pending` row per plan step at run start (`started_at` NULL — no
|
|
19
31
|
* attempt has happened yet; `attempts`/`hit_max_steps` lean on their column
|
|
@@ -25,7 +37,7 @@ export interface SeedStepExecutionRow {
|
|
|
25
37
|
* honest done/total progress including not-yet-started steps.
|
|
26
38
|
*/
|
|
27
39
|
export declare function seedStepExecutions(pool: Querier, rows: readonly SeedStepExecutionRow[]): ResultAsync<void, DbError>;
|
|
28
|
-
export
|
|
40
|
+
export type InsertStepExecutionInput = {
|
|
29
41
|
runId: string;
|
|
30
42
|
stepId: string;
|
|
31
43
|
analysisId: string;
|
|
@@ -33,14 +45,14 @@ export interface InsertStepExecutionInput {
|
|
|
33
45
|
agentId: string;
|
|
34
46
|
/** DBOS child workflow id (`"${parent}-${N}"`). Optional for legacy callers. */
|
|
35
47
|
childWorkflowId?: string | null;
|
|
36
|
-
}
|
|
48
|
+
};
|
|
37
49
|
export declare function insertStepExecution(pool: Querier, input: InsertStepExecutionInput): ResultAsync<void, DbError>;
|
|
38
50
|
/**
|
|
39
51
|
* Look up a step execution by its DBOS child workflow id. The parent
|
|
40
52
|
* scheduler uses this to find the step row corresponding to a CANCELLED
|
|
41
53
|
* child without holding the runId/stepId map in memory across recovery.
|
|
42
54
|
*/
|
|
43
|
-
export
|
|
55
|
+
export type UpdateStepExecutionInput = {
|
|
44
56
|
/** Step status — `running` is allowed for mid-flight telemetry updates (retries). */
|
|
45
57
|
status: "running" | "completed" | "failed" | "skipped" | "canceled" | "blocked";
|
|
46
58
|
durationMs?: number | null;
|
|
@@ -55,7 +67,7 @@ export interface UpdateStepExecutionInput {
|
|
|
55
67
|
finishReason?: string | null;
|
|
56
68
|
/** True when `stepsUsed === maxSteps`. Stored as 0/1 in SQLite. */
|
|
57
69
|
hitMaxSteps?: boolean | null;
|
|
58
|
-
}
|
|
70
|
+
};
|
|
59
71
|
/**
|
|
60
72
|
* Update a step execution row. Columns are written conditionally so callers
|
|
61
73
|
* can bump `attempts` / `lastErrorClass` on retry without clobbering timing
|
|
@@ -74,4 +86,13 @@ export declare function updateStepExecution(pool: Querier, runId: string, stepId
|
|
|
74
86
|
* these steps never started.
|
|
75
87
|
*/
|
|
76
88
|
export declare function sweepPendingStepExecutions(pool: Querier, runId: string): ResultAsync<void, DbError>;
|
|
77
|
-
|
|
89
|
+
/**
|
|
90
|
+
* Settle a run's still-`running` rows to `canceled` after an engine cancel.
|
|
91
|
+
* A canceled child re-raises before it writes a terminal row, so this is the
|
|
92
|
+
* only writer for a step that the cancel cut. `canceled`, not `skipped`: these
|
|
93
|
+
* steps started. The `status = 'running'` guard keeps a terminal row that a
|
|
94
|
+
* child wrote first. `started_at` and `completed_at` are ISO 8601 `TEXT`, so
|
|
95
|
+
* the duration casts both; it is NULL when `started_at` is NULL.
|
|
96
|
+
*/
|
|
97
|
+
export declare function cancelRunningStepExecutions(pool: Querier, runId: string, reason: string): ResultAsync<void, DbError>;
|
|
98
|
+
export declare function queryStepsByRun(pool: StepRowQuerier, runId: string): ResultAsync<StepExecutionRow[], DbError>;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* module.
|
|
5
5
|
*/
|
|
6
6
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
7
|
+
import { StepExecutionRowSchema } from "./schema.js";
|
|
7
8
|
/**
|
|
8
9
|
* Seed one `pending` row per plan step at run start (`started_at` NULL — no
|
|
9
10
|
* attempt has happened yet; `attempts`/`hit_max_steps` lean on their column
|
|
@@ -136,6 +137,28 @@ export function sweepPendingStepExecutions(pool, runId) {
|
|
|
136
137
|
});
|
|
137
138
|
});
|
|
138
139
|
}
|
|
140
|
+
/**
|
|
141
|
+
* Settle a run's still-`running` rows to `canceled` after an engine cancel.
|
|
142
|
+
* A canceled child re-raises before it writes a terminal row, so this is the
|
|
143
|
+
* only writer for a step that the cancel cut. `canceled`, not `skipped`: these
|
|
144
|
+
* steps started. The `status = 'running'` guard keeps a terminal row that a
|
|
145
|
+
* child wrote first. `started_at` and `completed_at` are ISO 8601 `TEXT`, so
|
|
146
|
+
* the duration casts both; it is NULL when `started_at` is NULL.
|
|
147
|
+
*/
|
|
148
|
+
export function cancelRunningStepExecutions(pool, runId, reason) {
|
|
149
|
+
const now = new Date().toISOString();
|
|
150
|
+
return tryMutation("stepExecutions.cancelRunningStepExecutions", async () => {
|
|
151
|
+
await pool.query({
|
|
152
|
+
text: `UPDATE cortex_step_executions
|
|
153
|
+
SET status = 'canceled',
|
|
154
|
+
completed_at = $2::text,
|
|
155
|
+
duration_ms = (EXTRACT(EPOCH FROM ($2::text::timestamptz - started_at::timestamptz)) * 1000)::bigint,
|
|
156
|
+
error = $3
|
|
157
|
+
WHERE run_id = $1 AND status = 'running'`,
|
|
158
|
+
values: [runId, now, reason],
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
}
|
|
139
162
|
export function queryStepsByRun(pool, runId) {
|
|
140
163
|
return tryQuery("stepExecutions.queryStepsByRun", async () => {
|
|
141
164
|
const result = await pool.query({
|
|
@@ -152,7 +175,7 @@ export function queryStepsByRun(pool, runId) {
|
|
|
152
175
|
});
|
|
153
176
|
}
|
|
154
177
|
function mapStepExecutionRow(row) {
|
|
155
|
-
return {
|
|
178
|
+
return StepExecutionRowSchema.parse({
|
|
156
179
|
runId: row.run_id,
|
|
157
180
|
stepId: row.step_id,
|
|
158
181
|
analysisId: row.analysis_id,
|
|
@@ -161,14 +184,15 @@ function mapStepExecutionRow(row) {
|
|
|
161
184
|
status: row.status,
|
|
162
185
|
startedAt: row.started_at ?? null,
|
|
163
186
|
completedAt: row.completed_at ?? null,
|
|
164
|
-
|
|
187
|
+
// `duration_ms` is bigint, which `pg` delivers as a string; the schema wants the number.
|
|
188
|
+
durationMs: row.duration_ms === undefined || row.duration_ms === null ? null : Number(row.duration_ms),
|
|
165
189
|
error: row.error ?? null,
|
|
166
|
-
attempts: row.attempts
|
|
190
|
+
attempts: row.attempts === undefined || row.attempts === null ? undefined : Number(row.attempts),
|
|
167
191
|
lastErrorClass: row.last_error_class ?? null,
|
|
168
192
|
finishReason: row.finish_reason ?? null,
|
|
169
193
|
hitMaxSteps: row.hit_max_steps === 1 || row.hit_max_steps === true,
|
|
170
194
|
blockedReason: row.blocked_reason ?? null,
|
|
171
195
|
sandboxRef: row.sandbox_ref ?? null,
|
|
172
196
|
childWorkflowId: row.child_workflow_id ?? null,
|
|
173
|
-
};
|
|
197
|
+
});
|
|
174
198
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** The Postgres realization of the tool output store of the loop, over `cortex_tool_outputs`. */
|
|
2
|
-
import type {
|
|
2
|
+
import type { Querier } from "./db.js";
|
|
3
3
|
import type { ToolOutputStore } from "../loop/tool-output.js";
|
|
4
|
-
export declare function createToolOutputStore(pool:
|
|
4
|
+
export declare function createToolOutputStore(pool: Querier): ToolOutputStore;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/** The Postgres realization of the tool output store of the loop, over `cortex_tool_outputs`. */
|
|
2
2
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
3
3
|
function toKeptToolOutput(row) {
|
|
4
|
+
const threadIdField = row.thread_id === null ? undefined : { threadId: row.thread_id };
|
|
4
5
|
return {
|
|
5
6
|
analysisId: row.analysis_id,
|
|
6
7
|
ref: row.ref,
|
|
7
8
|
toolName: row.tool_name,
|
|
8
9
|
toolCallId: row.tool_call_id,
|
|
9
|
-
...(row.thread_id === null ? {} : { threadId: row.thread_id }),
|
|
10
10
|
content: row.content,
|
|
11
11
|
totalLength: row.total_length,
|
|
12
|
+
...threadIdField,
|
|
12
13
|
};
|
|
13
14
|
}
|
|
14
15
|
export function createToolOutputStore(pool) {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* `search_{snake}` shape we ever produce.
|
|
14
14
|
*/
|
|
15
15
|
import { ResultAsync } from "neverthrow";
|
|
16
|
-
import type {
|
|
16
|
+
import type { Querier } from "./db.js";
|
|
17
17
|
import { type DbError } from "../lib/db-result.js";
|
|
18
18
|
/**
|
|
19
19
|
* Whether `name` may be interpolated into a statement as an identifier. Shared
|
|
@@ -21,24 +21,24 @@ import { type DbError } from "../lib/db-result.js";
|
|
|
21
21
|
* shape — one invariant, one place to read it.
|
|
22
22
|
*/
|
|
23
23
|
export declare function isSqlIdentifier(name: string): boolean;
|
|
24
|
-
export
|
|
24
|
+
export type CreateIndexInput = {
|
|
25
25
|
readonly indexName: string;
|
|
26
26
|
readonly dimension: number;
|
|
27
27
|
readonly metric?: "cosine" | "l2" | "ip";
|
|
28
|
-
}
|
|
29
|
-
export
|
|
28
|
+
};
|
|
29
|
+
export type BuildIndexInput = {
|
|
30
30
|
readonly indexName: string;
|
|
31
31
|
readonly metric?: "cosine" | "l2" | "ip";
|
|
32
32
|
readonly indexConfig: {
|
|
33
33
|
readonly type: "hnsw";
|
|
34
34
|
};
|
|
35
|
-
}
|
|
36
|
-
export
|
|
35
|
+
};
|
|
36
|
+
export type UpsertInput = {
|
|
37
37
|
readonly indexName: string;
|
|
38
38
|
readonly vectors: readonly number[][];
|
|
39
39
|
readonly metadata?: readonly Record<string, unknown>[];
|
|
40
40
|
readonly ids?: readonly string[];
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
42
|
/**
|
|
43
43
|
* A narrow delete surface: every entry of one index whose metadata `type` is named.
|
|
44
44
|
*
|
|
@@ -47,26 +47,26 @@ export interface UpsertInput {
|
|
|
47
47
|
* has to be unable to reach another's — a general predicate would make that a review
|
|
48
48
|
* question rather than a type error.
|
|
49
49
|
*/
|
|
50
|
-
export
|
|
50
|
+
export type DeleteByTypeInput = {
|
|
51
51
|
readonly indexName: string;
|
|
52
52
|
readonly types: readonly string[];
|
|
53
|
-
}
|
|
54
|
-
export
|
|
53
|
+
};
|
|
54
|
+
export type QueryInput = {
|
|
55
55
|
readonly indexName: string;
|
|
56
56
|
readonly queryVector: readonly number[];
|
|
57
57
|
readonly topK: number;
|
|
58
58
|
readonly filter?: Record<string, unknown>;
|
|
59
|
-
}
|
|
60
|
-
export
|
|
59
|
+
};
|
|
60
|
+
export type QueryResult = {
|
|
61
61
|
readonly id: string;
|
|
62
62
|
readonly score: number;
|
|
63
63
|
readonly metadata: Record<string, unknown>;
|
|
64
|
-
}
|
|
65
|
-
export
|
|
64
|
+
};
|
|
65
|
+
export type VectorStore = {
|
|
66
66
|
createIndex(input: CreateIndexInput): ResultAsync<void, DbError>;
|
|
67
67
|
buildIndex(input: BuildIndexInput): ResultAsync<void, DbError>;
|
|
68
68
|
upsert(input: UpsertInput): ResultAsync<void, DbError>;
|
|
69
69
|
deleteByType(input: DeleteByTypeInput): ResultAsync<void, DbError>;
|
|
70
70
|
query(input: QueryInput): ResultAsync<QueryResult[], DbError>;
|
|
71
|
-
}
|
|
72
|
-
export declare function createVectorStore(pool:
|
|
71
|
+
};
|
|
72
|
+
export declare function createVectorStore(pool: Querier): VectorStore;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { okAsync } from "neverthrow";
|
|
16
16
|
import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
17
|
+
import { presentAt } from "../lib/present.js";
|
|
17
18
|
/**
|
|
18
19
|
* The identifier shape and length the harness may interpolate into a statement.
|
|
19
20
|
* An identifier cannot be a bind parameter, so a name reaching SQL has to be
|
|
@@ -25,7 +26,13 @@ import { tryMutation, tryQuery } from "../lib/db-result.js";
|
|
|
25
26
|
* a name that matches it has one byte per character and `length` is the byte count
|
|
26
27
|
* the limit is measured in.
|
|
27
28
|
*/
|
|
28
|
-
|
|
29
|
+
function isSqlIdentifierShape(name) {
|
|
30
|
+
if (name.length === 0)
|
|
31
|
+
return false;
|
|
32
|
+
const isLowerOrUnderscore = (char) => (char >= "a" && char <= "z") || char === "_";
|
|
33
|
+
const isWordChar = (char) => isLowerOrUnderscore(char) || (char >= "0" && char <= "9");
|
|
34
|
+
return isLowerOrUnderscore(name.charAt(0)) && Array.from(name).every(isWordChar);
|
|
35
|
+
}
|
|
29
36
|
const MAX_SQL_IDENTIFIER_BYTES = 63;
|
|
30
37
|
/**
|
|
31
38
|
* Whether `name` may be interpolated into a statement as an identifier. Shared
|
|
@@ -33,7 +40,7 @@ const MAX_SQL_IDENTIFIER_BYTES = 63;
|
|
|
33
40
|
* shape — one invariant, one place to read it.
|
|
34
41
|
*/
|
|
35
42
|
export function isSqlIdentifier(name) {
|
|
36
|
-
return
|
|
43
|
+
return isSqlIdentifierShape(name) && name.length <= MAX_SQL_IDENTIFIER_BYTES;
|
|
37
44
|
}
|
|
38
45
|
function assertIdent(name) {
|
|
39
46
|
if (!isSqlIdentifier(name)) {
|
|
@@ -56,11 +63,8 @@ export function createVectorStore(pool) {
|
|
|
56
63
|
)`);
|
|
57
64
|
});
|
|
58
65
|
},
|
|
59
|
-
buildIndex({ indexName
|
|
66
|
+
buildIndex({ indexName }) {
|
|
60
67
|
assertIdent(indexName);
|
|
61
|
-
if (indexConfig.type !== "hnsw") {
|
|
62
|
-
throw new Error(`vector-store: unsupported index type "${indexConfig.type}"`);
|
|
63
|
-
}
|
|
64
68
|
// m/ef_construction default to 8/32.
|
|
65
69
|
return tryMutation("vectorStore.buildIndex", async () => {
|
|
66
70
|
await pool.query(`CREATE INDEX IF NOT EXISTS "${indexName}_vector_idx"
|
|
@@ -76,7 +80,7 @@ export function createVectorStore(pool) {
|
|
|
76
80
|
const finalIds = ids ?? vectors.map(() => crypto.randomUUID());
|
|
77
81
|
return tryMutation("vectorStore.upsert", async () => {
|
|
78
82
|
for (let i = 0; i < vectors.length; i++) {
|
|
79
|
-
const vec = toVectorLiteral(vectors
|
|
83
|
+
const vec = toVectorLiteral(presentAt(vectors, i, "the vector at the index"));
|
|
80
84
|
const meta = JSON.stringify(metadata?.[i] ?? {});
|
|
81
85
|
await pool.query(`INSERT INTO "${indexName}" (vector_id, embedding, metadata)
|
|
82
86
|
VALUES ($1, $2::vector, $3::jsonb)
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
import type { DataProfileResult } from "../contracts/data-profile.js";
|
|
32
32
|
import type { SetMenu } from "../input-scan/menu.js";
|
|
33
33
|
import type { DetectedSets } from "../input-scan/set-types.js";
|
|
34
|
-
import type {
|
|
34
|
+
import type { MenuOperationInput } from "../schemas/data-profile-schemas.js";
|
|
35
35
|
import { type ProfileResolution } from "./data-profile-resolve.js";
|
|
36
36
|
/** Delta paths named in the repair briefing before the tail folds into a count. */
|
|
37
37
|
export declare const MAX_DELTA_PATHS = 30;
|
|
@@ -43,11 +43,11 @@ export type AbsorbOutcome = {
|
|
|
43
43
|
readonly reason: string;
|
|
44
44
|
} | {
|
|
45
45
|
readonly kind: "full";
|
|
46
|
-
readonly operations: readonly
|
|
46
|
+
readonly operations: readonly MenuOperationInput[];
|
|
47
47
|
readonly resolution: ProfileResolution;
|
|
48
48
|
} | {
|
|
49
49
|
readonly kind: "partial";
|
|
50
|
-
readonly operations: readonly
|
|
50
|
+
readonly operations: readonly MenuOperationInput[];
|
|
51
51
|
readonly resolution: ProfileResolution;
|
|
52
52
|
/** Kept files the replayed recipe does not account for — what the agent is woken for. */
|
|
53
53
|
readonly delta: readonly string[];
|
|
@@ -51,17 +51,19 @@ function keptPaths(detected) {
|
|
|
51
51
|
*/
|
|
52
52
|
function annotationOf(group, kept) {
|
|
53
53
|
const annotations = (group.memberAnnotations ?? []).filter((entry) => kept.has(entry.path));
|
|
54
|
-
|
|
54
|
+
const annotation = {
|
|
55
55
|
name: group.name,
|
|
56
56
|
memberRepresents: group.memberRepresents,
|
|
57
57
|
description: group.description,
|
|
58
58
|
role: group.role,
|
|
59
59
|
category: group.category,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
...(annotations.length > 0 ? { memberAnnotations: annotations.map((entry) => ({ path: entry.path, note: entry.note })) } : {}),
|
|
60
|
+
categoryLabel: group.categoryLabel,
|
|
61
|
+
subtype: group.subtype,
|
|
62
|
+
categoryReason: group.categoryReason,
|
|
64
63
|
};
|
|
64
|
+
if (annotations.length > 0)
|
|
65
|
+
annotation.memberAnnotations = annotations.map((entry) => ({ path: entry.path, note: entry.note }));
|
|
66
|
+
return annotation;
|
|
65
67
|
}
|
|
66
68
|
class StrandedRecipe extends Error {
|
|
67
69
|
}
|
|
@@ -140,21 +142,23 @@ function replayDimension(ctx, dimension) {
|
|
|
140
142
|
if (!slot) {
|
|
141
143
|
throw new StrandedRecipe(`dimension "${dimension.label}": the template "${binding.template}" no longer carries a slot at position ${binding.slotIndex}`);
|
|
142
144
|
}
|
|
143
|
-
return { kind: "slot", setId: set.id, slotId: slot.id,
|
|
145
|
+
return { kind: "slot", setId: set.id, slotId: slot.id, note: observation.note };
|
|
144
146
|
});
|
|
145
|
-
|
|
147
|
+
const reconciliations = dimension.reconciliations?.map((entry) => ({ ...entry }));
|
|
148
|
+
const replayed = {
|
|
146
149
|
label: dimension.label,
|
|
147
150
|
category: dimension.category,
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
+
categoryLabel: dimension.categoryLabel,
|
|
152
|
+
scope: dimension.scope,
|
|
153
|
+
description: dimension.description,
|
|
151
154
|
observations,
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
...(dimension.nestsUnder ? { nestsUnder: { ...dimension.nestsUnder } } : {}),
|
|
156
|
-
...(dimension.treatmentReason ? { treatmentReason: dimension.treatmentReason } : {}),
|
|
155
|
+
reconciliations,
|
|
156
|
+
nestsUnder: dimension.nestsUnder === undefined ? undefined : { ...dimension.nestsUnder },
|
|
157
|
+
treatmentReason: dimension.treatmentReason,
|
|
157
158
|
};
|
|
159
|
+
if (reconciliations && reconciliations.length > 0)
|
|
160
|
+
replayed.reconciliations = reconciliations;
|
|
161
|
+
return replayed;
|
|
158
162
|
}
|
|
159
163
|
/** Every group id the authored steps named, including a value-mapped split's per-value groups. */
|
|
160
164
|
function namedGroupIds(steps) {
|
|
@@ -208,11 +212,12 @@ export function absorbRecipe(prior, detected, menu) {
|
|
|
208
212
|
}
|
|
209
213
|
const submission = {
|
|
210
214
|
operations,
|
|
211
|
-
...(dimensions.length > 0 ? { dimensions } : {}),
|
|
212
215
|
analysisSummary: prior.summary,
|
|
213
216
|
domain: prior.domain ?? "",
|
|
214
217
|
organism: prior.organism ?? null,
|
|
215
218
|
};
|
|
219
|
+
if (dimensions.length > 0)
|
|
220
|
+
submission.dimensions = dimensions;
|
|
216
221
|
// Final round by construction: no agent is awake to repair anything this raises, so a
|
|
217
222
|
// contested file sweeps rather than being awarded to whichever step ran first.
|
|
218
223
|
const resolution = resolveProfileSubmission(submission, detected, menu, { finalRound: true });
|
|
@@ -47,7 +47,7 @@ export type ActivityWrite = (part: unknown) => Promise<void>;
|
|
|
47
47
|
* manifest, a fallback file description) are logged because neither warrants
|
|
48
48
|
* interrupting the activity line.
|
|
49
49
|
*/
|
|
50
|
-
export
|
|
50
|
+
export type ProfileActivityEmitter = {
|
|
51
51
|
/** Reported before the sandbox is created — the longest wait in a profile, and the one that precedes the agent entirely. */
|
|
52
52
|
sandboxInit(): Promise<void>;
|
|
53
53
|
/**
|
|
@@ -72,16 +72,16 @@ export interface ProfileActivityEmitter {
|
|
|
72
72
|
* phrases are this capability's observable contract, and a call site that
|
|
73
73
|
* composed its own is a call site that can drift from it.
|
|
74
74
|
*/
|
|
75
|
-
forTool(name: string, input: unknown, resolveDetail?: ToolDetailResolver): Promise<void>;
|
|
75
|
+
forTool(toolUseId: string, name: string, input: unknown, resolveDetail?: ToolDetailResolver): Promise<void>;
|
|
76
76
|
/** Reported for the vector-store pass that indexes per-file descriptions. */
|
|
77
77
|
indexing(): Promise<void>;
|
|
78
78
|
/** The success terminal. Emitted only after the terminal ledger write has landed. */
|
|
79
79
|
complete(): Promise<void>;
|
|
80
80
|
/** The failure terminal, carrying the same user-safe reason the ledger receives. */
|
|
81
81
|
failed(reason: string): Promise<void>;
|
|
82
|
-
}
|
|
82
|
+
};
|
|
83
83
|
/** Identity the emitted parts carry — the workflow's synthetic frame, not a real run. */
|
|
84
|
-
export
|
|
84
|
+
export type ProfileActivityFrame = {
|
|
85
85
|
/**
|
|
86
86
|
* The constant literal the data-profile workflow uses as its run id. It is the
|
|
87
87
|
* same string for every analysis, so it identifies nothing; consumers are
|
|
@@ -92,7 +92,7 @@ export interface ProfileActivityFrame {
|
|
|
92
92
|
readonly runId: string;
|
|
93
93
|
/** The constant literal step id of the profile's single synthetic step. */
|
|
94
94
|
readonly stepId: string;
|
|
95
|
-
}
|
|
95
|
+
};
|
|
96
96
|
/**
|
|
97
97
|
* Build the profile's activity channel over `write`.
|
|
98
98
|
*
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* anything that throws on the way there reaches the failure path having emitted
|
|
20
20
|
* no terminal at all.
|
|
21
21
|
*/
|
|
22
|
-
import { activityEmission, activityForTool } from "../sandbox/sandbox-step-translate.js";
|
|
22
|
+
import { activityEmission, activityForTool, toolActivityKey } from "../sandbox/sandbox-step-translate.js";
|
|
23
23
|
/**
|
|
24
24
|
* Build the profile's activity channel over `write`.
|
|
25
25
|
*
|
|
@@ -47,10 +47,10 @@ export function createProfileActivityEmitter(write, frame, logger, now) {
|
|
|
47
47
|
logger.warn("run-event write failed (non-fatal)", { phase, ...logger.errorFields(err) });
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
const emit = async (phase, activity) => {
|
|
51
|
-
const
|
|
50
|
+
const emit = async (phase, activity, toolUseId) => {
|
|
51
|
+
const key = toolUseId === undefined ? seq++ : toolActivityKey(toolUseId);
|
|
52
52
|
const at = new Date(await now()).toISOString();
|
|
53
|
-
const parts = activityEmission(frame,
|
|
53
|
+
const parts = activityEmission(frame, key, phase, activity, at);
|
|
54
54
|
await writeAlone(parts.activity, phase);
|
|
55
55
|
await writeAlone(parts.entry, phase);
|
|
56
56
|
};
|
|
@@ -58,7 +58,7 @@ export function createProfileActivityEmitter(write, frame, logger, now) {
|
|
|
58
58
|
sandboxInit: () => emit("sandbox-init", "Starting sandbox"),
|
|
59
59
|
scanning: () => emit("executing", "Scanning input files"),
|
|
60
60
|
agentStarting: () => emit("executing", "Running data-profiler"),
|
|
61
|
-
forTool: (name, input, resolveDetail) => emit("executing", activityForTool(name, input, resolveDetail)),
|
|
61
|
+
forTool: (toolUseId, name, input, resolveDetail) => emit("executing", activityForTool(name, input, resolveDetail), toolUseId),
|
|
62
62
|
indexing: () => emit("indexing", "Indexing input descriptions for search"),
|
|
63
63
|
complete: () => emit("complete", "Profile complete"),
|
|
64
64
|
failed: (reason) => emit("failed", reason),
|
|
@@ -34,18 +34,18 @@ export declare const MAX_ENTITY_ENTRIES = 20000;
|
|
|
34
34
|
* own types and are untouched.
|
|
35
35
|
*/
|
|
36
36
|
export declare const PROFILE_INDEX_TYPES: readonly ["input-group", "input-dimension", "input", "input-kind"];
|
|
37
|
-
export
|
|
37
|
+
export type ProfileIndexEntry = {
|
|
38
38
|
readonly id: string;
|
|
39
39
|
readonly text: string;
|
|
40
40
|
readonly metadata: Record<string, unknown>;
|
|
41
|
-
}
|
|
42
|
-
export
|
|
41
|
+
};
|
|
42
|
+
export type BuildProfileIndexArgs = {
|
|
43
43
|
readonly analysisId: string;
|
|
44
44
|
/** The profile as persisted. Whichever era wrote it, the entries are derived from it alone. */
|
|
45
45
|
readonly result: DataProfileResult;
|
|
46
46
|
/** The scan the profile was taken against — the source of a legacy profile's entity value set. */
|
|
47
47
|
readonly scan?: InputScan;
|
|
48
|
-
}
|
|
48
|
+
};
|
|
49
49
|
/**
|
|
50
50
|
* Build every index entry for a completed profile. Deterministic and model-free: each
|
|
51
51
|
* entry's text is templated from what the agent already wrote and what resolution already
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
* entries (group, dimension, kind, entity) never do. That presence is the discriminator
|
|
21
21
|
* `workspace_search` documents, so a consumer needs no id parsing to tell them apart.
|
|
22
22
|
*/
|
|
23
|
+
import { presentFirst } from "../lib/present.js";
|
|
23
24
|
import { dimensionCardinalities, profileDimensions, profileFileRecords, profileGroups } from "../app/data-profile-view.js";
|
|
24
25
|
/** Entity entries built for a legacy profile. Past this the entity tier is a liability, not a search aid. */
|
|
25
26
|
export const MAX_ENTITY_ENTRIES = 20_000;
|
|
@@ -36,19 +37,31 @@ export const PROFILE_INDEX_TYPES = ["input-group", "input-dimension", "input", "
|
|
|
36
37
|
/** Group names named in one legacy entity entry's text. */
|
|
37
38
|
const MAX_GROUPS_IN_ENTITY_TEXT = 6;
|
|
38
39
|
function slug(value) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
.
|
|
43
|
-
|
|
40
|
+
let out = "";
|
|
41
|
+
let inRun = false;
|
|
42
|
+
for (const char of value.toLowerCase()) {
|
|
43
|
+
if (out.length >= SLUG_MAX_LENGTH)
|
|
44
|
+
break;
|
|
45
|
+
const isSlugChar = (char >= "a" && char <= "z") || (char >= "0" && char <= "9");
|
|
46
|
+
if (!isSlugChar) {
|
|
47
|
+
inRun = true;
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (inRun && out.length > 0)
|
|
51
|
+
out += "-";
|
|
52
|
+
inRun = false;
|
|
53
|
+
out += char;
|
|
54
|
+
}
|
|
55
|
+
return out.slice(0, SLUG_MAX_LENGTH) || "unnamed";
|
|
44
56
|
}
|
|
57
|
+
const SLUG_MAX_LENGTH = 60;
|
|
45
58
|
function slotSummary(slot) {
|
|
46
59
|
return { id: slot.id, location: slot.location, tokenClass: slot.tokenClass, distinctValues: slot.distinctValues };
|
|
47
60
|
}
|
|
48
61
|
function groupEntry(analysisId, group) {
|
|
49
62
|
const category = group.categoryLabel ?? group.category;
|
|
50
63
|
const facts = [`${group.count} members`, `${group.fileCount} files`, group.displayPattern].join(", ");
|
|
51
|
-
|
|
64
|
+
const entry = {
|
|
52
65
|
id: `/${analysisId}/group/${group.id}`,
|
|
53
66
|
text: `${group.name} — one member is ${group.memberRepresents}. ${group.description} ${category} held as ${group.role}. (${facts})`,
|
|
54
67
|
metadata: {
|
|
@@ -57,14 +70,16 @@ function groupEntry(analysisId, group) {
|
|
|
57
70
|
name: group.name,
|
|
58
71
|
role: group.role,
|
|
59
72
|
category: group.category,
|
|
60
|
-
|
|
73
|
+
categoryLabel: group.categoryLabel ? group.categoryLabel : undefined,
|
|
61
74
|
pathPattern: group.displayPattern,
|
|
62
75
|
count: group.count,
|
|
63
76
|
fileCount: group.fileCount,
|
|
64
|
-
|
|
65
|
-
...(group.unclassified ? { unclassified: true } : {}),
|
|
77
|
+
slots: group.slots && group.slots.length > 0 ? group.slots.map(slotSummary) : undefined,
|
|
66
78
|
},
|
|
67
79
|
};
|
|
80
|
+
if (group.unclassified)
|
|
81
|
+
entry.metadata.unclassified = true;
|
|
82
|
+
return entry;
|
|
68
83
|
}
|
|
69
84
|
/** One observation as a searchable clause — where the dimension was seen, and what was seen there. */
|
|
70
85
|
function observationSummary(observation) {
|
|
@@ -89,7 +104,7 @@ function dimensionEntry(analysisId, dimension) {
|
|
|
89
104
|
type: "input-dimension",
|
|
90
105
|
dimension: dimension.label,
|
|
91
106
|
category: dimension.category,
|
|
92
|
-
|
|
107
|
+
categoryLabel: dimension.categoryLabel ? dimension.categoryLabel : undefined,
|
|
93
108
|
scope: dimension.scope,
|
|
94
109
|
cardinalities: dimensionCardinalities(dimension),
|
|
95
110
|
groups: [...new Set(dimension.observations.flatMap((observation) => (observation.kind === "slot" ? observation.groupIds : [])))],
|
|
@@ -101,7 +116,7 @@ function dimensionEntry(analysisId, dimension) {
|
|
|
101
116
|
* resolves to a file that exists rather than to a synthetic key.
|
|
102
117
|
*/
|
|
103
118
|
function memberEntry(analysisId, group, annotation) {
|
|
104
|
-
const format = group.formats.length === 1 ? group.formats
|
|
119
|
+
const format = group.formats.length === 1 ? presentFirst(group.formats, "the single format").format : undefined;
|
|
105
120
|
return {
|
|
106
121
|
id: `/${analysisId}/${annotation.path}`,
|
|
107
122
|
text: `${annotation.path} — ${annotation.note} In ${group.name}, where one member is ${group.memberRepresents}.`,
|
|
@@ -111,7 +126,7 @@ function memberEntry(analysisId, group, annotation) {
|
|
|
111
126
|
group: group.id,
|
|
112
127
|
groupName: group.name,
|
|
113
128
|
category: group.category,
|
|
114
|
-
|
|
129
|
+
format: format ? format : undefined,
|
|
115
130
|
},
|
|
116
131
|
};
|
|
117
132
|
}
|
|
@@ -154,7 +169,7 @@ function entityDimensionLabel(dimensions, distinct) {
|
|
|
154
169
|
return widest?.label ?? "entity";
|
|
155
170
|
}
|
|
156
171
|
function kindEntry(analysisId, group) {
|
|
157
|
-
const facts = [`${group.count} files`, group.format, group.pattern].
|
|
172
|
+
const facts = [`${group.count} files`, group.format, group.pattern].flatMap((fact) => (fact ? [fact] : [])).join(", ");
|
|
158
173
|
return {
|
|
159
174
|
id: `/${analysisId}/kind/${slug(group.name)}`,
|
|
160
175
|
text: `${group.name} — ${group.description} One member is ${group.memberRepresents}. (${facts})`,
|
|
@@ -163,7 +178,7 @@ function kindEntry(analysisId, group) {
|
|
|
163
178
|
kind: group.name,
|
|
164
179
|
pathPattern: group.pattern,
|
|
165
180
|
count: group.count,
|
|
166
|
-
|
|
181
|
+
format: group.format ? group.format : undefined,
|
|
167
182
|
},
|
|
168
183
|
};
|
|
169
184
|
}
|
|
@@ -189,9 +204,9 @@ function fileEntry(analysisId, file) {
|
|
|
189
204
|
metadata: {
|
|
190
205
|
type: "input",
|
|
191
206
|
path: file.path,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
207
|
+
dataType: file.dataType ? file.dataType : undefined,
|
|
208
|
+
format: file.format ? file.format : undefined,
|
|
209
|
+
tags: file.tags ? file.tags : undefined,
|
|
195
210
|
},
|
|
196
211
|
};
|
|
197
212
|
}
|