@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
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @inflexa-ai/harness
|
|
2
2
|
|
|
3
|
-
`@inflexa-ai/harness` is the host-agnostic agent harness — the
|
|
3
|
+
`@inflexa-ai/harness` is the host-agnostic agent harness — the agent loop on the AI SDK, durable workflows, the sandbox submit and poll protocol, and the provider interfaces. It is a **library, not a server**: it ships everything that does not depend on a particular host, and an embedder supplies the composition root, transport, and any non-local seam realizations.
|
|
4
4
|
|
|
5
5
|
## Run locally
|
|
6
6
|
|
|
@@ -42,11 +42,14 @@ import {
|
|
|
42
42
|
createNoopLogger, // Logger — discards (the fallback when none is wired)
|
|
43
43
|
defaultErrorFields, // the shipped `Logger.errorFields` mapping
|
|
44
44
|
defineTool,
|
|
45
|
-
runAgent,
|
|
46
45
|
makeLocalAuth,
|
|
47
46
|
} from "@inflexa-ai/harness";
|
|
48
47
|
```
|
|
49
48
|
|
|
49
|
+
No embedder drives the agent loop. A host opens a chat turn with the `open` of `CoreRuntime.chatTurns`, and it reads the frames of the turn with `read`. The harness runs the turn as a durable workflow, and it makes the model, the usage recorder, and the approval binding of the turn from its runtime. A test of an embedder gets a scripted model (`scriptedModel`) and the chat turns of a runtime with no workflow engine (`inProcessChatTurns`) from the test kit `@inflexa-ai/harness/testing`.
|
|
50
|
+
|
|
51
|
+
A failure that a person or time can repair pauses a turn, a run, or a data profile, and the work does not fail. Examples are a billing refusal of the host, a provider outage, and a missing credential. A host lists the active work of an analysis with `CoreRuntime.work`. It stops a work in each state, and it resumes or holds paused work.
|
|
52
|
+
|
|
50
53
|
`assembleCoreRuntime` is the single composition point: it registers the durable workflows and builds the conversation agent over them. The harness declares **four capability seams** an embedder wires — `RunAuthorizer`, `ArtifactRegistry`, `RunCharge`, `UsageRecorder` — plus the **shared `RunLauncher`** (one host-neutral realization, `createDbosRunLauncher`). Local, dependency-free realizations of all four ship from the barrel; an embedder constructs them (or its own) and passes them in. The harness only ever sees the interface. Two optional hooks go into the component that uses their values: `resolveRequestHeaders` into each provider, and `resolveSandboxLabels` into the sandbox client config.
|
|
51
54
|
|
|
52
55
|
## Logging
|
|
@@ -96,7 +99,7 @@ function pinoAsHarnessLogger(p: pino.Logger, names: readonly string[] = []): Log
|
|
|
96
99
|
|
|
97
100
|
## How it executes
|
|
98
101
|
|
|
99
|
-
|
|
102
|
+
A chat turn is a **durable workflow**. The harness stores the opening, each round, and the outcome of the turn, and a recovery continues a turn from its checkpoints. The harness ships no HTTP layer, thus the host owns the route. Compute-heavy work runs as durable workflows too — `executeAnalysis` starts a child workflow per plan step once its dependencies have completed, and each step drives a sandbox agent inside a container. The same `runLoop` primitive runs in each workflow, and each model call and each tool call is a durable step.
|
|
100
103
|
|
|
101
104
|
The sandbox protocol is submit-then-poll, which lets a long run survive a host restart. Each exec runs inside one durable step: the host submits the command with `POST /exec`, and then it polls `GET /exec/{execId}?since={cursor}` until the result. A recovered step submits the same exec id again, and the sandbox gives the existing record, thus the command does not run again. The sandbox initiates nothing and has no egress, and confinement keeps each other peer away from its exec port. Refer to the [`harness-sandbox-exec`](./openspec/specs/harness-sandbox-exec/) spec.
|
|
102
105
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* (see the harness-durable-runtime spec): it receives the shared deps once — `ChatProvider`, `Pool`,
|
|
6
6
|
* `EmbeddingProvider`, the model id — and hands each tool exactly what it
|
|
7
7
|
* needs. Pure leaf tools take nothing; dependency-bearing tools get their
|
|
8
|
-
* factory inputs. By the time `
|
|
8
|
+
* factory inputs. By the time `runLoop` sees a tool it is fully dep-bound;
|
|
9
9
|
* the wiring lines below *are* the dependency graph, made visible.
|
|
10
10
|
*
|
|
11
11
|
* The system prompt is static composition — SOUL kernel + SOUL conversational
|
|
@@ -31,12 +31,14 @@ import type { ChromeConfig } from "../lib/chrome.js";
|
|
|
31
31
|
import type { AcquireEyes } from "../lib/eyes.js";
|
|
32
32
|
import type { ToolOutputStore } from "../loop/tool-output.js";
|
|
33
33
|
import type { AgentDefinition } from "../loop/types.js";
|
|
34
|
+
import type { SubAgentRegistrar } from "../loop/sub-agent.js";
|
|
34
35
|
import type { ChatProvider, EmbeddingProvider } from "../providers/types.js";
|
|
35
36
|
import type { Tool } from "../tools/define-tool.js";
|
|
36
37
|
import type { ExtendAnalysisFarm } from "../sandbox/types.js";
|
|
37
38
|
import type { WorkspaceFilesystem } from "../workspace/filesystem.js";
|
|
38
39
|
import type { ResolveWorkspaceRoot } from "../workspace/paths.js";
|
|
39
40
|
import { type BioToolKeys } from "../tools/bio/keys.js";
|
|
41
|
+
import type { KnowledgeClient } from "../tools/knowledge/index.js";
|
|
40
42
|
import type { EnvironmentStorePaths } from "../config/environment-stores.js";
|
|
41
43
|
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
42
44
|
import type { RunLauncher } from "../execution/run-launcher.js";
|
|
@@ -44,6 +46,7 @@ import type { ProvenanceSeam } from "../provenance/seam.js";
|
|
|
44
46
|
import type { Logger } from "../lib/logger.js";
|
|
45
47
|
import type { UsageRecorder } from "../billing/usage-recorder.js";
|
|
46
48
|
import type { CitationResolver } from "../citations/types.js";
|
|
49
|
+
import { type WebSearchEngine } from "../tools/research/web-search.js";
|
|
47
50
|
/** Canonical agent id — the single source of truth. */
|
|
48
51
|
export declare const CONVERSATION_AGENT_ID: "conversation-agent";
|
|
49
52
|
/**
|
|
@@ -52,7 +55,7 @@ export declare const CONVERSATION_AGENT_ID: "conversation-agent";
|
|
|
52
55
|
* what is importable that a sandbox agent has — read host-side, so answering
|
|
53
56
|
* "does this environment have X?" costs a lookup rather than a container.
|
|
54
57
|
*/
|
|
55
|
-
export
|
|
58
|
+
export type ConversationAgentDeps = EnvironmentStorePaths & {
|
|
56
59
|
/** Operational logging seam; omitted falls back to no-op. */
|
|
57
60
|
readonly logger?: Logger;
|
|
58
61
|
/**
|
|
@@ -63,10 +66,17 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
|
|
|
63
66
|
readonly usageRecorder?: UsageRecorder;
|
|
64
67
|
/** Adds `read_tool_output`, and each loop-driving tool gives the same store to its sub-agent. */
|
|
65
68
|
readonly toolOutputStore?: ToolOutputStore;
|
|
69
|
+
/** The web-search engine the embedder injected; set, `web_search` attaches, absent it does not. `web_fetch` attaches either way. */
|
|
70
|
+
readonly webSearch?: WebSearchEngine;
|
|
66
71
|
/** Shared host-side bibliographic verification service. */
|
|
67
72
|
readonly citationResolver: CitationResolver;
|
|
68
73
|
/** The LLM seam every loop-driving tool runs its sub-agent on. */
|
|
69
74
|
readonly provider: ChatProvider;
|
|
75
|
+
/**
|
|
76
|
+
* Makes the function of each sub-agent of the agent: the planner and the analogy reporter. The assembly gives
|
|
77
|
+
* `registerSubAgent`, thus a sub-agent of a turn workflow runs as a child workflow. A test gives `inProcessSubAgent`.
|
|
78
|
+
*/
|
|
79
|
+
readonly registerSubAgent: SubAgentRegistrar;
|
|
70
80
|
/** Postgres pool — plan persistence, run inspection, workspace index, working memory. */
|
|
71
81
|
readonly pool: Pool;
|
|
72
82
|
/** Embedding seam — workspace semantic search. */
|
|
@@ -107,6 +117,12 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
|
|
|
107
117
|
readonly runLauncher: RunLauncher;
|
|
108
118
|
/** API keys for the external bio/chem data sources. */
|
|
109
119
|
readonly bioKeys: BioToolKeys;
|
|
120
|
+
/**
|
|
121
|
+
* The knowledge service client, for the planner that `generate_plan` drives.
|
|
122
|
+
* Absent, the planner attaches no knowledge tool. The conversation agent
|
|
123
|
+
* itself gets `knowledge_recommend` through `hostTools`, from the embedder.
|
|
124
|
+
*/
|
|
125
|
+
readonly knowledge?: KnowledgeClient;
|
|
110
126
|
/** Skills root. No tool of the roster reads it. */
|
|
111
127
|
readonly skillsDir: string;
|
|
112
128
|
/** Headless-Chrome config for report snapshot/preview rendering. */
|
|
@@ -147,6 +163,6 @@ export interface ConversationAgentDeps extends EnvironmentStorePaths {
|
|
|
147
163
|
* it, the link pass returns at once.
|
|
148
164
|
*/
|
|
149
165
|
readonly extendAnalysisFarm?: ExtendAnalysisFarm;
|
|
150
|
-
}
|
|
166
|
+
};
|
|
151
167
|
/** Build the conversation `AgentDefinition` with every tool fully dep-bound. */
|
|
152
168
|
export declare function createConversationAgent(deps: ConversationAgentDeps): AgentDefinition;
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* (see the harness-durable-runtime spec): it receives the shared deps once — `ChatProvider`, `Pool`,
|
|
6
6
|
* `EmbeddingProvider`, the model id — and hands each tool exactly what it
|
|
7
7
|
* needs. Pure leaf tools take nothing; dependency-bearing tools get their
|
|
8
|
-
* factory inputs. By the time `
|
|
8
|
+
* factory inputs. By the time `runLoop` sees a tool it is fully dep-bound;
|
|
9
9
|
* the wiring lines below *are* the dependency graph, made visible.
|
|
10
10
|
*
|
|
11
11
|
* The system prompt is static composition — SOUL kernel + SOUL conversational
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import { createReadToolOutputTool } from "../tools/read-tool-output.js";
|
|
27
27
|
import { createWorkingMemory } from "../memory/working-memory.js";
|
|
28
|
+
import { createEditIntentStore } from "../state/edit-intents.js";
|
|
28
29
|
import { conversationPrompt } from "../prompts/conversation.js";
|
|
29
30
|
import { composeSystemPrompt } from "./system-prompt.js";
|
|
30
31
|
// Bio-lookup leaf tools (pure — no dependencies).
|
|
@@ -36,10 +37,13 @@ import { createEditFileTool, createFileStatTool, createGrepTool, createListFiles
|
|
|
36
37
|
import { showUserTool } from "../tools/display/index.js";
|
|
37
38
|
import { createUpdateWorkingMemoryTool } from "../tools/memory/index.js";
|
|
38
39
|
import { createListAvailablePackagesTool } from "../tools/sandbox/list-available-packages.js";
|
|
40
|
+
import { createInspectCapabilityDataTool } from "../tools/capability-data.js";
|
|
39
41
|
import { createListAvailableRefsTool } from "../tools/sandbox/list-available-refs.js";
|
|
40
42
|
import { createExecuteAnalysisTool } from "../tools/execute-analysis.js";
|
|
41
43
|
import { createStartReportSessionTool } from "../tools/start-report-session.js";
|
|
42
44
|
import { createResolveCitationTool } from "../tools/research/resolve-citation.js";
|
|
45
|
+
import { createWebFetchTool } from "../tools/research/web-fetch.js";
|
|
46
|
+
import { createWebSearchTool } from "../tools/research/web-search.js";
|
|
43
47
|
/** Canonical agent id — the single source of truth. */
|
|
44
48
|
export const CONVERSATION_AGENT_ID = "conversation-agent";
|
|
45
49
|
/** Runaway guard — heavy tool-driving turns need generous headroom. */
|
|
@@ -48,18 +52,18 @@ const CONVERSATION_MAX_ITERATIONS = 200;
|
|
|
48
52
|
const CONVERSATION_COMPACTION = { turnStartBudget: 150_000, budget: 200_000 };
|
|
49
53
|
/** Build the conversation `AgentDefinition` with every tool fully dep-bound. */
|
|
50
54
|
export function createConversationAgent(deps) {
|
|
51
|
-
const { provider, pool, embedding, workspaceFs, model, utilityProvider, utilityModel, executeAnalysisWorkflow, runAuthorizer, runLauncher, bioKeys, chrome, resourcePolicy, hostTools, refStorePath, farmLockFile, imagePackagesFile, readPoolInventory, usageRecorder, toolOutputStore, citationResolver, } = deps;
|
|
55
|
+
const { provider, pool, embedding, workspaceFs, model, utilityProvider, utilityModel, executeAnalysisWorkflow, runAuthorizer, runLauncher, bioKeys, chrome, resourcePolicy, hostTools, refStorePath, farmLockFile, imagePackagesFile, readPoolInventory, usageRecorder, toolOutputStore, citationResolver, webSearch, } = deps;
|
|
52
56
|
const workingMemory = createWorkingMemory(pool);
|
|
53
57
|
const ncbi = createNcbiTools(bioKeys);
|
|
54
|
-
const chemDb = createChemDbTools(bioKeys, {
|
|
58
|
+
const chemDb = createChemDbTools(bioKeys, { logger: deps.logger });
|
|
55
59
|
const amass = createAmassTools(bioKeys);
|
|
56
60
|
// The write path of this agent: coordinates resolve per call from the
|
|
57
61
|
// session's analysis scope, the write prefix is the analysis root, and
|
|
58
62
|
// every successful write emits a `write-file` provenance session event.
|
|
59
63
|
const mutator = createSessionWorkspaceMutator({
|
|
60
64
|
resolveWorkspaceRoot: deps.resolveWorkspaceRoot,
|
|
61
|
-
|
|
62
|
-
|
|
65
|
+
provenance: deps.provenance,
|
|
66
|
+
logger: deps.logger,
|
|
63
67
|
});
|
|
64
68
|
const tools = [
|
|
65
69
|
// Identifier resolution — the ENSG most other bio tools key off, and the
|
|
@@ -79,8 +83,13 @@ export function createConversationAgent(deps) {
|
|
|
79
83
|
createResolveCitationTool(citationResolver),
|
|
80
84
|
// Literature outside PubMed. A question about a method, a model or a
|
|
81
85
|
// preprint has no MEDLINE record, thus PubMed alone cannot answer it.
|
|
82
|
-
createSearchSemanticScholarTool({
|
|
86
|
+
createSearchSemanticScholarTool({ apiKey: bioKeys.semanticScholar }),
|
|
83
87
|
searchArxivTool,
|
|
88
|
+
// The web step of research — the injected web-search engine (the CLI runs
|
|
89
|
+
// SearXNG and binds its realization), then the guarded page fetch that
|
|
90
|
+
// reads what the search found.
|
|
91
|
+
...(webSearch ? [createWebSearchTool({ engine: webSearch })] : []),
|
|
92
|
+
createWebFetchTool({ toolOutputStore }),
|
|
84
93
|
// ChEMBL (compounds / drug / mechanism / bioactivity / targets behind one action).
|
|
85
94
|
chemblTool,
|
|
86
95
|
// PubChem (compound / crossrefs / assays behind one action).
|
|
@@ -108,16 +117,21 @@ export function createConversationAgent(deps) {
|
|
|
108
117
|
// and a host that does asks the user to approve the download. Deciding that
|
|
109
118
|
// blind is how a user gets asked to download something already installed, or
|
|
110
119
|
// told nothing is missing when it is; this is the only tool that can tell.
|
|
111
|
-
createListAvailableRefsTool({
|
|
120
|
+
createListAvailableRefsTool({ refStorePath }),
|
|
121
|
+
// Which datasets a specialist capability cannot run without. `list_available_refs` answers
|
|
122
|
+
// what the store HOLDS; this answers what a capability WANTS, which no prompt may name and
|
|
123
|
+
// only a skill otherwise records — and a skill is read by a step agent, not here. Without
|
|
124
|
+
// it this agent meets an absent source as a dead end and designs around it.
|
|
125
|
+
createInspectCapabilityDataTool({ refStorePath }),
|
|
112
126
|
// What the STORE holds, pool-scope where the embedder binds the reader:
|
|
113
127
|
// the ask flow of this agent marks the packages the pool does not hold,
|
|
114
128
|
// and the farm of a new analysis is empty — a farm view here would read
|
|
115
129
|
// every pool package as absent. The farm-lock fallback keeps a host
|
|
116
130
|
// with no pool reader on the old answer.
|
|
117
131
|
createListAvailablePackagesTool({
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
132
|
+
farmLockFile,
|
|
133
|
+
imagePackagesFile,
|
|
134
|
+
readPoolInventory,
|
|
121
135
|
}),
|
|
122
136
|
// Execution.
|
|
123
137
|
createInspectRunTool(pool),
|
|
@@ -128,14 +142,15 @@ export function createConversationAgent(deps) {
|
|
|
128
142
|
pool,
|
|
129
143
|
resourcePolicy,
|
|
130
144
|
usageRecorder,
|
|
131
|
-
|
|
145
|
+
toolOutputStore,
|
|
132
146
|
bioKeys,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
147
|
+
knowledge: deps.knowledge,
|
|
148
|
+
refStorePath,
|
|
149
|
+
farmLockFile,
|
|
150
|
+
imagePackagesFile,
|
|
151
|
+
readPoolInventory,
|
|
152
|
+
logger: deps.logger,
|
|
153
|
+
}, deps.registerSubAgent),
|
|
139
154
|
createExecuteAnalysisTool({
|
|
140
155
|
pool,
|
|
141
156
|
executeAnalysisWorkflow,
|
|
@@ -144,12 +159,16 @@ export function createConversationAgent(deps) {
|
|
|
144
159
|
resourcePolicy,
|
|
145
160
|
utilityProvider,
|
|
146
161
|
utilityModel,
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
162
|
+
farmLockFile,
|
|
163
|
+
imagePackagesFile,
|
|
164
|
+
readPoolInventory,
|
|
165
|
+
// The pre-launch pass resolves the declared reference data of a capability against the
|
|
166
|
+
// store. Without this path it would read the CONTAINER path, which no host holds, and
|
|
167
|
+
// refuse every launch of a plan that declares one.
|
|
168
|
+
refStorePath,
|
|
169
|
+
extendAnalysisFarm: deps.extendAnalysisFarm,
|
|
170
|
+
logger: deps.logger,
|
|
171
|
+
usageRecorder,
|
|
153
172
|
}),
|
|
154
173
|
// The one report path. The tool starts a report thread as a child of the
|
|
155
174
|
// conversation, and the user composes the report there with the Report
|
|
@@ -158,9 +177,9 @@ export function createConversationAgent(deps) {
|
|
|
158
177
|
pool,
|
|
159
178
|
chrome,
|
|
160
179
|
anchorSession: deps.anchorReportSession,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
180
|
+
eyes: deps.eyes,
|
|
181
|
+
provenance: deps.provenance,
|
|
182
|
+
logger: deps.logger,
|
|
164
183
|
}),
|
|
165
184
|
// Display.
|
|
166
185
|
showUserTool,
|
|
@@ -172,9 +191,9 @@ export function createConversationAgent(deps) {
|
|
|
172
191
|
model,
|
|
173
192
|
bioKeys,
|
|
174
193
|
usageRecorder,
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
}),
|
|
194
|
+
toolOutputStore,
|
|
195
|
+
logger: deps.logger,
|
|
196
|
+
}, deps.registerSubAgent),
|
|
178
197
|
// Workspace semantic search + raw read/grep over the read seam.
|
|
179
198
|
createWorkspaceSearchTool(pool, embedding),
|
|
180
199
|
createReadFileTool(workspaceFs),
|
|
@@ -188,7 +207,7 @@ export function createConversationAgent(deps) {
|
|
|
188
207
|
// a symlink escape stay refused. No sandbox is involved — the mutator
|
|
189
208
|
// writes host-side, exactly as it does for a sandbox agent.
|
|
190
209
|
createWriteFileTool({ mutator }),
|
|
191
|
-
createEditFileTool({ mutator, workspaceFilesystem: workspaceFs }),
|
|
210
|
+
createEditFileTool({ mutator, workspaceFilesystem: workspaceFs, intents: createEditIntentStore(pool) }),
|
|
192
211
|
// Working memory.
|
|
193
212
|
createUpdateWorkingMemoryTool(workingMemory, pool),
|
|
194
213
|
// Host-contributed tools ride the same context and dispatch path as the
|
|
@@ -23,13 +23,12 @@
|
|
|
23
23
|
* across threads, and the provider cache reuses it.
|
|
24
24
|
*/
|
|
25
25
|
import type { Pool } from "pg";
|
|
26
|
-
import type { AuthContext } from "../auth/types.js";
|
|
27
|
-
import type { RunAuthorizer } from "../execution/run-authorizer.js";
|
|
26
|
+
import type { AuthContext, Identity } from "../auth/types.js";
|
|
28
27
|
import type { ToolOutputStore } from "../loop/tool-output.js";
|
|
29
28
|
import type { AgentDefinition } from "../loop/types.js";
|
|
30
|
-
import type {
|
|
29
|
+
import type { SandboxClient } from "../sandbox/client.js";
|
|
31
30
|
import type { ReportSessionStateStore } from "../state/report-session-state.js";
|
|
32
|
-
import type { EmbeddingProvider } from "../providers/types.js";
|
|
31
|
+
import type { EmbeddingProvider, ProviderOptions } from "../providers/types.js";
|
|
33
32
|
import type { WorkspaceFilesystem } from "../workspace/filesystem.js";
|
|
34
33
|
import type { ResolveWorkspaceRoot } from "../workspace/paths.js";
|
|
35
34
|
import type { ChromeConfig } from "../lib/chrome.js";
|
|
@@ -43,13 +42,18 @@ import type { ProvenanceSeam } from "../provenance/seam.js";
|
|
|
43
42
|
import { type MakeSessionPagePublisher, type ResolvePageAsset, type ResolvePageUrl } from "../tools/report-session/index.js";
|
|
44
43
|
/** Canonical agent id -- distinct from the id of the old templating agent. */
|
|
45
44
|
export declare const REPORT_SESSION_AGENT_ID: "report-session";
|
|
45
|
+
/**
|
|
46
|
+
* One tool call for each reply. Each authoring tool edits the one draft of the thread, and the calls of
|
|
47
|
+
* one reply run at the same time, thus two edits in one round can land in either order.
|
|
48
|
+
*/
|
|
49
|
+
export declare const REPORT_SESSION_PROVIDER_OPTIONS: ProviderOptions;
|
|
46
50
|
/**
|
|
47
51
|
* The shared dependencies of the report agent. The gateway binds the per-session
|
|
48
52
|
* state to the thread, thus every tool that touches the state gets the same
|
|
49
53
|
* gateway. The resolver factory is optional, because a resolver realization can be
|
|
50
54
|
* absent, and the preview tool and the record tool degrade as data when it is.
|
|
51
55
|
*/
|
|
52
|
-
export
|
|
56
|
+
export type ReportSessionAgentDeps = {
|
|
53
57
|
/** Model id -- the provenance and metric label. The provider owns the wire model. */
|
|
54
58
|
readonly model: string;
|
|
55
59
|
/** Postgres pool -- workspace index, run inspection, and data-profile inspection. */
|
|
@@ -67,16 +71,11 @@ export interface ReportSessionAgentDeps {
|
|
|
67
71
|
/** Derivation ledger -- the derivation tool appends one record for each derived table. */
|
|
68
72
|
readonly derivations: Pick<ReportSessionStateStore, "appendDerivation">;
|
|
69
73
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*/
|
|
74
|
-
readonly runDerivation?: DeriveTableRunner;
|
|
75
|
-
/**
|
|
76
|
-
* Run-authorization seam -- the derivation tool authorizes the exec and revokes on every terminal path.
|
|
77
|
-
* Omitted, the tool derives nothing, the same as an absent sandbox client.
|
|
74
|
+
* Sandbox client -- the derivation tool runs one ephemeral container for each derived table, inside the
|
|
75
|
+
* step of its call. Omitted, the tool reports that the composition gives no sandbox, and it derives
|
|
76
|
+
* nothing.
|
|
78
77
|
*/
|
|
79
|
-
readonly
|
|
78
|
+
readonly sandboxClient?: SandboxClient;
|
|
80
79
|
/** Thread store -- the record tool reads the anchor of the report thread, and the preview tool names it. */
|
|
81
80
|
readonly threads: Pick<ThreadStore, "getThread" | "setAutoTitle">;
|
|
82
81
|
/** Headless-Chrome config -- the eyes tool opens the rendered page. */
|
|
@@ -93,6 +92,7 @@ export interface ReportSessionAgentDeps {
|
|
|
93
92
|
*/
|
|
94
93
|
readonly makeResolver?: (scope: {
|
|
95
94
|
analysisId: string;
|
|
95
|
+
identity: Identity;
|
|
96
96
|
auth: AuthContext;
|
|
97
97
|
}) => Promise<ReferenceResolver>;
|
|
98
98
|
/**
|
|
@@ -128,6 +128,6 @@ export interface ReportSessionAgentDeps {
|
|
|
128
128
|
readonly logger?: Logger;
|
|
129
129
|
/** Adds `read_tool_output`. The loop of a report turn must keep its texts in the same store. */
|
|
130
130
|
readonly toolOutputStore?: ToolOutputStore;
|
|
131
|
-
}
|
|
131
|
+
};
|
|
132
132
|
/** Build the report `AgentDefinition` with every tool bound to its deps. */
|
|
133
133
|
export declare function createReportSessionAgent(deps: ReportSessionAgentDeps): AgentDefinition;
|
|
@@ -39,14 +39,22 @@ export const REPORT_SESSION_AGENT_ID = "report-session";
|
|
|
39
39
|
const REPORT_SESSION_MAX_ITERATIONS = 200;
|
|
40
40
|
/** A session is one long turn that holds page captures, thus it compacts only during the turn, at a higher budget. */
|
|
41
41
|
const REPORT_SESSION_COMPACTION = { budget: 250_000 };
|
|
42
|
+
/**
|
|
43
|
+
* One tool call for each reply. Each authoring tool edits the one draft of the thread, and the calls of
|
|
44
|
+
* one reply run at the same time, thus two edits in one round can land in either order.
|
|
45
|
+
*/
|
|
46
|
+
export const REPORT_SESSION_PROVIDER_OPTIONS = {
|
|
47
|
+
anthropic: { disableParallelToolUse: true },
|
|
48
|
+
openai: { parallelToolCalls: false },
|
|
49
|
+
};
|
|
42
50
|
/** Build the report `AgentDefinition` with every tool bound to its deps. */
|
|
43
51
|
export function createReportSessionAgent(deps) {
|
|
44
52
|
const { model, pool, embedding, workspaceFs, gateway, resolveWorkspaceRoot, store, threads, chrome, eyes, makeResolver, resolvePageAsset, logger } = deps;
|
|
45
|
-
const { derivations,
|
|
53
|
+
const { derivations, sandboxClient, makeSessionPages, resolvePageUrl, provenance } = deps;
|
|
46
54
|
// The seam rides into each tool that lands an act of the session, thus the composition binds it one
|
|
47
55
|
// time and no tool reads a second source.
|
|
48
56
|
const observation = provenance ? { provenance } : {};
|
|
49
|
-
const authoring = createReportAuthoringTools(gateway, { ...observation,
|
|
57
|
+
const authoring = createReportAuthoringTools(gateway, { ...observation, logger });
|
|
50
58
|
const tools = [
|
|
51
59
|
// The read surface toward the analysis. It roams the tree read-only.
|
|
52
60
|
createReadFileTool(workspaceFs),
|
|
@@ -72,7 +80,7 @@ export function createReportSessionAgent(deps) {
|
|
|
72
80
|
createListPinnedArtifactsTool({
|
|
73
81
|
gateway,
|
|
74
82
|
resolveWorkspaceRoot,
|
|
75
|
-
|
|
83
|
+
logger,
|
|
76
84
|
}),
|
|
77
85
|
// The derivation tool. It reshapes the pinned evidence into one table under the
|
|
78
86
|
// session directory, on the sandbox rails of the value tier.
|
|
@@ -80,32 +88,31 @@ export function createReportSessionAgent(deps) {
|
|
|
80
88
|
gateway,
|
|
81
89
|
resolveWorkspaceRoot,
|
|
82
90
|
derivations,
|
|
83
|
-
|
|
84
|
-
...(runAuthorizer ? { runAuthorizer } : {}),
|
|
91
|
+
sandboxClient,
|
|
85
92
|
...observation,
|
|
86
|
-
|
|
93
|
+
logger,
|
|
87
94
|
}),
|
|
88
95
|
// The render-and-preview tool. It resolves the page root per call.
|
|
89
96
|
createPreviewReportTool({
|
|
90
97
|
gateway,
|
|
91
98
|
resolveWorkspaceRoot,
|
|
92
99
|
threads,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
100
|
+
makeResolver,
|
|
101
|
+
resolvePageAsset,
|
|
102
|
+
makeSessionPages,
|
|
96
103
|
// The preview is the one site that carries the document into the page, thus the read member
|
|
97
104
|
// reaches this tool alone.
|
|
98
105
|
...observation,
|
|
99
|
-
|
|
106
|
+
logger,
|
|
100
107
|
}),
|
|
101
108
|
// The eyes tool. It opens the rendered page in headless Chrome.
|
|
102
109
|
createExaminePageTool({
|
|
103
110
|
gateway,
|
|
104
111
|
resolveWorkspaceRoot,
|
|
105
112
|
chrome,
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
113
|
+
eyes,
|
|
114
|
+
resolvePageUrl,
|
|
115
|
+
logger,
|
|
109
116
|
}),
|
|
110
117
|
// The record tool. It gates the whole document, records one version, then prunes each
|
|
111
118
|
// derived table that the recorded document does not bind.
|
|
@@ -114,9 +121,9 @@ export function createReportSessionAgent(deps) {
|
|
|
114
121
|
store,
|
|
115
122
|
threads,
|
|
116
123
|
resolveWorkspaceRoot,
|
|
117
|
-
|
|
124
|
+
makeResolver,
|
|
118
125
|
...observation,
|
|
119
|
-
|
|
126
|
+
logger,
|
|
120
127
|
}),
|
|
121
128
|
];
|
|
122
129
|
return {
|
|
@@ -126,5 +133,6 @@ export function createReportSessionAgent(deps) {
|
|
|
126
133
|
tools,
|
|
127
134
|
maxIterations: REPORT_SESSION_MAX_ITERATIONS,
|
|
128
135
|
compaction: REPORT_SESSION_COMPACTION,
|
|
136
|
+
providerOptions: REPORT_SESSION_PROVIDER_OPTIONS,
|
|
129
137
|
};
|
|
130
138
|
}
|
|
@@ -26,6 +26,6 @@ export { SANDBOX_AGENT_DEFAULT_MAX_ITERATIONS } from "./types.js";
|
|
|
26
26
|
export declare const SANDBOX_AGENT_META: Readonly<Record<string, AgentMeta>>;
|
|
27
27
|
/**
|
|
28
28
|
* Build every sandbox `AgentDefinition` from the shared deps. The returned
|
|
29
|
-
* record's keys are the agent ids; `
|
|
29
|
+
* record's keys are the agent ids; `runLoop` consumes each value.
|
|
30
30
|
*/
|
|
31
31
|
export declare function createSandboxAgents(deps: SandboxAgentDeps): Record<string, AgentDefinition>;
|
|
@@ -64,7 +64,7 @@ export const SANDBOX_AGENT_META = {
|
|
|
64
64
|
};
|
|
65
65
|
/**
|
|
66
66
|
* Build every sandbox `AgentDefinition` from the shared deps. The returned
|
|
67
|
-
* record's keys are the agent ids; `
|
|
67
|
+
* record's keys are the agent ids; `runLoop` consumes each value.
|
|
68
68
|
*/
|
|
69
69
|
export function createSandboxAgents(deps) {
|
|
70
70
|
return {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* must map to a concrete `Tool`; unknown names throw at composition time
|
|
17
17
|
* so misconfigured agents fail at startup, not at the first LLM call.
|
|
18
18
|
*/
|
|
19
|
-
import type {
|
|
19
|
+
import type { Querier } from "../../state/db.js";
|
|
20
20
|
import type { ToolOutputStore } from "../../loop/tool-output.js";
|
|
21
21
|
import type { AgentDefinition } from "../../loop/types.js";
|
|
22
22
|
import type { ChatProvider, EmbeddingProvider } from "../../providers/types.js";
|
|
@@ -25,21 +25,28 @@ import type { ExtendAnalysisFarm, SandboxRef } from "../../sandbox/types.js";
|
|
|
25
25
|
import type { WorkspaceFilesystem } from "../../workspace/filesystem.js";
|
|
26
26
|
import type { ProvenanceCollector as LineageCollector } from "../../provenance/collector.js";
|
|
27
27
|
import { type BioToolKeys } from "../../tools/bio/keys.js";
|
|
28
|
-
import { type BlockerHolder } from "../../tools/sandbox/report-blocker.js";
|
|
29
28
|
import { type FileMetadataCell } from "../../tools/sandbox/submit-file-metadata.js";
|
|
30
29
|
import type { AgentMeta, SandboxToolName } from "./types.js";
|
|
31
30
|
import type { EnvironmentStorePaths } from "../../config/environment-stores.js";
|
|
32
31
|
import type { Logger } from "../../lib/logger.js";
|
|
33
32
|
import type { CitationResolver } from "../../citations/types.js";
|
|
33
|
+
import { type KnowledgeClient, type TemplateBinding } from "../../tools/knowledge/index.js";
|
|
34
34
|
/**
|
|
35
35
|
* Tools every sandbox agent receives — sandbox-environment introspection,
|
|
36
|
-
* library docs, and
|
|
37
|
-
* `meta.tools` so planner-facing metadata and the resolved tool record
|
|
36
|
+
* library docs, run inspection, and the knowledge template. Spread into each
|
|
37
|
+
* agent's `meta.tools` so planner-facing metadata and the resolved tool record
|
|
38
38
|
* stay in sync. Keep minimal — only tools every agent genuinely needs.
|
|
39
|
+
*
|
|
40
|
+
* The knowledge template is here, not on a specialist, because the template
|
|
41
|
+
* follows the step: the planner binds a template to a step from the
|
|
42
|
+
* recommendation and routes that step to whichever specialist owns its data
|
|
43
|
+
* object. The tool acts only on the template the step grounding names, thus
|
|
44
|
+
* a step without a template costs nothing, and it attaches only when the
|
|
45
|
+
* embedder binds a knowledge client (see the registry below).
|
|
39
46
|
*/
|
|
40
47
|
export declare const BASE_SANDBOX_TOOLS: readonly SandboxToolName[];
|
|
41
48
|
/** Per-step coordinates the composition root threads through every mutate tool. */
|
|
42
|
-
export
|
|
49
|
+
export type SandboxStepCoords = {
|
|
43
50
|
readonly sandbox: SandboxRef;
|
|
44
51
|
/** Absolute host root of this analysis's workspace tree (resolved at the workflow body). */
|
|
45
52
|
readonly workspaceRoot: string;
|
|
@@ -48,13 +55,19 @@ export interface SandboxStepCoords {
|
|
|
48
55
|
readonly allowedWritePrefix: string;
|
|
49
56
|
/** Absolute unix-ms deadline of each exec. */
|
|
50
57
|
readonly deadlineMs: () => number;
|
|
51
|
-
|
|
58
|
+
/**
|
|
59
|
+
* The plan settings bound to the template of this step, from the durable
|
|
60
|
+
* step input. Reaches `knowledge_template` alone. Absent when the step
|
|
61
|
+
* grounds on no template, or when the host bound nothing.
|
|
62
|
+
*/
|
|
63
|
+
readonly templateBinding?: TemplateBinding;
|
|
64
|
+
};
|
|
52
65
|
/** The shared dependency graph every sandbox agent draws from. */
|
|
53
|
-
export
|
|
66
|
+
export type SandboxAgentDeps = EnvironmentStorePaths & {
|
|
54
67
|
/** Operational logging seam; omitted falls back to no-op. */
|
|
55
68
|
readonly logger?: Logger;
|
|
56
69
|
readonly provider: ChatProvider;
|
|
57
|
-
readonly pool:
|
|
70
|
+
readonly pool: Querier;
|
|
58
71
|
readonly sandboxClient: SandboxClient;
|
|
59
72
|
readonly workspaceFs: WorkspaceFilesystem;
|
|
60
73
|
/** Embedding provider for in-sandbox semantic `workspace_search`. Omit to skip that tool. */
|
|
@@ -76,12 +89,11 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
|
|
|
76
89
|
/** Shared resolver. Required only when `meta.tools` declares `resolve_citation`. */
|
|
77
90
|
readonly citationResolver?: CitationResolver;
|
|
78
91
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* the cell. Omit for agents that have no terminal status to declare (such as the data profiler).
|
|
92
|
+
* The agent gets a `report_blocker` tool (see the harness-sandbox-agents spec), and the
|
|
93
|
+
* sandbox-step body selects the blocker from the recorded calls of the run. Omit for agents that
|
|
94
|
+
* have no terminal status to declare (such as the data profiler).
|
|
83
95
|
*/
|
|
84
|
-
readonly
|
|
96
|
+
readonly reportsBlocker?: boolean;
|
|
85
97
|
/**
|
|
86
98
|
* When present, the agent declares `submit_file_metadata` from its first request so the
|
|
87
99
|
* tool list stays stable across continuations; the task masks it, the continuation unmasks it.
|
|
@@ -95,9 +107,16 @@ export interface SandboxAgentDeps extends EnvironmentStorePaths {
|
|
|
95
107
|
* and the package-link prompt layer appends. Without it, neither exists.
|
|
96
108
|
*/
|
|
97
109
|
readonly extendAnalysisFarm?: ExtendAnalysisFarm;
|
|
98
|
-
|
|
110
|
+
/**
|
|
111
|
+
* The knowledge service client. Bound, an agent that declares
|
|
112
|
+
* `knowledgeTemplate` gets the tool, over the same mutator as `write_file`.
|
|
113
|
+
* Absent, the declaration resolves to nothing, which is the default state
|
|
114
|
+
* of the open-source host and never an error.
|
|
115
|
+
*/
|
|
116
|
+
readonly knowledge?: KnowledgeClient;
|
|
117
|
+
};
|
|
99
118
|
/** Per-agent override for the prompt composition and tool surface. */
|
|
100
|
-
export
|
|
119
|
+
export type SandboxAgentPromptOptions = {
|
|
101
120
|
/** Append `sandboxAnalysisStepStandardsPrompt`. Defaults to true. */
|
|
102
121
|
readonly appendAnalysisStepStandards?: boolean;
|
|
103
122
|
/**
|
|
@@ -107,7 +126,7 @@ export interface SandboxAgentPromptOptions {
|
|
|
107
126
|
* exists outside container-local `/tmp`. Defaults to false.
|
|
108
127
|
*/
|
|
109
128
|
readonly readOnly?: boolean;
|
|
110
|
-
}
|
|
129
|
+
};
|
|
111
130
|
/**
|
|
112
131
|
* Build one sandbox `AgentDefinition`. The system prompt is composed once
|
|
113
132
|
* (SOUL execution core + agent body + sandbox standards) — no processors, and
|