@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* The prose markup: the text block, the claim block, the section wrapper, and the page navigation.
|
|
4
4
|
*
|
|
@@ -11,6 +11,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "hono/jsx/jsx-
|
|
|
11
11
|
*/
|
|
12
12
|
import { raw } from "hono/html";
|
|
13
13
|
import { blockMark } from "./block-mark.js";
|
|
14
|
+
import { splitLines } from "../../lib/text.js";
|
|
14
15
|
import { DEFAULT_VIEW_OPTIONS, lineagePlace, lineageStamp } from "./lineage.js";
|
|
15
16
|
import { Marker } from "./references-view.js";
|
|
16
17
|
/** The paragraph class of a text block and a claim block. The paragraph fills the content column. */
|
|
@@ -24,20 +25,34 @@ const BRAND_HREF = "https://inflexa.ai/";
|
|
|
24
25
|
* out, thus a leading or a trailing blank line adds no empty paragraph.
|
|
25
26
|
*/
|
|
26
27
|
function splitParagraphs(prose) {
|
|
27
|
-
const parts = prose.split(/\n[ \t]*\n/);
|
|
28
28
|
const paragraphs = [];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
29
|
+
let paragraph = [];
|
|
30
|
+
for (const line of splitLines(prose)) {
|
|
31
|
+
if (isBlankLine(line)) {
|
|
32
|
+
if (paragraph.length > 0)
|
|
33
|
+
paragraphs.push(paragraph.join("\n").trim());
|
|
34
|
+
paragraph = [];
|
|
35
|
+
continue;
|
|
33
36
|
}
|
|
37
|
+
paragraph.push(line);
|
|
34
38
|
}
|
|
39
|
+
if (paragraph.length > 0)
|
|
40
|
+
paragraphs.push(paragraph.join("\n").trim());
|
|
35
41
|
return paragraphs;
|
|
36
42
|
}
|
|
43
|
+
/** A line of spaces and tabs alone. Only those two end a paragraph split. */
|
|
44
|
+
function isBlankLine(line) {
|
|
45
|
+
for (const char of line) {
|
|
46
|
+
if (char !== " " && char !== "\t")
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
37
51
|
/**
|
|
38
52
|
* One typed list as list markup. The flag selects the element: an ordered list numbers its items, and an
|
|
39
53
|
* unordered one bullets them. Each item is one inline line, thus no item holds a list of its own.
|
|
40
54
|
*/
|
|
55
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
41
56
|
function TextListView({ list, mark }) {
|
|
42
57
|
const items = list.items.map((item) => _jsx("li", { class: "report-list-item", children: item }));
|
|
43
58
|
return list.ordered ? (_jsx("ol", { class: LIST_CLASS, ...mark, children: items })) : (_jsx("ul", { class: LIST_CLASS, ...mark, children: items }));
|
|
@@ -73,7 +88,9 @@ export function renderClaim(block, ledger, view = DEFAULT_VIEW_OPTIONS) {
|
|
|
73
88
|
// Under the lineage a wrapper holds the paragraphs, thus the wrapper alone carries the mark.
|
|
74
89
|
const mark = view.lineage ? {} : blockMark(block.id);
|
|
75
90
|
const body = paragraphs.length === 0 ? (_jsx("p", { class: PARAGRAPH_CLASS, ...mark, children: markers })) : (_jsx(_Fragment, { children: paragraphs.map((paragraph, index) => (_jsxs("p", { class: PARAGRAPH_CLASS, ...mark, children: [paragraph, index === last ? markers : null] }))) }));
|
|
76
|
-
return String(
|
|
91
|
+
return String(
|
|
92
|
+
// oxlint-disable-next-line typescript/no-base-to-string -- hono JSXNode.toString() renders these sync element trees to HTML; the rule sees only its declared `string | Promise<string>` return.
|
|
93
|
+
view.lineage ? (_jsx("div", { ...blockMark(block.id), ...lineageStamp(view.lineage, block.id, block.bindings), children: body })) : (body));
|
|
77
94
|
}
|
|
78
95
|
/** The heading class of a section, by heading level. A heading uses the sans family, never the mono family. */
|
|
79
96
|
function headingClass(level) {
|
|
@@ -86,7 +103,7 @@ function headingClass(level) {
|
|
|
86
103
|
*/
|
|
87
104
|
export function renderSection(section, depth, childrenHtml) {
|
|
88
105
|
const level = Math.min(depth + 2, 4);
|
|
89
|
-
const Heading =
|
|
106
|
+
const Heading = level === 2 ? "h2" : level === 3 ? "h3" : "h4";
|
|
90
107
|
return String(_jsxs("section", { id: section.id, class: "report-section", ...blockMark(section.id), children: [_jsx(Heading, { class: headingClass(level), children: section.title }), raw(childrenHtml)] }));
|
|
91
108
|
}
|
|
92
109
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
|
|
2
2
|
import { citationRecordOf } from "../../report-model/reference-resolver.js";
|
|
3
3
|
import { citationKeyOf } from "../references.js";
|
|
4
4
|
import { LineageControl } from "./lineage.js";
|
|
@@ -12,22 +12,27 @@ import { LineageControl } from "./lineage.js";
|
|
|
12
12
|
* marker that names no place carries no control. The page shows the control only where a stamp gives the
|
|
13
13
|
* script a key to walk.
|
|
14
14
|
*/
|
|
15
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
15
16
|
export function Marker({ n, lineage }) {
|
|
16
17
|
return (_jsxs("span", { class: "report-marker", children: [_jsx("a", { href: `#ref-${n}`, children: `[${n}]` }), lineage !== undefined ? _jsx(LineageControl, { place: lineage }) : null] }));
|
|
17
18
|
}
|
|
18
19
|
/** The kind label of one reference entry. */
|
|
20
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
19
21
|
function RefKind({ children }) {
|
|
20
22
|
return _jsx("span", { class: "report-ref-kind", children: children });
|
|
21
23
|
}
|
|
22
24
|
/** A path in a monospace code span. */
|
|
25
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
23
26
|
function PathCode({ children }) {
|
|
24
27
|
return _jsx("code", { class: "report-ref-path", children: children });
|
|
25
28
|
}
|
|
26
29
|
/** A plain detail such as a locator or an external id. */
|
|
30
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
27
31
|
function Detail({ children }) {
|
|
28
32
|
return _jsx("span", { class: "report-ref-detail", children: children });
|
|
29
33
|
}
|
|
30
34
|
/** The head of a content hash in a monospace span. */
|
|
35
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
31
36
|
function HashCode({ children }) {
|
|
32
37
|
return _jsx("code", { class: "report-ref-hash", children: children });
|
|
33
38
|
}
|
|
@@ -52,6 +57,7 @@ function hashHead(hash) {
|
|
|
52
57
|
* The hash head stays the text of the link. Thus the reader reads the same head as before, and the click
|
|
53
58
|
* opens the script itself. A chain with no staged script shows the head alone.
|
|
54
59
|
*/
|
|
60
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
55
61
|
function ScriptLink({ chain }) {
|
|
56
62
|
const head = _jsx(HashCode, { children: hashHead(chain.scriptHash) });
|
|
57
63
|
return chain.scriptSource === undefined ? (head) : (_jsx("a", { class: "report-ref-link", href: chain.scriptSource, children: head }));
|
|
@@ -68,6 +74,7 @@ function ScriptLink({ chain }) {
|
|
|
68
74
|
* host. Each hash head stays beside its link, because the head is what a reader compares against the name of
|
|
69
75
|
* a staged file.
|
|
70
76
|
*/
|
|
77
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
71
78
|
function ChainLine({ chain }) {
|
|
72
79
|
return (_jsxs("div", { class: "report-ref-chain", children: [_jsx(RefKind, { children: "Derived from" }), " ", chain.sources.map((source, index) => (_jsxs(_Fragment, { children: [index > 0 ? " and " : "", _jsx(PathCode, { children: source.path }), " ", _jsx(HashCode, { children: hashHead(source.hash) })] }))), " ", _jsx(Detail, { children: "by script" }), " ", _jsx(ScriptLink, { chain: chain }), chain.outputSource !== undefined ? (_jsxs(_Fragment, { children: [" ", _jsx(Detail, { children: "into" }), " ", _jsx("a", { class: "report-ref-link", href: chain.outputSource, children: _jsx(PathCode, { children: chain.outputSource }) })] })) : null] }));
|
|
73
80
|
}
|
|
@@ -99,6 +106,7 @@ function describeLocator(locator) {
|
|
|
99
106
|
* the reference pins one cell. A derivation entry names its operation and its two inputs, each by path and
|
|
100
107
|
* locator.
|
|
101
108
|
*/
|
|
109
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
102
110
|
function ReferenceBody({ reference }) {
|
|
103
111
|
switch (reference.kind) {
|
|
104
112
|
case "artifact-value":
|
|
@@ -117,6 +125,7 @@ function ReferenceBody({ reference }) {
|
|
|
117
125
|
* A path that no record names renders the body alone, thus a page over pinned artifacts alone reads exactly
|
|
118
126
|
* as it did before the chains existed.
|
|
119
127
|
*/
|
|
128
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
120
129
|
function ArtifactEntry({ reference, chains }) {
|
|
121
130
|
const path = pathOf(reference);
|
|
122
131
|
const chain = path === undefined ? undefined : chains?.get(path);
|
|
@@ -130,6 +139,7 @@ function ArtifactEntry({ reference, chains }) {
|
|
|
130
139
|
* The description sits in the appendix and never on the card. The card sits in the body of the report,
|
|
131
140
|
* where a paragraph about the paper competes with the prose around it.
|
|
132
141
|
*/
|
|
142
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
133
143
|
function CitationEntry({ reference, records }) {
|
|
134
144
|
const key = citationKeyOf(reference);
|
|
135
145
|
const record = citationRecordOf(records, key);
|
|
@@ -137,6 +147,7 @@ function CitationEntry({ reference, records }) {
|
|
|
137
147
|
return (_jsxs(_Fragment, { children: [_jsx(RefKind, { children: "Citation" }), " ", record !== undefined ? (_jsxs(_Fragment, { children: [_jsx("span", { class: "report-cite-source", children: record.citation }), " "] })) : null, _jsx(Detail, { children: key }), description !== undefined ? _jsx("div", { class: "report-cite-description", children: description }) : null] }));
|
|
138
148
|
}
|
|
139
149
|
/** One appendix entry. The kind of the reference selects the shape, and the two shapes share the ladder. */
|
|
150
|
+
// oxlint-disable-next-line typescript/explicit-function-return-type -- hono's JSX ElementType contract demands FunctionComponentResult, which its own jsxDEV factory return (JSXNode) does not satisfy; no writable type names what the body returns, so the inferred JSXNode return stays.
|
|
140
151
|
function ReferenceEntry({ reference, records, chains }) {
|
|
141
152
|
return reference.kind === "citation" ? _jsx(CitationEntry, { reference: reference, records: records }) : _jsx(ArtifactEntry, { reference: reference, chains: chains });
|
|
142
153
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "hono/jsx/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* The value markup: the metric card, the data table, the figure, and the citation card.
|
|
4
4
|
*
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
import { type Result, type ResultAsync } from "neverthrow";
|
|
18
18
|
import { type ConversationAgentDeps } from "../agents/conversation-agent.js";
|
|
19
19
|
import { type ApprovePlanInput, type ApprovePlanRefusal, type PlanApproval } from "../app/approve-plan.js";
|
|
20
|
+
import { type ChatTurns } from "../app/chat-turn-workflow.js";
|
|
21
|
+
import { type WorkSurface } from "../app/work.js";
|
|
20
22
|
import { type ReportSessionRuntime } from "../app/report-session-runtime.js";
|
|
21
23
|
import type { UsageRecorder } from "../billing/usage-recorder.js";
|
|
22
24
|
import type { ResourcePolicy } from "../config/resource-limits.js";
|
|
@@ -26,17 +28,15 @@ import { type AcquireEyes } from "../lib/eyes.js";
|
|
|
26
28
|
import type { ThreadType } from "../memory/thread-store.js";
|
|
27
29
|
import { type ExecuteAnalysisDeps, type ExecuteAnalysisInput, type ExecuteAnalysisResult } from "../workflows/execute-analysis.js";
|
|
28
30
|
import { type SandboxStepDeps, type SandboxStepInput, type SandboxStepResult } from "../workflows/sandbox-step.js";
|
|
29
|
-
import type { Suspension } from "../workflows/suspension.js";
|
|
30
31
|
import { type DataProfileDeps, type DataProfileWorkflowInput } from "../tasks/data-profile.js";
|
|
31
|
-
import { type ExtractValuesResult, type ExtractValuesWorkflowInput } from "../tasks/extract-values.js";
|
|
32
|
-
import type { DeriveTableExecInput } from "../tools/report-session/derive-table.js";
|
|
33
|
-
import type { ExecResult } from "../sandbox/types.js";
|
|
34
32
|
import { type CitationResolverConfig } from "../citations/resolve.js";
|
|
35
33
|
import type { CitationResolver } from "../citations/types.js";
|
|
36
|
-
import type { AuthContext } from "../auth/types.js";
|
|
34
|
+
import type { AuthContext, Identity } from "../auth/types.js";
|
|
37
35
|
import type { ReferenceResolver } from "../report-model/reference-resolver.js";
|
|
38
36
|
import type { ProvenanceSeam } from "../provenance/seam.js";
|
|
37
|
+
import { type AskGateway } from "../tools/approval/gateway.js";
|
|
39
38
|
import type { MakeSessionPagePublisher, ResolvePageAsset, ResolvePageUrl } from "../tools/report-session/index.js";
|
|
39
|
+
import type { BioToolKeys } from "../tools/bio/keys.js";
|
|
40
40
|
/** Registered child sandbox-step callable the parent's child dispatch closes over. */
|
|
41
41
|
export type SandboxStepCallable = (input: SandboxStepInput) => Promise<SandboxStepResult>;
|
|
42
42
|
/**
|
|
@@ -55,19 +55,20 @@ export type SandboxStepCallable = (input: SandboxStepInput) => Promise<SandboxSt
|
|
|
55
55
|
* `executeAnalysis` bag omits `workingMemory`, because the step seeds must read
|
|
56
56
|
* the same memory that the conversation agent writes.
|
|
57
57
|
*/
|
|
58
|
-
export
|
|
59
|
-
readonly sandboxStep: Omit<SandboxStepDeps, "usageRecorder" | "citationResolver" | "toolOutputStore">;
|
|
60
|
-
readonly buildExecuteAnalysis: (sandboxStep: SandboxStepCallable) => Omit<ExecuteAnalysisDeps, "usageRecorder" | "
|
|
58
|
+
export type CoreWorkflowDeps = {
|
|
59
|
+
readonly sandboxStep: Omit<SandboxStepDeps, "usageRecorder" | "citationResolver" | "toolOutputStore" | "runAuthorizer">;
|
|
60
|
+
readonly buildExecuteAnalysis: (sandboxStep: SandboxStepCallable) => Omit<ExecuteAnalysisDeps, "usageRecorder" | "literatureReviewer" | "toolOutputStore" | "workingMemory"> & {
|
|
61
|
+
/** API keys for the bio/chem tools of the literature reviewer of the synthesis. */
|
|
62
|
+
readonly bioKeys: BioToolKeys;
|
|
63
|
+
};
|
|
61
64
|
readonly dataProfile: Omit<DataProfileDeps, "usageRecorder" | "toolOutputStore">;
|
|
62
|
-
}
|
|
65
|
+
};
|
|
63
66
|
/** The registered, callable workflow handles. */
|
|
64
|
-
export
|
|
67
|
+
export type RegisteredWorkflows = {
|
|
65
68
|
readonly executeAnalysis: (input: ExecuteAnalysisInput) => Promise<ExecuteAnalysisResult>;
|
|
66
69
|
readonly sandboxStep: SandboxStepCallable;
|
|
67
70
|
readonly dataProfile: (input: DataProfileWorkflowInput) => Promise<void>;
|
|
68
|
-
|
|
69
|
-
readonly deriveTableExec: (input: DeriveTableExecInput) => Promise<Result<ExecResult, Suspension>>;
|
|
70
|
-
}
|
|
71
|
+
};
|
|
71
72
|
/**
|
|
72
73
|
* Conversation-agent deps minus the workflow callable, the resource policy, the
|
|
73
74
|
* usage recorder, the report-session anchor, the eyes, and the tool output store.
|
|
@@ -85,21 +86,23 @@ export interface RegisteredWorkflows {
|
|
|
85
86
|
* chrome config. A caller that bound the eyes here would give the conversation
|
|
86
87
|
* agent a seam that the report agent never sees.
|
|
87
88
|
*/
|
|
88
|
-
export type ConversationAssemblyDeps = Omit<ConversationAgentDeps, "executeAnalysisWorkflow" | "resourcePolicy" | "usageRecorder" | "citationResolver" | "anchorReportSession" | "eyes" | "toolOutputStore">;
|
|
89
|
+
export type ConversationAssemblyDeps = Omit<ConversationAgentDeps, "executeAnalysisWorkflow" | "resourcePolicy" | "usageRecorder" | "citationResolver" | "anchorReportSession" | "eyes" | "toolOutputStore" | "registerSubAgent">;
|
|
89
90
|
/**
|
|
90
|
-
* What binds one reference resolver: the analysis whose pinned artifacts it reads, and the
|
|
91
|
-
* call that reads them. A resolver serves one analysis, thus the report tools build one for
|
|
91
|
+
* What binds one reference resolver: the analysis whose pinned artifacts it reads, and the identity and the
|
|
92
|
+
* auth of the tool call that reads them. A resolver serves one analysis, thus the report tools build one for
|
|
93
|
+
* each call.
|
|
92
94
|
*/
|
|
93
|
-
export
|
|
95
|
+
export type ReportResolverScope = {
|
|
94
96
|
readonly analysisId: string;
|
|
97
|
+
readonly identity: Identity;
|
|
95
98
|
readonly auth: AuthContext;
|
|
96
|
-
}
|
|
99
|
+
};
|
|
97
100
|
/**
|
|
98
101
|
* The factory that gives the reference resolver of one report tool call. The harness wires the production
|
|
99
102
|
* realization, and an embedder can bind its own at its composition root.
|
|
100
103
|
*/
|
|
101
104
|
export type MakeReportReferenceResolver = (scope: ReportResolverScope) => Promise<ReferenceResolver>;
|
|
102
|
-
export
|
|
105
|
+
export type CoreRuntimeDeps = {
|
|
103
106
|
readonly conversation: ConversationAssemblyDeps;
|
|
104
107
|
readonly workflows: CoreWorkflowDeps;
|
|
105
108
|
/**
|
|
@@ -185,7 +188,15 @@ export interface CoreRuntimeDeps {
|
|
|
185
188
|
* which an embedder calls on its own. Thus that composition binds the seam there as well.
|
|
186
189
|
*/
|
|
187
190
|
readonly provenance?: ProvenanceSeam;
|
|
188
|
-
|
|
191
|
+
/**
|
|
192
|
+
* The credential of a chat turn that this process did not open, for example a turn that a recovery runs after a
|
|
193
|
+
* restart. The workflow input of a turn holds no credential. Absent, or `undefined` for a turn: the turn pauses
|
|
194
|
+
* with the cause `credential` before its next model call, until a resume gives a credential.
|
|
195
|
+
*/
|
|
196
|
+
readonly credentialFor?: (turnId: string) => AuthContext | undefined;
|
|
197
|
+
/** The delays of the timer of an outage, for each kind of work. Absent: the default of the pause. */
|
|
198
|
+
readonly pauseRetryDelaysMs?: readonly number[];
|
|
199
|
+
};
|
|
189
200
|
/**
|
|
190
201
|
* The refusal a thread type carries no agent yet. `report` is a valid
|
|
191
202
|
* `ThreadType` with no registered agent until its builder plugs in at assembly,
|
|
@@ -194,19 +205,19 @@ export interface CoreRuntimeDeps {
|
|
|
194
205
|
* life, and a bare-`AgentDefinition` return would force every future member to
|
|
195
206
|
* register an agent in the same commit that adds the member.
|
|
196
207
|
*/
|
|
197
|
-
export
|
|
208
|
+
export type UnregisteredThreadType = {
|
|
198
209
|
readonly type: "unregistered_thread_type";
|
|
199
210
|
readonly threadType: ThreadType;
|
|
200
|
-
}
|
|
211
|
+
};
|
|
201
212
|
/**
|
|
202
213
|
* How a thread's type selects the agent that runs its turns. Resolution is a
|
|
203
214
|
* synchronous record lookup, so the channel is plain `Result`, never
|
|
204
215
|
* `ResultAsync`: a registered type resolves to its assembled singleton, an
|
|
205
216
|
* unregistered one refuses on the error channel.
|
|
206
217
|
*/
|
|
207
|
-
export
|
|
218
|
+
export type ThreadAgentResolver = {
|
|
208
219
|
forThread(type: ThreadType): Result<AgentDefinition, UnregisteredThreadType>;
|
|
209
|
-
}
|
|
220
|
+
};
|
|
210
221
|
/**
|
|
211
222
|
* Wrap a type→agent registry as the resolution surface. Held apart from
|
|
212
223
|
* `assembleCoreRuntime` so the resolution contract — a registered type resolves
|
|
@@ -219,7 +230,7 @@ export interface ThreadAgentResolver {
|
|
|
219
230
|
* stay valid across every turn.
|
|
220
231
|
*/
|
|
221
232
|
export declare function createThreadAgentResolver(registry: Partial<Record<ThreadType, AgentDefinition>>): ThreadAgentResolver;
|
|
222
|
-
export
|
|
233
|
+
export type CoreRuntime = {
|
|
223
234
|
/**
|
|
224
235
|
* Thread→agent resolution — the only way to reach an assembled agent by
|
|
225
236
|
* thread type. Holds the singletons this call built; `conversation` resolves
|
|
@@ -236,13 +247,29 @@ export interface CoreRuntime {
|
|
|
236
247
|
readonly reportSession: Pick<ReportSessionRuntime, "ensureSessionState">;
|
|
237
248
|
readonly workflows: RegisteredWorkflows;
|
|
238
249
|
readonly citationResolver: CitationResolver;
|
|
250
|
+
/**
|
|
251
|
+
* The tool-approval gateway over the pool of the runtime: the one realization of `ctx.ask`. A host answers,
|
|
252
|
+
* lists, and sweeps the asks through it.
|
|
253
|
+
*/
|
|
254
|
+
readonly askGateway: AskGateway;
|
|
255
|
+
/**
|
|
256
|
+
* The chat turns of the runtime: `open` starts the workflow of a turn, `read` gives its frames, `stop` ends it,
|
|
257
|
+
* and `answer` answers one of its asks. The turn makes its model, its usage recorder, and its approval binding
|
|
258
|
+
* from the runtime, thus a host gives only the session and the user input.
|
|
259
|
+
*/
|
|
260
|
+
readonly chatTurns: ChatTurns;
|
|
261
|
+
/**
|
|
262
|
+
* The durable work of an analysis: `list` gives each active turn, run, and data profile with its waits, `stop`
|
|
263
|
+
* ends one work in each state, and `resume` and `hold` reach the waits of one work. Only a client resumes paused work.
|
|
264
|
+
*/
|
|
265
|
+
readonly work: WorkSurface;
|
|
239
266
|
/**
|
|
240
267
|
* Approve a stored plan by its id and start its run with no model call. It runs over the deps that
|
|
241
268
|
* reach the `execute_analysis` tool of the conversation agent, thus the approval and the tool launch
|
|
242
269
|
* a plan the same way.
|
|
243
270
|
*/
|
|
244
271
|
readonly approvePlan: (input: ApprovePlanInput) => ResultAsync<PlanApproval, ApprovePlanRefusal>;
|
|
245
|
-
}
|
|
272
|
+
};
|
|
246
273
|
/**
|
|
247
274
|
* The eyes of the composition, or none.
|
|
248
275
|
*
|
package/dist/runtime/assemble.js
CHANGED
|
@@ -18,21 +18,27 @@ import { err, ok } from "neverthrow";
|
|
|
18
18
|
import { createConversationAgent } from "../agents/conversation-agent.js";
|
|
19
19
|
import { createReportSessionAgent } from "../agents/report-session-agent.js";
|
|
20
20
|
import { approvePlan } from "../app/approve-plan.js";
|
|
21
|
+
import { registerChatTurns } from "../app/chat-turn-workflow.js";
|
|
22
|
+
import { createWork } from "../app/work.js";
|
|
23
|
+
import { createRunCanceler } from "../execution/run-canceler.js";
|
|
21
24
|
import { createReportSessionRuntime } from "../app/report-session-runtime.js";
|
|
22
25
|
import { createNoopUsageRecorder } from "../billing/noop-usage-recorder.js";
|
|
26
|
+
import { registerSubAgent } from "../loop/sub-agent.js";
|
|
27
|
+
import { workPause } from "../workflows/pause.js";
|
|
23
28
|
import { hasBrowserUrl } from "../lib/chrome.js";
|
|
24
29
|
import { createStaticEyes } from "../lib/eyes.js";
|
|
25
30
|
import { registerExecuteAnalysis } from "../workflows/execute-analysis.js";
|
|
26
31
|
import { registerSandboxStep } from "../workflows/sandbox-step.js";
|
|
27
|
-
import { registerDataProfileWorkflow } from "../tasks/data-profile.js";
|
|
28
|
-
import {
|
|
29
|
-
import { registerDeriveTableExecWorkflow, triggerDeriveTableExec } from "../tasks/derive-table-exec.js";
|
|
32
|
+
import { registerDataProfileWorkflow, stopDataProfile } from "../tasks/data-profile.js";
|
|
33
|
+
import { createExtractionArm, runExtraction } from "../tasks/extract-values.js";
|
|
30
34
|
import { createCitationResolver } from "../citations/resolve.js";
|
|
31
35
|
import { createThreadStore } from "../memory/thread-store.js";
|
|
32
36
|
import { createWorkingMemory } from "../memory/working-memory.js";
|
|
33
37
|
import { createArtifactReadStore, createProductionResolver } from "../report-model/production-resolver.js";
|
|
34
38
|
import { createReportVersionStore } from "../state/report-versions.js";
|
|
35
39
|
import { createToolOutputStore } from "../state/tool-outputs.js";
|
|
40
|
+
import { createAskGateway } from "../tools/approval/gateway.js";
|
|
41
|
+
import { createLiteratureReviewerTool } from "../tools/research/literature-reviewer.js";
|
|
36
42
|
const _assertDomainError = true;
|
|
37
43
|
/**
|
|
38
44
|
* Wrap a type→agent registry as the resolution surface. Held apart from
|
|
@@ -80,36 +86,49 @@ export function assembleCoreRuntime(deps) {
|
|
|
80
86
|
const { conversation, workflows: wf, resourcePolicy } = deps;
|
|
81
87
|
const usageRecorder = deps.usageRecorder ?? createNoopUsageRecorder();
|
|
82
88
|
const citationResolver = createCitationResolver({
|
|
83
|
-
...
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
? {}
|
|
87
|
-
: { semanticScholarApiKey: conversation.bioKeys.semanticScholar }),
|
|
89
|
+
...deps.citationResolverConfig,
|
|
90
|
+
ncbiApiKey: deps.citationResolverConfig?.ncbiApiKey ?? conversation.bioKeys.ncbi,
|
|
91
|
+
semanticScholarApiKey: deps.citationResolverConfig?.semanticScholarApiKey ?? conversation.bioKeys.semanticScholar,
|
|
88
92
|
});
|
|
89
93
|
const toolOutputStore = createToolOutputStore(conversation.pool);
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
94
|
+
const pauseRetryDelaysMs = deps.pauseRetryDelaysMs;
|
|
95
|
+
// Each child of a sub-agent pauses with the work of its caller, thus a resume of the turn or of the run ends its wait.
|
|
96
|
+
const subAgentPauses = ({ runSession, ...work }, emit) => workPause({
|
|
97
|
+
pool: conversation.pool,
|
|
98
|
+
...work,
|
|
99
|
+
emit,
|
|
100
|
+
retryDelaysMs: pauseRetryDelaysMs,
|
|
101
|
+
run: runSession === undefined ? undefined : { session: runSession, authorizer: conversation.runAuthorizer },
|
|
102
|
+
logger: conversation.logger,
|
|
103
|
+
}).afterFailure;
|
|
104
|
+
const registerPausingSubAgent = (name, body) => registerSubAgent(name, body, subAgentPauses);
|
|
105
|
+
const sandboxStep = registerSandboxStep({
|
|
106
|
+
...wf.sandboxStep,
|
|
93
107
|
citationResolver,
|
|
94
108
|
usageRecorder,
|
|
95
109
|
toolOutputStore,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const dataProfile = registerDataProfileWorkflow({ ...wf.dataProfile, usageRecorder, toolOutputStore });
|
|
99
|
-
// The extraction workflow shares the profile's sandbox and authorization rails, thus it draws the same
|
|
100
|
-
// three seams from the profile deps. The report resolver factory binds the extraction arm over this
|
|
101
|
-
// callable, thus a fall-through report reference reads its file out of process on the profile rails.
|
|
102
|
-
const extractValues = registerExtractValuesWorkflow({
|
|
103
|
-
sandboxClient: wf.dataProfile.sandboxClient,
|
|
104
|
-
runAuthorizer: wf.dataProfile.runAuthorizer,
|
|
105
|
-
...(wf.dataProfile.logger ? { logger: wf.dataProfile.logger } : {}),
|
|
110
|
+
pauseRetryDelaysMs,
|
|
111
|
+
runAuthorizer: conversation.runAuthorizer,
|
|
106
112
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
113
|
+
const { bioKeys: synthesisBioKeys, ...executeAnalysisDeps } = wf.buildExecuteAnalysis(sandboxStep);
|
|
114
|
+
const literatureReviewer = createLiteratureReviewerTool({
|
|
115
|
+
provider: executeAnalysisDeps.provider,
|
|
116
|
+
model: executeAnalysisDeps.synthesisModel,
|
|
117
|
+
bioKeys: synthesisBioKeys,
|
|
118
|
+
citationResolver,
|
|
119
|
+
usageRecorder,
|
|
120
|
+
toolOutputStore,
|
|
121
|
+
logger: executeAnalysisDeps.logger,
|
|
122
|
+
}, registerPausingSubAgent);
|
|
123
|
+
const executeAnalysis = registerExecuteAnalysis({
|
|
124
|
+
...executeAnalysisDeps,
|
|
125
|
+
literatureReviewer,
|
|
126
|
+
usageRecorder,
|
|
127
|
+
toolOutputStore,
|
|
128
|
+
workingMemory: createWorkingMemory(conversation.pool),
|
|
129
|
+
pauseRetryDelaysMs,
|
|
112
130
|
});
|
|
131
|
+
const dataProfile = registerDataProfileWorkflow({ ...wf.dataProfile, usageRecorder, toolOutputStore, pauseRetryDelaysMs });
|
|
113
132
|
// The session runtime binds the per-session state to the thread behind the
|
|
114
133
|
// tool boundary, thus one instance serves every report thread. It comes before
|
|
115
134
|
// the conversation agent, because `start_report_session` takes its anchor
|
|
@@ -119,7 +138,7 @@ export function assembleCoreRuntime(deps) {
|
|
|
119
138
|
const reportSession = createReportSessionRuntime({
|
|
120
139
|
pool: conversation.pool,
|
|
121
140
|
resolveWorkspaceRoot: conversation.resolveWorkspaceRoot,
|
|
122
|
-
|
|
141
|
+
logger: conversation.logger,
|
|
123
142
|
});
|
|
124
143
|
// The eyes of the composition resolve one time here. Thus the agent that looks at a page and
|
|
125
144
|
// the tool that starts a session read one answer. No tool reads the precedence again.
|
|
@@ -127,20 +146,21 @@ export function assembleCoreRuntime(deps) {
|
|
|
127
146
|
const conversationAgent = createConversationAgent({
|
|
128
147
|
...conversation,
|
|
129
148
|
executeAnalysisWorkflow: executeAnalysis,
|
|
130
|
-
anchorReportSession: reportSession.ensureSessionState,
|
|
149
|
+
anchorReportSession: reportSession.ensureSessionState.bind(reportSession),
|
|
131
150
|
resourcePolicy,
|
|
132
151
|
usageRecorder,
|
|
133
152
|
toolOutputStore,
|
|
134
153
|
citationResolver,
|
|
135
|
-
|
|
154
|
+
eyes,
|
|
136
155
|
// The start tool passes it to the spawn, which emits the creation of a
|
|
137
156
|
// report session. The same seam reaches the report agent below.
|
|
138
|
-
|
|
157
|
+
provenance: deps.provenance,
|
|
158
|
+
registerSubAgent: registerPausingSubAgent,
|
|
139
159
|
});
|
|
140
160
|
// The report agent is a singleton over the conversation deps, the same way the
|
|
141
161
|
// session runtime is. Its preview tool writes the page into the analysis tree
|
|
142
162
|
// and returns the path, thus the page write reaches no host seam.
|
|
143
|
-
const reportVersionStore = createReportVersionStore({ pool: conversation.pool,
|
|
163
|
+
const reportVersionStore = createReportVersionStore({ pool: conversation.pool, logger: conversation.logger });
|
|
144
164
|
const reportThreads = createThreadStore(conversation.pool);
|
|
145
165
|
// The read cache of the production report path, one for each recent analysis. A preview
|
|
146
166
|
// and the record that follows it are two tool calls over one draft, thus they meet the
|
|
@@ -149,18 +169,18 @@ export function assembleCoreRuntime(deps) {
|
|
|
149
169
|
// call never outlives the call, and one unchanged file costs one hash and one container.
|
|
150
170
|
const reportArtifactReads = createArtifactReadStore();
|
|
151
171
|
// The reference resolver of the report path, and its production wiring. A resolver reads
|
|
152
|
-
// the pinned artifacts of one analysis, thus the factory binds one analysis and one
|
|
153
|
-
// for each tool call. The extraction arm falls through to the
|
|
154
|
-
//
|
|
155
|
-
// the resolver defaults it to 16 MiB.
|
|
172
|
+
// the pinned artifacts of one analysis, thus the factory binds one analysis and one caller
|
|
173
|
+
// for each tool call. The extraction arm falls through to an extraction pass on the sandbox
|
|
174
|
+
// rail of the profile for an over-cap file or a host parse fault. The pass runs inside the
|
|
175
|
+
// step of the tool call. The cap gates the host read, and the resolver defaults it to 16 MiB.
|
|
156
176
|
const makeProductionReportResolver = async (scope) => {
|
|
157
|
-
const arm = createExtractionArm(
|
|
177
|
+
const arm = createExtractionArm((requests) => runExtraction({ sandboxClient: wf.dataProfile.sandboxClient, logger: wf.dataProfile.logger }, scope, requests));
|
|
158
178
|
return createProductionResolver({
|
|
159
179
|
workspaceRoot: await conversation.resolveWorkspaceRoot(scope.analysisId),
|
|
160
180
|
analysisId: scope.analysisId,
|
|
161
181
|
extractionArm: arm,
|
|
162
182
|
readCache: reportArtifactReads.forAnalysis(scope.analysisId),
|
|
163
|
-
|
|
183
|
+
cap: deps.reportHostReadCapBytes,
|
|
164
184
|
});
|
|
165
185
|
};
|
|
166
186
|
const makeReportResolver = deps.makeReportReferenceResolver ?? makeProductionReportResolver;
|
|
@@ -174,19 +194,18 @@ export function assembleCoreRuntime(deps) {
|
|
|
174
194
|
store: reportVersionStore,
|
|
175
195
|
threads: reportThreads,
|
|
176
196
|
chrome: conversation.chrome,
|
|
177
|
-
// The derivation tool draws the
|
|
178
|
-
// and
|
|
179
|
-
//
|
|
197
|
+
// The derivation tool draws the rail of the value tier: the same sandbox client. Thus a
|
|
198
|
+
// session derivation and an extraction run on one substrate, and neither one mints a run
|
|
199
|
+
// of the analysis.
|
|
180
200
|
derivations: reportSession.derivations,
|
|
181
|
-
|
|
182
|
-
runAuthorizer: conversation.runAuthorizer,
|
|
201
|
+
sandboxClient: wf.dataProfile.sandboxClient,
|
|
183
202
|
makeResolver: makeReportResolver,
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
203
|
+
eyes,
|
|
204
|
+
resolvePageAsset: deps.resolveReportPageAsset,
|
|
205
|
+
makeSessionPages: deps.makeSessionPagePublisher,
|
|
206
|
+
resolvePageUrl: deps.resolveReportPageUrl,
|
|
207
|
+
provenance: deps.provenance,
|
|
208
|
+
logger: conversation.logger,
|
|
190
209
|
toolOutputStore,
|
|
191
210
|
});
|
|
192
211
|
// The single registration point for every typed agent. A future thread type's
|
|
@@ -200,15 +219,43 @@ export function assembleCoreRuntime(deps) {
|
|
|
200
219
|
conversation: conversationAgent,
|
|
201
220
|
report: reportAgent,
|
|
202
221
|
};
|
|
222
|
+
const agentResolver = createThreadAgentResolver(agents);
|
|
223
|
+
const askGateway = createAskGateway({ pool: conversation.pool });
|
|
224
|
+
const chatTurns = registerChatTurns({
|
|
225
|
+
pool: conversation.pool,
|
|
226
|
+
logger: conversation.logger,
|
|
227
|
+
provenance: deps.provenance,
|
|
228
|
+
agents: agentResolver,
|
|
229
|
+
provider: conversation.provider,
|
|
230
|
+
usageRecorder,
|
|
231
|
+
askGateway,
|
|
232
|
+
credentialFor: deps.credentialFor,
|
|
233
|
+
pauseRetryDelaysMs,
|
|
234
|
+
});
|
|
203
235
|
return {
|
|
204
|
-
agents:
|
|
205
|
-
|
|
236
|
+
agents: agentResolver,
|
|
237
|
+
askGateway,
|
|
238
|
+
chatTurns,
|
|
239
|
+
work: createWork({
|
|
240
|
+
pool: conversation.pool,
|
|
241
|
+
runAuthorizer: conversation.runAuthorizer,
|
|
242
|
+
logger: conversation.logger,
|
|
243
|
+
stopTurn: (turnId) => chatTurns.stop(turnId),
|
|
244
|
+
runCanceler: createRunCanceler({
|
|
245
|
+
pool: conversation.pool,
|
|
246
|
+
runCharge: executeAnalysisDeps.runCharge,
|
|
247
|
+
runAuthorizer: conversation.runAuthorizer,
|
|
248
|
+
// The end of a canceled run goes where the run engine emits the rest of the run.
|
|
249
|
+
provenance: executeAnalysisDeps.provenance,
|
|
250
|
+
logger: conversation.logger,
|
|
251
|
+
}),
|
|
252
|
+
stopProfile: (analysisId, workflowId) => stopDataProfile({ pool: conversation.pool, logger: conversation.logger, notifyDataProfileSettled: wf.dataProfile.notifyDataProfileSettled }, analysisId, workflowId),
|
|
253
|
+
}),
|
|
254
|
+
reportSession: { ensureSessionState: reportSession.ensureSessionState.bind(reportSession) },
|
|
206
255
|
workflows: {
|
|
207
256
|
executeAnalysis,
|
|
208
257
|
sandboxStep,
|
|
209
258
|
dataProfile,
|
|
210
|
-
extractValues,
|
|
211
|
-
deriveTableExec,
|
|
212
259
|
},
|
|
213
260
|
citationResolver,
|
|
214
261
|
approvePlan: (input) => approvePlan({
|
|
@@ -216,10 +263,10 @@ export function assembleCoreRuntime(deps) {
|
|
|
216
263
|
executeAnalysisWorkflow: executeAnalysis,
|
|
217
264
|
runAuthorizer: conversation.runAuthorizer,
|
|
218
265
|
runLauncher: conversation.runLauncher,
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
266
|
+
resourcePolicy,
|
|
267
|
+
extendAnalysisFarm: conversation.extendAnalysisFarm,
|
|
268
|
+
logger: conversation.logger,
|
|
269
|
+
provenance: deps.provenance,
|
|
223
270
|
}, input),
|
|
224
271
|
};
|
|
225
272
|
}
|
package/dist/runtime/boot.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* `bootHarness` — the harness-owned boot sequence.
|
|
3
3
|
*
|
|
4
4
|
* `assembleCoreRuntime` stays sync and pure (it is the register-before-launch
|
|
5
|
-
* cohort SOT, driven by tests
|
|
5
|
+
* cohort SOT, driven by tests outside a workflow). `bootHarness` wraps it with
|
|
6
6
|
* the ordered, effectful boot steps every host must run in the same order, and
|
|
7
7
|
* returns a `shutdown` handle the embedder wires to its process signals. The
|
|
8
8
|
* ordering is load-bearing and runs cheapest-failure-first:
|
|
@@ -39,15 +39,16 @@
|
|
|
39
39
|
* once shutdown starts, exiting takes precedence (see `runShutdownSequence`).
|
|
40
40
|
*/
|
|
41
41
|
import type { Pool } from "pg";
|
|
42
|
+
import type { Querier } from "../state/db.js";
|
|
42
43
|
import type { Logger } from "../lib/logger.js";
|
|
43
44
|
import { type CoreRuntime, type CoreRuntimeDeps } from "./assemble.js";
|
|
44
45
|
import { type ConnectionBudgetConfig } from "./connection-budget.js";
|
|
45
46
|
import { type DbosConfig } from "./dbos.js";
|
|
46
|
-
export
|
|
47
|
+
export type BootHarnessDeps = {
|
|
47
48
|
/** Everything `assembleCoreRuntime` needs (workflow + conversation deps, resource policy). */
|
|
48
49
|
readonly core: CoreRuntimeDeps;
|
|
49
|
-
/**
|
|
50
|
-
readonly pool: Pool
|
|
50
|
+
/** The ledger pool — used for state init, the connection-budget guard, and closed on shutdown. */
|
|
51
|
+
readonly pool: Querier & Pick<Pool, "connect" | "end" | "options">;
|
|
51
52
|
/** Skills root; validated against the harness-owned agent catalog before launch. */
|
|
52
53
|
readonly skillsDir: string;
|
|
53
54
|
/** DBOS launch config (carries the stable `executorId`). */
|
|
@@ -72,10 +73,10 @@ export interface BootHarnessDeps {
|
|
|
72
73
|
readonly flushLogger?: () => Promise<void>;
|
|
73
74
|
/** Process exit at shutdown. Default no-op — the embedder owns process lifecycle. */
|
|
74
75
|
readonly exit?: (code: number) => void;
|
|
75
|
-
}
|
|
76
|
-
export
|
|
76
|
+
};
|
|
77
|
+
export type BootedHarness = {
|
|
77
78
|
readonly runtime: CoreRuntime;
|
|
78
79
|
/** Runs the graceful-shutdown sequence in durability order. Wire to SIGTERM/SIGINT. */
|
|
79
80
|
readonly shutdown: (signal: string) => Promise<void>;
|
|
80
|
-
}
|
|
81
|
+
};
|
|
81
82
|
export declare function bootHarness(deps: BootHarnessDeps): Promise<BootedHarness>;
|