@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
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* classifier never resolves a name and it never reads the network.
|
|
13
13
|
*/
|
|
14
14
|
import { isIP } from "node:net";
|
|
15
|
+
import { isAllDigits, isAllHex } from "../../lib/text.js";
|
|
15
16
|
/** Parse a dotted-quad IPv4 address into its 32-bit value. Anything else gives null. */
|
|
16
17
|
function ipv4ToNumber(ip) {
|
|
17
18
|
const parts = ip.split(".");
|
|
@@ -19,7 +20,7 @@ function ipv4ToNumber(ip) {
|
|
|
19
20
|
return null;
|
|
20
21
|
let value = 0;
|
|
21
22
|
for (const part of parts) {
|
|
22
|
-
if (
|
|
23
|
+
if (part.length === 0 || part.length > 3 || !isAllDigits(part))
|
|
23
24
|
return null;
|
|
24
25
|
const octet = Number(part);
|
|
25
26
|
if (octet > 255)
|
|
@@ -46,7 +47,7 @@ function ipv6ToBigInt(ip) {
|
|
|
46
47
|
return [];
|
|
47
48
|
const groups = [];
|
|
48
49
|
for (const group of half.split(":")) {
|
|
49
|
-
if (
|
|
50
|
+
if (group.length === 0 || group.length > 4 || !isAllHex(group))
|
|
50
51
|
return null;
|
|
51
52
|
groups.push(BigInt(`0x${group}`));
|
|
52
53
|
}
|
|
@@ -29,21 +29,23 @@
|
|
|
29
29
|
* form names a file that does not exist in the frame of the caller. The same
|
|
30
30
|
* projection guards the step briefing (`app/data-profile-orientation.ts`).
|
|
31
31
|
*/
|
|
32
|
-
import type {
|
|
32
|
+
import type { Querier } from "../../state/db.js";
|
|
33
|
+
import { z } from "zod";
|
|
33
34
|
import { type DataProfileFile, type DataProfileResult } from "../../state/index.js";
|
|
35
|
+
import { type Tool } from "../define-tool.js";
|
|
34
36
|
/**
|
|
35
37
|
* Whether the served profile can be trusted to describe the analysis's CURRENT inputs.
|
|
36
38
|
* `"stale"` still carries the full profile — a stale profile is far better than none —
|
|
37
39
|
* but says plainly why it may be wrong.
|
|
38
40
|
*/
|
|
39
41
|
type Freshness = "ready" | "stale";
|
|
40
|
-
|
|
42
|
+
type ProfileEnvelope = {
|
|
41
43
|
readonly state: Freshness;
|
|
42
44
|
/** Why the profile may not describe the current inputs. Present only when `state` is `"stale"`. */
|
|
43
45
|
readonly staleReason?: string;
|
|
44
46
|
readonly profiledAt: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
+
};
|
|
48
|
+
type OverviewOutput = ProfileEnvelope & {
|
|
47
49
|
readonly scope: "overview";
|
|
48
50
|
readonly summary: string;
|
|
49
51
|
readonly domain?: string;
|
|
@@ -76,7 +78,7 @@ interface OverviewOutput extends ProfileEnvelope {
|
|
|
76
78
|
*/
|
|
77
79
|
readonly partition?: DataProfileResult["partition"];
|
|
78
80
|
readonly coverage?: DataProfileResult["coverage"];
|
|
79
|
-
}
|
|
81
|
+
};
|
|
80
82
|
/**
|
|
81
83
|
* The dataset's structure. A snapshot carrying none reports `available: false` rather
|
|
82
84
|
* than an empty list: "this profile predates the structure" and "this dataset has no
|
|
@@ -85,7 +87,7 @@ interface OverviewOutput extends ProfileEnvelope {
|
|
|
85
87
|
* A snapshot written under the previous model is served through `kinds`/`axes`, labelled
|
|
86
88
|
* — the structure exists, and an agent must not be told the dataset has none.
|
|
87
89
|
*/
|
|
88
|
-
|
|
90
|
+
type GroupsOutput = ProfileEnvelope & {
|
|
89
91
|
readonly scope: "groups";
|
|
90
92
|
readonly available: boolean;
|
|
91
93
|
/** Authored under the previous model — `kinds`/`axes` rather than resolved groups. */
|
|
@@ -99,13 +101,13 @@ interface GroupsOutput extends ProfileEnvelope {
|
|
|
99
101
|
readonly axes?: DataProfileResult["axes"];
|
|
100
102
|
readonly coverage?: DataProfileResult["coverage"];
|
|
101
103
|
readonly message?: string;
|
|
102
|
-
}
|
|
104
|
+
};
|
|
103
105
|
/**
|
|
104
106
|
* The members the profile describes individually — annotated members on a resolved
|
|
105
107
|
* snapshot, the notable-file records on an older one. Never the dataset: `datasetFileCount`
|
|
106
108
|
* on the overview is what says how big that is.
|
|
107
109
|
*/
|
|
108
|
-
|
|
110
|
+
type FilesOutput = ProfileEnvelope & {
|
|
109
111
|
readonly scope: "files";
|
|
110
112
|
readonly page: number;
|
|
111
113
|
readonly pageSize: number;
|
|
@@ -116,7 +118,7 @@ interface FilesOutput extends ProfileEnvelope {
|
|
|
116
118
|
/** How many files the dataset holds, so a page of 20 never reads as the whole of it. */
|
|
117
119
|
readonly datasetFileCount: number | null;
|
|
118
120
|
readonly files: DataProfileFile[];
|
|
119
|
-
}
|
|
121
|
+
};
|
|
120
122
|
/**
|
|
121
123
|
* No profile to serve — the honest lifecycle states, in the ok channel.
|
|
122
124
|
*
|
|
@@ -128,15 +130,15 @@ interface FilesOutput extends ProfileEnvelope {
|
|
|
128
130
|
* constant here, and a constant field carries no information while implying
|
|
129
131
|
* that it does. `FailedOutput` omits one for the same reason — see its note.
|
|
130
132
|
*/
|
|
131
|
-
|
|
133
|
+
type AbsentOutput = {
|
|
132
134
|
readonly state: "absent";
|
|
133
135
|
readonly message: string;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
+
};
|
|
137
|
+
type PendingOutput = {
|
|
136
138
|
readonly state: "pending";
|
|
137
139
|
readonly status: "pending" | "running";
|
|
138
140
|
readonly message: string;
|
|
139
|
-
}
|
|
141
|
+
};
|
|
140
142
|
/**
|
|
141
143
|
* A recorded failure with no profile to fall back on.
|
|
142
144
|
*
|
|
@@ -152,17 +154,22 @@ interface PendingOutput {
|
|
|
152
154
|
* `failedAt` is reported instead: a fact the row actually holds, and one an agent
|
|
153
155
|
* that knows when the input set last changed can act on.
|
|
154
156
|
*/
|
|
155
|
-
|
|
157
|
+
type FailedOutput = {
|
|
156
158
|
readonly state: "failed";
|
|
157
159
|
readonly error: string | null;
|
|
158
160
|
/** When the failure was recorded; `null` when the row holds no time. */
|
|
159
161
|
readonly failedAt: string | null;
|
|
160
162
|
readonly message: string;
|
|
161
|
-
}
|
|
163
|
+
};
|
|
162
164
|
export type InspectDataProfileOutput = OverviewOutput | GroupsOutput | FilesOutput | AbsentOutput | PendingOutput | FailedOutput;
|
|
163
|
-
|
|
164
|
-
scope
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
165
|
+
declare const InspectDataProfileInputSchema: z.ZodObject<{
|
|
166
|
+
scope: z.ZodOptional<z.ZodEnum<{
|
|
167
|
+
files: "files";
|
|
168
|
+
groups: "groups";
|
|
169
|
+
overview: "overview";
|
|
170
|
+
}>>;
|
|
171
|
+
page: z.ZodOptional<z.ZodNumber>;
|
|
172
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
173
|
+
}, z.core.$strip>;
|
|
174
|
+
export declare function createInspectDataProfileTool(pool: Querier): Tool<z.infer<typeof InspectDataProfileInputSchema>, InspectDataProfileOutput>;
|
|
168
175
|
export {};
|
|
@@ -90,6 +90,22 @@ function stalenessReasons(status) {
|
|
|
90
90
|
const FAILURE_SCOPE_NOTE = "This records an earlier attempt; this row cannot establish whether it covered the input files the analysis " +
|
|
91
91
|
"holds now, so do not read it as a verdict on the current data. Compare failedAt against when the input set " +
|
|
92
92
|
"last changed, and re-profile if they have moved apart.";
|
|
93
|
+
const InspectDataProfileInputSchema = z.object({
|
|
94
|
+
scope: z
|
|
95
|
+
.enum(["overview", "groups", "files"])
|
|
96
|
+
.optional()
|
|
97
|
+
.describe("'overview' (default): dataset-level facts, the partition accounting, the annotated-member count, and the dataset file count. " +
|
|
98
|
+
"'groups': the groups the dataset is made of, with their slots, and the dimensions that vary across it. " +
|
|
99
|
+
"'files': paged records for the individually annotated members."),
|
|
100
|
+
page: z.number().int().min(1).optional().describe("1-based page of member records. Only used when scope is 'files'. Default 1."),
|
|
101
|
+
pageSize: z
|
|
102
|
+
.number()
|
|
103
|
+
.int()
|
|
104
|
+
.min(1)
|
|
105
|
+
.max(MAX_PAGE_SIZE)
|
|
106
|
+
.optional()
|
|
107
|
+
.describe(`Member records per page. Only used when scope is 'files'. Default ${DEFAULT_PAGE_SIZE}, max ${MAX_PAGE_SIZE}.`),
|
|
108
|
+
});
|
|
93
109
|
export function createInspectDataProfileTool(pool) {
|
|
94
110
|
return defineTool({
|
|
95
111
|
id: "inspect_data_profile",
|
|
@@ -119,22 +135,7 @@ export function createInspectDataProfileTool(pool) {
|
|
|
119
135
|
"input files you are holding now, and this tool cannot tell you whether that attempt covered them. Compare failedAt " +
|
|
120
136
|
"against when the input set last changed before you conclude anything: if the data moved since, say the profile " +
|
|
121
137
|
"needs re-running rather than diagnosing the data itself.",
|
|
122
|
-
inputSchema:
|
|
123
|
-
scope: z
|
|
124
|
-
.enum(["overview", "groups", "files"])
|
|
125
|
-
.optional()
|
|
126
|
-
.describe("'overview' (default): dataset-level facts, the partition accounting, the annotated-member count, and the dataset file count. " +
|
|
127
|
-
"'groups': the groups the dataset is made of, with their slots, and the dimensions that vary across it. " +
|
|
128
|
-
"'files': paged records for the individually annotated members."),
|
|
129
|
-
page: z.number().int().min(1).optional().describe("1-based page of member records. Only used when scope is 'files'. Default 1."),
|
|
130
|
-
pageSize: z
|
|
131
|
-
.number()
|
|
132
|
-
.int()
|
|
133
|
-
.min(1)
|
|
134
|
-
.max(MAX_PAGE_SIZE)
|
|
135
|
-
.optional()
|
|
136
|
-
.describe(`Member records per page. Only used when scope is 'files'. Default ${DEFAULT_PAGE_SIZE}, max ${MAX_PAGE_SIZE}.`),
|
|
137
|
-
}),
|
|
138
|
+
inputSchema: InspectDataProfileInputSchema,
|
|
138
139
|
// `execute` defaults both fields internally, and the hook applies the same
|
|
139
140
|
// defaults. Without them the ordinary call, which names no field at all,
|
|
140
141
|
// gives no detail. `page` acts only on the `files` scope, as in `execute`.
|
|
@@ -214,9 +215,9 @@ export function createInspectDataProfileTool(pool) {
|
|
|
214
215
|
// nothing of carries `groups: []`, and "zero groups" is a finding — reading
|
|
215
216
|
// it as "no structure record" would report the analysis unprofiled.
|
|
216
217
|
groupCount: result.groups !== undefined || result.kinds !== undefined ? groups.length : null,
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
structureNote,
|
|
219
|
+
partition: result.partition,
|
|
220
|
+
coverage: result.coverage,
|
|
220
221
|
});
|
|
221
222
|
}
|
|
222
223
|
if (scope === "groups") {
|
|
@@ -226,10 +227,10 @@ export function createInspectDataProfileTool(pool) {
|
|
|
226
227
|
scope: "groups",
|
|
227
228
|
available: true,
|
|
228
229
|
groups: rootGroupPatterns(result.groups, resourceId),
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
dimensions: result.dimensions,
|
|
231
|
+
probes: result.probes,
|
|
232
|
+
partition: result.partition,
|
|
233
|
+
recipe: result.recipe,
|
|
233
234
|
});
|
|
234
235
|
}
|
|
235
236
|
if (result.kinds === undefined) {
|
|
@@ -251,8 +252,8 @@ export function createInspectDataProfileTool(pool) {
|
|
|
251
252
|
available: true,
|
|
252
253
|
legacy: true,
|
|
253
254
|
kinds: rootKindPatterns(result.kinds, resourceId),
|
|
254
|
-
|
|
255
|
-
|
|
255
|
+
axes: result.axes,
|
|
256
|
+
coverage: result.coverage,
|
|
256
257
|
message: "Authored under the previous model: these are kinds and axes, not resolved groups and dimensions. " +
|
|
257
258
|
"Counts and patterns were the profiler's own claims rather than a computed partition, and there is no " +
|
|
258
259
|
"unclassified sweep or quarantine accounting on a profile of that era.",
|
|
@@ -5,10 +5,24 @@
|
|
|
5
5
|
* conversation. List mode puts the running runs first and is paged. Targeted mode makes
|
|
6
6
|
* readiness explicit and can perform one bounded, abort-aware wait.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { QueryConfig } from "pg";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { PauseCause } from "../../contracts/chat-parts.js";
|
|
9
11
|
import type { CortexRunRow } from "../../state/schema.js";
|
|
10
|
-
type
|
|
11
|
-
|
|
12
|
+
import { type Tool } from "../define-tool.js";
|
|
13
|
+
type FormattedRun = {
|
|
14
|
+
runId: string;
|
|
15
|
+
workflowName: string;
|
|
16
|
+
status: CortexRunRow["status"];
|
|
17
|
+
startedAt: string;
|
|
18
|
+
completedAt: string | null;
|
|
19
|
+
planId: string | null;
|
|
20
|
+
synthesisPath: string | null;
|
|
21
|
+
synthesisStatus: CortexRunRow["synthesisStatus"];
|
|
22
|
+
error: string | null | undefined;
|
|
23
|
+
synthesisReason?: string;
|
|
24
|
+
};
|
|
25
|
+
type FormattedStep = {
|
|
12
26
|
stepId: string;
|
|
13
27
|
agentId: string;
|
|
14
28
|
wave: number;
|
|
@@ -20,11 +34,11 @@ interface FormattedStep {
|
|
|
20
34
|
lastErrorClass?: string | null;
|
|
21
35
|
finishReason?: string | null;
|
|
22
36
|
hitMaxSteps?: boolean | null;
|
|
23
|
-
}
|
|
24
|
-
|
|
37
|
+
};
|
|
38
|
+
type WaitMetadata = {
|
|
25
39
|
readonly requestedSeconds: number;
|
|
26
40
|
readonly cutoffReached: boolean;
|
|
27
|
-
}
|
|
41
|
+
};
|
|
28
42
|
type InspectRunOutput = {
|
|
29
43
|
runs: FormattedRun[];
|
|
30
44
|
total: number;
|
|
@@ -36,7 +50,20 @@ type InspectRunOutput = {
|
|
|
36
50
|
message: string;
|
|
37
51
|
wait?: WaitMetadata;
|
|
38
52
|
} | {
|
|
39
|
-
inspectionState: "
|
|
53
|
+
inspectionState: "paused";
|
|
54
|
+
message: string;
|
|
55
|
+
run: FormattedRun;
|
|
56
|
+
steps: FormattedStep[];
|
|
57
|
+
/** Each workflow of the run that waits: a step, or the synthesis. */
|
|
58
|
+
pauses: {
|
|
59
|
+
state: "retrying" | "paused";
|
|
60
|
+
cause: PauseCause;
|
|
61
|
+
attempt: number;
|
|
62
|
+
retryAt?: string;
|
|
63
|
+
}[];
|
|
64
|
+
wait?: WaitMetadata;
|
|
65
|
+
} | {
|
|
66
|
+
inspectionState: "in_progress" | "terminal";
|
|
40
67
|
message: string;
|
|
41
68
|
run: FormattedRun;
|
|
42
69
|
steps: FormattedStep[];
|
|
@@ -44,31 +71,31 @@ type InspectRunOutput = {
|
|
|
44
71
|
wait?: WaitMetadata;
|
|
45
72
|
selfWaitPrevented?: boolean;
|
|
46
73
|
};
|
|
47
|
-
|
|
74
|
+
type InspectRunClock = {
|
|
48
75
|
now(): number;
|
|
49
76
|
wait(ms: number, signal: AbortSignal): Promise<void>;
|
|
50
|
-
}
|
|
51
|
-
declare
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
77
|
+
};
|
|
78
|
+
declare const inputSchema: z.ZodObject<{
|
|
79
|
+
runId: z.ZodOptional<z.ZodString>;
|
|
80
|
+
page: z.ZodOptional<z.ZodNumber>;
|
|
81
|
+
pageSize: z.ZodOptional<z.ZodNumber>;
|
|
82
|
+
waitForTerminalSeconds: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
includeDiagnostics: z.ZodOptional<z.ZodBoolean>;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
/**
|
|
86
|
+
* The pool surface this tool reads: one query whose rows the state row parsers type. A computed test fake
|
|
87
|
+
* satisfies this shape directly, where the row-generic of `Querier` cannot be implemented by a fake that
|
|
88
|
+
* computes its rows.
|
|
89
|
+
*/
|
|
90
|
+
export type InspectRunQuerier = {
|
|
91
|
+
query(queryTextOrConfig: string | QueryConfig, values?: unknown[]): Promise<{
|
|
92
|
+
rows: Record<string, unknown>[];
|
|
93
|
+
rowCount: number | null;
|
|
94
|
+
}>;
|
|
62
95
|
};
|
|
63
96
|
/**
|
|
64
97
|
* Build the run-inspection tool. The optional clock is an internal testing
|
|
65
98
|
* seam for deterministic cutoff and transition coverage.
|
|
66
99
|
*/
|
|
67
|
-
export declare function createInspectRunTool(pool:
|
|
68
|
-
runId?: string | undefined;
|
|
69
|
-
page?: number | undefined;
|
|
70
|
-
pageSize?: number | undefined;
|
|
71
|
-
waitForTerminalSeconds?: number | undefined;
|
|
72
|
-
includeDiagnostics?: boolean | undefined;
|
|
73
|
-
}, InspectRunOutput>;
|
|
100
|
+
export declare function createInspectRunTool(pool: InspectRunQuerier, clock?: InspectRunClock): Tool<z.infer<typeof inputSchema>, InspectRunOutput>;
|
|
74
101
|
export {};
|
|
@@ -11,6 +11,7 @@ import { z } from "zod";
|
|
|
11
11
|
import { scopeResource } from "../../auth/types.js";
|
|
12
12
|
import { unwrapOrThrow } from "../../lib/result.js";
|
|
13
13
|
import { queryRun, queryRunsForInspection, queryStepsByRun } from "../../state/index.js";
|
|
14
|
+
import { queryPausesOfWork } from "../../state/paused-work.js";
|
|
14
15
|
import { SYNTHESIS_STEP_ID } from "../../workspace/paths.js";
|
|
15
16
|
import { defineTool } from "../define-tool.js";
|
|
16
17
|
const DEFAULT_PAGE_SIZE = 50;
|
|
@@ -20,10 +21,10 @@ const systemClock = {
|
|
|
20
21
|
wait: (ms, signal) => sleep(ms, undefined, { signal }),
|
|
21
22
|
};
|
|
22
23
|
function isTerminal(status) {
|
|
23
|
-
return status === "completed" || status === "partial" || status === "failed" || status === "canceled"
|
|
24
|
+
return status === "completed" || status === "partial" || status === "failed" || status === "canceled";
|
|
24
25
|
}
|
|
25
26
|
function formatRun(r, verbose, exposePaths = isTerminal(r.status)) {
|
|
26
|
-
|
|
27
|
+
const run = {
|
|
27
28
|
runId: r.runId,
|
|
28
29
|
workflowName: r.workflowName,
|
|
29
30
|
status: r.status,
|
|
@@ -32,30 +33,33 @@ function formatRun(r, verbose, exposePaths = isTerminal(r.status)) {
|
|
|
32
33
|
planId: r.planId,
|
|
33
34
|
synthesisPath: exposePaths && r.synthesisStatus === "produced" ? `runs/${r.runId}/synthesis.json` : null,
|
|
34
35
|
synthesisStatus: r.synthesisStatus,
|
|
35
|
-
|
|
36
|
-
...(verbose ? { error: r.error } : {}),
|
|
36
|
+
error: verbose ? (r.error ?? null) : undefined,
|
|
37
37
|
};
|
|
38
|
+
if (r.synthesisReason !== null)
|
|
39
|
+
return { ...run, synthesisReason: r.synthesisReason };
|
|
40
|
+
return run;
|
|
38
41
|
}
|
|
39
42
|
function formatSteps(runId, stepRows, verbose, exposePaths) {
|
|
40
|
-
return stepRows.map((s) =>
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
43
|
+
return stepRows.map((s) => {
|
|
44
|
+
const step = {
|
|
45
|
+
stepId: s.stepId,
|
|
46
|
+
agentId: s.agentId,
|
|
47
|
+
wave: s.wave,
|
|
48
|
+
status: s.status,
|
|
49
|
+
};
|
|
50
|
+
if (exposePaths && s.status !== "pending" && s.status !== "skipped" && s.stepId !== SYNTHESIS_STEP_ID) {
|
|
51
|
+
step.summaryPath = `runs/${runId}/${s.stepId}/output/summary.md`;
|
|
52
|
+
}
|
|
53
|
+
if (verbose) {
|
|
54
|
+
step.durationMs = s.durationMs;
|
|
55
|
+
step.error = s.error;
|
|
56
|
+
step.attempts = s.attempts;
|
|
57
|
+
step.lastErrorClass = s.lastErrorClass;
|
|
58
|
+
step.finishReason = s.finishReason;
|
|
59
|
+
step.hitMaxSteps = s.hitMaxSteps;
|
|
60
|
+
}
|
|
61
|
+
return step;
|
|
62
|
+
});
|
|
59
63
|
}
|
|
60
64
|
const inputSchema = z
|
|
61
65
|
.object({
|
|
@@ -77,14 +81,14 @@ const inputSchema = z
|
|
|
77
81
|
.superRefine((input, refinement) => {
|
|
78
82
|
if (input.runId && (input.page !== undefined || input.pageSize !== undefined)) {
|
|
79
83
|
refinement.addIssue({
|
|
80
|
-
code:
|
|
84
|
+
code: "custom",
|
|
81
85
|
message: "page and pageSize are valid only when runId is omitted",
|
|
82
86
|
path: input.page !== undefined ? ["page"] : ["pageSize"],
|
|
83
87
|
});
|
|
84
88
|
}
|
|
85
89
|
if (!input.runId && input.waitForTerminalSeconds !== undefined) {
|
|
86
90
|
refinement.addIssue({
|
|
87
|
-
code:
|
|
91
|
+
code: "custom",
|
|
88
92
|
message: "waitForTerminalSeconds requires runId",
|
|
89
93
|
path: ["waitForTerminalSeconds"],
|
|
90
94
|
});
|
|
@@ -99,9 +103,9 @@ export function createInspectRunTool(pool, clock = systemClock) {
|
|
|
99
103
|
id: "inspect_run",
|
|
100
104
|
description: "Inspect workflow runs for this analysis. A run never posts its completion into the conversation; this tool is how you read it. " +
|
|
101
105
|
"Without a runId, returns a paged list (running runs first, then each other run) with total and hasMore. " +
|
|
102
|
-
"With a runId, returns the run, its steps, and an inspectionState: not_found; in_progress;
|
|
106
|
+
"With a runId, returns the run, its steps, and an inspectionState: not_found; in_progress; paused (a step waits until the user resumes or stops the run, and pauses gives each cause); " +
|
|
103
107
|
"or terminal (run.status completed, partial, failed, or canceled). " +
|
|
104
|
-
"Output paths appear only on a
|
|
108
|
+
"Output paths appear only on a terminal run: run.synthesisPath when synthesisStatus is produced, and the summaryPath of each step that ran. " +
|
|
105
109
|
"For a user-directed check, waitForTerminalSeconds can wait once for 1-30 seconds; if the cutoff returns in_progress, stop polling for that turn. " +
|
|
106
110
|
"A wait on the run that the caller itself runs inside returns at once with selfWaitPrevented. " +
|
|
107
111
|
"Default response is lightweight — pass includeDiagnostics:true to add error/duration/retry telemetry.",
|
|
@@ -132,14 +136,17 @@ export function createInspectRunTool(pool, clock = systemClock) {
|
|
|
132
136
|
return ok({
|
|
133
137
|
inspectionState: "not_found",
|
|
134
138
|
message: `Run ${input.runId} was not found in this analysis.`,
|
|
135
|
-
|
|
139
|
+
wait: waitSeconds === undefined ? undefined : { requestedSeconds: waitSeconds, cutoffReached: false },
|
|
136
140
|
});
|
|
137
141
|
}
|
|
138
142
|
const selfWait = waitSeconds !== undefined && ctx.session.runFrame?.runId === input.runId;
|
|
143
|
+
const runId = input.runId;
|
|
144
|
+
const pausesOf = async (status) => status === "running" ? unwrapOrThrow(await queryPausesOfWork(pool, resourceId, runId)) : [];
|
|
145
|
+
let pauses = await pausesOf(run.status);
|
|
139
146
|
let cutoffReached = false;
|
|
140
|
-
if (waitSeconds !== undefined && run.status === "running" && !selfWait) {
|
|
147
|
+
if (waitSeconds !== undefined && run.status === "running" && pauses.length === 0 && !selfWait) {
|
|
141
148
|
const deadline = clock.now() + waitSeconds * 1_000;
|
|
142
|
-
while (run.status === "running") {
|
|
149
|
+
while (run.status === "running" && pauses.length === 0) {
|
|
143
150
|
const remaining = deadline - clock.now();
|
|
144
151
|
if (remaining <= 0) {
|
|
145
152
|
cutoffReached = true;
|
|
@@ -154,12 +161,24 @@ export function createInspectRunTool(pool, clock = systemClock) {
|
|
|
154
161
|
wait: { requestedSeconds: waitSeconds, cutoffReached: false },
|
|
155
162
|
});
|
|
156
163
|
}
|
|
164
|
+
pauses = await pausesOf(run.status);
|
|
157
165
|
}
|
|
158
166
|
}
|
|
159
167
|
const terminal = isTerminal(run.status);
|
|
160
168
|
const stepRows = unwrapOrThrow(await queryStepsByRun(pool, input.runId));
|
|
161
169
|
const steps = formatSteps(input.runId, stepRows, verbose, terminal);
|
|
162
170
|
const wait = waitSeconds === undefined ? {} : { wait: { requestedSeconds: waitSeconds, cutoffReached } };
|
|
171
|
+
if (run.status === "running" && pauses.length > 0) {
|
|
172
|
+
return ok({
|
|
173
|
+
inspectionState: "paused",
|
|
174
|
+
message: "This run waits in a pause, and results are not ready. Tell the user the cause of each pause. " +
|
|
175
|
+
"The user can resume the run or stop it. A pause in the state retrying also sends its request again at retryAt.",
|
|
176
|
+
run: formatRun(run, verbose, false),
|
|
177
|
+
steps,
|
|
178
|
+
pauses: pauses.map((pause) => ({ state: pause.state, cause: pause.cause, attempt: pause.attempt, retryAt: pause.retryAt })),
|
|
179
|
+
...wait,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
163
182
|
if (run.status === "running") {
|
|
164
183
|
const message = selfWait
|
|
165
184
|
? "This run is still in progress. Results are not ready, and the enclosing workflow cannot finish while its current step waits for itself."
|
|
@@ -173,16 +192,7 @@ export function createInspectRunTool(pool, clock = systemClock) {
|
|
|
173
192
|
steps,
|
|
174
193
|
elapsedMs: Math.max(0, clock.now() - Date.parse(run.startedAt)),
|
|
175
194
|
...wait,
|
|
176
|
-
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
if (run.status === "suspended_insufficient_funds") {
|
|
180
|
-
return ok({
|
|
181
|
-
inspectionState: "suspended",
|
|
182
|
-
message: "The host suspended this run. The run does not progress. A new run of the plan can start.",
|
|
183
|
-
run: formatRun(run, verbose, true),
|
|
184
|
-
steps,
|
|
185
|
-
...wait,
|
|
195
|
+
selfWaitPrevented: selfWait ? true : undefined,
|
|
186
196
|
});
|
|
187
197
|
}
|
|
188
198
|
return ok({
|
|
@@ -3,17 +3,18 @@
|
|
|
3
3
|
*
|
|
4
4
|
* The conversation agent delegates batch literature/biology research by
|
|
5
5
|
* calling this tool. `execute` derives a child `Session` (`forSubAgent`)
|
|
6
|
-
* and runs `
|
|
6
|
+
* and runs `runLoop` over a focused literature-reviewer agent: a research
|
|
7
7
|
* brief in, a structured evidence report out. The child's transcript is
|
|
8
8
|
* ephemeral — it lives only for this call and is never persisted (see the harness-thread-store spec).
|
|
9
9
|
*
|
|
10
10
|
* This is the whole of sub-agent delegation in the harness. There is no
|
|
11
11
|
* `agents: {}` config, no `messageFilter`, no `stripParentToolParts`: the
|
|
12
12
|
* child cannot see the parent's tool history because it is simply handed
|
|
13
|
-
* none — only the brief.
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* none — only the brief. Inside the body of a workflow the call starts a
|
|
14
|
+
* child workflow (`loop/sub-agent.ts`), thus each call of the child is a step
|
|
15
|
+
* of its own.
|
|
16
16
|
*/
|
|
17
|
+
import type { SubAgentRegistrar } from "../../loop/sub-agent.js";
|
|
17
18
|
import type { ToolOutputStore } from "../../loop/tool-output.js";
|
|
18
19
|
import { type ChatProvider } from "../../providers/types.js";
|
|
19
20
|
import { type Tool } from "../define-tool.js";
|
|
@@ -21,7 +22,7 @@ import { type BioToolKeys } from "../bio/keys.js";
|
|
|
21
22
|
import type { Logger } from "../../lib/logger.js";
|
|
22
23
|
import type { UsageRecorder } from "../../billing/usage-recorder.js";
|
|
23
24
|
import type { CitationResolver } from "../../citations/types.js";
|
|
24
|
-
export
|
|
25
|
+
export type LiteratureReviewerDeps = {
|
|
25
26
|
/** Operational logging seam; omitted falls back to no-op. */
|
|
26
27
|
readonly logger?: Logger;
|
|
27
28
|
/** The LLM seam the child loop runs on. */
|
|
@@ -36,6 +37,6 @@ export interface LiteratureReviewerDeps {
|
|
|
36
37
|
readonly toolOutputStore?: ToolOutputStore;
|
|
37
38
|
/** Shared bibliographic verification service; all agent surfaces share its pacing/cache. */
|
|
38
39
|
readonly citationResolver: CitationResolver;
|
|
39
|
-
}
|
|
40
|
+
};
|
|
40
41
|
/** Build the `literature_reviewer` delegation tool bound to its provider. */
|
|
41
|
-
export declare function createLiteratureReviewerTool(deps: LiteratureReviewerDeps): Tool;
|
|
42
|
+
export declare function createLiteratureReviewerTool(deps: LiteratureReviewerDeps, registerSubAgent: SubAgentRegistrar): Tool;
|