@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
|
@@ -3,21 +3,20 @@
|
|
|
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
17
|
import { err, ok } from "neverthrow";
|
|
18
18
|
import { z } from "zod";
|
|
19
|
-
import { finalText,
|
|
20
|
-
import { passthroughStep } from "../../loop/run-step.js";
|
|
19
|
+
import { finalText, runLoop } from "../../loop/run-loop.js";
|
|
21
20
|
import { literatureReviewerPrompt } from "../../prompts/literature-reviewer.js";
|
|
22
21
|
import { composeSystemPrompt } from "../../agents/system-prompt.js";
|
|
23
22
|
import { forSubAgent } from "../../auth/types.js";
|
|
@@ -35,9 +34,9 @@ const AGENT_ID = "literature-reviewer";
|
|
|
35
34
|
/** Multi-tool research budget — search → read → synthesize over many genes. */
|
|
36
35
|
const REVIEWER_MAX_ITERATIONS = 30;
|
|
37
36
|
/** Build the `literature_reviewer` delegation tool bound to its provider. */
|
|
38
|
-
export function createLiteratureReviewerTool(deps) {
|
|
37
|
+
export function createLiteratureReviewerTool(deps, registerSubAgent) {
|
|
39
38
|
const ncbi = createNcbiTools(deps.bioKeys);
|
|
40
|
-
const chemDb = createChemDbTools(deps.bioKeys, {
|
|
39
|
+
const chemDb = createChemDbTools(deps.bioKeys, { logger: deps.logger });
|
|
41
40
|
const reviewerTools = [
|
|
42
41
|
searchGeneTool,
|
|
43
42
|
searchProteinTool,
|
|
@@ -56,6 +55,17 @@ export function createLiteratureReviewerTool(deps) {
|
|
|
56
55
|
tools: reviewerTools,
|
|
57
56
|
maxIterations: REVIEWER_MAX_ITERATIONS,
|
|
58
57
|
};
|
|
58
|
+
// A review ends with a report, or with the finish reason of a run that gave none.
|
|
59
|
+
const review = registerSubAgent(AGENT_ID, async ({ payload, ctx, loop }) => {
|
|
60
|
+
const { messages: transcript, finish } = await runLoop(agent, [{ role: "user", content: payload.brief }], forSubAgent(ctx.session, AGENT_ID), {
|
|
61
|
+
...loop,
|
|
62
|
+
provider: deps.provider,
|
|
63
|
+
usageRecorder: deps.usageRecorder,
|
|
64
|
+
toolOutputStore: deps.toolOutputStore,
|
|
65
|
+
});
|
|
66
|
+
const report = finalText(transcript);
|
|
67
|
+
return report.trim() === "" ? { finishReason: finish.reason } : { report };
|
|
68
|
+
});
|
|
59
69
|
return defineTool({
|
|
60
70
|
id: "literature_reviewer",
|
|
61
71
|
description: "Delegate batch literature/biology research to a sub-agent: looking up " +
|
|
@@ -78,29 +88,20 @@ export function createLiteratureReviewerTool(deps) {
|
|
|
78
88
|
"context. The reviewer sees only this — include everything it needs."),
|
|
79
89
|
}),
|
|
80
90
|
describeCall: "none",
|
|
91
|
+
startsWorkflow: true,
|
|
81
92
|
execute: async ({ brief }, ctx) => {
|
|
82
|
-
const
|
|
83
|
-
provider: deps.provider,
|
|
84
|
-
signal: ctx.signal,
|
|
85
|
-
emit: ctx.emit,
|
|
86
|
-
runStep: passthroughStep,
|
|
87
|
-
usageRecorder: deps.usageRecorder,
|
|
88
|
-
toolOutputStore: deps.toolOutputStore,
|
|
89
|
-
// Fold the child's calls into the turn total the root loop reports.
|
|
90
|
-
turnUsage: ctx.turnUsage,
|
|
91
|
-
// Keeps the usage record keys of two parallel reviews disjoint —
|
|
92
|
-
// same frame, same call path, same loop-local step names.
|
|
93
|
-
invocationId: ctx.invocationId,
|
|
94
|
-
});
|
|
95
|
-
const report = finalText(transcript);
|
|
93
|
+
const reviewed = await review({ brief }, ctx);
|
|
96
94
|
// A child run can end with no final text. Examples are a terminal
|
|
97
|
-
// reply with no text block, and a
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
if (
|
|
101
|
-
return err({
|
|
95
|
+
// reply with no text block, and a run that reached its step cap. An
|
|
96
|
+
// ok result with an empty report hides that failure, so the tool
|
|
97
|
+
// returns an error that names the finish reason.
|
|
98
|
+
if ("finishReason" in reviewed) {
|
|
99
|
+
return err({
|
|
100
|
+
error: `The literature reviewer gave no report (finish reason: ${reviewed.finishReason}). Retry, or narrow the brief.`,
|
|
101
|
+
retryable: true,
|
|
102
|
+
});
|
|
102
103
|
}
|
|
103
|
-
return ok({ report });
|
|
104
|
+
return ok({ report: reviewed.report });
|
|
104
105
|
},
|
|
105
106
|
});
|
|
106
107
|
}
|
|
@@ -26,7 +26,7 @@ export const searchArxivTool = defineTool({
|
|
|
26
26
|
}),
|
|
27
27
|
describeCall: "none",
|
|
28
28
|
execute: async ({ query, categories, limit }, context) => {
|
|
29
|
-
const result = await source.search({ query,
|
|
29
|
+
const result = await source.search({ query, categories, limit }, context.signal);
|
|
30
30
|
if (result.status !== "ok")
|
|
31
31
|
return ok({ success: false, error: result.detail, papers: [] });
|
|
32
32
|
return ok({ success: true, papers: result.value });
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
* `language` as required and nullable, thus an absent value is an explicit
|
|
10
10
|
* `null`. The OpenAPI document gives the modifier of each field.
|
|
11
11
|
*/
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { type Tool } from "../define-tool.js";
|
|
12
14
|
type SearchGithubReposOutput = {
|
|
13
15
|
success: false;
|
|
14
16
|
error: string;
|
|
@@ -17,20 +19,21 @@ type SearchGithubReposOutput = {
|
|
|
17
19
|
success: true;
|
|
18
20
|
repos: GithubRepo[];
|
|
19
21
|
};
|
|
20
|
-
export
|
|
22
|
+
export type GithubRepo = {
|
|
21
23
|
url: string;
|
|
22
24
|
fullName: string;
|
|
23
25
|
description?: string;
|
|
24
26
|
stars: number;
|
|
25
27
|
language?: string;
|
|
26
28
|
lastUpdated?: string;
|
|
27
|
-
}
|
|
29
|
+
};
|
|
28
30
|
export declare function parseGithubReposResponse(raw: unknown): GithubRepo[];
|
|
31
|
+
declare const SearchGithubReposInputSchema: z.ZodObject<{
|
|
32
|
+
query: z.ZodString;
|
|
33
|
+
language: z.ZodOptional<z.ZodString>;
|
|
34
|
+
limit: z.ZodDefault<z.ZodNumber>;
|
|
35
|
+
}, z.core.$strip>;
|
|
29
36
|
export declare function createSearchGithubReposTool(deps: {
|
|
30
37
|
githubToken?: string;
|
|
31
|
-
}):
|
|
32
|
-
query: string;
|
|
33
|
-
limit: number;
|
|
34
|
-
language?: string | undefined;
|
|
35
|
-
}, SearchGithubReposOutput>;
|
|
38
|
+
}): Tool<z.infer<typeof SearchGithubReposInputSchema>, SearchGithubReposOutput>;
|
|
36
39
|
export {};
|
|
@@ -13,6 +13,8 @@ import { ok } from "neverthrow";
|
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
import { defineTool } from "../define-tool.js";
|
|
15
15
|
import { apiFetchValidated, describeApiError } from "../lib/api-utils.js";
|
|
16
|
+
import { parseUnknownRecord } from "../../lib/unknown-containers.js";
|
|
17
|
+
import { isUnknownArray } from "../../lib/unknown-array.js";
|
|
16
18
|
const BASE_URL = "https://api.github.com/search/repositories";
|
|
17
19
|
// Raw GitHub search wire shape, validated at the fetch boundary. Every field is
|
|
18
20
|
// optional — `parseGithubReposResponse` already filters out items missing the
|
|
@@ -33,23 +35,30 @@ const GithubReposResponseSchema = z.object({
|
|
|
33
35
|
.optional(),
|
|
34
36
|
});
|
|
35
37
|
export function parseGithubReposResponse(raw) {
|
|
36
|
-
const items = raw?.items;
|
|
37
|
-
if (!
|
|
38
|
+
const items = parseUnknownRecord(raw)?.items;
|
|
39
|
+
if (!isUnknownArray(items))
|
|
38
40
|
return [];
|
|
39
|
-
return items
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
return items.flatMap((item) => {
|
|
42
|
+
const record = parseUnknownRecord(item);
|
|
43
|
+
if (record === undefined || typeof record.html_url !== "string" || typeof record.full_name !== "string")
|
|
44
|
+
return [];
|
|
45
|
+
return [
|
|
46
|
+
{
|
|
47
|
+
url: record.html_url,
|
|
48
|
+
fullName: record.full_name,
|
|
49
|
+
description: typeof record.description === "string" ? record.description : undefined,
|
|
50
|
+
stars: typeof record.stargazers_count === "number" ? record.stargazers_count : 0,
|
|
51
|
+
language: typeof record.language === "string" ? record.language : undefined,
|
|
52
|
+
lastUpdated: typeof record.updated_at === "string" ? record.updated_at : undefined,
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
});
|
|
52
56
|
}
|
|
57
|
+
const SearchGithubReposInputSchema = z.object({
|
|
58
|
+
query: z.string().describe("GitHub search syntax. Plain text matches anywhere; qualifiers " + 'like "topic:bioinformatics" or "stars:>100" are supported.'),
|
|
59
|
+
language: z.string().optional().describe('Optional language filter (e.g., "python").'),
|
|
60
|
+
limit: z.number().int().min(1).max(20).default(10).describe("Maximum results (1–20, default 10)."),
|
|
61
|
+
});
|
|
53
62
|
export function createSearchGithubReposTool(deps) {
|
|
54
63
|
return defineTool({
|
|
55
64
|
id: "search_github_repos",
|
|
@@ -64,13 +73,7 @@ export function createSearchGithubReposTool(deps) {
|
|
|
64
73
|
"and `success: false` with an `error` string means GitHub could not be " +
|
|
65
74
|
"reached or refused the request (the low unauthenticated rate limit " +
|
|
66
75
|
"lands here). Report either one and continue, do not retry unchanged.",
|
|
67
|
-
inputSchema:
|
|
68
|
-
query: z
|
|
69
|
-
.string()
|
|
70
|
-
.describe("GitHub search syntax. Plain text matches anywhere; qualifiers " + 'like "topic:bioinformatics" or "stars:>100" are supported.'),
|
|
71
|
-
language: z.string().optional().describe('Optional language filter (e.g., "python").'),
|
|
72
|
-
limit: z.number().int().min(1).max(20).default(10).describe("Maximum results (1–20, default 10)."),
|
|
73
|
-
}),
|
|
76
|
+
inputSchema: SearchGithubReposInputSchema,
|
|
74
77
|
describeCall: "none",
|
|
75
78
|
execute: async ({ query, language, limit }) => {
|
|
76
79
|
const q = language ? `${query} language:${language}` : query;
|
|
@@ -9,7 +9,7 @@ export function createSearchSemanticScholarTool(options = {}) {
|
|
|
9
9
|
maxRetries: 3,
|
|
10
10
|
retryDelayMs: 1_000,
|
|
11
11
|
timeoutMs: 90_000,
|
|
12
|
-
|
|
12
|
+
apiKey: options.apiKey,
|
|
13
13
|
});
|
|
14
14
|
return defineTool({
|
|
15
15
|
id: "search_semantic_scholar",
|
|
@@ -33,8 +33,8 @@ export declare function mapSearxngResponse(response: z.infer<typeof SearxngSearc
|
|
|
33
33
|
export declare function normalizeSearxngBaseUrl(raw: string): string;
|
|
34
34
|
/** Map one `ApiError` of the helper to the error data variant it names. */
|
|
35
35
|
export declare function describeSearchFailure(error: ApiError): WebSearchEngineError;
|
|
36
|
-
export
|
|
36
|
+
export type SearxngEngineDeps = {
|
|
37
37
|
/** The base URL of the SearXNG instance the embedder runs. */
|
|
38
38
|
readonly baseUrl: string;
|
|
39
|
-
}
|
|
39
|
+
};
|
|
40
40
|
export declare function createSearxngEngine(deps: SearxngEngineDeps): WebSearchEngine;
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { err, ok } from "neverthrow";
|
|
12
12
|
import { z } from "zod";
|
|
13
13
|
import { apiFetchValidated } from "../lib/api-utils.js";
|
|
14
|
+
import { isAllDigits, trimTrailingOf } from "../../lib/text.js";
|
|
14
15
|
// SearXNG sends an explicit null for a snippet no engine produced, and it omits
|
|
15
16
|
// a key no engine filled, thus each field is optional and nullable alike. The
|
|
16
17
|
// fields an engine adds (`engine`, `score`, `publishedDate`, …) pass and strip.
|
|
@@ -58,7 +59,7 @@ export function normalizeSearxngBaseUrl(raw) {
|
|
|
58
59
|
if (parsed.username !== "" || parsed.password !== "") {
|
|
59
60
|
throw new Error(`The SearXNG base URL must carry no user name or password: ${raw}`);
|
|
60
61
|
}
|
|
61
|
-
return `${parsed.protocol}//${parsed.host}${parsed.pathname
|
|
62
|
+
return `${parsed.protocol}//${parsed.host}${trimTrailingOf(parsed.pathname, "/")}`;
|
|
62
63
|
}
|
|
63
64
|
/** The first 300 characters of a body, as the HTTP-error text reports it. */
|
|
64
65
|
function bodyExcerpt(body) {
|
|
@@ -83,12 +84,13 @@ export function describeSearchFailure(error) {
|
|
|
83
84
|
case "exhausted": {
|
|
84
85
|
// A spent retryable status arrives as `exhausted` with an `HTTP <status>`
|
|
85
86
|
// last error, because the helper reports it there and not as `http_status`.
|
|
86
|
-
const
|
|
87
|
+
const statusText = error.lastError.startsWith("HTTP ") ? error.lastError.slice("HTTP ".length) : undefined;
|
|
88
|
+
const status = statusText !== undefined && isAllDigits(statusText) ? statusText : null;
|
|
87
89
|
if (status) {
|
|
88
90
|
return {
|
|
89
91
|
status: "retryable_status",
|
|
90
|
-
httpStatus: Number(status
|
|
91
|
-
text: `SearXNG answered HTTP ${status
|
|
92
|
+
httpStatus: Number(status),
|
|
93
|
+
text: `SearXNG answered HTTP ${status} and spent its retry attempt`,
|
|
92
94
|
};
|
|
93
95
|
}
|
|
94
96
|
// A transport failure and a body that will not parse share this bucket,
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* One URL in, extracted text out: HTML becomes Markdown (Readability over a
|
|
5
5
|
* `linkedom` DOM, then Turndown, with the body text as the fallback), a PDF
|
|
6
6
|
* becomes the text of its first 100 pages through `pdf-parse`, and a text or
|
|
7
|
-
* JSON body passes through. A bad scheme,
|
|
7
|
+
* JSON body passes through. A bad scheme, an internal address, an HTTP error, an
|
|
8
8
|
* oversized body, a redirect chain past the limit, and a body the tool cannot
|
|
9
9
|
* extract are all normal results on the ok channel — never a failure of the
|
|
10
10
|
* turn.
|
|
@@ -15,14 +15,16 @@
|
|
|
15
15
|
* runs no name lookup for a literal — and a name classifies inside the `lookup`
|
|
16
16
|
* hook of `node:http`/`node:https`, over every address of the resolution,
|
|
17
17
|
* because the connect layer falls back to a later address after an earlier one
|
|
18
|
-
* fails. A guarded hop is destroyed before
|
|
19
|
-
*
|
|
18
|
+
* fails. A guarded hop is destroyed before it connects, and the call gives a
|
|
19
|
+
* refusal that names the origin. The tool asks nothing.
|
|
20
20
|
*/
|
|
21
21
|
import { type LookupAddress, type LookupAllOptions } from "node:dns";
|
|
22
22
|
import { type LookupFunction } from "node:net";
|
|
23
|
+
import { z } from "zod";
|
|
23
24
|
import { type ToolOutputStore } from "../../loop/tool-output.js";
|
|
25
|
+
import { type Tool } from "../define-tool.js";
|
|
24
26
|
/** The response head and body stream of one hop, narrowed to what the tool reads. */
|
|
25
|
-
export
|
|
27
|
+
export type WebFetchHopResponse = {
|
|
26
28
|
readonly statusCode?: number;
|
|
27
29
|
readonly headers: Record<string, string | string[] | undefined>;
|
|
28
30
|
on(event: "data", listener: (chunk: Buffer) => void): void;
|
|
@@ -32,33 +34,33 @@ export interface WebFetchHopResponse {
|
|
|
32
34
|
/** A real response holds these; the decode path pauses the encoded side while the decoder drains. */
|
|
33
35
|
pause?(): void;
|
|
34
36
|
resume?(): void;
|
|
35
|
-
}
|
|
37
|
+
};
|
|
36
38
|
/** One hop request, narrowed to what the tool drives. */
|
|
37
|
-
export
|
|
39
|
+
export type WebFetchHopRequestHandle = {
|
|
38
40
|
on(event: "response", listener: (response: WebFetchHopResponse) => void): void;
|
|
39
41
|
on(event: "error", listener: (error: Error) => void): void;
|
|
40
42
|
on(event: "timeout", listener: () => void): void;
|
|
41
43
|
end(): void;
|
|
42
44
|
destroy(error?: Error): void;
|
|
43
|
-
}
|
|
44
|
-
export
|
|
45
|
+
};
|
|
46
|
+
export type WebFetchHopRequestOptions = {
|
|
45
47
|
readonly headers: Record<string, string>;
|
|
46
48
|
readonly lookup?: LookupFunction;
|
|
47
49
|
readonly timeoutMs: number;
|
|
48
|
-
}
|
|
50
|
+
};
|
|
49
51
|
/** One HTTP hop. The default is the real `node:http`/`node:https` request; a test can substitute a recorded hop. */
|
|
50
52
|
export type WebFetchHopRequest = (url: URL, options: WebFetchHopRequestOptions) => WebFetchHopRequestHandle;
|
|
51
53
|
/** A name resolution that answers every address at once, the `all: true` shape of `dns.lookup`. */
|
|
52
54
|
export type WebFetchLookup = (hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void) => void;
|
|
53
|
-
export
|
|
55
|
+
export type WebFetchKept = {
|
|
54
56
|
readonly ref: string;
|
|
55
57
|
readonly keptLength: number;
|
|
56
|
-
}
|
|
57
|
-
export
|
|
58
|
+
};
|
|
59
|
+
export type WebFetchPdfCut = {
|
|
58
60
|
readonly totalPages: number;
|
|
59
61
|
readonly pagesRead: number;
|
|
60
|
-
}
|
|
61
|
-
export
|
|
62
|
+
};
|
|
63
|
+
export type WebFetchOk = {
|
|
62
64
|
readonly status: "ok";
|
|
63
65
|
readonly finalUrl: string;
|
|
64
66
|
readonly contentType: string;
|
|
@@ -68,7 +70,7 @@ export interface WebFetchOk {
|
|
|
68
70
|
readonly pdfCut?: WebFetchPdfCut;
|
|
69
71
|
readonly kept?: WebFetchKept;
|
|
70
72
|
readonly remainderNotKept?: boolean;
|
|
71
|
-
}
|
|
73
|
+
};
|
|
72
74
|
export type WebFetchOutput = WebFetchOk | {
|
|
73
75
|
readonly status: "invalid_url";
|
|
74
76
|
readonly text: string;
|
|
@@ -79,7 +81,6 @@ export type WebFetchOutput = WebFetchOk | {
|
|
|
79
81
|
} | {
|
|
80
82
|
readonly status: "refused";
|
|
81
83
|
readonly text: string;
|
|
82
|
-
readonly feedback?: string;
|
|
83
84
|
} | {
|
|
84
85
|
readonly status: "http_error";
|
|
85
86
|
readonly httpStatus: number;
|
|
@@ -102,13 +103,13 @@ export type WebFetchOutput = WebFetchOk | {
|
|
|
102
103
|
readonly text: string;
|
|
103
104
|
readonly detail?: string;
|
|
104
105
|
};
|
|
105
|
-
export
|
|
106
|
+
export type WebFetchToolDeps = {
|
|
106
107
|
readonly toolOutputStore?: ToolOutputStore;
|
|
107
108
|
/** Substitutes the name resolution, so a test answers a controlled address set. The default is `dns.lookup`. */
|
|
108
109
|
readonly lookup?: WebFetchLookup;
|
|
109
110
|
/** Substitutes one HTTP hop, so a test serves recorded bodies offline. The default is the real node hop. */
|
|
110
111
|
readonly hopRequest?: WebFetchHopRequest;
|
|
111
|
-
}
|
|
112
|
+
};
|
|
112
113
|
/**
|
|
113
114
|
* Estimate the deepest element nesting of an HTML document in one linear scan, without building a DOM.
|
|
114
115
|
* Deep nesting is the input shape that makes the linkedom/Readability pair burn CPU for minutes on a
|
|
@@ -119,6 +120,8 @@ export interface WebFetchToolDeps {
|
|
|
119
120
|
* stray close tag pops to its nearest matching open.
|
|
120
121
|
*/
|
|
121
122
|
export declare function htmlNestingDepth(html: string): number;
|
|
122
|
-
|
|
123
|
-
url:
|
|
124
|
-
},
|
|
123
|
+
declare const WebFetchInputSchema: z.ZodObject<{
|
|
124
|
+
url: z.ZodString;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
export declare function createWebFetchTool(deps?: WebFetchToolDeps): Tool<z.infer<typeof WebFetchInputSchema>, WebFetchOutput>;
|
|
127
|
+
export {};
|