@inflexa-ai/harness 0.45.1 → 0.46.2
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 +306 -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 +32 -7
- package/dist/lib/hooks.js +22 -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 +160 -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 +39 -0
- package/dist/loop/turn-credentials.js +90 -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/request-headers.js +12 -3
- 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 +62 -0
- package/dist/testing.js +101 -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
package/dist/auth/types.d.ts
CHANGED
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
* `providers/request-headers.ts`).
|
|
22
22
|
*/
|
|
23
23
|
/** Who the request is. Always complete. */
|
|
24
|
-
export
|
|
24
|
+
export type Identity = {
|
|
25
25
|
readonly user: string;
|
|
26
|
-
}
|
|
26
|
+
};
|
|
27
27
|
/**
|
|
28
28
|
* What the request operates on. It owns its resource coordinates
|
|
29
29
|
* (`scopeResource`) and the workload id (`scopeWorkloadId`) used for
|
|
@@ -43,27 +43,27 @@ declare const CRED_BRAND: unique symbol;
|
|
|
43
43
|
* off it while still letting a concrete managed credential satisfy it
|
|
44
44
|
* structurally.
|
|
45
45
|
*/
|
|
46
|
-
export
|
|
46
|
+
export type Credential = {
|
|
47
47
|
readonly [CRED_BRAND]?: never;
|
|
48
|
-
}
|
|
48
|
+
};
|
|
49
49
|
/**
|
|
50
50
|
* The agent call chain at the point of a call. Read-only provenance —
|
|
51
51
|
* events, logs, and OTel spans read it; control flow MUST NOT branch on it.
|
|
52
52
|
*/
|
|
53
|
-
export
|
|
53
|
+
export type Provenance = {
|
|
54
54
|
readonly agentId: string;
|
|
55
55
|
readonly callPath: readonly string[];
|
|
56
|
-
}
|
|
56
|
+
};
|
|
57
57
|
/** Present only inside a workflow run. */
|
|
58
|
-
export
|
|
58
|
+
export type RunFrame = {
|
|
59
59
|
readonly runId: string;
|
|
60
60
|
readonly stepId?: string;
|
|
61
|
-
}
|
|
61
|
+
};
|
|
62
62
|
/** Canonical resource coordinates a `Scope` resolves to. */
|
|
63
|
-
export
|
|
63
|
+
export type ResourceCoordinates = {
|
|
64
64
|
readonly resourceType: "analysis";
|
|
65
65
|
readonly resourceId: string;
|
|
66
|
-
}
|
|
66
|
+
};
|
|
67
67
|
/** Derive the `{ resourceType, resourceId }` a scope resolves through: `{ "analysis", analysisId }`. */
|
|
68
68
|
export declare function scopeResource(scope: Scope): ResourceCoordinates;
|
|
69
69
|
/** The value stamped into the workload tag — the workload id for this scope. */
|
|
@@ -79,14 +79,14 @@ declare const AUTH_BRAND: unique symbol;
|
|
|
79
79
|
* off it while still letting a managed `{ credential, orgId }` literal satisfy
|
|
80
80
|
* it structurally.
|
|
81
81
|
*/
|
|
82
|
-
export
|
|
82
|
+
export type AuthContext = {
|
|
83
83
|
readonly [AUTH_BRAND]?: never;
|
|
84
|
-
}
|
|
84
|
+
};
|
|
85
85
|
/**
|
|
86
86
|
* The session view the agent loop, the provider seam, and tools accept —
|
|
87
87
|
* the union of what every layer below the HTTP door actually reads. The
|
|
88
|
-
* session is a conduit: `
|
|
89
|
-
* tool; tools forward it to `embed` and into nested `
|
|
88
|
+
* session is a conduit: `runLoop` forwards it to the provider and into each
|
|
89
|
+
* tool; tools forward it to `embed` and into nested `runLoop`s. The deepest
|
|
90
90
|
* consumer is the provider, which reads every field, so the conduit type is
|
|
91
91
|
* "all fields, generalized to what's read" — `credential` widened to the
|
|
92
92
|
* opaque `Credential` (nothing in the harness branches on the concrete shape),
|
|
@@ -96,7 +96,7 @@ export interface AuthContext {
|
|
|
96
96
|
* `RunSession` (with RunFrame) are each structurally assignable, so the
|
|
97
97
|
* same agent loop runs under a live request and inside a durable workflow.
|
|
98
98
|
*/
|
|
99
|
-
export
|
|
99
|
+
export type AgentSession = {
|
|
100
100
|
readonly identity: Identity;
|
|
101
101
|
readonly scope: Scope;
|
|
102
102
|
readonly provenance: Provenance;
|
|
@@ -107,57 +107,57 @@ export interface AgentSession {
|
|
|
107
107
|
* `getAuth`. The sole source of credential/org behind a session.
|
|
108
108
|
*/
|
|
109
109
|
readonly auth: AuthContext;
|
|
110
|
-
}
|
|
110
|
+
};
|
|
111
111
|
/**
|
|
112
112
|
* The live HTTP door. No `RunFrame` — `runId`/`stepId` are unrepresentable
|
|
113
113
|
* until async work is authorized. SHALL NOT be JSON-serialized into durable
|
|
114
114
|
* state.
|
|
115
115
|
*/
|
|
116
|
-
export
|
|
116
|
+
export type RequestSession = {
|
|
117
117
|
readonly identity: Identity;
|
|
118
118
|
readonly scope: Scope;
|
|
119
119
|
readonly provenance: Provenance;
|
|
120
120
|
readonly auth: AuthContext;
|
|
121
|
-
}
|
|
121
|
+
};
|
|
122
122
|
/**
|
|
123
123
|
* The durable, JSON-serializable bundle. Carries a `RunFrame`. Constructed
|
|
124
124
|
* solely at the run-authorization seam.
|
|
125
125
|
*/
|
|
126
|
-
export
|
|
126
|
+
export type RunSession = {
|
|
127
127
|
readonly identity: Identity;
|
|
128
128
|
readonly scope: Scope;
|
|
129
129
|
readonly provenance: Provenance;
|
|
130
130
|
readonly runFrame: RunFrame;
|
|
131
131
|
readonly auth: AuthContext;
|
|
132
|
-
}
|
|
132
|
+
};
|
|
133
133
|
/**
|
|
134
134
|
* The session of a sandbox spawn. A sandbox takes its analysis id, its run id,
|
|
135
135
|
* and its step id from this session.
|
|
136
136
|
*/
|
|
137
|
-
export
|
|
137
|
+
export type SpawnSession = RunSession & {
|
|
138
138
|
readonly runFrame: RunFrame & {
|
|
139
139
|
readonly stepId: string;
|
|
140
140
|
};
|
|
141
|
-
}
|
|
141
|
+
};
|
|
142
142
|
/**
|
|
143
143
|
* The minimal session view that a host hook reads. Both bundles satisfy it;
|
|
144
144
|
* `runFrame` is present only on a `RunSession`, so a hook that gets a
|
|
145
145
|
* `RequestSession` sees no run or step.
|
|
146
146
|
*/
|
|
147
|
-
export
|
|
147
|
+
export type HookSessionView = {
|
|
148
148
|
readonly identity: Identity;
|
|
149
149
|
readonly scope: Scope;
|
|
150
150
|
readonly provenance: Provenance;
|
|
151
151
|
readonly runFrame?: RunFrame;
|
|
152
|
-
}
|
|
152
|
+
};
|
|
153
153
|
/**
|
|
154
154
|
* The session that the request headers hook gets: the hook view plus the
|
|
155
155
|
* opaque `auth`, which a host realization downcasts to reach its credential.
|
|
156
156
|
* `AgentSession` structurally satisfies it.
|
|
157
157
|
*/
|
|
158
|
-
export
|
|
158
|
+
export type ResolvableSession = HookSessionView & {
|
|
159
159
|
readonly auth: AuthContext;
|
|
160
|
-
}
|
|
160
|
+
};
|
|
161
161
|
/**
|
|
162
162
|
* Derive a child session for a sub-agent call — provenance only. Sets the
|
|
163
163
|
* child `agentId` and appends it to `callPath`, leaving identity, scope, and
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
* owns eviction, coalescing, and expiry — the deep, drift-prone plumbing.
|
|
13
13
|
*/
|
|
14
14
|
import { ResultAsync } from "neverthrow";
|
|
15
|
-
export
|
|
15
|
+
export type CachedResolverMetrics = {
|
|
16
16
|
onHit(): void;
|
|
17
17
|
/** Recorded once per upstream fetch — coalesced callers do not count. */
|
|
18
18
|
onMiss(): void;
|
|
19
|
-
}
|
|
20
|
-
export
|
|
19
|
+
};
|
|
20
|
+
export type CachedResolverConfig<In, Out, E> = {
|
|
21
21
|
readonly ttlMs: number;
|
|
22
22
|
readonly maxEntries: number;
|
|
23
23
|
readonly keyFn: (input: In) => string;
|
|
24
24
|
readonly fetch: (input: In) => ResultAsync<Out, E>;
|
|
25
25
|
readonly metrics?: CachedResolverMetrics;
|
|
26
|
-
}
|
|
26
|
+
};
|
|
27
27
|
export declare function createCachedResolver<In, Out, E>(cfg: CachedResolverConfig<In, Out, E>): (input: In) => ResultAsync<Out, E>;
|
|
@@ -6,21 +6,18 @@
|
|
|
6
6
|
* external running-charge bracket; OSS wires a no-op. The harness only ever sees this
|
|
7
7
|
* interface — the body brackets the run, the embedder owns the ledger.
|
|
8
8
|
*
|
|
9
|
-
* `open` is a gate: an `err` ends the run before a step starts, or
|
|
10
|
-
* when the host
|
|
9
|
+
* `open` is a gate: an `err` ends the run before a step starts, or pauses it
|
|
10
|
+
* when the host sets the suspend flag. `close` is a notice: an `err` is logged, and the terminal
|
|
11
11
|
* status of the run does not change (see `lib/hooks.ts`).
|
|
12
12
|
*/
|
|
13
13
|
import type { ResultAsync } from "neverthrow";
|
|
14
14
|
import type { AgentSession } from "../auth/types.js";
|
|
15
15
|
import type { GateFailure, NoticeFailure } from "../lib/hooks.js";
|
|
16
|
-
/**
|
|
16
|
+
/** The outcome of a run that ended. A paused run does not end, thus it closes no charge. */
|
|
17
17
|
export type RunChargeOutcome = {
|
|
18
18
|
readonly kind: "ok" | "error" | "canceled";
|
|
19
|
-
} | {
|
|
20
|
-
readonly kind: "suspended";
|
|
21
|
-
readonly reason: string;
|
|
22
19
|
};
|
|
23
|
-
export
|
|
20
|
+
export type RunCharge = {
|
|
24
21
|
/** Open the run's running charge at init. */
|
|
25
22
|
open(args: {
|
|
26
23
|
analysisId: string;
|
|
@@ -34,4 +31,4 @@ export interface RunCharge {
|
|
|
34
31
|
outcome: RunChargeOutcome;
|
|
35
32
|
session: AgentSession;
|
|
36
33
|
}): ResultAsync<void, NoticeFailure>;
|
|
37
|
-
}
|
|
34
|
+
};
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* external running-charge bracket; OSS wires a no-op. The harness only ever sees this
|
|
7
7
|
* interface — the body brackets the run, the embedder owns the ledger.
|
|
8
8
|
*
|
|
9
|
-
* `open` is a gate: an `err` ends the run before a step starts, or
|
|
10
|
-
* when the host
|
|
9
|
+
* `open` is a gate: an `err` ends the run before a step starts, or pauses it
|
|
10
|
+
* when the host sets the suspend flag. `close` is a notice: an `err` is logged, and the terminal
|
|
11
11
|
* status of the run does not change (see `lib/hooks.ts`).
|
|
12
12
|
*/
|
|
13
13
|
export {};
|
|
@@ -15,16 +15,16 @@ import type { Scope } from "../auth/types.js";
|
|
|
15
15
|
import type { NoticeFailure } from "../lib/hooks.js";
|
|
16
16
|
import type { ChatUsage } from "../providers/types.js";
|
|
17
17
|
/** One completed LLM call's token usage, with the attribution held at the call site. */
|
|
18
|
-
export
|
|
18
|
+
export type LlmUsageRecord = {
|
|
19
19
|
/**
|
|
20
20
|
* Idempotency key. Stable across every replay of the same call: under a
|
|
21
21
|
* `RunFrame` it composes the `runId`, the frame's `stepId` when it carries
|
|
22
22
|
* one, the session's provenance call path, the dispatching tool call's id
|
|
23
|
-
* when the loop runs nested inside one, and the
|
|
24
|
-
*
|
|
25
|
-
* freshly minted. Every component past
|
|
26
|
-
*
|
|
27
|
-
*
|
|
23
|
+
* when the loop runs nested inside one, and the response id of the call,
|
|
24
|
+
* which the checkpoint of the call keeps; outside a `RunFrame` (the chat
|
|
25
|
+
* path, where no replay exists) it is freshly minted. Every component past
|
|
26
|
+
* the frame is load-bearing, because loops routinely share a frame: the
|
|
27
|
+
* `stepId` keeps sibling step workflows of one run
|
|
28
28
|
* apart, the call path keeps distinct agent chains under one frame apart,
|
|
29
29
|
* and the invocation id keeps parallel dispatches of one sub-agent apart.
|
|
30
30
|
* The harness guarantees key stability, not at-most-once delivery —
|
|
@@ -48,7 +48,7 @@ export interface LlmUsageRecord {
|
|
|
48
48
|
readonly servedModelId?: string;
|
|
49
49
|
/** What the provider reported. Unreported figures stay absent, never zeroed. */
|
|
50
50
|
readonly usage: ChatUsage;
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
52
|
/**
|
|
53
53
|
* Records one `LlmUsageRecord` per completed LLM call.
|
|
54
54
|
*
|
|
@@ -59,6 +59,6 @@ export interface LlmUsageRecord {
|
|
|
59
59
|
* make a run slower, but a realization that throws before it returns a
|
|
60
60
|
* `ResultAsync` still fails the run it was only meant to observe.
|
|
61
61
|
*/
|
|
62
|
-
export
|
|
62
|
+
export type UsageRecorder = {
|
|
63
63
|
record(record: LlmUsageRecord): ResultAsync<void, NoticeFailure>;
|
|
64
|
-
}
|
|
64
|
+
};
|
|
@@ -35,7 +35,7 @@ export function aggregateCitationResolution(input, normalized, sourceOutcomes, m
|
|
|
35
35
|
normalized,
|
|
36
36
|
sourceOutcomes: [...sourceOutcomes],
|
|
37
37
|
candidates,
|
|
38
|
-
|
|
38
|
+
selectedClusterId: selected?.id,
|
|
39
39
|
comparisons,
|
|
40
40
|
conflicts: detectCitationConflicts(candidates),
|
|
41
41
|
verdict,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CitationSourceClient } from "../types.js";
|
|
2
2
|
import type { SourceHttpOptions } from "../../literature/sources/http.js";
|
|
3
|
-
export
|
|
3
|
+
export type ArxivCitationClientOptions = SourceHttpOptions & {
|
|
4
4
|
readonly maxCandidates?: number;
|
|
5
|
-
}
|
|
5
|
+
};
|
|
6
6
|
export declare function createArxivCitationClient(options?: ArxivCitationClientOptions): CitationSourceClient;
|
|
@@ -10,7 +10,7 @@ function arxivRecord(paper) {
|
|
|
10
10
|
identifiers: { arxiv: identifier },
|
|
11
11
|
title: paper.title,
|
|
12
12
|
authors: paper.authors,
|
|
13
|
-
|
|
13
|
+
year,
|
|
14
14
|
venue: "arXiv",
|
|
15
15
|
url: paper.url,
|
|
16
16
|
};
|
|
@@ -22,9 +22,17 @@ export function createArxivCitationClient(options = {}) {
|
|
|
22
22
|
async resolve(request, signal) {
|
|
23
23
|
if (!request.plan.applicable)
|
|
24
24
|
return sourceOutcome("arxiv", request.plan.operation, "not_applicable", 0, [], request.plan.reason);
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
if (request.plan.operation === "arxiv_exact") {
|
|
26
|
+
const arxivId = request.normalized.identifiers.arxiv;
|
|
27
|
+
if (arxivId === undefined)
|
|
28
|
+
return sourceOutcome("arxiv", request.plan.operation, "unavailable", 0, [], "the exact plan carries no arXiv identifier");
|
|
29
|
+
const result = await source.lookupExact(arxivId, options.maxCandidates ?? 5, signal);
|
|
30
|
+
if (result.status !== "ok")
|
|
31
|
+
return sourceOutcome("arxiv", request.plan.operation, result.status, 1, [], result.detail);
|
|
32
|
+
const records = result.value.map(arxivRecord);
|
|
33
|
+
return sourceOutcome("arxiv", request.plan.operation, records.length === 0 ? "no_data" : "ok", 1, records);
|
|
34
|
+
}
|
|
35
|
+
const result = await source.search({ query: request.input.title ?? request.input.citation, limit: options.maxCandidates ?? 5 }, signal);
|
|
28
36
|
if (result.status !== "ok")
|
|
29
37
|
return sourceOutcome("arxiv", request.plan.operation, result.status, 1, [], result.detail);
|
|
30
38
|
const records = result.value.map(arxivRecord);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- a publication year stands alone in untyped metadata; the boundaries keep the tail of a longer number out.
|
|
2
|
+
const YEAR_PATTERN = /\b(1[5-9]\d{2}|20\d{2}|21\d{2})\b/;
|
|
1
3
|
export function notApplicableOutcome(plan) {
|
|
2
4
|
return {
|
|
3
5
|
source: plan.source,
|
|
@@ -15,7 +17,7 @@ export function sourceOutcome(source, operation, status, requestCount, records =
|
|
|
15
17
|
status,
|
|
16
18
|
requestCount,
|
|
17
19
|
records,
|
|
18
|
-
|
|
20
|
+
detail,
|
|
19
21
|
};
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
@@ -31,7 +33,7 @@ export function parseYear(value) {
|
|
|
31
33
|
return value;
|
|
32
34
|
if (typeof value !== "string")
|
|
33
35
|
return undefined;
|
|
34
|
-
const match = value.match(
|
|
36
|
+
const match = value.match(YEAR_PATTERN);
|
|
35
37
|
return match?.[1] === undefined ? undefined : Number(match[1]);
|
|
36
38
|
}
|
|
37
39
|
export function firstNonEmpty(values) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CitationSourceClient } from "../types.js";
|
|
2
2
|
import { type SourceHttpOptions } from "../../literature/sources/http.js";
|
|
3
|
-
export
|
|
3
|
+
export type CrossrefClientOptions = SourceHttpOptions & {
|
|
4
4
|
readonly mailto?: string;
|
|
5
5
|
readonly userAgent?: string;
|
|
6
6
|
readonly maxCandidates?: number;
|
|
7
|
-
}
|
|
7
|
+
};
|
|
8
8
|
export declare function createCrossrefClient(options?: CrossrefClientOptions): CitationSourceClient;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { encodeDoiPath, firstNonEmpty, parseYear, sourceOutcome } from "./common.js";
|
|
3
|
+
import { firstSegmentOf } from "../../lib/text.js";
|
|
3
4
|
import { requestJson } from "../../literature/sources/http.js";
|
|
4
|
-
const CrossrefItemSchema = z
|
|
5
|
-
.object({
|
|
5
|
+
const CrossrefItemSchema = z.looseObject({
|
|
6
6
|
DOI: z.string().optional(),
|
|
7
7
|
URL: z.string().optional(),
|
|
8
8
|
title: z.array(z.string()).optional(),
|
|
9
|
-
author: z.array(z.
|
|
9
|
+
author: z.array(z.looseObject({ given: z.string().optional(), family: z.string().optional(), name: z.string().optional() })).optional(),
|
|
10
10
|
issued: z.object({ "date-parts": z.array(z.array(z.number())).optional() }).optional(),
|
|
11
11
|
published: z.object({ "date-parts": z.array(z.array(z.number())).optional() }).optional(),
|
|
12
12
|
"container-title": z.array(z.string()).optional(),
|
|
13
13
|
volume: z.string().optional(),
|
|
14
14
|
page: z.string().optional(),
|
|
15
|
-
})
|
|
16
|
-
.passthrough();
|
|
15
|
+
});
|
|
17
16
|
const ExactSchema = z.object({ message: CrossrefItemSchema });
|
|
18
|
-
const SearchSchema = z.object({ message: z.
|
|
17
|
+
const SearchSchema = z.object({ message: z.looseObject({ items: z.array(CrossrefItemSchema) }) });
|
|
19
18
|
function crossrefRecord(item, index) {
|
|
20
19
|
const doi = item.DOI?.toLocaleLowerCase("en-US");
|
|
21
20
|
const sourceRecordId = firstNonEmpty([doi, item.URL, `candidate-${index}`]);
|
|
@@ -30,14 +29,14 @@ function crossrefRecord(item, index) {
|
|
|
30
29
|
return {
|
|
31
30
|
source: "crossref",
|
|
32
31
|
sourceRecordId,
|
|
33
|
-
identifiers: {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
identifiers: { doi },
|
|
33
|
+
title,
|
|
34
|
+
authors: authors !== undefined && authors.length > 0 ? authors : undefined,
|
|
35
|
+
year: dateParts?.[0] === undefined ? undefined : parseYear(dateParts[0]),
|
|
36
|
+
venue,
|
|
37
|
+
volume: item.volume,
|
|
38
|
+
firstPage: firstSegmentOf(item.page, "-–"),
|
|
39
|
+
url: item.URL,
|
|
41
40
|
};
|
|
42
41
|
}
|
|
43
42
|
export function createCrossrefClient(options = {}) {
|
|
@@ -66,29 +65,30 @@ export function createCrossrefClient(options = {}) {
|
|
|
66
65
|
}
|
|
67
66
|
const doi = request.normalized.identifiers.doi;
|
|
68
67
|
const exact = request.plan.operation === "crossref_doi_if_owned";
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
68
|
+
let url;
|
|
69
|
+
if (exact) {
|
|
70
|
+
if (doi === undefined)
|
|
71
|
+
return sourceOutcome("crossref", request.plan.operation, "unavailable", 0, [], "the exact plan carries no DOI");
|
|
72
|
+
const target = new URL(`https://api.crossref.org/works/${encodeDoiPath(doi)}`);
|
|
73
|
+
if (options.mailto)
|
|
74
|
+
target.searchParams.set("mailto", options.mailto);
|
|
75
|
+
url = target.toString();
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const params = new URLSearchParams({
|
|
79
|
+
"query.bibliographic": request.input.citation,
|
|
80
|
+
rows: String(options.maxCandidates ?? 5),
|
|
81
|
+
});
|
|
82
|
+
if (options.mailto)
|
|
83
|
+
params.set("mailto", options.mailto);
|
|
84
|
+
url = `https://api.crossref.org/works?${params}`;
|
|
85
|
+
}
|
|
86
|
+
const fetched = exact
|
|
87
|
+
? await requestJson(url, ExactSchema, options, signal, { headers }).then((result) => result.status === "ok" ? { status: "ok", value: [result.value.message] } : result)
|
|
88
|
+
: await requestJson(url, SearchSchema, options, signal, { headers }).then((result) => result.status === "ok" ? { status: "ok", value: result.value.message.items } : result);
|
|
89
|
+
if (fetched.status !== "ok")
|
|
90
|
+
return sourceOutcome("crossref", request.plan.operation, fetched.status, 1, [], fetched.detail);
|
|
91
|
+
const records = fetched.value.flatMap((item, index) => {
|
|
92
92
|
const record = crossrefRecord(item, index);
|
|
93
93
|
return record === undefined ? [] : [record];
|
|
94
94
|
});
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { encodeDoiPath, firstNonEmpty, parseYear, sourceOutcome } from "./common.js";
|
|
3
|
+
import { firstSegmentOf } from "../../lib/text.js";
|
|
3
4
|
import { requestJson } from "../../literature/sources/http.js";
|
|
4
|
-
const HandleResponseSchema = z.
|
|
5
|
-
const RegistrationAgencySchema = z.array(z.
|
|
6
|
-
const CslMetadataSchema = z
|
|
7
|
-
.object({
|
|
5
|
+
const HandleResponseSchema = z.looseObject({ responseCode: z.number() });
|
|
6
|
+
const RegistrationAgencySchema = z.array(z.looseObject({ DOI: z.string().optional(), RA: z.string().optional() }));
|
|
7
|
+
const CslMetadataSchema = z.looseObject({
|
|
8
8
|
DOI: z.string().optional(),
|
|
9
9
|
id: z.string().optional(),
|
|
10
10
|
title: z.union([z.string(), z.array(z.string())]).optional(),
|
|
11
|
-
author: z.array(z.
|
|
11
|
+
author: z.array(z.looseObject({ given: z.string().optional(), family: z.string().optional(), literal: z.string().optional() })).optional(),
|
|
12
12
|
issued: z.object({ "date-parts": z.array(z.array(z.number())).optional() }).optional(),
|
|
13
13
|
published: z.object({ "date-parts": z.array(z.array(z.number())).optional() }).optional(),
|
|
14
14
|
"container-title": z.union([z.string(), z.array(z.string())]).optional(),
|
|
15
15
|
volume: z.string().optional(),
|
|
16
16
|
page: z.string().optional(),
|
|
17
17
|
URL: z.string().optional(),
|
|
18
|
-
})
|
|
19
|
-
.passthrough();
|
|
18
|
+
});
|
|
20
19
|
function scalar(value) {
|
|
21
20
|
return Array.isArray(value) ? firstNonEmpty(value) : firstNonEmpty([value]);
|
|
22
21
|
}
|
|
@@ -31,14 +30,14 @@ function cslRecord(doi, registrationAgency, metadata) {
|
|
|
31
30
|
source: "doi_registry",
|
|
32
31
|
sourceRecordId: doi,
|
|
33
32
|
identifiers: { doi },
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
title,
|
|
34
|
+
authors: authors !== undefined && authors.length > 0 ? authors : undefined,
|
|
35
|
+
year: dateParts?.[0] === undefined ? undefined : parseYear(dateParts[0]),
|
|
36
|
+
venue,
|
|
37
|
+
volume: metadata?.volume,
|
|
38
|
+
firstPage: firstSegmentOf(metadata?.page, "-–"),
|
|
39
|
+
registrationAgency,
|
|
40
|
+
url: metadata?.URL,
|
|
42
41
|
};
|
|
43
42
|
}
|
|
44
43
|
export function createDoiRegistryClient(options = {}) {
|
|
@@ -86,7 +85,7 @@ export function createDoiRegistryClient(options = {}) {
|
|
|
86
85
|
type: "doi",
|
|
87
86
|
identifier: doi,
|
|
88
87
|
exists: true,
|
|
89
|
-
|
|
88
|
+
registrationAgency,
|
|
90
89
|
metadataAvailable: metadata !== undefined,
|
|
91
90
|
},
|
|
92
91
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CitationSourceClient } from "../types.js";
|
|
2
2
|
import { type PubmedSourceOptions } from "../../literature/sources/pubmed.js";
|
|
3
|
-
export
|
|
3
|
+
export type PubmedCitationClientOptions = PubmedSourceOptions & {
|
|
4
4
|
readonly maxCandidates?: number;
|
|
5
|
-
}
|
|
5
|
+
};
|
|
6
6
|
export declare function createPubmedCitationClient(options?: PubmedCitationClientOptions): CitationSourceClient;
|
|
@@ -5,11 +5,11 @@ function pubmedRecord(article) {
|
|
|
5
5
|
return {
|
|
6
6
|
source: "pubmed",
|
|
7
7
|
sourceRecordId: article.pmid,
|
|
8
|
-
identifiers: { pmid: article.pmid,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
identifiers: { pmid: article.pmid, doi: article.doi ? article.doi.toLocaleLowerCase("en-US") : undefined },
|
|
9
|
+
title: article.title ? article.title : undefined,
|
|
10
|
+
authors: article.authors.length > 0 ? article.authors : undefined,
|
|
11
|
+
year,
|
|
12
|
+
venue: article.journal ? article.journal : undefined,
|
|
13
13
|
url: `https://pubmed.ncbi.nlm.nih.gov/${article.pmid}/`,
|
|
14
14
|
};
|
|
15
15
|
}
|
|
@@ -21,16 +21,19 @@ export function createPubmedCitationClient(options = {}) {
|
|
|
21
21
|
let requestCount = 0;
|
|
22
22
|
let pmids;
|
|
23
23
|
if (request.plan.operation === "pubmed_exact") {
|
|
24
|
-
|
|
24
|
+
const pmid = request.normalized.identifiers.pmid;
|
|
25
|
+
if (pmid === undefined)
|
|
26
|
+
return sourceOutcome("pubmed", request.plan.operation, "unavailable", 0, [], "the exact plan carries no PMID");
|
|
27
|
+
pmids = [pmid];
|
|
25
28
|
}
|
|
26
29
|
else if (request.plan.operation === "pubmed_structured") {
|
|
27
30
|
requestCount += 1;
|
|
28
31
|
const match = await source.matchCitation({
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
venue: request.input.venue,
|
|
33
|
+
year: request.input.year,
|
|
34
|
+
volume: request.input.volume,
|
|
35
|
+
firstPage: request.input.firstPage,
|
|
36
|
+
firstAuthor: request.input.authors?.[0],
|
|
34
37
|
key: "citation-0",
|
|
35
38
|
}, signal);
|
|
36
39
|
if (match.status !== "ok")
|
|
@@ -39,7 +42,7 @@ export function createPubmedCitationClient(options = {}) {
|
|
|
39
42
|
}
|
|
40
43
|
else {
|
|
41
44
|
requestCount += 1;
|
|
42
|
-
const term = request.plan.operation === "pubmed_doi" ? `${request.normalized.identifiers.doi}[AID]` : `${request.input.title ?? ""}[Title]`;
|
|
45
|
+
const term = request.plan.operation === "pubmed_doi" ? `${String(request.normalized.identifiers.doi)}[AID]` : `${request.input.title ?? ""}[Title]`;
|
|
43
46
|
const search = await source.searchIds(term, options.maxCandidates ?? 5, signal);
|
|
44
47
|
if (search.status !== "ok")
|
|
45
48
|
return sourceOutcome("pubmed", request.plan.operation, search.status, requestCount, [], search.detail);
|
|
@@ -77,7 +80,11 @@ export function createPubmedCitationClient(options = {}) {
|
|
|
77
80
|
if (results[index] === undefined)
|
|
78
81
|
results[index] = await resolve(request, signal);
|
|
79
82
|
}));
|
|
80
|
-
return results.map((result) =>
|
|
83
|
+
return results.map((result) => {
|
|
84
|
+
if (result === undefined)
|
|
85
|
+
throw new Error("the pubmed batch left an outcome unresolved");
|
|
86
|
+
return result;
|
|
87
|
+
});
|
|
81
88
|
}
|
|
82
89
|
return { source: "pubmed", resolve, resolveMany };
|
|
83
90
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CitationSourceClient } from "../types.js";
|
|
2
2
|
import { type SemanticScholarSourceOptions } from "../../literature/sources/semantic-scholar.js";
|
|
3
|
-
export
|
|
3
|
+
export type SemanticScholarCitationClientOptions = SemanticScholarSourceOptions & {
|
|
4
4
|
readonly maxCandidates?: number;
|
|
5
|
-
}
|
|
5
|
+
};
|
|
6
6
|
export declare function createSemanticScholarCitationClient(options?: SemanticScholarCitationClientOptions): CitationSourceClient;
|
|
@@ -13,16 +13,16 @@ function semanticRecord(paper) {
|
|
|
13
13
|
source: "semantic_scholar",
|
|
14
14
|
sourceRecordId: paper.id,
|
|
15
15
|
identifiers: {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
doi,
|
|
17
|
+
pmid,
|
|
18
|
+
arxiv,
|
|
19
|
+
corpusId,
|
|
20
20
|
},
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
title: paper.title,
|
|
22
|
+
authors: paper.authors.length > 0 ? paper.authors : undefined,
|
|
23
|
+
year: paper.year,
|
|
24
|
+
venue: paper.venue,
|
|
25
|
+
url: paper.url,
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
export function createSemanticScholarCitationClient(options = {}) {
|
|
@@ -10,7 +10,7 @@ function recordValue(record, field) {
|
|
|
10
10
|
return record[field];
|
|
11
11
|
}
|
|
12
12
|
function normalizedValue(field, value) {
|
|
13
|
-
if (field === "authors")
|
|
13
|
+
if (field === "authors" && Array.isArray(value))
|
|
14
14
|
return value.map(normalizeAuthor).sort().join("|");
|
|
15
15
|
if (field === "year")
|
|
16
16
|
return String(value);
|
|
@@ -20,7 +20,7 @@ function authorMatch(supplied, source) {
|
|
|
20
20
|
return supplied.every((author) => source.some((candidate) => authorNamesMatch(author, candidate)));
|
|
21
21
|
}
|
|
22
22
|
function fieldMatches(field, supplied, source) {
|
|
23
|
-
if (field === "authors")
|
|
23
|
+
if (field === "authors" && Array.isArray(supplied) && Array.isArray(source))
|
|
24
24
|
return authorMatch(supplied, source);
|
|
25
25
|
if (field === "year")
|
|
26
26
|
return Math.abs(Number(supplied) - Number(source)) <= 1;
|