@inflexa-ai/harness 0.45.0 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +19 -3
- package/dist/agents/conversation-agent.js +49 -30
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +35 -16
- package/dist/agents/sandbox/shared.js +63 -24
- package/dist/agents/sandbox/translational-safety-agent.js +26 -0
- package/dist/agents/sandbox/types.d.ts +26 -3
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +16 -2
- package/dist/agents/sandbox-catalog.js +22 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/approve-plan.d.ts +5 -2
- package/dist/app/approve-plan.js +1 -1
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +125 -99
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +10 -8
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +46 -22
- package/dist/contracts/chat-events.js +1 -1
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +67 -40
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +3 -3
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +45 -6
- package/dist/contracts/schemas/chat-events.js +16 -0
- package/dist/contracts/schemas/chat-parts.d.ts +214 -102
- package/dist/contracts/schemas/chat-parts.js +50 -7
- package/dist/contracts/schemas/index.d.ts +1 -1
- package/dist/contracts/schemas/index.js +1 -1
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +7 -6
- package/dist/execution/dbos-workflow-purger.js +29 -21
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +39 -17
- package/dist/execution/run-canceler.js +137 -28
- package/dist/execution/run-end-record.d.ts +29 -0
- package/dist/execution/run-end-record.js +27 -0
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +25 -24
- package/dist/index.js +36 -37
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +14 -9
- package/dist/loop/compaction.js +17 -0
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +34 -37
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -6
- package/dist/memory/conversation-display-recorder.js +64 -20
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +66 -24
- package/dist/memory/thread-history.js +212 -79
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +63 -9
- package/dist/prompts/briefing.js +130 -3
- package/dist/prompts/planner.js +13 -2
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +24 -19
- package/dist/provenance/seam.js +7 -5
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +303 -458
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +59 -92
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +166 -10
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +209 -231
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.d.ts +26 -4
- package/dist/sandbox/image-packages.js +29 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +351 -306
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +79 -25
- package/dist/schemas/plan-schemas.js +1 -1
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +127 -14
- package/dist/schemas/workflow-state.js +56 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +47 -18
- package/dist/state/artifacts.js +48 -7
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +5 -5
- package/dist/state/index.js +3 -3
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +70 -25
- package/dist/state/runs.js +127 -64
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +29 -8
- package/dist/state/step-executions.js +28 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +11 -9
- package/dist/tools/ad-hoc-router.js +80 -51
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +40 -0
- package/dist/tools/capability-data.js +74 -0
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +54 -17
- package/dist/tools/execute-analysis.js +193 -62
- package/dist/tools/knowledge/check.d.ts +182 -0
- package/dist/tools/knowledge/check.js +94 -0
- package/dist/tools/knowledge/client.d.ts +351 -0
- package/dist/tools/knowledge/client.js +319 -0
- package/dist/tools/knowledge/environment.d.ts +78 -0
- package/dist/tools/knowledge/environment.js +116 -0
- package/dist/tools/knowledge/index.d.ts +49 -0
- package/dist/tools/knowledge/index.js +70 -0
- package/dist/tools/knowledge/local-slots.d.ts +62 -0
- package/dist/tools/knowledge/local-slots.js +184 -0
- package/dist/tools/knowledge/pin.d.ts +14 -0
- package/dist/tools/knowledge/pin.js +17 -0
- package/dist/tools/knowledge/recommend.d.ts +67 -0
- package/dist/tools/knowledge/recommend.js +106 -0
- package/dist/tools/knowledge/situation.d.ts +143 -0
- package/dist/tools/knowledge/situation.js +157 -0
- package/dist/tools/knowledge/skeleton.d.ts +69 -0
- package/dist/tools/knowledge/skeleton.js +201 -0
- package/dist/tools/knowledge/template.d.ts +139 -0
- package/dist/tools/knowledge/template.js +273 -0
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +39 -16
- package/dist/tools/research/generate-plan.js +565 -338
- package/dist/tools/research/guarded-address.d.ts +20 -0
- package/dist/tools/research/guarded-address.js +149 -0
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +40 -0
- package/dist/tools/research/searxng-engine.js +122 -0
- package/dist/tools/research/web-fetch.d.ts +127 -0
- package/dist/tools/research/web-fetch.js +618 -0
- package/dist/tools/research/web-search.d.ts +84 -0
- package/dist/tools/research/web-search.js +117 -0
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +24 -12
- package/dist/tools/sandbox/list-available-packages.js +43 -29
- package/dist/tools/sandbox/list-available-refs.d.ts +38 -14
- package/dist/tools/sandbox/list-available-refs.js +119 -37
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +22 -68
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +14 -0
- package/dist/tools/terminal-text.js +51 -0
- package/dist/tools/workspace/decision-record.d.ts +81 -0
- package/dist/tools/workspace/decision-record.js +127 -0
- package/dist/tools/workspace/edit-file.d.ts +59 -18
- package/dist/tools/workspace/edit-file.js +98 -15
- package/dist/tools/workspace/execute-command.d.ts +31 -12
- package/dist/tools/workspace/execute-command.js +37 -8
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/index.d.ts +1 -0
- package/dist/tools/workspace/index.js +1 -0
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +100 -76
- package/dist/workflows/execute-analysis.js +380 -247
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +50 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +25 -22
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -236
- package/dist/loop/run-agent.js +0 -1110
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -90
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
|
@@ -41,48 +41,48 @@ export declare function statisticSlot(index: number): ChartSlot;
|
|
|
41
41
|
* chart grammar names, and the track and each tree carry each column that they name, thus the structural tier
|
|
42
42
|
* and the value tier match the same set.
|
|
43
43
|
*/
|
|
44
|
-
export
|
|
44
|
+
export type CollectedReference = {
|
|
45
45
|
blockId: string;
|
|
46
46
|
reference: Reference;
|
|
47
47
|
slot?: ChartSlot;
|
|
48
48
|
encodingColumns?: string[];
|
|
49
|
-
}
|
|
49
|
+
};
|
|
50
50
|
/** An advisory warning about the prose of one block. The detail is the numeral that the prose carries. */
|
|
51
|
-
export
|
|
51
|
+
export type FreeNumeralWarning = {
|
|
52
52
|
blockId: string;
|
|
53
53
|
kind: "free-numeral";
|
|
54
54
|
detail: string;
|
|
55
|
-
}
|
|
55
|
+
};
|
|
56
56
|
/**
|
|
57
57
|
* An advisory warning about one exponent form that the prose of a block carries and the page never prints.
|
|
58
58
|
* The detail is the written form.
|
|
59
59
|
*/
|
|
60
|
-
export
|
|
60
|
+
export type ExponentFormWarning = {
|
|
61
61
|
blockId: string;
|
|
62
62
|
kind: "exponent-form";
|
|
63
63
|
detail: string;
|
|
64
|
-
}
|
|
64
|
+
};
|
|
65
65
|
/** One advisory warning about the prose of a block. */
|
|
66
66
|
export type ProseWarning = FreeNumeralWarning | ExponentFormWarning;
|
|
67
67
|
/**
|
|
68
68
|
* An advisory warning about one derivation that no binding of the document names. The detail is the output
|
|
69
69
|
* path of the record. The record stays, and the bytes are reproducible from the script and the sources.
|
|
70
70
|
*/
|
|
71
|
-
export
|
|
71
|
+
export type UnusedDerivationWarning = {
|
|
72
72
|
kind: "unused-derivation";
|
|
73
73
|
detail: string;
|
|
74
|
-
}
|
|
74
|
+
};
|
|
75
75
|
/** One advisory warning about a report. A warning never makes a report invalid. */
|
|
76
76
|
export type ReportWarning = ProseWarning | UnusedDerivationWarning;
|
|
77
77
|
/** What one walk over a block tree found. */
|
|
78
|
-
export
|
|
78
|
+
export type BlockWalk = {
|
|
79
79
|
/** Each reference, in document order, tied to the block that carries it. */
|
|
80
80
|
references: CollectedReference[];
|
|
81
81
|
/** Each id that more than one block holds, named one time, in sorted order. */
|
|
82
82
|
repeatedIds: string[];
|
|
83
83
|
/** Each free numeral and each drifted exponent form that prose carries. */
|
|
84
84
|
warnings: ProseWarning[];
|
|
85
|
-
}
|
|
85
|
+
};
|
|
86
86
|
/** Warn for each free-standing numeral that the prose of one block carries. */
|
|
87
87
|
export declare function numeralWarnings(blockId: string, prose: string): FreeNumeralWarning[];
|
|
88
88
|
/**
|
|
@@ -35,6 +35,7 @@ export function statisticSlot(index) {
|
|
|
35
35
|
* can be a real free-standing figure or a harmless part of a name. Thus a hit warns, and it never fails
|
|
36
36
|
* the report.
|
|
37
37
|
*/
|
|
38
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- a free-standing numeral with its optional sign, percent, and decimals; the lookbehind keeps a symbol such as `TP53` outside the match.
|
|
38
39
|
const NUMERAL_PATTERN = /(?<![A-Za-z0-9])-?\d+(?:\.\d+)?%?/g;
|
|
39
40
|
/**
|
|
40
41
|
* A free-standing token that states a number in an exponent form, for example `4.3e-05`.
|
|
@@ -42,6 +43,7 @@ const NUMERAL_PATTERN = /(?<![A-Za-z0-9])-?\d+(?:\.\d+)?%?/g;
|
|
|
42
43
|
* The left boundary is the one of the numeral scan, thus a token inside a name never matches. The exponent
|
|
43
44
|
* itself carries an optional sign, because a written form gives one and a shown form never does.
|
|
44
45
|
*/
|
|
46
|
+
// oxlint-disable-next-line eslint-js/no-restricted-syntax -- the same left boundary with the exponent tail, so one warning names the exponent form and not its coefficient alone.
|
|
45
47
|
const EXPONENT_PATTERN = /(?<![A-Za-z0-9])-?\d+(?:\.\d+)?[eE][+-]?\d+/g;
|
|
46
48
|
/** Warn for each free-standing numeral that the prose of one block carries. */
|
|
47
49
|
export function numeralWarnings(blockId, prose) {
|
|
@@ -31,26 +31,26 @@ import { type ChartSlot, type ReportWarning } from "./block-walk.js";
|
|
|
31
31
|
import type { DraftDocument } from "./draft.js";
|
|
32
32
|
import type { ReportSnapshot } from "./reference-resolver.js";
|
|
33
33
|
/** A schema conformance gap, reduced to a path and a message. */
|
|
34
|
-
export
|
|
34
|
+
export type SchemaGap = {
|
|
35
35
|
kind: "schema";
|
|
36
36
|
path: string;
|
|
37
37
|
message: string;
|
|
38
|
-
}
|
|
38
|
+
};
|
|
39
39
|
/** A duplicate id gap. More than one block holds the id. */
|
|
40
|
-
export
|
|
40
|
+
export type DuplicateIdGap = {
|
|
41
41
|
kind: "duplicate-id";
|
|
42
42
|
id: string;
|
|
43
|
-
}
|
|
43
|
+
};
|
|
44
44
|
/**
|
|
45
45
|
* An unresolved reference gap. It ties the block that carries the reference to the reason it did not resolve.
|
|
46
46
|
* `slot` names the place of the reference inside a chart block: the binding, the track, a tree, or one statistic.
|
|
47
47
|
*/
|
|
48
|
-
export
|
|
48
|
+
export type UnresolvedReferenceGap = {
|
|
49
49
|
kind: "unresolved-reference";
|
|
50
50
|
blockId: string;
|
|
51
51
|
slot?: ChartSlot;
|
|
52
52
|
failure: UnresolvedReference;
|
|
53
|
-
}
|
|
53
|
+
};
|
|
54
54
|
/** One completeness gap of a draft. The kind set is closed. */
|
|
55
55
|
export type FinishGap = SchemaGap | DuplicateIdGap | UnresolvedReferenceGap;
|
|
56
56
|
/**
|
|
@@ -70,9 +70,9 @@ export type FinishResult = {
|
|
|
70
70
|
* One derivation of the session, as the finish reads it. The finish needs the output path alone, because
|
|
71
71
|
* the used set is the paths that the bindings name.
|
|
72
72
|
*/
|
|
73
|
-
export
|
|
73
|
+
export type SessionDerivation = {
|
|
74
74
|
readonly outputPath: string;
|
|
75
|
-
}
|
|
75
|
+
};
|
|
76
76
|
/**
|
|
77
77
|
* Finish a draft. The finish validates the schema, the unique ids, and the structural resolution of each
|
|
78
78
|
* reference, and it reports each gap as data. It warns about each free numeral in prose, and about each
|
|
@@ -79,7 +79,7 @@ export function finishDraft(draft, snapshot, derivations = []) {
|
|
|
79
79
|
gaps.push({
|
|
80
80
|
kind: "unresolved-reference",
|
|
81
81
|
blockId: entry.blockId,
|
|
82
|
-
|
|
82
|
+
slot: entry.slot,
|
|
83
83
|
failure: result.error,
|
|
84
84
|
});
|
|
85
85
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* give one hash, and a marker survives a round trip through storage.
|
|
11
11
|
*/
|
|
12
12
|
import { createHash } from "node:crypto";
|
|
13
|
+
import { parseUnknownRecord } from "../lib/unknown-containers.js";
|
|
13
14
|
/**
|
|
14
15
|
* Give back a copy of a value with each object key in sorted order, at every depth.
|
|
15
16
|
*
|
|
@@ -20,14 +21,14 @@ function canonicalize(value) {
|
|
|
20
21
|
if (Array.isArray(value)) {
|
|
21
22
|
return value.map(canonicalize);
|
|
22
23
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const record = parseUnknownRecord(value);
|
|
25
|
+
if (record === undefined)
|
|
26
|
+
return value;
|
|
27
|
+
const sorted = {};
|
|
28
|
+
for (const key of Object.keys(record).sort()) {
|
|
29
|
+
sorted[key] = canonicalize(record[key]);
|
|
29
30
|
}
|
|
30
|
-
return
|
|
31
|
+
return sorted;
|
|
31
32
|
}
|
|
32
33
|
/** The sha256 hash of the draft, over a JSON serialization with sorted keys. */
|
|
33
34
|
export function computeDraftHash(document) {
|
|
@@ -47,15 +47,15 @@ export type DraftPlace = "start" | "end" | {
|
|
|
47
47
|
after: string;
|
|
48
48
|
};
|
|
49
49
|
/** The destination of an add or a move. `parentId` names a section, or the root when it is absent. */
|
|
50
|
-
export
|
|
50
|
+
export type DraftDestination = {
|
|
51
51
|
parentId?: string;
|
|
52
52
|
place?: DraftPlace;
|
|
53
|
-
}
|
|
53
|
+
};
|
|
54
54
|
/** The add operation value. The payload can be an atom, or a section that carries children. */
|
|
55
|
-
export
|
|
55
|
+
export type AddOperation = {
|
|
56
56
|
block: unknown;
|
|
57
57
|
destination?: DraftDestination;
|
|
58
|
-
}
|
|
58
|
+
};
|
|
59
59
|
/**
|
|
60
60
|
* The change operation value. A `title` retitles a section target. A `block` replaces an atom target.
|
|
61
61
|
* The operation stamps the target id on the block, thus an id mismatch is unrepresentable.
|
|
@@ -68,14 +68,14 @@ export type ChangeOperation = {
|
|
|
68
68
|
block: unknown;
|
|
69
69
|
});
|
|
70
70
|
/** The remove operation value. It names one block by its id. */
|
|
71
|
-
export
|
|
71
|
+
export type RemoveOperation = {
|
|
72
72
|
targetId: string;
|
|
73
|
-
}
|
|
73
|
+
};
|
|
74
74
|
/** The move operation value. It names one block, and a destination with the shape of the add destination. */
|
|
75
|
-
export
|
|
75
|
+
export type MoveOperation = {
|
|
76
76
|
targetId: string;
|
|
77
77
|
destination?: DraftDestination;
|
|
78
|
-
}
|
|
78
|
+
};
|
|
79
79
|
/**
|
|
80
80
|
* Set the title of the document.
|
|
81
81
|
*
|
|
@@ -114,15 +114,27 @@ export declare function removeBlock(draft: DraftDocument, operation: RemoveOpera
|
|
|
114
114
|
*/
|
|
115
115
|
export declare function moveBlock(draft: DraftDocument, operation: MoveOperation, snapshot: ReportSnapshot): Result<DraftDocument, DraftRefusal>;
|
|
116
116
|
/** One block, the path of child indices from the root to the block, and the section that holds it. */
|
|
117
|
-
export
|
|
117
|
+
export type Located = {
|
|
118
118
|
block: DraftBlock;
|
|
119
119
|
path: number[];
|
|
120
|
+
/** The path of the container that holds the block, empty when the container is the root. */
|
|
121
|
+
containerPath: number[];
|
|
122
|
+
/** The index of the block inside its container. */
|
|
123
|
+
index: number;
|
|
120
124
|
/** The section that holds the block, or `undefined` when the block sits at the root. */
|
|
121
125
|
parent?: DraftSectionBlock;
|
|
122
|
-
}
|
|
126
|
+
};
|
|
123
127
|
/**
|
|
124
128
|
* Find a block by its id, with the path from the root. The search visits each block one time.
|
|
125
129
|
*
|
|
126
130
|
* The read surface needs the same search, thus this is the one find-by-id in the draft model.
|
|
127
131
|
*/
|
|
128
132
|
export declare function locate(document: DraftDocument, id: string): Located | undefined;
|
|
133
|
+
/**
|
|
134
|
+
* Rebuild the document with new children at a container path, and share each untouched branch.
|
|
135
|
+
*
|
|
136
|
+
* The root holds sections only, thus a root path with a child that is not a section refuses with
|
|
137
|
+
* `atom-at-root` and gives no candidate. Each operation refuses an atom at the root before it builds a
|
|
138
|
+
* candidate, thus no operation reaches this refusal.
|
|
139
|
+
*/
|
|
140
|
+
export declare function setChildren(document: DraftDocument, containerPath: number[], children: DraftBlock[]): Result<DraftDocument, DraftRefusal>;
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* an anchor id stays stable.
|
|
17
17
|
*/
|
|
18
18
|
import { err, ok } from "neverthrow";
|
|
19
|
+
import { parseUnknownRecord } from "../lib/unknown-containers.js";
|
|
19
20
|
import { walkBlocks } from "./block-walk.js";
|
|
20
21
|
import { DraftBlockSchema } from "./draft.js";
|
|
21
22
|
import { stampReferenceHashes } from "./reference-stamp.js";
|
|
@@ -52,8 +53,7 @@ export function addBlock(draft, operation, snapshot) {
|
|
|
52
53
|
if (destination.parentIsRoot && block.kind !== "section") {
|
|
53
54
|
return err({ reason: "atom-at-root", detail: `a ${block.kind} block cannot sit at the root` });
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
-
return commit(candidate, block, snapshot);
|
|
56
|
+
return insertAt(draft, destination.containerPath, destination.index, block).andThen((candidate) => commit(candidate, block, snapshot));
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
@@ -67,20 +67,19 @@ export function changeBlock(draft, operation, snapshot) {
|
|
|
67
67
|
if (target === undefined) {
|
|
68
68
|
return err({ reason: "unknown-target", detail: `no block holds the id ${operation.targetId}` });
|
|
69
69
|
}
|
|
70
|
-
const containerPath = target
|
|
71
|
-
const index = target.path[target.path.length - 1];
|
|
70
|
+
const { containerPath, index } = target;
|
|
72
71
|
if (target.block.kind === "section") {
|
|
73
72
|
if (!("title" in operation)) {
|
|
74
73
|
return err({ reason: "payload-kind-mismatch", detail: `the section ${operation.targetId} takes a title, not a block payload` });
|
|
75
74
|
}
|
|
76
75
|
const retitled = { ...target.block, title: operation.title };
|
|
77
|
-
return
|
|
76
|
+
return replaceAt(draft, containerPath, index, retitled).andThen((candidate) => commit(candidate, undefined, snapshot));
|
|
78
77
|
}
|
|
79
78
|
if ("title" in operation) {
|
|
80
79
|
return err({ reason: "payload-kind-mismatch", detail: `the block ${operation.targetId} is an atom, and it takes a full block, not a title` });
|
|
81
80
|
}
|
|
82
|
-
const payload = operation.block;
|
|
83
|
-
if (payload ===
|
|
81
|
+
const payload = parseUnknownRecord(operation.block);
|
|
82
|
+
if (payload === undefined) {
|
|
84
83
|
return err({ reason: "malformed-block", detail: "the payload is not an object" });
|
|
85
84
|
}
|
|
86
85
|
// The id stamp sets the target id on the payload before the parse. Thus an id mismatch is
|
|
@@ -99,7 +98,8 @@ export function changeBlock(draft, operation, snapshot) {
|
|
|
99
98
|
if (parsed.data.kind === "section") {
|
|
100
99
|
return err({ reason: "payload-kind-mismatch", detail: `the block ${operation.targetId} is an atom, and it cannot take a section payload` });
|
|
101
100
|
}
|
|
102
|
-
|
|
101
|
+
const replacement = parsed.data;
|
|
102
|
+
return replaceAt(draft, containerPath, index, replacement).andThen((candidate) => commit(candidate, replacement, snapshot));
|
|
103
103
|
}
|
|
104
104
|
/**
|
|
105
105
|
* Remove one block by its id.
|
|
@@ -111,9 +111,8 @@ export function removeBlock(draft, operation, snapshot) {
|
|
|
111
111
|
if (target === undefined) {
|
|
112
112
|
return err({ reason: "unknown-target", detail: `no block holds the id ${operation.targetId}` });
|
|
113
113
|
}
|
|
114
|
-
const containerPath = target
|
|
115
|
-
|
|
116
|
-
return commit(removeAt(draft, containerPath, index), undefined, snapshot);
|
|
114
|
+
const { containerPath, index } = target;
|
|
115
|
+
return removeAt(draft, containerPath, index).andThen((candidate) => commit(candidate, undefined, snapshot));
|
|
117
116
|
}
|
|
118
117
|
/**
|
|
119
118
|
* Move one block to a destination.
|
|
@@ -129,7 +128,7 @@ export function moveBlock(draft, operation, snapshot) {
|
|
|
129
128
|
const movedBlock = target.block;
|
|
130
129
|
const movedPath = target.path;
|
|
131
130
|
const place = operation.destination?.place;
|
|
132
|
-
if (place !== undefined &&
|
|
131
|
+
if (place !== undefined && place !== "start" && place !== "end") {
|
|
133
132
|
const anchorId = "before" in place ? place.before : place.after;
|
|
134
133
|
if (anchorId === operation.targetId) {
|
|
135
134
|
return err({ reason: "unknown-target", detail: `the block ${operation.targetId} cannot anchor its own move` });
|
|
@@ -144,13 +143,11 @@ export function moveBlock(draft, operation, snapshot) {
|
|
|
144
143
|
if (movedBlock.kind === "section" && isPrefix(movedPath, destination.containerPath)) {
|
|
145
144
|
return err({ reason: "cycle", detail: `the section ${operation.targetId} cannot move into its own subtree` });
|
|
146
145
|
}
|
|
147
|
-
const afterRemove = removeAt(draft, movedPath.slice(0, -1), movedPath[movedPath.length - 1]);
|
|
148
146
|
// The removal shifts the sibling indices of the old parent. Thus the destination resolves again
|
|
149
147
|
// against the reduced tree, and the fresh path and index address the correct place.
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
});
|
|
148
|
+
return removeAt(draft, target.containerPath, target.index).andThen((afterRemove) => resolveDestination(afterRemove, operation.destination)
|
|
149
|
+
.andThen((landing) => insertAt(afterRemove, landing.containerPath, landing.index, movedBlock))
|
|
150
|
+
.andThen((candidate) => commit(candidate, undefined, snapshot)));
|
|
154
151
|
});
|
|
155
152
|
}
|
|
156
153
|
/**
|
|
@@ -162,14 +159,14 @@ export function moveBlock(draft, operation, snapshot) {
|
|
|
162
159
|
function resolveDestination(document, destination) {
|
|
163
160
|
const place = destination?.place ?? "end";
|
|
164
161
|
const parentId = destination?.parentId;
|
|
165
|
-
if (
|
|
162
|
+
if (place !== "start" && place !== "end") {
|
|
166
163
|
const anchorId = "before" in place ? place.before : place.after;
|
|
167
164
|
const anchor = locate(document, anchorId);
|
|
168
165
|
if (anchor === undefined) {
|
|
169
166
|
return err({ reason: "unknown-target", detail: `no block holds the anchor id ${anchorId}` });
|
|
170
167
|
}
|
|
171
|
-
const containerPath = anchor.
|
|
172
|
-
const anchorIndex = anchor.
|
|
168
|
+
const containerPath = anchor.containerPath;
|
|
169
|
+
const anchorIndex = anchor.index;
|
|
173
170
|
const parentIsRoot = containerPath.length === 0;
|
|
174
171
|
if (parentId !== undefined && idAtPath(document, containerPath) !== parentId) {
|
|
175
172
|
return err({ reason: "unknown-target", detail: `the parent ${parentId} does not hold the anchor ${anchorId}` });
|
|
@@ -235,11 +232,11 @@ export function locate(document, id) {
|
|
|
235
232
|
return locateInBlocks(document.sections, id, [], undefined);
|
|
236
233
|
}
|
|
237
234
|
function locateInBlocks(blocks, id, prefix, parent) {
|
|
238
|
-
for (
|
|
239
|
-
const block = blocks[index];
|
|
235
|
+
for (const [index, block] of blocks.entries()) {
|
|
240
236
|
const path = [...prefix, index];
|
|
241
237
|
if (block.id === id) {
|
|
242
|
-
|
|
238
|
+
const located = { block, path, containerPath: prefix, index };
|
|
239
|
+
return parent === undefined ? located : { ...located, parent };
|
|
243
240
|
}
|
|
244
241
|
if (block.kind === "section") {
|
|
245
242
|
const found = locateInBlocks(block.blocks, id, path, block);
|
|
@@ -270,7 +267,7 @@ function getChildren(document, containerPath) {
|
|
|
270
267
|
let blocks = document.sections;
|
|
271
268
|
for (const index of containerPath) {
|
|
272
269
|
const node = blocks[index];
|
|
273
|
-
if (node.kind !== "section") {
|
|
270
|
+
if (node === undefined || node.kind !== "section") {
|
|
274
271
|
// A container path names a section at each step, thus this branch never runs.
|
|
275
272
|
return [];
|
|
276
273
|
}
|
|
@@ -278,19 +275,36 @@ function getChildren(document, containerPath) {
|
|
|
278
275
|
}
|
|
279
276
|
return blocks;
|
|
280
277
|
}
|
|
281
|
-
/**
|
|
282
|
-
function
|
|
278
|
+
/** Give `true` when every member of the list is a section. The root of a draft holds sections alone. */
|
|
279
|
+
function isSectionBlocks(blocks) {
|
|
280
|
+
return blocks.every((block) => block.kind === "section");
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Rebuild the document with new children at a container path, and share each untouched branch.
|
|
284
|
+
*
|
|
285
|
+
* The root holds sections only, thus a root path with a child that is not a section refuses with
|
|
286
|
+
* `atom-at-root` and gives no candidate. Each operation refuses an atom at the root before it builds a
|
|
287
|
+
* candidate, thus no operation reaches this refusal.
|
|
288
|
+
*/
|
|
289
|
+
export function setChildren(document, containerPath, children) {
|
|
283
290
|
if (containerPath.length === 0) {
|
|
284
|
-
|
|
285
|
-
|
|
291
|
+
if (!isSectionBlocks(children)) {
|
|
292
|
+
const atom = children.find((child) => child.kind !== "section");
|
|
293
|
+
return err({ reason: "atom-at-root", detail: `a ${atom?.kind ?? "non-section"} block cannot sit at the root` });
|
|
294
|
+
}
|
|
295
|
+
return ok({ ...document, sections: children });
|
|
286
296
|
}
|
|
287
|
-
return { ...document, sections: setChildrenInBlocks(document.sections, containerPath, children) };
|
|
297
|
+
return ok({ ...document, sections: setChildrenInBlocks(document.sections, containerPath, children) });
|
|
288
298
|
}
|
|
289
299
|
function setChildrenInBlocks(blocks, containerPath, children) {
|
|
290
300
|
const head = containerPath[0];
|
|
301
|
+
if (head === undefined) {
|
|
302
|
+
// setChildren splits off the root before it calls here, thus the path carries an index.
|
|
303
|
+
return blocks;
|
|
304
|
+
}
|
|
291
305
|
const rest = containerPath.slice(1);
|
|
292
306
|
const target = blocks[head];
|
|
293
|
-
if (target.kind !== "section") {
|
|
307
|
+
if (target === undefined || target.kind !== "section") {
|
|
294
308
|
// A container path names a section at each step, thus this branch never runs.
|
|
295
309
|
return blocks;
|
|
296
310
|
}
|
|
@@ -349,6 +363,10 @@ function isPrefix(prefix, path) {
|
|
|
349
363
|
/** Reduce a parse failure to a `malformed-block` refusal that names the first fault. */
|
|
350
364
|
function malformed(error) {
|
|
351
365
|
const issue = error.issues[0];
|
|
366
|
+
if (issue === undefined) {
|
|
367
|
+
// A ZodError carries at least one issue, thus this branch never runs.
|
|
368
|
+
return { reason: "malformed-block", detail: "the block does not match the draft grammar" };
|
|
369
|
+
}
|
|
352
370
|
const location = issue.path.map((segment) => String(segment)).join(".");
|
|
353
371
|
const detail = location.length > 0 ? `${location}: ${issue.message}` : issue.message;
|
|
354
372
|
return { reason: "malformed-block", detail };
|
|
@@ -13,18 +13,19 @@
|
|
|
13
13
|
* A read gives each binding with no hash. The pinned snapshot owns that value, thus an echoed hash would
|
|
14
14
|
* give the agent a value to mistype.
|
|
15
15
|
*/
|
|
16
|
-
import type
|
|
16
|
+
import { type Result } from "neverthrow";
|
|
17
|
+
import { type AuthoringAtomBlock } from "./authoring-grammar.js";
|
|
17
18
|
import type { DraftBlock, DraftDocument } from "./draft.js";
|
|
18
19
|
/**
|
|
19
20
|
* One outline entry. It carries the id, the kind, the nesting depth, and a short label. A top-level
|
|
20
21
|
* section is depth 0. The entry carries no binding, thus the outline stays small.
|
|
21
22
|
*/
|
|
22
|
-
export
|
|
23
|
+
export type OutlineEntry = {
|
|
23
24
|
id: string;
|
|
24
25
|
kind: DraftBlock["kind"];
|
|
25
26
|
depth: number;
|
|
26
27
|
label: string;
|
|
27
|
-
}
|
|
28
|
+
};
|
|
28
29
|
/**
|
|
29
30
|
* A section as the read surface gives it: its own fields, and the id of each child in document order.
|
|
30
31
|
*
|
|
@@ -32,12 +33,12 @@ export interface OutlineEntry {
|
|
|
32
33
|
* subtree would be a second copy of the outline, and a read of a top-level section would return the whole
|
|
33
34
|
* draft.
|
|
34
35
|
*/
|
|
35
|
-
export
|
|
36
|
+
export type ShallowSection = {
|
|
36
37
|
kind: "section";
|
|
37
38
|
id: string;
|
|
38
39
|
title: string;
|
|
39
40
|
childIds: string[];
|
|
40
|
-
}
|
|
41
|
+
};
|
|
41
42
|
/** One block as the read surface gives it. An atom reads in full and hash-free, and a section reads shallow. */
|
|
42
43
|
export type ReadableBlock = AuthoringAtomBlock | ShallowSection;
|
|
43
44
|
/**
|
|
@@ -55,8 +56,19 @@ export declare function buildOutline(draft: DraftDocument): OutlineEntry[];
|
|
|
55
56
|
* `depth` is the depth of the children, thus the entries read the same as the entries of a full outline.
|
|
56
57
|
*/
|
|
57
58
|
export declare function childOutline(blocks: readonly DraftBlock[], depth: number): OutlineEntry[];
|
|
59
|
+
/**
|
|
60
|
+
* A stored atom that the authoring grammar refuses. The draft grammar admits every stored atom, and the
|
|
61
|
+
* read gives the atom in the authoring grammar. The two grammars differ in the stamped hash alone, thus
|
|
62
|
+
* this failure shows drift between them, not a missing block.
|
|
63
|
+
*/
|
|
64
|
+
export type AtomRefusedByAuthoringGrammar = {
|
|
65
|
+
type: "atom-refused-by-authoring-grammar";
|
|
66
|
+
id: string;
|
|
67
|
+
cause: unknown;
|
|
68
|
+
};
|
|
58
69
|
/**
|
|
59
70
|
* Read one block by its id. An atom gives the block with its bindings, and each binding gives no hash. A
|
|
60
|
-
* section gives its own fields and the id of each child. A block that no id holds gives `undefined`.
|
|
71
|
+
* section gives its own fields and the id of each child. A block that no id holds gives `undefined`. A
|
|
72
|
+
* stored atom that the authoring grammar refuses gives an error that names the id.
|
|
61
73
|
*/
|
|
62
|
-
export declare function readBlock(draft: DraftDocument, id: string): ReadableBlock | undefined
|
|
74
|
+
export declare function readBlock(draft: DraftDocument, id: string): Result<ReadableBlock | undefined, AtomRefusedByAuthoringGrammar>;
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
* A read gives each binding with no hash. The pinned snapshot owns that value, thus an echoed hash would
|
|
14
14
|
* give the agent a value to mistype.
|
|
15
15
|
*/
|
|
16
|
+
import { err, ok } from "neverthrow";
|
|
16
17
|
import { locate } from "./draft-operations.js";
|
|
18
|
+
import { AuthoringBlockSchema } from "./authoring-grammar.js";
|
|
17
19
|
import { stripReferenceHashes } from "./reference-stamp.js";
|
|
18
20
|
/** The label keeps a prose head of at most this many code points. A clipped label ends with the marker. */
|
|
19
21
|
const PROSE_CLIP = 80;
|
|
@@ -31,7 +33,7 @@ const CLIP_MARKER = "…";
|
|
|
31
33
|
* were the whole one.
|
|
32
34
|
*/
|
|
33
35
|
function clip(text) {
|
|
34
|
-
const points =
|
|
36
|
+
const points = Array.from(text);
|
|
35
37
|
if (points.length <= PROSE_CLIP) {
|
|
36
38
|
return text;
|
|
37
39
|
}
|
|
@@ -109,17 +111,25 @@ export function childOutline(blocks, depth) {
|
|
|
109
111
|
}
|
|
110
112
|
/**
|
|
111
113
|
* Read one block by its id. An atom gives the block with its bindings, and each binding gives no hash. A
|
|
112
|
-
* section gives its own fields and the id of each child. A block that no id holds gives `undefined`.
|
|
114
|
+
* section gives its own fields and the id of each child. A block that no id holds gives `undefined`. A
|
|
115
|
+
* stored atom that the authoring grammar refuses gives an error that names the id.
|
|
113
116
|
*/
|
|
114
117
|
export function readBlock(draft, id) {
|
|
115
118
|
const found = locate(draft, id)?.block;
|
|
116
119
|
if (found === undefined) {
|
|
117
|
-
return undefined;
|
|
120
|
+
return ok(undefined);
|
|
118
121
|
}
|
|
119
122
|
if (found.kind === "section") {
|
|
120
|
-
return { kind: "section", id: found.id, title: found.title, childIds: found.blocks.map((child) => child.id) };
|
|
123
|
+
return ok({ kind: "section", id: found.id, title: found.title, childIds: found.blocks.map((child) => child.id) });
|
|
121
124
|
}
|
|
122
125
|
// The stored atom and the read atom differ in the stamped hash alone, and the walk removes that field.
|
|
123
|
-
|
|
124
|
-
|
|
126
|
+
const atom = AuthoringBlockSchema.safeParse(stripReferenceHashes(found));
|
|
127
|
+
if (!atom.success) {
|
|
128
|
+
return err({ type: "atom-refused-by-authoring-grammar", id, cause: atom.error });
|
|
129
|
+
}
|
|
130
|
+
if (atom.data.kind === "section") {
|
|
131
|
+
// The walk keeps the kind of a stored atom, thus this branch never runs. It refuses and does not give a section as an atom.
|
|
132
|
+
return err({ type: "atom-refused-by-authoring-grammar", id, cause: atom.data });
|
|
133
|
+
}
|
|
134
|
+
return ok(atom.data);
|
|
125
135
|
}
|