@inflexa-ai/harness 0.45.1 → 0.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/dist/agents/conversation-agent.d.ts +9 -3
- package/dist/agents/conversation-agent.js +34 -33
- package/dist/agents/report-session-agent.d.ts +15 -15
- package/dist/agents/report-session-agent.js +23 -15
- package/dist/agents/sandbox/index.d.ts +1 -1
- package/dist/agents/sandbox/index.js +1 -1
- package/dist/agents/sandbox/shared.d.ts +12 -14
- package/dist/agents/sandbox/shared.js +18 -12
- package/dist/agents/sandbox/types.d.ts +4 -4
- package/dist/agents/sandbox/validate-skills.d.ts +2 -2
- package/dist/agents/sandbox/validate-skills.js +3 -1
- package/dist/agents/sandbox-catalog.d.ts +2 -2
- package/dist/agents/sandbox-catalog.js +3 -3
- package/dist/agents/system-prompt.d.ts +2 -2
- package/dist/app/chat-turn-workflow.d.ts +114 -0
- package/dist/app/chat-turn-workflow.js +307 -0
- package/dist/app/chat-turn.d.ts +85 -57
- package/dist/app/chat-turn.js +123 -100
- package/dist/app/data-profile-orientation.js +10 -8
- package/dist/app/data-profile-view.d.ts +4 -4
- package/dist/app/data-profile-view.js +9 -8
- package/dist/app/in-process-turn.d.ts +42 -0
- package/dist/app/in-process-turn.js +139 -0
- package/dist/app/message-assembly.d.ts +10 -4
- package/dist/app/message-assembly.js +13 -8
- package/dist/app/report-session-runtime.d.ts +4 -4
- package/dist/app/report-session-runtime.js +36 -21
- package/dist/app/spawn-report-session.d.ts +33 -28
- package/dist/app/spawn-report-session.js +25 -40
- package/dist/app/synthesize-run.d.ts +22 -16
- package/dist/app/synthesize-run.js +41 -35
- package/dist/app/work.d.ts +96 -0
- package/dist/app/work.js +147 -0
- package/dist/auth/local-auth-context.d.ts +1 -3
- package/dist/auth/local-auth-context.js +1 -3
- package/dist/auth/local-run-authorizer.d.ts +1 -1
- package/dist/auth/local-run-authorizer.js +5 -3
- package/dist/auth/types.d.ts +26 -26
- package/dist/billing/cached-resolver.d.ts +4 -4
- package/dist/billing/run-charge.d.ts +5 -8
- package/dist/billing/run-charge.js +2 -2
- package/dist/billing/usage-recorder.d.ts +9 -9
- package/dist/citations/aggregate.js +1 -1
- package/dist/citations/clients/arxiv.d.ts +2 -2
- package/dist/citations/clients/arxiv.js +12 -4
- package/dist/citations/clients/common.js +4 -2
- package/dist/citations/clients/crossref.d.ts +2 -2
- package/dist/citations/clients/crossref.js +37 -37
- package/dist/citations/clients/doi-registry.js +15 -16
- package/dist/citations/clients/pubmed.d.ts +2 -2
- package/dist/citations/clients/pubmed.js +20 -13
- package/dist/citations/clients/semantic-scholar.d.ts +2 -2
- package/dist/citations/clients/semantic-scholar.js +9 -9
- package/dist/citations/compare.js +2 -2
- package/dist/citations/match.d.ts +2 -2
- package/dist/citations/match.js +12 -7
- package/dist/citations/normalize.js +35 -26
- package/dist/citations/plan.js +6 -2
- package/dist/citations/resolve.d.ts +6 -6
- package/dist/citations/resolve.js +34 -25
- package/dist/citations/types.d.ts +77 -77
- package/dist/config/environment-stores.d.ts +6 -6
- package/dist/config/resource-limits.js +1 -3
- package/dist/contracts/analogy-report.d.ts +7 -7
- package/dist/contracts/analogy-report.js +2 -2
- package/dist/contracts/chat-events.d.ts +38 -24
- package/dist/contracts/chat-frame.d.ts +15 -5
- package/dist/contracts/chat-frame.js +64 -41
- package/dist/contracts/chat-parts.d.ts +130 -67
- package/dist/contracts/chat-parts.js +1 -0
- package/dist/contracts/content-url.js +16 -2
- package/dist/contracts/data-profile.d.ts +38 -38
- package/dist/contracts/index.d.ts +2 -2
- package/dist/contracts/index.js +1 -1
- package/dist/contracts/message.d.ts +6 -6
- package/dist/contracts/organ-system.d.ts +11 -11
- package/dist/contracts/part-registry.d.ts +5 -4
- package/dist/contracts/part-registry.js +5 -0
- package/dist/contracts/profile-vocabulary.d.ts +11 -10
- package/dist/contracts/profile-vocabulary.js +10 -3
- package/dist/contracts/report-blocks.d.ts +329 -329
- package/dist/contracts/report-reference.d.ts +105 -81
- package/dist/contracts/report-reference.js +30 -13
- package/dist/contracts/schemas/chat-events.d.ts +30 -16
- package/dist/contracts/schemas/chat-events.js +15 -6
- package/dist/contracts/schemas/chat-parts.d.ts +175 -102
- package/dist/contracts/schemas/chat-parts.js +33 -7
- package/dist/contracts/severity.d.ts +1 -1
- package/dist/contracts/structure-source.d.ts +3 -3
- package/dist/contracts/structure-source.js +6 -2
- package/dist/contracts/subagent-activity.d.ts +2 -2
- package/dist/contracts/subagent-activity.js +5 -3
- package/dist/contracts/usage.d.ts +2 -2
- package/dist/data/safety-panel-schema.d.ts +25 -25
- package/dist/data/safety-panel-schema.js +13 -4
- package/dist/execution/artifact-metadata.d.ts +23 -15
- package/dist/execution/artifact-metadata.js +33 -10
- package/dist/execution/artifact-record.d.ts +2 -2
- package/dist/execution/artifact-registration.d.ts +5 -5
- package/dist/execution/artifact-registry.d.ts +8 -8
- package/dist/execution/dbos-run-launcher.d.ts +24 -4
- package/dist/execution/dbos-run-launcher.js +58 -4
- package/dist/execution/dbos-workflow-purger.d.ts +5 -6
- package/dist/execution/dbos-workflow-purger.js +8 -7
- package/dist/execution/input-signature.d.ts +2 -2
- package/dist/execution/post-step-pipeline.d.ts +9 -9
- package/dist/execution/post-step-pipeline.js +1 -1
- package/dist/execution/post-step.js +2 -2
- package/dist/execution/reconcile-manifest.d.ts +4 -4
- package/dist/execution/reconcile-manifest.js +3 -2
- package/dist/execution/run-authorizer.d.ts +46 -37
- package/dist/execution/run-authorizer.js +8 -8
- package/dist/execution/run-canceler.d.ts +7 -7
- package/dist/execution/run-canceler.js +14 -7
- package/dist/execution/run-end-record.d.ts +2 -3
- package/dist/execution/run-event-parts.d.ts +0 -8
- package/dist/execution/run-event-parts.js +29 -24
- package/dist/execution/run-event-stream.d.ts +8 -8
- package/dist/execution/run-event-stream.js +3 -4
- package/dist/execution/run-launcher.d.ts +4 -4
- package/dist/execution/run-synthesis.d.ts +49 -48
- package/dist/execution/run-synthesis.js +96 -255
- package/dist/execution/staged-input.d.ts +2 -2
- package/dist/execution/step-summary.d.ts +6 -6
- package/dist/execution/step-summary.js +4 -8
- package/dist/execution/topo-sort.js +4 -3
- package/dist/execution/workflow-purger.d.ts +2 -2
- package/dist/index.d.ts +17 -20
- package/dist/index.js +25 -36
- package/dist/input-sanitization.js +9 -2
- package/dist/input-scan/clustering.d.ts +6 -6
- package/dist/input-scan/clustering.js +11 -5
- package/dist/input-scan/companions.js +3 -2
- package/dist/input-scan/detect-sets.d.ts +2 -2
- package/dist/input-scan/detect-sets.js +25 -21
- package/dist/input-scan/enrich.d.ts +6 -6
- package/dist/input-scan/enrich.js +29 -12
- package/dist/input-scan/formats.d.ts +2 -2
- package/dist/input-scan/formats.js +8 -2
- package/dist/input-scan/markers.d.ts +2 -2
- package/dist/input-scan/markers.js +14 -5
- package/dist/input-scan/menu.d.ts +10 -10
- package/dist/input-scan/menu.js +0 -0
- package/dist/input-scan/quarantine.d.ts +2 -2
- package/dist/input-scan/quarantine.js +23 -18
- package/dist/input-scan/readout-budget.d.ts +2 -2
- package/dist/input-scan/readout-budget.js +1 -1
- package/dist/input-scan/readout.d.ts +2 -2
- package/dist/input-scan/readout.js +47 -34
- package/dist/input-scan/scan.d.ts +2 -2
- package/dist/input-scan/scan.js +7 -5
- package/dist/input-scan/set-types.d.ts +28 -28
- package/dist/input-scan/shapes.d.ts +4 -4
- package/dist/input-scan/shapes.js +0 -0
- package/dist/input-scan/templates.d.ts +10 -10
- package/dist/input-scan/templates.js +30 -22
- package/dist/input-scan/tokens.d.ts +6 -4
- package/dist/input-scan/tokens.js +100 -38
- package/dist/input-scan/types.d.ts +22 -22
- package/dist/lib/async-utils.d.ts +3 -7
- package/dist/lib/async-utils.js +5 -9
- package/dist/lib/cache.js +1 -1
- package/dist/lib/chrome.d.ts +46 -6
- package/dist/lib/console-logger.js +2 -2
- package/dist/lib/db-result.d.ts +22 -6
- package/dist/lib/db-result.js +9 -13
- package/dist/lib/eyes.d.ts +4 -4
- package/dist/lib/eyes.js +1 -1
- package/dist/lib/fs-helpers.js +18 -6
- package/dist/lib/fs-result.d.ts +1 -0
- package/dist/lib/fs-result.js +5 -6
- package/dist/lib/hooks.d.ts +23 -7
- package/dist/lib/hooks.js +17 -3
- package/dist/lib/host-concurrency.js +3 -2
- package/dist/lib/logger.d.ts +2 -2
- package/dist/lib/logger.js +2 -1
- package/dist/lib/metrics.d.ts +1 -1
- package/dist/lib/null-proto.d.ts +6 -0
- package/dist/lib/null-proto.js +17 -0
- package/dist/lib/otel-spans.d.ts +1 -1
- package/dist/lib/otel-spans.js +9 -5
- package/dist/lib/otel.d.ts +4 -2
- package/dist/lib/otel.js +10 -2
- package/dist/lib/page-capture.d.ts +8 -8
- package/dist/lib/page-capture.js +9 -4
- package/dist/lib/parse-json.d.ts +5 -0
- package/dist/lib/parse-json.js +12 -0
- package/dist/lib/present.d.ts +12 -0
- package/dist/lib/present.js +39 -0
- package/dist/lib/rate-limit.d.ts +4 -4
- package/dist/lib/rate-limit.js +12 -13
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-fda-guidance.js +4 -10
- package/dist/lib/regulatory-corpus/fetch-ich.d.ts +4 -4
- package/dist/lib/regulatory-corpus/fetch-ich.js +18 -14
- package/dist/lib/regulatory-corpus/normalize-whitespace.d.ts +6 -0
- package/dist/lib/regulatory-corpus/normalize-whitespace.js +41 -0
- package/dist/lib/regulatory-corpus.d.ts +10 -10
- package/dist/lib/regulatory-corpus.js +3 -1
- package/dist/lib/result.d.ts +10 -11
- package/dist/lib/result.js +15 -13
- package/dist/lib/storage.d.ts +2 -2
- package/dist/lib/test/async-iterable.d.ts +9 -0
- package/dist/lib/test/async-iterable.js +28 -0
- package/dist/lib/test/request-url.d.ts +5 -0
- package/dist/lib/test/request-url.js +7 -0
- package/dist/lib/test/result-assert.d.ts +12 -0
- package/dist/lib/test/result-assert.js +17 -0
- package/dist/lib/test/text-shapes.d.ts +24 -0
- package/dist/lib/test/text-shapes.js +63 -0
- package/dist/lib/text.d.ts +22 -0
- package/dist/lib/text.js +68 -0
- package/dist/lib/thrown.d.ts +18 -0
- package/dist/lib/thrown.js +30 -0
- package/dist/lib/unknown-array.d.ts +6 -0
- package/dist/lib/unknown-array.js +8 -0
- package/dist/lib/unknown-containers.d.ts +14 -0
- package/dist/lib/unknown-containers.js +17 -0
- package/dist/lib/unknown-text.d.ts +8 -0
- package/dist/lib/unknown-text.js +28 -0
- package/dist/lib/zod-issue-shape.d.ts +1 -1
- package/dist/lib/zod-issue-shape.js +31 -31
- package/dist/lib/zod-issues.d.ts +3 -3
- package/dist/lib/zod-issues.js +30 -17
- package/dist/literature/sources/arxiv.d.ts +6 -6
- package/dist/literature/sources/arxiv.js +92 -35
- package/dist/literature/sources/http.d.ts +2 -2
- package/dist/literature/sources/http.js +16 -15
- package/dist/literature/sources/pubmed.d.ts +16 -16
- package/dist/literature/sources/pubmed.js +96 -61
- package/dist/literature/sources/semantic-scholar.d.ts +8 -8
- package/dist/literature/sources/semantic-scholar.js +22 -13
- package/dist/loop/accounting.d.ts +63 -0
- package/dist/loop/accounting.js +141 -0
- package/dist/loop/call-policy.d.ts +73 -0
- package/dist/loop/call-policy.js +109 -0
- package/dist/loop/chat-stream.d.ts +62 -0
- package/dist/loop/chat-stream.js +237 -0
- package/dist/loop/compaction.d.ts +9 -9
- package/dist/loop/compaction.js +1 -1
- package/dist/loop/metrics.d.ts +12 -15
- package/dist/loop/metrics.js +14 -26
- package/dist/loop/run-loop.d.ts +233 -0
- package/dist/loop/run-loop.js +770 -0
- package/dist/loop/sub-agent.d.ts +61 -0
- package/dist/loop/sub-agent.js +161 -0
- package/dist/loop/tool-adapter.d.ts +98 -0
- package/dist/loop/tool-adapter.js +364 -0
- package/dist/loop/tool-detail.d.ts +1 -1
- package/dist/loop/tool-detail.js +6 -5
- package/dist/loop/tool-outcome.d.ts +1 -1
- package/dist/loop/tool-output.d.ts +4 -4
- package/dist/loop/tool-output.js +2 -2
- package/dist/loop/turn-credentials.d.ts +34 -0
- package/dist/loop/turn-credentials.js +73 -0
- package/dist/loop/types.d.ts +29 -38
- package/dist/loop/types.js +2 -7
- package/dist/memory/ai-sdk-message-storage.d.ts +5 -5
- package/dist/memory/ai-sdk-message-storage.js +13 -11
- package/dist/memory/card-builders.d.ts +14 -14
- package/dist/memory/card-builders.js +19 -15
- package/dist/memory/conversation-display-recorder.d.ts +22 -4
- package/dist/memory/conversation-display-recorder.js +43 -24
- package/dist/memory/conversation-display-replay.js +3 -2
- package/dist/memory/conversation-display-storage.d.ts +15 -7
- package/dist/memory/conversation-display-storage.js +141 -36
- package/dist/memory/conversation-view.d.ts +4 -4
- package/dist/memory/conversation-view.js +5 -4
- package/dist/memory/count-tokens.js +10 -8
- package/dist/memory/derive-thread-title.d.ts +0 -13
- package/dist/memory/derive-thread-title.js +2 -1
- package/dist/memory/message-backfill.d.ts +12 -5
- package/dist/memory/message-backfill.js +5 -3
- package/dist/memory/thread-history.d.ts +36 -21
- package/dist/memory/thread-history.js +78 -54
- package/dist/memory/thread-store.d.ts +26 -17
- package/dist/memory/thread-store.js +15 -9
- package/dist/memory/tool-call-integrity.d.ts +2 -2
- package/dist/memory/tool-call-integrity.js +4 -3
- package/dist/memory/working-memory.d.ts +16 -12
- package/dist/memory/working-memory.js +72 -61
- package/dist/prompts/briefing.d.ts +12 -12
- package/dist/prompts/briefing.js +1 -1
- package/dist/prompts/synthesis-agent.d.ts +1 -1
- package/dist/prompts/synthesis-agent.js +6 -14
- package/dist/provenance/collector.d.ts +6 -6
- package/dist/provenance/collector.js +15 -8
- package/dist/provenance/exec-frame.d.ts +2 -2
- package/dist/provenance/exec-frame.js +6 -1
- package/dist/provenance/seam.d.ts +1 -4
- package/dist/provenance/types.d.ts +6 -6
- package/dist/providers/ai-sdk.d.ts +113 -62
- package/dist/providers/ai-sdk.js +283 -518
- package/dist/providers/embedding.d.ts +2 -2
- package/dist/providers/embedding.js +1 -1
- package/dist/providers/errors.d.ts +22 -2
- package/dist/providers/errors.js +98 -50
- package/dist/providers/prompt-cache.d.ts +8 -8
- package/dist/providers/prompt-cache.js +13 -11
- package/dist/providers/reasoning.d.ts +2 -2
- package/dist/providers/reasoning.js +2 -2
- package/dist/providers/types.d.ts +55 -94
- package/dist/reference-data/catalog.d.ts +2 -15
- package/dist/reference-data/catalog.js +25 -8
- package/dist/reference-data/receipt.d.ts +2 -2
- package/dist/report-model/assert-rules.js +1 -1
- package/dist/report-model/authoring-grammar.d.ts +211 -233
- package/dist/report-model/block-walk.d.ts +10 -10
- package/dist/report-model/block-walk.js +2 -0
- package/dist/report-model/draft-finish.d.ts +8 -8
- package/dist/report-model/draft-finish.js +1 -1
- package/dist/report-model/draft-hash.js +8 -7
- package/dist/report-model/draft-operations.d.ts +22 -10
- package/dist/report-model/draft-operations.js +48 -30
- package/dist/report-model/draft-read.d.ts +19 -7
- package/dist/report-model/draft-read.js +16 -6
- package/dist/report-model/draft.d.ts +844 -2
- package/dist/report-model/draft.js +3 -1
- package/dist/report-model/fixture-resolver.js +39 -16
- package/dist/report-model/pin-snapshot.d.ts +2 -2
- package/dist/report-model/pin-snapshot.js +15 -15
- package/dist/report-model/production-resolver.d.ts +18 -18
- package/dist/report-model/production-resolver.js +50 -42
- package/dist/report-model/reference-resolver.d.ts +26 -10
- package/dist/report-model/reference-resolver.js +68 -5
- package/dist/report-model/reference-stamp.js +30 -38
- package/dist/report-model/structural-validation.js +12 -4
- package/dist/report-model/validate.d.ts +7 -7
- package/dist/report-model/validate.js +6 -6
- package/dist/report-render/assets.d.ts +2 -2
- package/dist/report-render/assets.js +27 -3
- package/dist/report-render/chart-export.d.ts +10 -2
- package/dist/report-render/chart-export.js +37 -11
- package/dist/report-render/chart-presets.d.ts +8 -8
- package/dist/report-render/chart-presets.js +3 -3
- package/dist/report-render/chart-renderers.d.ts +23 -16
- package/dist/report-render/chart-renderers.js +74 -53
- package/dist/report-render/chart-toolbox.d.ts +2 -2
- package/dist/report-render/chart-toolbox.js +7 -6
- package/dist/report-render/chart.d.ts +15 -16
- package/dist/report-render/chart.js +369 -252
- package/dist/report-render/design.d.ts +36 -297
- package/dist/report-render/design.js +0 -12
- package/dist/report-render/figures/common.d.ts +12 -12
- package/dist/report-render/figures/common.js +42 -31
- package/dist/report-render/figures/dendrogram.d.ts +3 -3
- package/dist/report-render/figures/dendrogram.js +10 -10
- package/dist/report-render/figures/dense.js +15 -8
- package/dist/report-render/figures/dotplot.js +46 -33
- package/dist/report-render/figures/embedding.js +52 -43
- package/dist/report-render/figures/equal-units.d.ts +10 -10
- package/dist/report-render/figures/equal-units.js +27 -27
- package/dist/report-render/figures/forest.js +9 -7
- package/dist/report-render/figures/gsea.js +21 -11
- package/dist/report-render/figures/heatmap.js +13 -9
- package/dist/report-render/figures/index.d.ts +10 -10
- package/dist/report-render/figures/index.js +4 -2
- package/dist/report-render/figures/km.js +10 -9
- package/dist/report-render/figures/label-room.d.ts +12 -12
- package/dist/report-render/figures/label-room.js +7 -2
- package/dist/report-render/figures/locuszoom.d.ts +2 -2
- package/dist/report-render/figures/locuszoom.js +59 -31
- package/dist/report-render/figures/lollipop.js +3 -2
- package/dist/report-render/figures/ma.js +8 -4
- package/dist/report-render/figures/manhattan.d.ts +1 -2
- package/dist/report-render/figures/manhattan.js +52 -34
- package/dist/report-render/figures/oncoprint.js +4 -5
- package/dist/report-render/figures/pca.js +25 -11
- package/dist/report-render/figures/qq.js +20 -9
- package/dist/report-render/figures/roc.js +1 -1
- package/dist/report-render/figures/sankey.d.ts +2 -2
- package/dist/report-render/figures/sankey.js +11 -10
- package/dist/report-render/figures/upset.d.ts +6 -6
- package/dist/report-render/figures/upset.js +7 -4
- package/dist/report-render/figures/volcano.js +12 -10
- package/dist/report-render/hybrid-svg.d.ts +4 -4
- package/dist/report-render/hybrid-svg.js +7 -5
- package/dist/report-render/number-format.d.ts +4 -4
- package/dist/report-render/number-format.js +62 -27
- package/dist/report-render/page.js +2 -1
- package/dist/report-render/provenance-data.d.ts +2 -2
- package/dist/report-render/references.d.ts +4 -4
- package/dist/report-render/render.d.ts +2 -2
- package/dist/report-render/render.js +10 -11
- package/dist/report-render/script-json.js +1 -1
- package/dist/report-render/table-data.d.ts +6 -6
- package/dist/report-render/test/options.d.ts +49 -0
- package/dist/report-render/test/options.js +143 -0
- package/dist/report-render/test/page-function.d.ts +19 -0
- package/dist/report-render/test/page-function.js +33 -0
- package/dist/report-render/types.d.ts +10 -10
- package/dist/report-render/value-bridge.d.ts +4 -4
- package/dist/report-render/value-bridge.js +27 -14
- package/dist/report-render/views/chart-view.d.ts +2 -2
- package/dist/report-render/views/chart-view.js +2 -2
- package/dist/report-render/views/lineage.d.ts +6 -6
- package/dist/report-render/views/lineage.js +2 -0
- package/dist/report-render/views/page-view.d.ts +2 -2
- package/dist/report-render/views/page-view.js +1 -0
- package/dist/report-render/views/prose.js +25 -8
- package/dist/report-render/views/references-view.js +12 -1
- package/dist/report-render/views/values.js +1 -1
- package/dist/runtime/assemble.d.ts +53 -26
- package/dist/runtime/assemble.js +103 -56
- package/dist/runtime/boot.d.ts +8 -7
- package/dist/runtime/boot.js +1 -1
- package/dist/runtime/connection-budget.d.ts +6 -6
- package/dist/runtime/connection-budget.js +1 -1
- package/dist/runtime/dbos.d.ts +29 -19
- package/dist/runtime/dbos.js +35 -20
- package/dist/runtime/result-serialization.js +18 -5
- package/dist/runtime/shutdown.d.ts +2 -2
- package/dist/sandbox/client.d.ts +7 -3
- package/dist/sandbox/cpu-files.d.ts +2 -2
- package/dist/sandbox/cpu-files.js +21 -4
- package/dist/sandbox/create-sandbox.d.ts +7 -8
- package/dist/sandbox/create-sandbox.js +6 -12
- package/dist/sandbox/docker-client.d.ts +48 -3
- package/dist/sandbox/docker-client.js +10 -6
- package/dist/sandbox/estimate-data-profile-resources.js +2 -7
- package/dist/sandbox/exec-outcome.d.ts +2 -2
- package/dist/sandbox/exec-outcome.js +1 -1
- package/dist/sandbox/exec.d.ts +10 -6
- package/dist/sandbox/exec.js +27 -12
- package/dist/sandbox/execution-id.js +14 -6
- package/dist/sandbox/farm.d.ts +2 -2
- package/dist/sandbox/farm.js +22 -27
- package/dist/sandbox/identity.d.ts +7 -0
- package/dist/sandbox/identity.js +14 -3
- package/dist/sandbox/image-packages.js +15 -27
- package/dist/sandbox/k8s-client.d.ts +35 -8
- package/dist/sandbox/k8s-client.js +6 -5
- package/dist/sandbox/labels.js +1 -0
- package/dist/sandbox/liveness.js +3 -1
- package/dist/sandbox/mount-plan.d.ts +10 -10
- package/dist/sandbox/mount-plan.js +13 -14
- package/dist/sandbox/notification-sweep.d.ts +4 -4
- package/dist/sandbox/notification-sweep.js +4 -7
- package/dist/sandbox/package-identity.d.ts +6 -13
- package/dist/sandbox/package-identity.js +46 -28
- package/dist/sandbox/reaper.d.ts +10 -10
- package/dist/sandbox/reaper.js +4 -6
- package/dist/sandbox/sandbox-error.d.ts +2 -9
- package/dist/sandbox/sandbox-error.js +21 -8
- package/dist/sandbox/sandbox-step-translate.d.ts +8 -5
- package/dist/sandbox/sandbox-step-translate.js +22 -8
- package/dist/sandbox/step-sandbox.d.ts +47 -0
- package/dist/sandbox/step-sandbox.js +53 -0
- package/dist/sandbox/types.d.ts +18 -19
- package/dist/sandbox/types.js +1 -1
- package/dist/schemas/artifact-manifest.d.ts +4 -4
- package/dist/schemas/data-profile-schemas.d.ts +343 -298
- package/dist/schemas/file-metadata.js +2 -4
- package/dist/schemas/plan-schemas.d.ts +31 -31
- package/dist/schemas/run-synthesis.d.ts +95 -26
- package/dist/schemas/run-synthesis.js +3 -1
- package/dist/schemas/validate-plan.d.ts +4 -4
- package/dist/schemas/validate-plan.js +17 -5
- package/dist/schemas/workflow-state.d.ts +19 -19
- package/dist/schemas/workflow-state.js +2 -2
- package/dist/state/active-turns.d.ts +36 -0
- package/dist/state/active-turns.js +67 -0
- package/dist/state/analyses-metrics.d.ts +8 -8
- package/dist/state/analyses-metrics.js +4 -4
- package/dist/state/analyses.d.ts +0 -14
- package/dist/state/analyses.js +0 -32
- package/dist/state/artifacts.d.ts +32 -19
- package/dist/state/artifacts.js +28 -5
- package/dist/state/data-profile.d.ts +2 -2
- package/dist/state/db.d.ts +12 -2
- package/dist/state/db.js +5 -0
- package/dist/state/edit-intents.d.ts +4 -0
- package/dist/state/edit-intents.js +71 -0
- package/dist/state/index.d.ts +4 -4
- package/dist/state/index.js +2 -2
- package/dist/state/init.d.ts +2 -1
- package/dist/state/init.js +5 -2
- package/dist/state/migrations/20260927120000_baseline.js +3 -1
- package/dist/state/migrations/20261026120000_add_the_edit_intents.d.ts +7 -0
- package/dist/state/migrations/20261026120000_add_the_edit_intents.js +21 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.d.ts +7 -0
- package/dist/state/migrations/20261027120000_record_the_applied_memory_edits.js +16 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.d.ts +8 -0
- package/dist/state/migrations/20261027120100_store_the_authoring_results.js +20 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.d.ts +7 -0
- package/dist/state/migrations/20261027120200_key_the_groups_of_a_turn.js +12 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.d.ts +7 -0
- package/dist/state/migrations/20261027120300_mark_the_active_turn_of_a_thread.js +11 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.d.ts +7 -0
- package/dist/state/migrations/20261028120000_record_the_paused_work.js +25 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.d.ts +8 -0
- package/dist/state/migrations/20261028120100_end_the_suspended_runs.js +13 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.d.ts +7 -0
- package/dist/state/migrations/20261029120000_reference_the_run_mandate.js +23 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.d.ts +7 -0
- package/dist/state/migrations/20261029120100_record_the_run_session_of_a_pause.js +11 -0
- package/dist/state/migrations/index.js +18 -0
- package/dist/state/paused-work.d.ts +52 -0
- package/dist/state/paused-work.js +105 -0
- package/dist/state/plans.d.ts +27 -8
- package/dist/state/plans.js +14 -11
- package/dist/state/purge-analysis.d.ts +6 -6
- package/dist/state/purge-analysis.js +10 -2
- package/dist/state/report-session-state.d.ts +43 -18
- package/dist/state/report-session-state.js +43 -4
- package/dist/state/report-versions.d.ts +16 -11
- package/dist/state/report-versions.js +5 -3
- package/dist/state/runs.d.ts +30 -19
- package/dist/state/runs.js +43 -51
- package/dist/state/schema.d.ts +18 -21
- package/dist/state/schema.js +4 -5
- package/dist/state/snapshot-parse.d.ts +2 -2
- package/dist/state/snapshot-parse.js +14 -8
- package/dist/state/step-executions.d.ts +20 -8
- package/dist/state/step-executions.js +6 -4
- package/dist/state/tool-outputs.d.ts +2 -2
- package/dist/state/tool-outputs.js +2 -1
- package/dist/state/vector-store.d.ts +16 -16
- package/dist/state/vector-store.js +11 -7
- package/dist/tasks/data-profile-absorb.d.ts +3 -3
- package/dist/tasks/data-profile-absorb.js +21 -16
- package/dist/tasks/data-profile-activity.d.ts +5 -5
- package/dist/tasks/data-profile-activity.js +5 -5
- package/dist/tasks/data-profile-index.d.ts +4 -4
- package/dist/tasks/data-profile-index.js +32 -17
- package/dist/tasks/data-profile-resolve.d.ts +8 -8
- package/dist/tasks/data-profile-resolve.js +88 -62
- package/dist/tasks/data-profile.d.ts +40 -31
- package/dist/tasks/data-profile.js +138 -95
- package/dist/tasks/extract-values.d.ts +26 -79
- package/dist/tasks/extract-values.js +48 -108
- package/dist/tasks/refresh-regulatory-corpus.d.ts +4 -20
- package/dist/tasks/refresh-regulatory-corpus.js +12 -8
- package/dist/tasks/regulatory-corpus-boot-refresh.d.ts +2 -2
- package/dist/tasks/regulatory-corpus-boot-refresh.js +12 -10
- package/dist/testing.d.ts +60 -0
- package/dist/testing.js +96 -0
- package/dist/tools/ad-hoc-router.d.ts +9 -9
- package/dist/tools/ad-hoc-router.js +65 -52
- package/dist/tools/analysis-invocation.d.ts +7 -0
- package/dist/tools/analysis-invocation.js +29 -5
- package/dist/tools/approval/contract.d.ts +8 -52
- package/dist/tools/approval/contract.js +7 -36
- package/dist/tools/approval/gateway.d.ts +27 -28
- package/dist/tools/approval/gateway.js +33 -130
- package/dist/tools/approval/queries.d.ts +6 -11
- package/dist/tools/approval/queries.js +43 -29
- package/dist/tools/approval/uuidv7.js +2 -2
- package/dist/tools/bio/chembl.d.ts +3 -3
- package/dist/tools/bio/chembl.js +10 -0
- package/dist/tools/bio/comptox.d.ts +25 -8
- package/dist/tools/bio/comptox.js +4 -2
- package/dist/tools/bio/drug-gene-interactions.d.ts +27 -17
- package/dist/tools/bio/drug-gene-interactions.js +11 -8
- package/dist/tools/bio/gene-disease-evidence.d.ts +61 -15
- package/dist/tools/bio/gene-disease-evidence.js +10 -6
- package/dist/tools/bio/gene-preclinical-profile.d.ts +11 -11
- package/dist/tools/bio/keys.d.ts +2 -2
- package/dist/tools/bio/keys.js +3 -3
- package/dist/tools/bio/lookup-annotation.d.ts +5 -5
- package/dist/tools/bio/lookup-annotation.js +3 -0
- package/dist/tools/bio/opentargets.d.ts +1 -1
- package/dist/tools/bio/opentargets.js +6 -0
- package/dist/tools/bio/pubchem.d.ts +2 -2
- package/dist/tools/bio/pubchem.js +6 -0
- package/dist/tools/bio/pubmed.d.ts +26 -16
- package/dist/tools/bio/pubmed.js +9 -3
- package/dist/tools/bio/search-clinical-trials.d.ts +4 -4
- package/dist/tools/bio/search-clinical-trials.js +5 -1
- package/dist/tools/bio/search-faers.d.ts +2 -2
- package/dist/tools/bio/search-faers.js +1 -1
- package/dist/tools/bio/search-gene.d.ts +2 -2
- package/dist/tools/bio/search-gene.js +1 -0
- package/dist/tools/bio/search-geo-datasets.d.ts +4 -4
- package/dist/tools/bio/search-geo-datasets.js +5 -5
- package/dist/tools/bio/search-interactions.d.ts +1 -1
- package/dist/tools/bio/search-patents.d.ts +28 -22
- package/dist/tools/bio/search-patents.js +20 -17
- package/dist/tools/bio/search-protein.d.ts +2 -2
- package/dist/tools/bio/search-protein.js +1 -1
- package/dist/tools/bio/search-regulatory-approvals.d.ts +64 -18
- package/dist/tools/bio/search-regulatory-approvals.js +21 -16
- package/dist/tools/bio/target-safety.d.ts +8 -8
- package/dist/tools/bio/target-safety.js +11 -6
- package/dist/tools/capability-data.d.ts +9 -5
- package/dist/tools/capability-data.js +2 -1
- package/dist/tools/define-tool.d.ts +55 -46
- package/dist/tools/define-tool.js +39 -27
- package/dist/tools/display/normalize-echart-spec.d.ts +2 -2
- package/dist/tools/display/normalize-echart-spec.js +51 -27
- package/dist/tools/display/show-user.d.ts +2 -2
- package/dist/tools/display/show-user.js +1 -1
- package/dist/tools/execute-analysis.d.ts +19 -10
- package/dist/tools/execute-analysis.js +83 -62
- package/dist/tools/knowledge/check.d.ts +166 -44
- package/dist/tools/knowledge/check.js +5 -3
- package/dist/tools/knowledge/client.d.ts +31 -62
- package/dist/tools/knowledge/client.js +44 -27
- package/dist/tools/knowledge/environment.d.ts +6 -6
- package/dist/tools/knowledge/environment.js +18 -7
- package/dist/tools/knowledge/index.d.ts +2 -2
- package/dist/tools/knowledge/index.js +9 -9
- package/dist/tools/knowledge/local-slots.d.ts +4 -4
- package/dist/tools/knowledge/local-slots.js +11 -4
- package/dist/tools/knowledge/pin.d.ts +2 -2
- package/dist/tools/knowledge/recommend.d.ts +20 -45
- package/dist/tools/knowledge/recommend.js +27 -19
- package/dist/tools/knowledge/situation.d.ts +40 -40
- package/dist/tools/knowledge/situation.js +2 -9
- package/dist/tools/knowledge/skeleton.d.ts +4 -4
- package/dist/tools/knowledge/skeleton.js +10 -11
- package/dist/tools/knowledge/template.d.ts +20 -18
- package/dist/tools/knowledge/template.js +38 -32
- package/dist/tools/lib/alphafold-client.js +2 -1
- package/dist/tools/lib/amass-client.d.ts +28 -28
- package/dist/tools/lib/amass-client.js +20 -10
- package/dist/tools/lib/api-utils.d.ts +13 -3
- package/dist/tools/lib/api-utils.js +17 -3
- package/dist/tools/lib/bgee-client.d.ts +6 -6
- package/dist/tools/lib/bgee-client.js +16 -10
- package/dist/tools/lib/cbioportal-client.d.ts +4 -4
- package/dist/tools/lib/cbioportal-client.js +9 -8
- package/dist/tools/lib/chembl-client.d.ts +14 -14
- package/dist/tools/lib/chembl-client.js +11 -4
- package/dist/tools/lib/clinical-benchmarks-client.d.ts +4 -4
- package/dist/tools/lib/clinical-benchmarks-client.js +4 -7
- package/dist/tools/lib/clinical-trials-client.d.ts +18 -18
- package/dist/tools/lib/clinical-trials-client.js +10 -10
- package/dist/tools/lib/clinvar-client.d.ts +2 -2
- package/dist/tools/lib/clinvar-client.js +6 -6
- package/dist/tools/lib/ctx-ops.d.ts +23 -23
- package/dist/tools/lib/ctx-ops.js +13 -10
- package/dist/tools/lib/dgidb-client.d.ts +6 -6
- package/dist/tools/lib/dgidb-client.js +10 -12
- package/dist/tools/lib/disgenet-client.d.ts +4 -4
- package/dist/tools/lib/ema-client.d.ts +2 -2
- package/dist/tools/lib/ensembl-client.d.ts +4 -4
- package/dist/tools/lib/ensembl-client.js +5 -4
- package/dist/tools/lib/gwas-catalog-client.d.ts +4 -4
- package/dist/tools/lib/gwas-catalog-client.js +17 -17
- package/dist/tools/lib/html-text.d.ts +6 -0
- package/dist/tools/lib/html-text.js +9 -0
- package/dist/tools/lib/identifier-resolver.d.ts +4 -4
- package/dist/tools/lib/identifier-resolver.js +7 -3
- package/dist/tools/lib/impc-client.d.ts +8 -8
- package/dist/tools/lib/impc-client.js +46 -35
- package/dist/tools/lib/iuphar-client.d.ts +2 -2
- package/dist/tools/lib/iuphar-client.js +7 -16
- package/dist/tools/lib/monarch-client.d.ts +4 -4
- package/dist/tools/lib/openfda-client.d.ts +22 -22
- package/dist/tools/lib/openfda-client.js +23 -22
- package/dist/tools/lib/opentargets-client.d.ts +12 -12
- package/dist/tools/lib/pathway-client.d.ts +4 -4
- package/dist/tools/lib/pathway-client.js +15 -19
- package/dist/tools/lib/pharmgkb-client.d.ts +2 -2
- package/dist/tools/lib/pharmgkb-client.js +1 -1
- package/dist/tools/lib/protein-family-modality.d.ts +2 -2
- package/dist/tools/lib/protein-family-modality.js +0 -2
- package/dist/tools/lib/protein-family-normalize.js +7 -0
- package/dist/tools/lib/pubchem-client.d.ts +2 -2
- package/dist/tools/lib/pubchem-client.js +1 -0
- package/dist/tools/lib/pubchem-ops.d.ts +4 -4
- package/dist/tools/lib/pubchem-ops.js +8 -0
- package/dist/tools/lib/pubmed-client.d.ts +9 -9
- package/dist/tools/lib/pubmed-client.js +1 -1
- package/dist/tools/lib/string-client.d.ts +6 -6
- package/dist/tools/lib/uniprot-client.d.ts +8 -8
- package/dist/tools/lib/uniprot-client.js +5 -1
- package/dist/tools/memory/update-working-memory.d.ts +16 -13
- package/dist/tools/memory/update-working-memory.js +21 -3
- package/dist/tools/read-tool-output.js +8 -2
- package/dist/tools/registry.d.ts +2 -2
- package/dist/tools/report-authoring/authoring-tools.d.ts +54 -23
- package/dist/tools/report-authoring/authoring-tools.js +128 -62
- package/dist/tools/report-session/derive-table.d.ts +19 -59
- package/dist/tools/report-session/derive-table.js +120 -122
- package/dist/tools/report-session/examine-page.d.ts +6 -6
- package/dist/tools/report-session/examine-page.js +14 -12
- package/dist/tools/report-session/list-artifacts.d.ts +6 -6
- package/dist/tools/report-session/list-artifacts.js +5 -5
- package/dist/tools/report-session/page-faults.d.ts +6 -6
- package/dist/tools/report-session/page-faults.js +3 -1
- package/dist/tools/report-session/preview-report.d.ts +4 -3
- package/dist/tools/report-session/preview-report.js +26 -7
- package/dist/tools/report-session/record-version.d.ts +9 -4
- package/dist/tools/report-session/record-version.js +16 -9
- package/dist/tools/report-session/session-page-publisher.d.ts +6 -6
- package/dist/tools/research/generate-analogy-report.d.ts +14 -7
- package/dist/tools/research/generate-analogy-report.js +80 -76
- package/dist/tools/research/generate-plan.d.ts +16 -16
- package/dist/tools/research/generate-plan.js +410 -374
- package/dist/tools/research/guarded-address.js +3 -2
- package/dist/tools/research/inspect-data-profile.d.ts +27 -20
- package/dist/tools/research/inspect-data-profile.js +26 -25
- package/dist/tools/research/inspect-run.d.ts +54 -27
- package/dist/tools/research/inspect-run.js +50 -40
- package/dist/tools/research/literature-reviewer.d.ts +8 -7
- package/dist/tools/research/literature-reviewer.js +29 -28
- package/dist/tools/research/search-arxiv.d.ts +1 -1
- package/dist/tools/research/search-arxiv.js +1 -1
- package/dist/tools/research/search-github-repos.d.ts +10 -7
- package/dist/tools/research/search-github-repos.js +25 -22
- package/dist/tools/research/search-semantic-scholar.js +1 -1
- package/dist/tools/research/searxng-engine.d.ts +2 -2
- package/dist/tools/research/searxng-engine.js +6 -4
- package/dist/tools/research/web-fetch.d.ts +24 -21
- package/dist/tools/research/web-fetch.js +65 -74
- package/dist/tools/research/web-search.d.ts +26 -17
- package/dist/tools/research/web-search.js +26 -21
- package/dist/tools/sandbox/link-packages.d.ts +11 -7
- package/dist/tools/sandbox/link-packages.js +11 -8
- package/dist/tools/sandbox/list-available-packages.d.ts +17 -8
- package/dist/tools/sandbox/list-available-packages.js +31 -25
- package/dist/tools/sandbox/list-available-refs.d.ts +17 -14
- package/dist/tools/sandbox/list-available-refs.js +61 -36
- package/dist/tools/sandbox/report-blocker.d.ts +30 -37
- package/dist/tools/sandbox/report-blocker.js +23 -73
- package/dist/tools/sandbox/skills.d.ts +16 -12
- package/dist/tools/sandbox/skills.js +16 -12
- package/dist/tools/sandbox/submit-file-metadata.d.ts +12 -9
- package/dist/tools/sandbox/submit-file-metadata.js +18 -21
- package/dist/tools/start-report-session.d.ts +13 -5
- package/dist/tools/start-report-session.js +35 -8
- package/dist/tools/terminal-text.d.ts +5 -2
- package/dist/tools/terminal-text.js +35 -3
- package/dist/tools/workspace/decision-record.d.ts +4 -4
- package/dist/tools/workspace/decision-record.js +23 -13
- package/dist/tools/workspace/edit-file.d.ts +59 -20
- package/dist/tools/workspace/edit-file.js +81 -16
- package/dist/tools/workspace/execute-command.d.ts +15 -13
- package/dist/tools/workspace/execute-command.js +11 -9
- package/dist/tools/workspace/file-stat.d.ts +6 -3
- package/dist/tools/workspace/grep.d.ts +10 -7
- package/dist/tools/workspace/grep.js +9 -3
- package/dist/tools/workspace/list-files.d.ts +6 -3
- package/dist/tools/workspace/mutator.d.ts +28 -15
- package/dist/tools/workspace/mutator.js +107 -53
- package/dist/tools/workspace/read-file.d.ts +8 -5
- package/dist/tools/workspace/result-bounds.d.ts +5 -5
- package/dist/tools/workspace/result-bounds.js +4 -2
- package/dist/tools/workspace/run-exec.d.ts +2 -2
- package/dist/tools/workspace/run-exec.js +3 -3
- package/dist/tools/workspace/scan-inputs.d.ts +8 -5
- package/dist/tools/workspace/scan-inputs.js +17 -5
- package/dist/tools/workspace/show-file.d.ts +1 -1
- package/dist/tools/workspace/show-file.js +2 -1
- package/dist/tools/workspace/show-plan.d.ts +8 -5
- package/dist/tools/workspace/show-plan.js +9 -8
- package/dist/tools/workspace/workspace-search.d.ts +41 -13
- package/dist/tools/workspace/workspace-search.js +27 -14
- package/dist/tools/workspace/write-file.d.ts +9 -7
- package/dist/workflows/execute-analysis-scheduler.d.ts +9 -9
- package/dist/workflows/execute-analysis-scheduler.js +6 -3
- package/dist/workflows/execute-analysis.d.ts +46 -62
- package/dist/workflows/execute-analysis.js +137 -219
- package/dist/workflows/pause.d.ts +71 -0
- package/dist/workflows/pause.js +173 -0
- package/dist/workflows/sandbox-step.d.ts +38 -61
- package/dist/workflows/sandbox-step.js +99 -106
- package/dist/workflows/test/sql-writes.d.ts +21 -0
- package/dist/workflows/test/sql-writes.js +36 -0
- package/dist/workspace/filesystem.d.ts +6 -6
- package/dist/workspace/filesystem.js +10 -8
- package/dist/workspace/paths.d.ts +1 -1
- package/dist/workspace/paths.js +15 -4
- package/dist/workspace/search-config.d.ts +2 -2
- package/dist/workspace/search-config.js +1 -1
- package/package.json +21 -22
- package/dist/loop/call-guard.d.ts +0 -50
- package/dist/loop/call-guard.js +0 -90
- package/dist/loop/continue-agent.d.ts +0 -40
- package/dist/loop/continue-agent.js +0 -38
- package/dist/loop/genai-spans.d.ts +0 -47
- package/dist/loop/genai-spans.js +0 -134
- package/dist/loop/run-agent.d.ts +0 -245
- package/dist/loop/run-agent.js +0 -1124
- package/dist/loop/run-step.d.ts +0 -29
- package/dist/loop/run-step.js +0 -34
- package/dist/loop/run-to-terminal.d.ts +0 -66
- package/dist/loop/run-to-terminal.js +0 -93
- package/dist/loop/tool-mask.d.ts +0 -23
- package/dist/loop/tool-mask.js +0 -46
- package/dist/providers/streaming-chat.d.ts +0 -32
- package/dist/providers/streaming-chat.js +0 -91
- package/dist/tasks/derive-table-exec.d.ts +0 -54
- package/dist/tasks/derive-table-exec.js +0 -86
- package/dist/workflows/suspension.d.ts +0 -32
- package/dist/workflows/suspension.js +0 -38
|
@@ -80,7 +80,7 @@ function deriveForest(block, rows, context) {
|
|
|
80
80
|
if (read.isErr())
|
|
81
81
|
return err(read.error);
|
|
82
82
|
const order = channelOrder(block.encoding?.y ?? columns.value.term);
|
|
83
|
-
const ordered = orderCategories(context.blockId, read.value.length, (index) => read.value[index]
|
|
83
|
+
const ordered = orderCategories(context.blockId, read.value.length, (index) => read.value[index]?.term, read.value.map((entry) => entry.term), order, (index) => (order === undefined ? undefined : read.value[index]?.row[order.by]));
|
|
84
84
|
if (ordered.isErr())
|
|
85
85
|
return err(ordered.error);
|
|
86
86
|
const byTerm = new Map(read.value.map((entry) => [String(entry.term), entry]));
|
|
@@ -154,10 +154,10 @@ function forestColumns(block, rows, context) {
|
|
|
154
154
|
return ok({
|
|
155
155
|
term: channelColumn(term),
|
|
156
156
|
estimate: estimate.value,
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
157
|
+
low: optional.low,
|
|
158
|
+
high: optional.high,
|
|
159
|
+
p: optional.p,
|
|
160
|
+
size: optional.size,
|
|
161
161
|
});
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
@@ -313,8 +313,10 @@ export function termLines(term) {
|
|
|
313
313
|
if (lines.length <= TERM_LINES)
|
|
314
314
|
return lines.join("\n");
|
|
315
315
|
const kept = lines.slice(0, TERM_LINES);
|
|
316
|
-
const last = kept[
|
|
317
|
-
|
|
316
|
+
const last = kept[kept.length - 1];
|
|
317
|
+
if (last === undefined)
|
|
318
|
+
return lines.join("\n");
|
|
319
|
+
kept[kept.length - 1] = `${last.length < TERM_LINE_CHARACTERS ? last : last.slice(0, TERM_LINE_CHARACTERS - 1)}…`;
|
|
318
320
|
return kept.join("\n");
|
|
319
321
|
}
|
|
320
322
|
/** The estimated width in pixels of the widest text of one column at the page text size. */
|
|
@@ -17,10 +17,11 @@
|
|
|
17
17
|
* (`drawnVertices`). The thinning keeps each vertex where the shape of a curve changes, thus the drawn line
|
|
18
18
|
* follows the table.
|
|
19
19
|
*/
|
|
20
|
+
import { textOf } from "../../lib/unknown-text.js";
|
|
20
21
|
import { err, ok } from "neverthrow";
|
|
21
22
|
import { channelColumn, channelOrder, channelTransform } from "../../contracts/report-blocks.js";
|
|
22
23
|
import { TOOLBOX_BAND_PX } from "../chart-toolbox.js";
|
|
23
|
-
import { CHART_BODY_PX, GUIDE_LINE_WIDTH_PX, MUTED_CHART_COLOR } from "../design.js";
|
|
24
|
+
import { CHART_BODY_PX, CHART_INK, GUIDE_LINE_WIDTH_PX, MUTED_CHART_COLOR } from "../design.js";
|
|
24
25
|
import { categoricalPalette, categoryName, chartProblem, columnPresent, firstAppearance, guideLine, guideMarkLine, statisticsGraphic, toNumber, valueAxis, valueAxisTitle, } from "./common.js";
|
|
25
26
|
/**
|
|
26
27
|
* The count of vertices that the thinning aims at for one curve, before it adds the vertices of shape.
|
|
@@ -83,9 +84,10 @@ function deriveGsea(block, rows, context) {
|
|
|
83
84
|
return err(table.error);
|
|
84
85
|
const { sets, metric } = table.value;
|
|
85
86
|
const palette = categoricalPalette(sets.length);
|
|
86
|
-
const colorOf = (index) => palette[index % palette.length];
|
|
87
|
+
const colorOf = (index) => palette[index % palette.length] ?? CHART_INK;
|
|
87
88
|
const legendLines = sets.length > 1 ? sets.length : 0;
|
|
88
89
|
const grids = panelGrids(legendLines);
|
|
90
|
+
const topPanel = grids[0];
|
|
89
91
|
const range = rankRange(sets, metric);
|
|
90
92
|
const metricTitle = valueAxisTitle(context.labels, columns.value.metric, METRIC_TITLE);
|
|
91
93
|
const deviations = sets.map((set) => maximumDeviation(set.score));
|
|
@@ -117,7 +119,7 @@ function deriveGsea(block, rows, context) {
|
|
|
117
119
|
{ ...valueAxis("y", metricTitle), gridIndex: 2, splitNumber: 3 },
|
|
118
120
|
],
|
|
119
121
|
series: [...top, ...middle, bottom],
|
|
120
|
-
graphic: statisticsText(context,
|
|
122
|
+
graphic: topPanel === undefined ? [] : statisticsText(context, topPanel, corner),
|
|
121
123
|
legend: legendLines > 0
|
|
122
124
|
? { data: sets.map((set) => set.name), orient: "vertical", left: percent(GRID_LEFT), bottom: 0, itemGap: LEGEND_GAP_PX }
|
|
123
125
|
: { show: false },
|
|
@@ -154,7 +156,7 @@ function gseaColumns(encoding, rows, context) {
|
|
|
154
156
|
score: column("y"),
|
|
155
157
|
hit: column("hit"),
|
|
156
158
|
metric: column("metric"),
|
|
157
|
-
|
|
159
|
+
set: encoding.group === undefined ? undefined : channelColumn(encoding.group),
|
|
158
160
|
});
|
|
159
161
|
}
|
|
160
162
|
/**
|
|
@@ -276,14 +278,22 @@ function drawnVertices(curve, kept) {
|
|
|
276
278
|
}
|
|
277
279
|
/** True when the curve turns at one inner vertex. */
|
|
278
280
|
function turns(curve, index) {
|
|
279
|
-
const
|
|
280
|
-
const
|
|
281
|
-
|
|
281
|
+
const at = curve[index];
|
|
282
|
+
const before = curve[index - 1];
|
|
283
|
+
const after = curve[index + 1];
|
|
284
|
+
if (at === undefined || before === undefined || after === undefined)
|
|
285
|
+
return false;
|
|
286
|
+
return (at.value - before.value) * (after.value - at.value) < 0;
|
|
282
287
|
}
|
|
283
288
|
/** True when the sign of the curve changes between one inner vertex and a neighbor. */
|
|
284
289
|
function crossesZero(curve, index) {
|
|
285
|
-
const
|
|
286
|
-
|
|
290
|
+
const at = curve[index];
|
|
291
|
+
if (at === undefined)
|
|
292
|
+
return false;
|
|
293
|
+
const sign = Math.sign(at.value);
|
|
294
|
+
const before = curve[index - 1];
|
|
295
|
+
const after = curve[index + 1];
|
|
296
|
+
return before === undefined || sign !== Math.sign(before.value) || after === undefined || sign !== Math.sign(after.value);
|
|
287
297
|
}
|
|
288
298
|
/**
|
|
289
299
|
* The running score of one set in the top panel, with its dashed mark from zero to its maximum deviation. The
|
|
@@ -379,8 +389,8 @@ function panelGrids(legendLines) {
|
|
|
379
389
|
* empty, and a set that dips under zero leaves the bottom left empty.
|
|
380
390
|
*/
|
|
381
391
|
function statisticsText(context, panel, corner) {
|
|
382
|
-
const top = Number.parseFloat(
|
|
383
|
-
const height = Number.parseFloat(
|
|
392
|
+
const top = Number.parseFloat(textOf(panel.top));
|
|
393
|
+
const height = Number.parseFloat(textOf(panel.height));
|
|
384
394
|
return statisticsGraphic(context.statistics, corner).map((element) => corner === "top-right"
|
|
385
395
|
? { ...element, right: percent(GRID_RIGHT + STATISTICS_INSET), top: percent(top + STATISTICS_INSET) }
|
|
386
396
|
: { ...element, left: percent(GRID_LEFT + STATISTICS_INSET), bottom: percent(100 - top - height + STATISTICS_INSET) });
|
|
@@ -103,14 +103,18 @@ function cellKey(cell) {
|
|
|
103
103
|
}
|
|
104
104
|
function deriveHeatmap(block, rows, context) {
|
|
105
105
|
const encoding = block.encoding ?? {};
|
|
106
|
-
for (const member of ["x", "y", "value"]) {
|
|
107
|
-
if (encoding[member] === undefined) {
|
|
108
|
-
return err(chartProblem(block.id, `The heatmap chart needs a column for the "${member}" channel.`));
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
106
|
const xChannel = encoding.x;
|
|
112
107
|
const yChannel = encoding.y;
|
|
113
108
|
const valueChannel = encoding.value;
|
|
109
|
+
if (xChannel === undefined) {
|
|
110
|
+
return err(chartProblem(block.id, 'The heatmap chart needs a column for the "x" channel.'));
|
|
111
|
+
}
|
|
112
|
+
if (yChannel === undefined) {
|
|
113
|
+
return err(chartProblem(block.id, 'The heatmap chart needs a column for the "y" channel.'));
|
|
114
|
+
}
|
|
115
|
+
if (valueChannel === undefined) {
|
|
116
|
+
return err(chartProblem(block.id, 'The heatmap chart needs a column for the "value" channel.'));
|
|
117
|
+
}
|
|
114
118
|
if (channelOrder(valueChannel) !== undefined) {
|
|
115
119
|
return err(chartProblem(block.id, 'The "value" channel draws no category axis, thus it takes no "orderBy".'));
|
|
116
120
|
}
|
|
@@ -146,7 +150,7 @@ function deriveHeatmap(block, rows, context) {
|
|
|
146
150
|
if (cells.has(key)) {
|
|
147
151
|
return err(chartProblem(block.id, `The heatmap holds the pair (${String(row[x.value])}, ${String(row[y.value])}) more than one time.`));
|
|
148
152
|
}
|
|
149
|
-
cells.set(key, values[index]);
|
|
153
|
+
cells.set(key, values[index] ?? null);
|
|
150
154
|
}
|
|
151
155
|
const data = [];
|
|
152
156
|
const finite = [];
|
|
@@ -167,7 +171,7 @@ function deriveHeatmap(block, rows, context) {
|
|
|
167
171
|
data: xCategories.map(String),
|
|
168
172
|
...axisNameFields("x", xTitle),
|
|
169
173
|
...LINELESS_AXIS,
|
|
170
|
-
|
|
174
|
+
axisLabel: hidden ? { show: false } : undefined,
|
|
171
175
|
};
|
|
172
176
|
const yAxis = {
|
|
173
177
|
type: "category",
|
|
@@ -310,11 +314,11 @@ function axisOrder(block, rows, context, axis, column, channel) {
|
|
|
310
314
|
* beside its row. The tree of y reads down, as the matrix reads down.
|
|
311
315
|
*/
|
|
312
316
|
function leafAxis(gridIndex, count, inverse) {
|
|
313
|
-
return { type: "value", gridIndex, min: -0.5, max: count - 0.5,
|
|
317
|
+
return { type: "value", gridIndex, min: -0.5, max: count - 0.5, inverse: inverse ? true : undefined, show: false };
|
|
314
318
|
}
|
|
315
319
|
/** The hidden value axis of the heights of a dendrogram. The tree of y turns it, thus the root sits at the left and the leaves face the row names. */
|
|
316
320
|
function heightAxis(gridIndex, height, inverse) {
|
|
317
|
-
return { type: "value", gridIndex, min: 0, max: height > 0 ? height : 1,
|
|
321
|
+
return { type: "value", gridIndex, min: 0, max: height > 0 ? height : 1, inverse: inverse ? true : undefined, show: false };
|
|
318
322
|
}
|
|
319
323
|
/** The branches of one dendrogram: one elbow of lines for each edge, in the order of the tree table. */
|
|
320
324
|
function dendrogramSeries(gridIndex, tree, axis) {
|
|
@@ -47,7 +47,7 @@ export type FigureMember = keyof ChartEncoding | "statistics" | "track" | "trees
|
|
|
47
47
|
* The resolved track of a figure: the rows of the second table, its declared column order, and the columns
|
|
48
48
|
* that the block names in it. The labels and the meanings are the declarations of the track binding.
|
|
49
49
|
*/
|
|
50
|
-
export
|
|
50
|
+
export type FigureTrack = {
|
|
51
51
|
readonly rows: readonly ChartRow[];
|
|
52
52
|
readonly columns?: readonly string[];
|
|
53
53
|
readonly start: string;
|
|
@@ -56,13 +56,13 @@ export interface FigureTrack {
|
|
|
56
56
|
readonly length?: string;
|
|
57
57
|
readonly labels: ColumnLabels;
|
|
58
58
|
readonly meanings: ColumnMeanings;
|
|
59
|
-
}
|
|
59
|
+
};
|
|
60
60
|
/**
|
|
61
61
|
* The resolved tree of one category axis: the edge rows of the tree table, its declared column order, and the
|
|
62
62
|
* three columns that the block names in it. The labels and the meanings are the declarations of the tree
|
|
63
63
|
* binding.
|
|
64
64
|
*/
|
|
65
|
-
export
|
|
65
|
+
export type FigureTree = {
|
|
66
66
|
readonly rows: readonly ChartRow[];
|
|
67
67
|
readonly columns?: readonly string[];
|
|
68
68
|
readonly parent: string;
|
|
@@ -70,7 +70,7 @@ export interface FigureTree {
|
|
|
70
70
|
readonly height: string;
|
|
71
71
|
readonly labels: ColumnLabels;
|
|
72
72
|
readonly meanings: ColumnMeanings;
|
|
73
|
-
}
|
|
73
|
+
};
|
|
74
74
|
/**
|
|
75
75
|
* The parts of a preset that a figure hands to the composition machinery: the semantic axis titles, and the
|
|
76
76
|
* per-row classification where the figure splits the rows itself. `colorOnTop` draws the points of a
|
|
@@ -81,12 +81,12 @@ export interface FigureTree {
|
|
|
81
81
|
* items of the composition output states it, because the page builds each item from the cells and never
|
|
82
82
|
* from the rewrite.
|
|
83
83
|
*/
|
|
84
|
-
export
|
|
84
|
+
export type FigureComposeExtras = {
|
|
85
85
|
readonly preset?: PresetAxisTitles;
|
|
86
86
|
readonly classification?: PresetClassification;
|
|
87
87
|
readonly colorOnTop?: boolean;
|
|
88
88
|
readonly keepsRowsInline?: boolean;
|
|
89
|
-
}
|
|
89
|
+
};
|
|
90
90
|
/**
|
|
91
91
|
* What one figure reads beside its block and its rows.
|
|
92
92
|
*
|
|
@@ -103,7 +103,7 @@ export interface FigureComposeExtras {
|
|
|
103
103
|
* figure that puts a series before the result keeps the whole chart inline, because the page fills the
|
|
104
104
|
* leading series from the descriptors of the composition.
|
|
105
105
|
*/
|
|
106
|
-
export
|
|
106
|
+
export type FigureContext = {
|
|
107
107
|
readonly blockId: string;
|
|
108
108
|
readonly labels: ColumnLabels;
|
|
109
109
|
readonly meanings: ColumnMeanings;
|
|
@@ -116,14 +116,14 @@ export interface FigureContext {
|
|
|
116
116
|
};
|
|
117
117
|
readonly textPx: number;
|
|
118
118
|
readonly compose: (composition: ChartComposition, extras?: FigureComposeExtras) => Result<EchartOption, RenderProblem>;
|
|
119
|
-
}
|
|
119
|
+
};
|
|
120
120
|
/** The derivation of one figure: the raw option, before the layout discipline and the figure rules. */
|
|
121
121
|
export type FigureDerivation = (block: ChartBlock, rows: readonly ChartRow[], context: FigureContext) => Result<EchartOption, RenderProblem>;
|
|
122
122
|
/** One figure module: the members of the block that it reads, and its derivation. */
|
|
123
|
-
export
|
|
123
|
+
export type FigureModule = {
|
|
124
124
|
readonly reads: ReadonlySet<FigureMember>;
|
|
125
125
|
readonly derive: FigureDerivation;
|
|
126
|
-
}
|
|
126
|
+
};
|
|
127
127
|
/** The figure module of each chart type that has one. */
|
|
128
128
|
export type FigureRegistry = Readonly<Partial<Record<ChartType, FigureModule>>>;
|
|
129
129
|
/** The registered figure modules. A module joins by one entry here, keyed by its chart type. */
|
|
@@ -49,7 +49,7 @@ export const FIGURE_PRESET_TYPES = [
|
|
|
49
49
|
];
|
|
50
50
|
/** True when the chart type exists as a figure module alone. */
|
|
51
51
|
export function isFigurePresetType(chartType) {
|
|
52
|
-
return
|
|
52
|
+
return FIGURE_PRESET_TYPES_SET.has(chartType);
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* The chart types that draw through a figure module alone: each figure preset, the heatmap, and the four
|
|
@@ -58,9 +58,11 @@ export function isFigurePresetType(chartType) {
|
|
|
58
58
|
* each draw elements that no composition holds, thus none of them keeps an expansion beside its module.
|
|
59
59
|
*/
|
|
60
60
|
export const MODULE_ONLY_TYPES = [...FIGURE_PRESET_TYPES, "heatmap", "volcano", "ma", "manhattan", "km"];
|
|
61
|
+
const MODULE_ONLY_TYPES_SET = new Set(MODULE_ONLY_TYPES);
|
|
62
|
+
const FIGURE_PRESET_TYPES_SET = new Set(FIGURE_PRESET_TYPES);
|
|
61
63
|
/** True when the chart type draws through a figure module alone. */
|
|
62
64
|
export function isModuleOnlyType(chartType) {
|
|
63
|
-
return
|
|
65
|
+
return MODULE_ONLY_TYPES_SET.has(chartType);
|
|
64
66
|
}
|
|
65
67
|
/** The registered figure modules. A module joins by one entry here, keyed by its chart type. */
|
|
66
68
|
export const FIGURE_MODULES = {
|
|
@@ -85,7 +85,7 @@ function deriveKm(block, rows, context) {
|
|
|
85
85
|
if (curves.isErr())
|
|
86
86
|
return err(curves.error);
|
|
87
87
|
const palette = categoricalPalette(curves.value.length);
|
|
88
|
-
const colorOf = (index) => palette[index % palette.length];
|
|
88
|
+
const colorOf = (index) => palette[index % palette.length] ?? CHART_INK;
|
|
89
89
|
const end = timeEnd(curves.value);
|
|
90
90
|
const step = timeStep(end);
|
|
91
91
|
const ticks = timeTicks(end, step);
|
|
@@ -108,7 +108,7 @@ function deriveKm(block, rows, context) {
|
|
|
108
108
|
const timeAxis = {
|
|
109
109
|
...valueAxis("x", valueAxisTitle(context.labels, columns.value.time), { min: 0, max: end }),
|
|
110
110
|
interval: step,
|
|
111
|
-
|
|
111
|
+
axisLabel: onTick(end, step) ? undefined : { showMaxLabel: false },
|
|
112
112
|
};
|
|
113
113
|
const survivalAxis = valueAxis("y", valueAxisTitle(context.labels, columns.value.survival), { min: 0, max: 1 });
|
|
114
114
|
const plotGrid = { top: pct(layout.top), bottom: pct(layout.plotBottom), left: pct(left), right: pct(GRID_RIGHT) };
|
|
@@ -121,7 +121,7 @@ function deriveKm(block, rows, context) {
|
|
|
121
121
|
xAxis: table ? [timeAxis, tableTimeAxis(end, step)] : timeAxis,
|
|
122
122
|
yAxis: table ? [survivalAxis, tableGroupAxis(curves.value, colorOf)] : survivalAxis,
|
|
123
123
|
series,
|
|
124
|
-
|
|
124
|
+
graphic,
|
|
125
125
|
};
|
|
126
126
|
return ok(layout.bodyPx > CHART_BODY_PX ? withFigureBody(option, layout.bodyPx) : option);
|
|
127
127
|
}
|
|
@@ -175,11 +175,11 @@ function kmColumns(block, rows, context) {
|
|
|
175
175
|
return ok({
|
|
176
176
|
time: time.value,
|
|
177
177
|
survival: survival.value,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
178
|
+
group: optional.group,
|
|
179
|
+
low: optional.low,
|
|
180
|
+
high: optional.high,
|
|
181
|
+
censor: optional.censor,
|
|
182
|
+
risk: optional.risk,
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
185
|
/**
|
|
@@ -268,7 +268,8 @@ function curveSeries(curve, index, color, columns) {
|
|
|
268
268
|
const name = categoryName(curve.name);
|
|
269
269
|
const points = curve.points;
|
|
270
270
|
const line = points.map((point) => [point.time, point.survival]);
|
|
271
|
-
|
|
271
|
+
const first = points[0];
|
|
272
|
+
if (first === undefined || first.time > 0)
|
|
272
273
|
line.unshift([0, 1]);
|
|
273
274
|
const series = [
|
|
274
275
|
{
|
|
@@ -15,16 +15,16 @@ import { CHART_EXPORT_SIZES } from "../design.js";
|
|
|
15
15
|
/** The gap between a point and its name, in pixels. */
|
|
16
16
|
export declare const NAME_GAP_PX = 4;
|
|
17
17
|
/** One box in data units, or in pixels. */
|
|
18
|
-
export
|
|
18
|
+
export type Box = {
|
|
19
19
|
readonly left: number;
|
|
20
20
|
readonly right: number;
|
|
21
21
|
readonly bottom: number;
|
|
22
22
|
readonly top: number;
|
|
23
|
-
}
|
|
23
|
+
};
|
|
24
24
|
/** True when two boxes share an area. */
|
|
25
25
|
export declare function overlaps(a: Box, b: Box): boolean;
|
|
26
26
|
/** The range of the two axes of a plot, in data units. */
|
|
27
|
-
export
|
|
27
|
+
export type PlotRange = {
|
|
28
28
|
readonly x: {
|
|
29
29
|
readonly min: number;
|
|
30
30
|
readonly max: number;
|
|
@@ -33,13 +33,13 @@ export interface PlotRange {
|
|
|
33
33
|
readonly min: number;
|
|
34
34
|
readonly max: number;
|
|
35
35
|
};
|
|
36
|
-
}
|
|
36
|
+
};
|
|
37
37
|
/** One named point: its place in data units and its name. */
|
|
38
|
-
export
|
|
38
|
+
export type NamedPoint = {
|
|
39
39
|
readonly x: number;
|
|
40
40
|
readonly y: number;
|
|
41
41
|
readonly text: string;
|
|
42
|
-
}
|
|
42
|
+
};
|
|
43
43
|
/** The four sides of a point where its name can sit, in the order that the figure tries them. */
|
|
44
44
|
export declare const NAME_SIDES: readonly ["right", "left", "top", "bottom"];
|
|
45
45
|
/** One side of a point. */
|
|
@@ -74,11 +74,11 @@ export declare function nameAnchors(names: readonly NamedPoint[], weights: reado
|
|
|
74
74
|
* size. A smaller frame puts the names nearer to each other than the drawn plot does, thus a name that clears
|
|
75
75
|
* its neighbors in the frame clears them in the drawn plot.
|
|
76
76
|
*/
|
|
77
|
-
export
|
|
77
|
+
export type NameFrame = {
|
|
78
78
|
readonly widthPx: number;
|
|
79
79
|
readonly heightPx: number;
|
|
80
80
|
readonly textPx: number;
|
|
81
|
-
}
|
|
81
|
+
};
|
|
82
82
|
/** The width of one text in pixels at one text size: the estimate of each figure that places its own text. */
|
|
83
83
|
export declare function textWidthPx(text: string, textPx: number): number;
|
|
84
84
|
/** The frame of the page: the plot inside the 900 by 400 pixel chart body of a window 1280 pixels wide. */
|
|
@@ -97,17 +97,17 @@ export declare const EXPORT_PLOT_FRAMES: Readonly<Record<keyof typeof CHART_EXPO
|
|
|
97
97
|
*/
|
|
98
98
|
export type LeaderSide = "right" | "left" | "top";
|
|
99
99
|
/** The anchor of one name in data units, and the side of the anchor where the text sits. */
|
|
100
|
-
export
|
|
100
|
+
export type LeaderName = {
|
|
101
101
|
readonly x: number;
|
|
102
102
|
readonly y: number;
|
|
103
103
|
readonly side: LeaderSide;
|
|
104
|
-
}
|
|
104
|
+
};
|
|
105
105
|
/** The points that no name can cover: the plotted pair of each row, and the diameter of the largest point. */
|
|
106
|
-
export
|
|
106
|
+
export type NameObstacles = {
|
|
107
107
|
readonly xs: readonly (number | null)[];
|
|
108
108
|
readonly ys: readonly (number | null)[];
|
|
109
109
|
readonly pointPx: number;
|
|
110
|
-
}
|
|
110
|
+
};
|
|
111
111
|
/**
|
|
112
112
|
* The anchor of each name, in the order of the names, or `undefined` for a name that finds no free place.
|
|
113
113
|
*
|
|
@@ -90,7 +90,10 @@ export function pointNameSides(points, plot, pointPx) {
|
|
|
90
90
|
*/
|
|
91
91
|
export function nameAnchors(names, weights, plot) {
|
|
92
92
|
const length = plot.x.max - plot.x.min;
|
|
93
|
-
const order =
|
|
93
|
+
const order = weights
|
|
94
|
+
.map((weight, index) => ({ weight, index }))
|
|
95
|
+
.sort((a, b) => b.weight - a.weight || a.index - b.index)
|
|
96
|
+
.map((entry) => entry.index);
|
|
94
97
|
const line = nameSize("", length).height;
|
|
95
98
|
const out = names.map(() => undefined);
|
|
96
99
|
// A box of no height covers nothing, and a grid of such cells has no key.
|
|
@@ -100,6 +103,8 @@ export function nameAnchors(names, weights, plot) {
|
|
|
100
103
|
const lines = Math.ceil((plot.y.max - plot.y.min) / line);
|
|
101
104
|
for (const index of order) {
|
|
102
105
|
const name = names[index];
|
|
106
|
+
if (name === undefined)
|
|
107
|
+
continue;
|
|
103
108
|
const { width, height } = nameSize(name.text, length);
|
|
104
109
|
const boxAt = (y) => ({ left: name.x - width / 2, right: name.x + width / 2, bottom: y - height / 2, top: y + height / 2 });
|
|
105
110
|
const free = (y, moved) => {
|
|
@@ -202,7 +207,7 @@ export function placeLeaderNames(names, obstacles, plot, sides, top, frame = COL
|
|
|
202
207
|
for (let index = 0; index < obstacles.xs.length; index += 1) {
|
|
203
208
|
const x = obstacles.xs[index];
|
|
204
209
|
const y = obstacles.ys[index];
|
|
205
|
-
if (x === null || y === null)
|
|
210
|
+
if (x === null || x === undefined || y === null || y === undefined)
|
|
206
211
|
continue;
|
|
207
212
|
const point = { x: toX(x), y: toY(y) };
|
|
208
213
|
const key = `${cellOf(point.x)}:${cellOf(point.y)}`;
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
*/
|
|
26
26
|
import type { FigureModule } from "./index.js";
|
|
27
27
|
/** One LD bin: the r² range, lower end included, and its color. The highest bin includes 1. */
|
|
28
|
-
export
|
|
28
|
+
export type LdBin = {
|
|
29
29
|
readonly low: number;
|
|
30
30
|
readonly high: number;
|
|
31
31
|
readonly color: string;
|
|
32
|
-
}
|
|
32
|
+
};
|
|
33
33
|
/** The five r² bins of LocusZoom, in ascending order, with its colors: navy, sky blue, green, orange, and red. */
|
|
34
34
|
export declare const LD_BINS: readonly LdBin[];
|
|
35
35
|
/** The gray of a variant with no r², and the name of its series and its legend entry. */
|