@aragon-agent/cli 0.6.47 → 0.6.48
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/CHANGELOG.md +13 -0
- package/README.md +27 -6
- package/dist/agent/coalesce.d.ts +1 -1
- package/dist/agent/controller.d.ts +21 -21
- package/dist/agent/controller.js +13 -13
- package/dist/agent/conversation-reset.d.ts +1 -1
- package/dist/agent/governance-wiring.d.ts +6 -6
- package/dist/agent/governance-wiring.js +4 -4
- package/dist/agent/headless.d.ts +5 -5
- package/dist/agent/headless.js +4 -4
- package/dist/agent/job-notices.d.ts +1 -1
- package/dist/agent/job-notices.js +1 -1
- package/dist/agent/kit-apply.d.ts +3 -3
- package/dist/agent/kit-apply.js +3 -3
- package/dist/agent/model-profile-settings.d.ts +2 -2
- package/dist/agent/model-profile-settings.js +6 -6
- package/dist/agent/prompt-options.d.ts +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/{ui → app}/App.d.ts +9 -9
- package/dist/{ui → app}/App.js +79 -79
- package/dist/{ui → app}/use-startup-notices.d.ts +1 -1
- package/dist/{ui → app}/use-startup-notices.js +2 -2
- package/dist/cli.js +29 -29
- package/dist/commands/agents-command.js +1 -1
- package/dist/commands/builtins.js +9 -9
- package/dist/commands/governance-command.js +2 -2
- package/dist/commands/governance-runs-table.js +1 -1
- package/dist/commands/kit-command.js +1 -1
- package/dist/commands/perf.d.ts +3 -3
- package/dist/commands/perf.js +1 -1
- package/dist/commands/registry.d.ts +8 -8
- package/dist/commands/skills.js +2 -2
- package/dist/commands/team-command.js +1 -1
- package/dist/compaction/archive.d.ts +1 -1
- package/dist/compaction/archive.js +1 -1
- package/dist/compaction/child.d.ts +3 -3
- package/dist/compaction/child.js +4 -4
- package/dist/compaction/command.js +5 -5
- package/dist/compaction/compactor.d.ts +6 -6
- package/dist/compaction/compactor.js +6 -6
- package/dist/compaction/context-command.js +1 -1
- package/dist/compaction/digest.js +1 -1
- package/dist/compaction/memory-input.js +1 -1
- package/dist/compaction/memory-validation.js +1 -1
- package/dist/compaction/memory.js +1 -1
- package/dist/compaction/summarize-call.js +1 -1
- package/dist/compaction/summary-prompt.js +1 -1
- package/dist/compaction/tail-budget.js +2 -2
- package/dist/compaction/wiring.d.ts +5 -5
- package/dist/compaction/wiring.js +2 -2
- package/dist/config/cli-commands.d.ts +1 -1
- package/dist/config/cli-commands.js +3 -3
- package/dist/config/env.d.ts +1 -1
- package/dist/config/env.js +4 -4
- package/dist/config/load.d.ts +2 -2
- package/dist/config/load.js +6 -6
- package/dist/config/migrate-state-out-of-config.js +1 -1
- package/dist/config/model-profile-store.d.ts +4 -54
- package/dist/config/model-profile-store.js +3 -3
- package/dist/config/prompt-history.js +1 -1
- package/dist/config/store.d.ts +2 -2
- package/dist/config/store.js +3 -3
- package/dist/diagnostics/doctor.js +4 -4
- package/dist/exec/bridge/decisions.d.ts +1 -1
- package/dist/exec/bridge/human-answers.d.ts +1 -1
- package/dist/exec/bridge/human-answers.js +1 -1
- package/dist/exec/bridge/protocol.d.ts +1 -1
- package/dist/exec/bridge/server.js +1 -1
- package/dist/exec/events.d.ts +2 -2
- package/dist/exec/index.d.ts +1 -1
- package/dist/exec/index.js +1 -1
- package/dist/exec/permission.js +1 -1
- package/dist/exec/runner.d.ts +3 -3
- package/dist/exec/runner.js +2 -2
- package/dist/exec/threads/runtime.js +1 -1
- package/dist/fast/digest.d.ts +1 -1
- package/dist/fast/digest.js +1 -1
- package/dist/fast/frames.d.ts +1 -1
- package/dist/fast/frames.js +1 -1
- package/dist/fast/prompt.d.ts +1 -1
- package/dist/fast/prompt.js +1 -1
- package/dist/fast/review-call.js +1 -1
- package/dist/fast/reviewer.d.ts +3 -3
- package/dist/fast/reviewer.js +1 -1
- package/dist/fast/summary-call.d.ts +3 -3
- package/dist/fast/summary-call.js +2 -2
- package/dist/fast/summary-prompt.d.ts +1 -1
- package/dist/fast/summary-prompt.js +1 -1
- package/dist/fast/wiring.d.ts +4 -4
- package/dist/fast/wiring.js +1 -1
- package/dist/governance/card-normalize.d.ts +1 -1
- package/dist/governance/copy.d.ts +1 -1
- package/dist/governance/copy.js +2 -2
- package/dist/governance/engine/artifact-persist.d.ts +1 -1
- package/dist/governance/engine/budget.d.ts +1 -1
- package/dist/governance/engine/budget.js +1 -1
- package/dist/governance/engine/cards.d.ts +1 -1
- package/dist/governance/engine/digest.js +1 -1
- package/dist/governance/engine/engine-core.d.ts +5 -5
- package/dist/governance/engine/engine-core.js +1 -1
- package/dist/governance/engine/engine.d.ts +1 -1
- package/dist/governance/engine/engine.js +1 -1
- package/dist/governance/engine/estimate.d.ts +1 -1
- package/dist/governance/engine/estimate.js +1 -1
- package/dist/governance/engine/inspector.js +2 -2
- package/dist/governance/engine/integration.d.ts +1 -1
- package/dist/governance/engine/lifecycle.d.ts +1 -1
- package/dist/governance/engine/lifecycle.js +1 -1
- package/dist/governance/engine/phase-members.d.ts +1 -1
- package/dist/governance/engine/phase-planner.d.ts +1 -1
- package/dist/governance/engine/phase-planner.js +1 -1
- package/dist/governance/engine/rebuild.d.ts +1 -1
- package/dist/governance/engine/report.d.ts +1 -1
- package/dist/governance/engine/report.js +1 -1
- package/dist/governance/engine/run-digest.d.ts +1 -1
- package/dist/governance/engine/spec-builder.d.ts +2 -2
- package/dist/governance/engine/spec-builder.js +2 -2
- package/dist/governance/engine/stage-runner.js +2 -2
- package/dist/governance/engine/start-input.d.ts +1 -1
- package/dist/governance/engine/start-input.js +1 -1
- package/dist/governance/engine/state-machine.d.ts +1 -1
- package/dist/governance/engine/state-machine.js +3 -3
- package/dist/governance/engine/submission-queries.d.ts +1 -1
- package/dist/governance/engine/submission-render.d.ts +1 -1
- package/dist/governance/engine/submissions.d.ts +1 -1
- package/dist/governance/engine/submissions.js +1 -1
- package/dist/governance/engine/visibility.d.ts +1 -1
- package/dist/governance/engine/visibility.js +1 -1
- package/dist/governance/posture-transition.d.ts +2 -2
- package/dist/governance/posture-transition.js +1 -1
- package/dist/governance/profiles.d.ts +1 -1
- package/dist/governance/prompts/orchestrator-block.d.ts +2 -2
- package/dist/governance/prompts/orchestrator-block.js +2 -2
- package/dist/governance/prompts/plan-addendum.d.ts +1 -1
- package/dist/governance/prompts/plan-addendum.js +1 -1
- package/dist/governance/prompts/role-blocks.d.ts +2 -2
- package/dist/governance/prompts/role-blocks.js +1 -1
- package/dist/governance/report-reader.js +1 -1
- package/dist/governance/roles.d.ts +1 -1
- package/dist/governance/rules/claims.d.ts +1 -1
- package/dist/governance/rules/claims.js +1 -1
- package/dist/governance/rules/elimination.d.ts +1 -1
- package/dist/governance/rules/elimination.js +1 -1
- package/dist/governance/rules/failure-analysis.d.ts +2 -2
- package/dist/governance/rules/failure-analysis.js +1 -1
- package/dist/governance/rules/ledger-replay.d.ts +1 -1
- package/dist/governance/rules/ledger-state.d.ts +1 -1
- package/dist/governance/rules/ledger-state.js +1 -1
- package/dist/governance/rules/ledger.d.ts +2 -2
- package/dist/governance/rules/ledger.js +2 -2
- package/dist/governance/rules/rca.d.ts +1 -1
- package/dist/governance/rules/rca.js +1 -1
- package/dist/governance/rules/settlement.d.ts +2 -2
- package/dist/governance/rules/settlement.js +2 -2
- package/dist/governance/rules/suspicion.d.ts +1 -1
- package/dist/governance/store/artifacts.d.ts +1 -1
- package/dist/governance/store/artifacts.js +1 -1
- package/dist/governance/store/events-log.d.ts +1 -1
- package/dist/governance/store/run-store.d.ts +1 -1
- package/dist/governance/store/run-store.js +1 -1
- package/dist/governance/store/scoreboard-export.d.ts +1 -1
- package/dist/governance/tools/child-tools.d.ts +1 -1
- package/dist/governance/tools/guard.d.ts +1 -1
- package/dist/governance/tools/guard.js +1 -1
- package/dist/governance/tools/inspector-tools.d.ts +2 -2
- package/dist/governance/tools/inspector-tools.js +2 -2
- package/dist/governance/tools/lead-tools.d.ts +1 -1
- package/dist/governance/tools/lead-tools.js +1 -1
- package/dist/governance/tools/normalize-util.js +1 -1
- package/dist/governance/tools/scan-incomplete.js +1 -1
- package/dist/governance/tools/shared-tools.d.ts +1 -1
- package/dist/governance/tools/shared-tools.js +1 -1
- package/dist/governance/tools/submit-normalizers.d.ts +1 -1
- package/dist/governance/tools/submit-normalizers.js +1 -1
- package/dist/governance/tools/submit-tools.d.ts +1 -1
- package/dist/logging/cli-commands.js +1 -1
- package/dist/logging/install.d.ts +1 -1
- package/dist/logging/install.js +3 -3
- package/dist/logging/logger.d.ts +2 -2
- package/dist/logging/logger.js +31 -2
- package/dist/proc/kill-tree.js +1 -1
- package/dist/proc/log-mirror.js +1 -1
- package/dist/proc/log-ring.js +2 -2
- package/dist/proc/notices.d.ts +1 -1
- package/dist/proc/notices.js +2 -2
- package/dist/proc/prompt.d.ts +1 -1
- package/dist/proc/prompt.js +1 -1
- package/dist/proc/readiness.js +1 -1
- package/dist/proc/supervisor.d.ts +1 -1
- package/dist/proc/supervisor.js +3 -3
- package/dist/proc/wait.d.ts +1 -1
- package/dist/proc/wait.js +1 -1
- package/dist/prompts/command.d.ts +1 -1
- package/dist/prompts/command.js +1 -1
- package/dist/prompts/normalize.d.ts +1 -1
- package/dist/prompts/normalize.js +1 -1
- package/dist/prompts/resolve.d.ts +1 -1
- package/dist/prompts/store.d.ts +2 -12
- package/dist/prompts/store.js +6 -60
- package/dist/session/checkpoint.d.ts +2 -2
- package/dist/session/clear-archive.d.ts +2 -2
- package/dist/session/persist.d.ts +2 -2
- package/dist/session/persist.js +1 -1
- package/dist/session/startup-session.d.ts +2 -2
- package/dist/session/validate-session.js +3 -3
- package/dist/skills/service.d.ts +2 -2
- package/dist/team/bus.d.ts +1 -1
- package/dist/team/bus.js +1 -1
- package/dist/team/child-reviewer.d.ts +2 -2
- package/dist/team/child-reviewer.js +1 -1
- package/dist/team/comm-tools.js +1 -1
- package/dist/team/dispatch-gate.js +1 -1
- package/dist/team/forced-dispatch.js +1 -1
- package/dist/team/forced-mode.d.ts +1 -1
- package/dist/team/forced-prompt.d.ts +1 -1
- package/dist/team/forced-prompt.js +1 -1
- package/dist/team/normalize.d.ts +1 -1
- package/dist/team/normalize.js +1 -1
- package/dist/team/overseer.d.ts +3 -3
- package/dist/team/overseer.js +3 -3
- package/dist/team/prompt.d.ts +1 -1
- package/dist/team/prompt.js +1 -1
- package/dist/team/report.d.ts +2 -2
- package/dist/team/report.js +2 -2
- package/dist/team/retry.d.ts +1 -1
- package/dist/team/retry.js +1 -1
- package/dist/team/runtime.d.ts +4 -4
- package/dist/team/runtime.js +2 -2
- package/dist/team/settled.d.ts +2 -2
- package/dist/team/subagent.d.ts +4 -4
- package/dist/team/subagent.js +5 -5
- package/dist/team/task-tool.d.ts +1 -1
- package/dist/team/task-tool.js +1 -1
- package/dist/todo/normalize.d.ts +1 -1
- package/dist/todo/normalize.js +1 -1
- package/dist/todo/prompt.d.ts +1 -1
- package/dist/todo/prompt.js +1 -1
- package/dist/todo/store.d.ts +1 -1
- package/dist/todo/store.js +2 -2
- package/dist/todo/todo-tool.d.ts +1 -1
- package/dist/todo/todo-tool.js +2 -2
- package/dist/tools/bash-tool.d.ts +1 -1
- package/dist/tools/bash-tool.js +2 -2
- package/dist/tools/diff.d.ts +1 -1
- package/dist/tools/diff.js +1 -1
- package/dist/tools/file-change-store.d.ts +1 -1
- package/dist/tools/fs-tools.d.ts +2 -2
- package/dist/tools/fs-tools.js +1 -1
- package/dist/tools/index.d.ts +3 -3
- package/dist/tools/index.js +1 -1
- package/dist/tools/job-tools.d.ts +2 -2
- package/dist/tools/job-tools.js +4 -4
- package/dist/tools/plan-tools.d.ts +1 -1
- package/dist/tools/plan-tools.js +1 -1
- package/dist/tools/proc-tools.d.ts +1 -1
- package/dist/tools/proc-tools.js +2 -2
- package/dist/update/classify-failure.d.ts +1 -1
- package/dist/update/install-lock.js +1 -1
- package/dist/update/install-source.d.ts +1 -1
- package/dist/update/installer.js +2 -2
- package/dist/update/npm-view.d.ts +1 -1
- package/dist/update/npm-view.js +1 -1
- package/dist/update/registry.d.ts +1 -1
- package/dist/update/registry.js +1 -1
- package/dist/update/service.d.ts +2 -2
- package/dist/update/service.js +2 -2
- package/package.json +7 -7
- package/dist/agent/agent-mode.d.ts +0 -108
- package/dist/agent/agent-mode.js +0 -121
- package/dist/agent/entry-limits.d.ts +0 -65
- package/dist/agent/entry-limits.js +0 -133
- package/dist/agent/governance-view.d.ts +0 -40
- package/dist/agent/governance-view.js +0 -40
- package/dist/agent/invocation-card.d.ts +0 -77
- package/dist/agent/invocation-card.js +0 -169
- package/dist/agent/model-probe-limits.d.ts +0 -39
- package/dist/agent/model-probe-limits.js +0 -25
- package/dist/agent/model-probe.d.ts +0 -104
- package/dist/agent/model-probe.js +0 -391
- package/dist/agent/queued-messages.d.ts +0 -23
- package/dist/agent/queued-messages.js +0 -49
- package/dist/agent/reducer.d.ts +0 -857
- package/dist/agent/reducer.js +0 -1646
- package/dist/agent/retry-view.d.ts +0 -68
- package/dist/agent/retry-view.js +0 -95
- package/dist/agent/usage.d.ts +0 -47
- package/dist/agent/usage.js +0 -84
- package/dist/compaction/limits.d.ts +0 -61
- package/dist/compaction/limits.js +0 -64
- package/dist/compaction/meter.d.ts +0 -276
- package/dist/compaction/meter.js +0 -512
- package/dist/compaction/pressure.d.ts +0 -163
- package/dist/compaction/pressure.js +0 -199
- package/dist/compaction/reason-text.d.ts +0 -36
- package/dist/compaction/reason-text.js +0 -78
- package/dist/compaction/types.d.ts +0 -360
- package/dist/compaction/types.js +0 -22
- package/dist/config/governance-config.d.ts +0 -125
- package/dist/config/governance-config.js +0 -164
- package/dist/config/kit-resolution.d.ts +0 -93
- package/dist/config/kit-resolution.js +0 -226
- package/dist/config/model-kits.d.ts +0 -225
- package/dist/config/model-kits.js +0 -302
- package/dist/config/model-profile-resolution.d.ts +0 -28
- package/dist/config/model-profile-resolution.js +0 -88
- package/dist/config/model-profiles.d.ts +0 -103
- package/dist/config/model-profiles.js +0 -188
- package/dist/config/schema.d.ts +0 -1645
- package/dist/config/schema.js +0 -1383
- package/dist/fast/limits.d.ts +0 -152
- package/dist/fast/limits.js +0 -152
- package/dist/fast/resolve.d.ts +0 -44
- package/dist/fast/resolve.js +0 -107
- package/dist/fast/task-summary-types.d.ts +0 -66
- package/dist/fast/task-summary-types.js +0 -17
- package/dist/fast/types.d.ts +0 -141
- package/dist/fast/types.js +0 -14
- package/dist/governance/governed-dispatch.d.ts +0 -19
- package/dist/governance/governed-dispatch.js +0 -17
- package/dist/governance/limits.d.ts +0 -107
- package/dist/governance/limits.js +0 -131
- package/dist/governance/posture.d.ts +0 -35
- package/dist/governance/posture.js +0 -59
- package/dist/governance/rules/events-table.d.ts +0 -46
- package/dist/governance/rules/events-table.js +0 -94
- package/dist/governance/types.d.ts +0 -661
- package/dist/governance/types.js +0 -27
- package/dist/input/control-sequences.d.ts +0 -71
- package/dist/input/control-sequences.js +0 -222
- package/dist/input/csiu-keys.d.ts +0 -66
- package/dist/input/csiu-keys.js +0 -181
- package/dist/input/cursor-report.d.ts +0 -61
- package/dist/input/cursor-report.js +0 -97
- package/dist/input/enter-sequences.d.ts +0 -64
- package/dist/input/enter-sequences.js +0 -153
- package/dist/input/interrupt-gesture.d.ts +0 -18
- package/dist/input/interrupt-gesture.js +0 -19
- package/dist/input/keyboard-enhancement.d.ts +0 -42
- package/dist/input/keyboard-enhancement.js +0 -65
- package/dist/input/keymap.d.ts +0 -20
- package/dist/input/keymap.js +0 -99
- package/dist/input/limits.d.ts +0 -118
- package/dist/input/limits.js +0 -109
- package/dist/input/mouse-events.d.ts +0 -87
- package/dist/input/mouse-events.js +0 -212
- package/dist/input/paste-parse.d.ts +0 -83
- package/dist/input/paste-parse.js +0 -107
- package/dist/input/pointer-router.d.ts +0 -11
- package/dist/input/pointer-router.js +0 -14
- package/dist/input/stdin-filter.d.ts +0 -112
- package/dist/input/stdin-filter.js +0 -657
- package/dist/input/win32-input-mode.d.ts +0 -61
- package/dist/input/win32-input-mode.js +0 -269
- package/dist/logging/levels.d.ts +0 -40
- package/dist/logging/levels.js +0 -59
- package/dist/logging/secret-registry.d.ts +0 -32
- package/dist/logging/secret-registry.js +0 -73
- package/dist/proc/limits.d.ts +0 -214
- package/dist/proc/limits.js +0 -221
- package/dist/proc/progress.d.ts +0 -47
- package/dist/proc/progress.js +0 -163
- package/dist/proc/types.d.ts +0 -269
- package/dist/proc/types.js +0 -15
- package/dist/proc/wait-view.d.ts +0 -65
- package/dist/proc/wait-view.js +0 -66
- package/dist/prompts/copy.d.ts +0 -89
- package/dist/prompts/copy.js +0 -131
- package/dist/prompts/fill.d.ts +0 -51
- package/dist/prompts/fill.js +0 -46
- package/dist/prompts/limits.d.ts +0 -53
- package/dist/prompts/limits.js +0 -53
- package/dist/prompts/search.d.ts +0 -58
- package/dist/prompts/search.js +0 -146
- package/dist/prompts/types.d.ts +0 -204
- package/dist/prompts/types.js +0 -13
- package/dist/team/activity.d.ts +0 -67
- package/dist/team/activity.js +0 -130
- package/dist/team/limits.d.ts +0 -308
- package/dist/team/limits.js +0 -330
- package/dist/team/model.d.ts +0 -104
- package/dist/team/model.js +0 -150
- package/dist/team/panel-rows.d.ts +0 -48
- package/dist/team/panel-rows.js +0 -75
- package/dist/team/timeline.d.ts +0 -74
- package/dist/team/timeline.js +0 -101
- package/dist/team/types.d.ts +0 -354
- package/dist/team/types.js +0 -13
- package/dist/todo/acceptance.d.ts +0 -120
- package/dist/todo/acceptance.js +0 -399
- package/dist/todo/follow-through.d.ts +0 -138
- package/dist/todo/follow-through.js +0 -248
- package/dist/todo/limits.d.ts +0 -152
- package/dist/todo/limits.js +0 -152
- package/dist/todo/panel-rows.d.ts +0 -45
- package/dist/todo/panel-rows.js +0 -70
- package/dist/todo/plan-sections.d.ts +0 -60
- package/dist/todo/plan-sections.js +0 -108
- package/dist/todo/row-window.d.ts +0 -51
- package/dist/todo/row-window.js +0 -107
- package/dist/todo/types.d.ts +0 -124
- package/dist/todo/types.js +0 -12
- package/dist/tools/human-input.d.ts +0 -212
- package/dist/tools/human-input.js +0 -265
- package/dist/tools/patch.d.ts +0 -115
- package/dist/tools/patch.js +0 -453
- package/dist/tools/terminal-output.d.ts +0 -115
- package/dist/tools/terminal-output.js +0 -201
- package/dist/tools/tool-output-store.d.ts +0 -68
- package/dist/tools/tool-output-store.js +0 -102
- package/dist/ui/ActivityLine.d.ts +0 -26
- package/dist/ui/ActivityLine.js +0 -51
- package/dist/ui/AutocompletePopup.d.ts +0 -23
- package/dist/ui/AutocompletePopup.js +0 -17
- package/dist/ui/BottomStatusRow.d.ts +0 -10
- package/dist/ui/BottomStatusRow.js +0 -9
- package/dist/ui/Composer.d.ts +0 -115
- package/dist/ui/Composer.js +0 -64
- package/dist/ui/GovernancePanel.d.ts +0 -50
- package/dist/ui/GovernancePanel.js +0 -77
- package/dist/ui/GovernanceRun.d.ts +0 -18
- package/dist/ui/GovernanceRun.js +0 -11
- package/dist/ui/Header.d.ts +0 -48
- package/dist/ui/Header.js +0 -27
- package/dist/ui/Logo.d.ts +0 -32
- package/dist/ui/Logo.js +0 -65
- package/dist/ui/Markdown.d.ts +0 -29
- package/dist/ui/Markdown.js +0 -116
- package/dist/ui/PromptCaret.d.ts +0 -11
- package/dist/ui/PromptCaret.js +0 -31
- package/dist/ui/PromptInput.d.ts +0 -192
- package/dist/ui/PromptInput.js +0 -689
- package/dist/ui/QueuePanel.d.ts +0 -8
- package/dist/ui/QueuePanel.js +0 -9
- package/dist/ui/QueueStatusRow.d.ts +0 -24
- package/dist/ui/QueueStatusRow.js +0 -51
- package/dist/ui/ScrollbackShell.d.ts +0 -132
- package/dist/ui/ScrollbackShell.js +0 -26
- package/dist/ui/SessionOpener.d.ts +0 -30
- package/dist/ui/SessionOpener.js +0 -12
- package/dist/ui/StatusBar.d.ts +0 -130
- package/dist/ui/StatusBar.js +0 -61
- package/dist/ui/TeamPanel.d.ts +0 -76
- package/dist/ui/TeamPanel.js +0 -103
- package/dist/ui/ToastStack.d.ts +0 -8
- package/dist/ui/ToastStack.js +0 -31
- package/dist/ui/TodoPanel.d.ts +0 -52
- package/dist/ui/TodoPanel.js +0 -214
- package/dist/ui/Transcript.d.ts +0 -105
- package/dist/ui/Transcript.js +0 -258
- package/dist/ui/UpdateLine.d.ts +0 -44
- package/dist/ui/UpdateLine.js +0 -129
- package/dist/ui/activity-phrases.d.ts +0 -33
- package/dist/ui/activity-phrases.js +0 -50
- package/dist/ui/capabilities.d.ts +0 -27
- package/dist/ui/capabilities.js +0 -65
- package/dist/ui/clipboard-task.d.ts +0 -29
- package/dist/ui/clipboard-task.js +0 -66
- package/dist/ui/clipboard.d.ts +0 -31
- package/dist/ui/clipboard.js +0 -157
- package/dist/ui/color-runtime.d.ts +0 -5
- package/dist/ui/color-runtime.js +0 -29
- package/dist/ui/composer-input.d.ts +0 -38
- package/dist/ui/composer-input.js +0 -79
- package/dist/ui/composer-limits.d.ts +0 -30
- package/dist/ui/composer-limits.js +0 -45
- package/dist/ui/composer-rows.d.ts +0 -73
- package/dist/ui/composer-rows.js +0 -129
- package/dist/ui/console-bridge.d.ts +0 -19
- package/dist/ui/console-bridge.js +0 -52
- package/dist/ui/density.d.ts +0 -26
- package/dist/ui/density.js +0 -34
- package/dist/ui/display-tab.d.ts +0 -51
- package/dist/ui/display-tab.js +0 -82
- package/dist/ui/editor-navigation.d.ts +0 -55
- package/dist/ui/editor-navigation.js +0 -96
- package/dist/ui/editor-reducer.d.ts +0 -108
- package/dist/ui/editor-reducer.js +0 -187
- package/dist/ui/enter-frames.d.ts +0 -47
- package/dist/ui/enter-frames.js +0 -117
- package/dist/ui/entries/AssistantEntry.d.ts +0 -37
- package/dist/ui/entries/AssistantEntry.js +0 -43
- package/dist/ui/entries/CompactionCard.d.ts +0 -88
- package/dist/ui/entries/CompactionCard.js +0 -222
- package/dist/ui/entries/DiffView.d.ts +0 -61
- package/dist/ui/entries/DiffView.js +0 -103
- package/dist/ui/entries/EntryFrame.d.ts +0 -23
- package/dist/ui/entries/EntryFrame.js +0 -6
- package/dist/ui/entries/FastCard.d.ts +0 -53
- package/dist/ui/entries/FastCard.js +0 -105
- package/dist/ui/entries/GovernanceCard.d.ts +0 -30
- package/dist/ui/entries/GovernanceCard.js +0 -32
- package/dist/ui/entries/InvocationCard.d.ts +0 -20
- package/dist/ui/entries/InvocationCard.js +0 -32
- package/dist/ui/entries/QueuedEntry.d.ts +0 -27
- package/dist/ui/entries/QueuedEntry.js +0 -33
- package/dist/ui/entries/RetryCard.d.ts +0 -56
- package/dist/ui/entries/RetryCard.js +0 -60
- package/dist/ui/entries/ServiceCard.d.ts +0 -82
- package/dist/ui/entries/ServiceCard.js +0 -151
- package/dist/ui/entries/TeamCard.d.ts +0 -55
- package/dist/ui/entries/TeamCard.js +0 -94
- package/dist/ui/entries/TodoCard.d.ts +0 -54
- package/dist/ui/entries/TodoCard.js +0 -98
- package/dist/ui/entries/ToolCard.d.ts +0 -81
- package/dist/ui/entries/ToolCard.js +0 -169
- package/dist/ui/entries/ToolPreview.d.ts +0 -59
- package/dist/ui/entries/ToolPreview.js +0 -208
- package/dist/ui/entries/UserEntry.d.ts +0 -36
- package/dist/ui/entries/UserEntry.js +0 -57
- package/dist/ui/entries/WaitCard.d.ts +0 -37
- package/dist/ui/entries/WaitCard.js +0 -92
- package/dist/ui/exit-snapshot.d.ts +0 -43
- package/dist/ui/exit-snapshot.js +0 -26
- package/dist/ui/frame-differ.d.ts +0 -166
- package/dist/ui/frame-differ.js +0 -354
- package/dist/ui/frame-observer.d.ts +0 -17
- package/dist/ui/frame-observer.js +0 -94
- package/dist/ui/frame-parser.d.ts +0 -7
- package/dist/ui/frame-parser.js +0 -18
- package/dist/ui/gauge.d.ts +0 -39
- package/dist/ui/gauge.js +0 -55
- package/dist/ui/glyphs.d.ts +0 -178
- package/dist/ui/glyphs.js +0 -165
- package/dist/ui/governance-copy.d.ts +0 -69
- package/dist/ui/governance-copy.js +0 -104
- package/dist/ui/governance-status.d.ts +0 -145
- package/dist/ui/governance-status.js +0 -326
- package/dist/ui/gradient.d.ts +0 -11
- package/dist/ui/gradient.js +0 -50
- package/dist/ui/ink-runtime.d.ts +0 -4
- package/dist/ui/ink-runtime.js +0 -51
- package/dist/ui/interaction-copy.d.ts +0 -84
- package/dist/ui/interaction-copy.js +0 -41
- package/dist/ui/interaction-hints.d.ts +0 -44
- package/dist/ui/interaction-hints.js +0 -97
- package/dist/ui/layout/AppShell.d.ts +0 -17
- package/dist/ui/layout/AppShell.js +0 -6
- package/dist/ui/layout/Gutter.d.ts +0 -67
- package/dist/ui/layout/Gutter.js +0 -42
- package/dist/ui/layout/MeasuredEntry.d.ts +0 -21
- package/dist/ui/layout/MeasuredEntry.js +0 -30
- package/dist/ui/layout/OverlayFrame.d.ts +0 -73
- package/dist/ui/layout/OverlayFrame.js +0 -110
- package/dist/ui/layout/ScrollIndicator.d.ts +0 -32
- package/dist/ui/layout/ScrollIndicator.js +0 -22
- package/dist/ui/layout/ScrollViewport.d.ts +0 -40
- package/dist/ui/layout/ScrollViewport.js +0 -222
- package/dist/ui/layout/agents-board.d.ts +0 -102
- package/dist/ui/layout/agents-board.js +0 -389
- package/dist/ui/layout/autocomplete.d.ts +0 -18
- package/dist/ui/layout/autocomplete.js +0 -26
- package/dist/ui/layout/budget.d.ts +0 -43
- package/dist/ui/layout/budget.js +0 -52
- package/dist/ui/layout/cells.d.ts +0 -61
- package/dist/ui/layout/cells.js +0 -156
- package/dist/ui/layout/document-layout.d.ts +0 -13
- package/dist/ui/layout/document-layout.js +0 -10
- package/dist/ui/layout/follow-state.d.ts +0 -138
- package/dist/ui/layout/follow-state.js +0 -148
- package/dist/ui/layout/frame.d.ts +0 -36
- package/dist/ui/layout/frame.js +0 -39
- package/dist/ui/layout/governance-board.d.ts +0 -121
- package/dist/ui/layout/governance-board.js +0 -382
- package/dist/ui/layout/governance-card.d.ts +0 -53
- package/dist/ui/layout/governance-card.js +0 -134
- package/dist/ui/layout/governance-chip.d.ts +0 -38
- package/dist/ui/layout/governance-chip.js +0 -64
- package/dist/ui/layout/governance-panel.d.ts +0 -85
- package/dist/ui/layout/governance-panel.js +0 -358
- package/dist/ui/layout/governance-roster.d.ts +0 -65
- package/dist/ui/layout/governance-roster.js +0 -275
- package/dist/ui/layout/header-hints.d.ts +0 -90
- package/dist/ui/layout/header-hints.js +0 -110
- package/dist/ui/layout/header-left.d.ts +0 -115
- package/dist/ui/layout/header-left.js +0 -206
- package/dist/ui/layout/invocation-card.d.ts +0 -41
- package/dist/ui/layout/invocation-card.js +0 -91
- package/dist/ui/layout/kit-chip.d.ts +0 -50
- package/dist/ui/layout/kit-chip.js +0 -81
- package/dist/ui/layout/overlay-window.d.ts +0 -43
- package/dist/ui/layout/overlay-window.js +0 -51
- package/dist/ui/layout/queue-layout.d.ts +0 -19
- package/dist/ui/layout/queue-layout.js +0 -26
- package/dist/ui/layout/rail.d.ts +0 -7
- package/dist/ui/layout/rail.js +0 -16
- package/dist/ui/layout/scroll-indicator.d.ts +0 -27
- package/dist/ui/layout/scroll-indicator.js +0 -36
- package/dist/ui/layout/scroll.d.ts +0 -37
- package/dist/ui/layout/scroll.js +0 -99
- package/dist/ui/layout/scrollbar-geometry.d.ts +0 -17
- package/dist/ui/layout/scrollbar-geometry.js +0 -13
- package/dist/ui/layout/session-chip.d.ts +0 -52
- package/dist/ui/layout/session-chip.js +0 -64
- package/dist/ui/layout/shortcut-panel-layout.d.ts +0 -191
- package/dist/ui/layout/shortcut-panel-layout.js +0 -321
- package/dist/ui/layout/status-detail-layout.d.ts +0 -9
- package/dist/ui/layout/status-detail-layout.js +0 -79
- package/dist/ui/layout/status-layout.d.ts +0 -140
- package/dist/ui/layout/status-layout.js +0 -262
- package/dist/ui/layout/task-summary-cell.d.ts +0 -61
- package/dist/ui/layout/task-summary-cell.js +0 -65
- package/dist/ui/layout/team-panel.d.ts +0 -18
- package/dist/ui/layout/team-panel.js +0 -25
- package/dist/ui/layout/team-row.d.ts +0 -139
- package/dist/ui/layout/team-row.js +0 -246
- package/dist/ui/layout/todo-layout.d.ts +0 -62
- package/dist/ui/layout/todo-layout.js +0 -102
- package/dist/ui/layout/useTerminalSize.d.ts +0 -13
- package/dist/ui/layout/useTerminalSize.js +0 -50
- package/dist/ui/layout/viewport-geometry.d.ts +0 -29
- package/dist/ui/layout/viewport-geometry.js +0 -28
- package/dist/ui/layout/virtual-window.d.ts +0 -112
- package/dist/ui/layout/virtual-window.js +0 -494
- package/dist/ui/layout/wait-bar.d.ts +0 -34
- package/dist/ui/layout/wait-bar.js +0 -48
- package/dist/ui/layout/wrap-rows.d.ts +0 -26
- package/dist/ui/layout/wrap-rows.js +0 -88
- package/dist/ui/live-clamp.d.ts +0 -14
- package/dist/ui/live-clamp.js +0 -46
- package/dist/ui/markdown-blocks.d.ts +0 -107
- package/dist/ui/markdown-blocks.js +0 -240
- package/dist/ui/overlays/AgentsBoardOverlay.d.ts +0 -57
- package/dist/ui/overlays/AgentsBoardOverlay.js +0 -183
- package/dist/ui/overlays/ConfirmDialog.d.ts +0 -31
- package/dist/ui/overlays/ConfirmDialog.js +0 -44
- package/dist/ui/overlays/GovernanceBoardOverlay.d.ts +0 -41
- package/dist/ui/overlays/GovernanceBoardOverlay.js +0 -76
- package/dist/ui/overlays/GovernanceSettingsPage.d.ts +0 -48
- package/dist/ui/overlays/GovernanceSettingsPage.js +0 -93
- package/dist/ui/overlays/HelpOverlay.d.ts +0 -29
- package/dist/ui/overlays/HelpOverlay.js +0 -232
- package/dist/ui/overlays/KitEditor.d.ts +0 -23
- package/dist/ui/overlays/KitEditor.js +0 -101
- package/dist/ui/overlays/KitManager.d.ts +0 -23
- package/dist/ui/overlays/KitManager.js +0 -104
- package/dist/ui/overlays/KitPicker.d.ts +0 -49
- package/dist/ui/overlays/KitPicker.js +0 -58
- package/dist/ui/overlays/ModelDiscoveryList.d.ts +0 -23
- package/dist/ui/overlays/ModelDiscoveryList.js +0 -161
- package/dist/ui/overlays/ModelPicker.d.ts +0 -26
- package/dist/ui/overlays/ModelPicker.js +0 -63
- package/dist/ui/overlays/ModelProfileEditor.d.ts +0 -29
- package/dist/ui/overlays/ModelProfileEditor.js +0 -168
- package/dist/ui/overlays/ModelProfilePicker.d.ts +0 -48
- package/dist/ui/overlays/ModelProfilePicker.js +0 -231
- package/dist/ui/overlays/PlanReviewOverlay.d.ts +0 -51
- package/dist/ui/overlays/PlanReviewOverlay.js +0 -132
- package/dist/ui/overlays/PromptEditorPage.d.ts +0 -48
- package/dist/ui/overlays/PromptEditorPage.js +0 -227
- package/dist/ui/overlays/PromptLibraryOverlay.d.ts +0 -37
- package/dist/ui/overlays/PromptLibraryOverlay.js +0 -191
- package/dist/ui/overlays/PromptPicker.d.ts +0 -36
- package/dist/ui/overlays/PromptPicker.js +0 -129
- package/dist/ui/overlays/PromptTextArea.d.ts +0 -86
- package/dist/ui/overlays/PromptTextArea.js +0 -141
- package/dist/ui/overlays/QuestionOverlay.d.ts +0 -39
- package/dist/ui/overlays/QuestionOverlay.js +0 -258
- package/dist/ui/overlays/QueueOverlay.d.ts +0 -22
- package/dist/ui/overlays/QueueOverlay.js +0 -79
- package/dist/ui/overlays/SettingsScreen.d.ts +0 -228
- package/dist/ui/overlays/SettingsScreen.js +0 -1037
- package/dist/ui/overlays/ShortcutPanel.d.ts +0 -39
- package/dist/ui/overlays/ShortcutPanel.js +0 -106
- package/dist/ui/overlays/TeamFanoutPage.d.ts +0 -51
- package/dist/ui/overlays/TeamFanoutPage.js +0 -90
- package/dist/ui/overlays/governance-settings.d.ts +0 -79
- package/dist/ui/overlays/governance-settings.js +0 -140
- package/dist/ui/overlays/kit-picker-state.d.ts +0 -87
- package/dist/ui/overlays/kit-picker-state.js +0 -136
- package/dist/ui/overlays/kit-settings-state.d.ts +0 -129
- package/dist/ui/overlays/kit-settings-state.js +0 -268
- package/dist/ui/overlays/model-probe-view.d.ts +0 -128
- package/dist/ui/overlays/model-probe-view.js +0 -225
- package/dist/ui/overlays/model-profile-state.d.ts +0 -177
- package/dist/ui/overlays/model-profile-state.js +0 -301
- package/dist/ui/overlays/prompt-library-state.d.ts +0 -162
- package/dist/ui/overlays/prompt-library-state.js +0 -335
- package/dist/ui/overlays/prompt-picker-state.d.ts +0 -71
- package/dist/ui/overlays/prompt-picker-state.js +0 -98
- package/dist/ui/overlays/team-fanout-state.d.ts +0 -106
- package/dist/ui/overlays/team-fanout-state.js +0 -155
- package/dist/ui/overlays/use-model-probe.d.ts +0 -30
- package/dist/ui/overlays/use-model-probe.js +0 -109
- package/dist/ui/palettes.d.ts +0 -112
- package/dist/ui/palettes.js +0 -130
- package/dist/ui/paste-frames.d.ts +0 -91
- package/dist/ui/paste-frames.js +0 -117
- package/dist/ui/paste-tokens.d.ts +0 -90
- package/dist/ui/paste-tokens.js +0 -147
- package/dist/ui/render-cache.d.ts +0 -81
- package/dist/ui/render-cache.js +0 -196
- package/dist/ui/render-governor.d.ts +0 -54
- package/dist/ui/render-governor.js +0 -78
- package/dist/ui/run-metrics.d.ts +0 -23
- package/dist/ui/run-metrics.js +0 -27
- package/dist/ui/run-status-row.d.ts +0 -63
- package/dist/ui/run-status-row.js +0 -54
- package/dist/ui/screen.d.ts +0 -107
- package/dist/ui/screen.js +0 -234
- package/dist/ui/scrollback/LiveTail.d.ts +0 -115
- package/dist/ui/scrollback/LiveTail.js +0 -48
- package/dist/ui/scrollback/band.d.ts +0 -114
- package/dist/ui/scrollback/band.js +0 -143
- package/dist/ui/scrollback/budget.d.ts +0 -90
- package/dist/ui/scrollback/budget.js +0 -100
- package/dist/ui/scrollback/canvas.d.ts +0 -100
- package/dist/ui/scrollback/canvas.js +0 -114
- package/dist/ui/scrollback/cursor-probe.d.ts +0 -71
- package/dist/ui/scrollback/cursor-probe.js +0 -133
- package/dist/ui/scrollback/drain.d.ts +0 -32
- package/dist/ui/scrollback/drain.js +0 -64
- package/dist/ui/scrollback/exit-summary.d.ts +0 -23
- package/dist/ui/scrollback/exit-summary.js +0 -25
- package/dist/ui/scrollback/limits.d.ts +0 -98
- package/dist/ui/scrollback/limits.js +0 -98
- package/dist/ui/scrollback/live-preview.d.ts +0 -34
- package/dist/ui/scrollback/live-preview.js +0 -130
- package/dist/ui/scrollback/overflow-print.d.ts +0 -108
- package/dist/ui/scrollback/overflow-print.js +0 -120
- package/dist/ui/scrollback/renderer.d.ts +0 -48
- package/dist/ui/scrollback/renderer.js +0 -186
- package/dist/ui/scrollback/scrollback-writer.d.ts +0 -174
- package/dist/ui/scrollback/scrollback-writer.js +0 -648
- package/dist/ui/scrollback/settled-boundary.d.ts +0 -42
- package/dist/ui/scrollback/settled-boundary.js +0 -109
- package/dist/ui/scrollback/tail-anchor.d.ts +0 -71
- package/dist/ui/scrollback/tail-anchor.js +0 -79
- package/dist/ui/scrollback/tail-window.d.ts +0 -73
- package/dist/ui/scrollback/tail-window.js +0 -89
- package/dist/ui/scrollback/use-scrollback-view.d.ts +0 -139
- package/dist/ui/scrollback/use-scrollback-view.js +0 -601
- package/dist/ui/scrollback/writer-shapes.d.ts +0 -127
- package/dist/ui/scrollback/writer-shapes.js +0 -159
- package/dist/ui/scrollbar-controller.d.ts +0 -30
- package/dist/ui/scrollbar-controller.js +0 -124
- package/dist/ui/selection/highlight.d.ts +0 -39
- package/dist/ui/selection/highlight.js +0 -64
- package/dist/ui/selection/screen-mirror.d.ts +0 -24
- package/dist/ui/selection/screen-mirror.js +0 -35
- package/dist/ui/selection/selection-controller.d.ts +0 -104
- package/dist/ui/selection/selection-controller.js +0 -372
- package/dist/ui/selection/selection.d.ts +0 -90
- package/dist/ui/selection/selection.js +0 -223
- package/dist/ui/shortcuts.d.ts +0 -81
- package/dist/ui/shortcuts.js +0 -221
- package/dist/ui/status-feedback.d.ts +0 -35
- package/dist/ui/status-feedback.js +0 -38
- package/dist/ui/stdout-frame-writer.d.ts +0 -74
- package/dist/ui/stdout-frame-writer.js +0 -155
- package/dist/ui/team-status.d.ts +0 -166
- package/dist/ui/team-status.js +0 -252
- package/dist/ui/terminal-plan.d.ts +0 -52
- package/dist/ui/terminal-plan.js +0 -49
- package/dist/ui/theme.d.ts +0 -96
- package/dist/ui/theme.js +0 -130
- package/dist/ui/transcript-text.d.ts +0 -41
- package/dist/ui/transcript-text.js +0 -282
- package/dist/ui/use-height-store.d.ts +0 -31
- package/dist/ui/use-height-store.js +0 -76
- package/dist/ui/use-render-governor.d.ts +0 -39
- package/dist/ui/use-render-governor.js +0 -57
- package/dist/ui/use-wheel-routing.d.ts +0 -57
- package/dist/ui/use-wheel-routing.js +0 -152
- package/dist/ui/win-vt-force.d.ts +0 -136
- package/dist/ui/win-vt-force.js +0 -237
- package/dist/ui/win-vt-input.d.ts +0 -57
- package/dist/ui/win-vt-input.js +0 -62
- package/dist/update/limits.d.ts +0 -111
- package/dist/update/limits.js +0 -111
- package/dist/update/semver.d.ts +0 -89
- package/dist/update/semver.js +0 -295
- package/dist/update/types.d.ts +0 -169
- package/dist/update/types.js +0 -68
- /package/dist/{ui → app}/session-bridge.d.ts +0 -0
- /package/dist/{ui → app}/session-bridge.js +0 -0
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Byte shapes of the native-scroll writer (tui-native-terminal-scroll §4.3 /
|
|
3
|
-
* Appendix A). Stateless string assembly only — the state machine that decides
|
|
4
|
-
* WHICH shape to emit lives in `scrollback-writer.ts`.
|
|
5
|
-
*
|
|
6
|
-
* THE WHITELIST (I-S5 / I-S6). Every byte produced here is drawn from: SGR, CUU,
|
|
7
|
-
* CUD, CR, CRLF, ED0, EL0, DEC 2026 and DECTCEM. There is no absolute CUP, no
|
|
8
|
-
* scroll region, no `CSI S/T`, no `ED2/ED3`. Relative addressing is what makes the
|
|
9
|
-
* geometry independent of the terminal scrolling underneath it (spec appendix B).
|
|
10
|
-
*
|
|
11
|
-
* Each row is `SGR0 · text · SGR0`: the leading reset stops one row's style leaking
|
|
12
|
-
* into the next, and the trailing one stops a background-colour-erase terminal from
|
|
13
|
-
* painting the following ED0/EL0 in the row's last colour.
|
|
14
|
-
*/
|
|
15
|
-
export declare const SGR0 = "\u001B[0m";
|
|
16
|
-
/** First write of a session: the cursor is already on a fresh line at column 0. */
|
|
17
|
-
export declare function seedBytes(input: {
|
|
18
|
-
lines: readonly string[];
|
|
19
|
-
statics: readonly string[];
|
|
20
|
-
sync: boolean;
|
|
21
|
-
/** After a foreign write the cursor may sit mid-line; start on a new one (RV-11). */
|
|
22
|
-
reseed: boolean;
|
|
23
|
-
}): string;
|
|
24
|
-
/**
|
|
25
|
-
* CUD(n): move down n rows WITHOUT writing a single cell.
|
|
26
|
-
*
|
|
27
|
-
* This is how the canvas spends its `gap` (D3). A blank row that is never written
|
|
28
|
-
* cannot be pushed into the scrollback by a later overflow, which is the whole
|
|
29
|
-
* reason the gap is not a run of `\r\n` (I-B3). The sequence is already whitelisted
|
|
30
|
-
* (`diffBytes` uses it to step between changed rows); this is the same CUD used to
|
|
31
|
-
* skip empty space instead.
|
|
32
|
-
*/
|
|
33
|
-
export declare function skipRows(rows: number): string;
|
|
34
|
-
/**
|
|
35
|
-
* First canvas batch (or the first one after a reset): the screen below the cursor
|
|
36
|
-
* is assumed empty, so there is nothing to erase — only `[gap][content][region]` to
|
|
37
|
-
* write, ending with the cursor parked on the last row.
|
|
38
|
-
*/
|
|
39
|
-
export declare function canvasSeedBytes(input: {
|
|
40
|
-
/**
|
|
41
|
-
* Rows to descend from the cursor to the canvas top, when the canvas is shorter
|
|
42
|
-
* than the space measured below the cursor.
|
|
43
|
-
*
|
|
44
|
-
* Non-zero only on a terminal taller than the start-of-canvas cap: the canvas then
|
|
45
|
-
* begins BELOW the cursor, and a seed that started writing at the cursor would park
|
|
46
|
-
* the region low and leave the top of the canvas empty for the whole session.
|
|
47
|
-
*/
|
|
48
|
-
downToTop: number;
|
|
49
|
-
/** Blank rows to skip before the first content row. */
|
|
50
|
-
gap: number;
|
|
51
|
-
/** Content rows, already clipped, oldest first. */
|
|
52
|
-
held: readonly string[];
|
|
53
|
-
/** The live region. */
|
|
54
|
-
lines: readonly string[];
|
|
55
|
-
sync: boolean;
|
|
56
|
-
/** After a foreign write the cursor may sit mid-line; start on a new one. */
|
|
57
|
-
reseed: boolean;
|
|
58
|
-
}): string;
|
|
59
|
-
/**
|
|
60
|
-
* Redraw the whole canvas: erase the previous one, then write `[gap][content][region]`.
|
|
61
|
-
*
|
|
62
|
-
* ORDER IS SEMANTICS: `ED0`, then the gap, then the content, then the region. Moving
|
|
63
|
-
* the gap after the content puts the blank space back between the reply and the
|
|
64
|
-
* composer, which is the exact defect this feature fixes (M1 in the spec).
|
|
65
|
-
*
|
|
66
|
-
* `held` is the FULL content sequence, not the part that will still be on screen: the
|
|
67
|
-
* rows that do not fit are supposed to leave through the bottom, and the terminal can
|
|
68
|
-
* only scroll away what it was given.
|
|
69
|
-
*/
|
|
70
|
-
export declare function canvasBytes(input: {
|
|
71
|
-
/** Previous canvas height: the erase distance. */
|
|
72
|
-
eraseUp: number;
|
|
73
|
-
gap: number;
|
|
74
|
-
held: readonly string[];
|
|
75
|
-
lines: readonly string[];
|
|
76
|
-
sync: boolean;
|
|
77
|
-
}): string;
|
|
78
|
-
/** Erase exactly the previous live region, print static rows, redraw the region. */
|
|
79
|
-
export declare function fullBytes(input: {
|
|
80
|
-
lines: readonly string[];
|
|
81
|
-
statics: readonly string[];
|
|
82
|
-
/** Rows between the region top and the parked cursor. */
|
|
83
|
-
eraseUp: number;
|
|
84
|
-
sync: boolean;
|
|
85
|
-
}): string;
|
|
86
|
-
/**
|
|
87
|
-
* Fill the screen down to the LAST row before the first batch (D4 rung 2 / §4.3).
|
|
88
|
-
*
|
|
89
|
-
* This is the fallback for a terminal that never answers `ESC[6n`: from any row, a
|
|
90
|
-
* run of `rows - 1` line feeds is guaranteed to leave the cursor on the bottom row
|
|
91
|
-
* (extra feeds only scroll, which is why the count is the caller's business). It is
|
|
92
|
-
* written ONCE, before anything else, so the rows it scrolls away are the host's old
|
|
93
|
-
* output — which is still in the scrollback — and never this session's content.
|
|
94
|
-
*
|
|
95
|
-
* The argument is the NUMBER OF LINE FEEDS, not the terminal height: `cli.tsx` passes
|
|
96
|
-
* `rows - 1`. Naming it after the height instead made the caller subtract twice and
|
|
97
|
-
* left the cursor one row short of the bottom.
|
|
98
|
-
*/
|
|
99
|
-
export declare function fillBytes(count: number): string;
|
|
100
|
-
/** Same height, no static rows: rewrite only the rows that changed. `''` if none did. */
|
|
101
|
-
export declare function diffBytes(input: {
|
|
102
|
-
lines: readonly string[];
|
|
103
|
-
prev: readonly string[];
|
|
104
|
-
sync: boolean;
|
|
105
|
-
}): string;
|
|
106
|
-
/**
|
|
107
|
-
* Exit: erase the live region, flush leftover static rows, print the summary.
|
|
108
|
-
* `eraseUp < 0` means the geometry is unknown (a foreign write intervened), in
|
|
109
|
-
* which case the only safe move is to start on a fresh line and erase nothing.
|
|
110
|
-
*/
|
|
111
|
-
export declare function finalizeBytes(input: {
|
|
112
|
-
eraseUp: number;
|
|
113
|
-
statics: readonly string[];
|
|
114
|
-
summary: readonly string[];
|
|
115
|
-
}): string;
|
|
116
|
-
/**
|
|
117
|
-
* Cut a row to `maxCols` DISPLAY columns (I-S13), keeping SGR / OSC 8 intact.
|
|
118
|
-
*
|
|
119
|
-
* Returns the input unchanged (same reference) when it already fits, which is the
|
|
120
|
-
* overwhelmingly common case. Width is measured the way Ink measures it
|
|
121
|
-
* (`string-width` over the ANSI-stripped text): that is the number Ink used to
|
|
122
|
-
* wrap, so a disagreement with the terminal is the only way a row can exceed it.
|
|
123
|
-
*/
|
|
124
|
-
export declare function clipLine(line: string, maxCols: number): {
|
|
125
|
-
text: string;
|
|
126
|
-
clipped: boolean;
|
|
127
|
-
};
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Byte shapes of the native-scroll writer (tui-native-terminal-scroll §4.3 /
|
|
3
|
-
* Appendix A). Stateless string assembly only — the state machine that decides
|
|
4
|
-
* WHICH shape to emit lives in `scrollback-writer.ts`.
|
|
5
|
-
*
|
|
6
|
-
* THE WHITELIST (I-S5 / I-S6). Every byte produced here is drawn from: SGR, CUU,
|
|
7
|
-
* CUD, CR, CRLF, ED0, EL0, DEC 2026 and DECTCEM. There is no absolute CUP, no
|
|
8
|
-
* scroll region, no `CSI S/T`, no `ED2/ED3`. Relative addressing is what makes the
|
|
9
|
-
* geometry independent of the terminal scrolling underneath it (spec appendix B).
|
|
10
|
-
*
|
|
11
|
-
* Each row is `SGR0 · text · SGR0`: the leading reset stops one row's style leaking
|
|
12
|
-
* into the next, and the trailing one stops a background-colour-erase terminal from
|
|
13
|
-
* painting the following ED0/EL0 in the row's last colour.
|
|
14
|
-
*/
|
|
15
|
-
import stringWidth from 'string-width';
|
|
16
|
-
import stripAnsi from 'strip-ansi';
|
|
17
|
-
const CSI = '\x1b[';
|
|
18
|
-
export const SGR0 = `${CSI}0m`;
|
|
19
|
-
const ED0 = `${CSI}J`;
|
|
20
|
-
const EL0 = `${CSI}K`;
|
|
21
|
-
const SYNC_BEGIN = `${CSI}?2026h`;
|
|
22
|
-
const SYNC_END = `${CSI}?2026l`;
|
|
23
|
-
const SHOW_CURSOR = `${CSI}?25h`;
|
|
24
|
-
const OSC8_CLOSE = '\x1b]8;;\x07';
|
|
25
|
-
const up = (n) => (n > 0 ? `${CSI}${n}A` : '');
|
|
26
|
-
const down = (n) => (n > 0 ? `${CSI}${n}B` : '');
|
|
27
|
-
const row = (text) => SGR0 + text + SGR0 + '\r\n';
|
|
28
|
-
const rows = (list) => list.map(row).join('');
|
|
29
|
-
const wrapSync = (payload, sync) => sync ? SYNC_BEGIN + payload + SYNC_END : payload;
|
|
30
|
-
/** First write of a session: the cursor is already on a fresh line at column 0. */
|
|
31
|
-
export function seedBytes(input) {
|
|
32
|
-
const lead = input.reseed ? '\r\n' : '';
|
|
33
|
-
return wrapSync(lead + '\r' + SGR0 + rows(input.statics) + rows(input.lines), input.sync);
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* CUD(n): move down n rows WITHOUT writing a single cell.
|
|
37
|
-
*
|
|
38
|
-
* This is how the canvas spends its `gap` (D3). A blank row that is never written
|
|
39
|
-
* cannot be pushed into the scrollback by a later overflow, which is the whole
|
|
40
|
-
* reason the gap is not a run of `\r\n` (I-B3). The sequence is already whitelisted
|
|
41
|
-
* (`diffBytes` uses it to step between changed rows); this is the same CUD used to
|
|
42
|
-
* skip empty space instead.
|
|
43
|
-
*/
|
|
44
|
-
export function skipRows(rows) {
|
|
45
|
-
return down(Math.max(0, Math.floor(Number.isFinite(rows) ? rows : 0)));
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* First canvas batch (or the first one after a reset): the screen below the cursor
|
|
49
|
-
* is assumed empty, so there is nothing to erase — only `[gap][content][region]` to
|
|
50
|
-
* write, ending with the cursor parked on the last row.
|
|
51
|
-
*/
|
|
52
|
-
export function canvasSeedBytes(input) {
|
|
53
|
-
const lead = input.reseed ? '\r\n' : '';
|
|
54
|
-
const skip = skipRows(input.downToTop) + skipRows(input.gap);
|
|
55
|
-
return wrapSync(lead + '\r' + SGR0 + skip + rows(input.held) + rows(input.lines), input.sync);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Redraw the whole canvas: erase the previous one, then write `[gap][content][region]`.
|
|
59
|
-
*
|
|
60
|
-
* ORDER IS SEMANTICS: `ED0`, then the gap, then the content, then the region. Moving
|
|
61
|
-
* the gap after the content puts the blank space back between the reply and the
|
|
62
|
-
* composer, which is the exact defect this feature fixes (M1 in the spec).
|
|
63
|
-
*
|
|
64
|
-
* `held` is the FULL content sequence, not the part that will still be on screen: the
|
|
65
|
-
* rows that do not fit are supposed to leave through the bottom, and the terminal can
|
|
66
|
-
* only scroll away what it was given.
|
|
67
|
-
*/
|
|
68
|
-
export function canvasBytes(input) {
|
|
69
|
-
return wrapSync(up(input.eraseUp) + '\r' + SGR0 + ED0 + skipRows(input.gap) +
|
|
70
|
-
rows(input.held) + rows(input.lines), input.sync);
|
|
71
|
-
}
|
|
72
|
-
/** Erase exactly the previous live region, print static rows, redraw the region. */
|
|
73
|
-
export function fullBytes(input) {
|
|
74
|
-
return wrapSync(up(input.eraseUp) + '\r' + SGR0 + ED0 + rows(input.statics) + rows(input.lines), input.sync);
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Fill the screen down to the LAST row before the first batch (D4 rung 2 / §4.3).
|
|
78
|
-
*
|
|
79
|
-
* This is the fallback for a terminal that never answers `ESC[6n`: from any row, a
|
|
80
|
-
* run of `rows - 1` line feeds is guaranteed to leave the cursor on the bottom row
|
|
81
|
-
* (extra feeds only scroll, which is why the count is the caller's business). It is
|
|
82
|
-
* written ONCE, before anything else, so the rows it scrolls away are the host's old
|
|
83
|
-
* output — which is still in the scrollback — and never this session's content.
|
|
84
|
-
*
|
|
85
|
-
* The argument is the NUMBER OF LINE FEEDS, not the terminal height: `cli.tsx` passes
|
|
86
|
-
* `rows - 1`. Naming it after the height instead made the caller subtract twice and
|
|
87
|
-
* left the cursor one row short of the bottom.
|
|
88
|
-
*/
|
|
89
|
-
export function fillBytes(count) {
|
|
90
|
-
return '\r\n'.repeat(Math.max(0, Math.floor(count)));
|
|
91
|
-
}
|
|
92
|
-
/** Same height, no static rows: rewrite only the rows that changed. `''` if none did. */
|
|
93
|
-
export function diffBytes(input) {
|
|
94
|
-
const { lines, prev } = input;
|
|
95
|
-
const height = lines.length;
|
|
96
|
-
let out = '';
|
|
97
|
-
let cursor = -1;
|
|
98
|
-
for (let i = 0; i < height; i += 1) {
|
|
99
|
-
if (lines[i] === prev[i])
|
|
100
|
-
continue;
|
|
101
|
-
// Paint, THEN clear the tail: never ESC[2K first, which would blank the row
|
|
102
|
-
// the user is looking at for the instant between the two writes.
|
|
103
|
-
out += (cursor < 0 ? up(height - i) : down(i - cursor)) + '\r' + SGR0 + lines[i] + SGR0 + EL0;
|
|
104
|
-
cursor = i;
|
|
105
|
-
}
|
|
106
|
-
if (cursor < 0)
|
|
107
|
-
return '';
|
|
108
|
-
// Park on the row below the region, column 0 (I-S4).
|
|
109
|
-
return wrapSync(out + down(height - cursor) + '\r', input.sync);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Exit: erase the live region, flush leftover static rows, print the summary.
|
|
113
|
-
* `eraseUp < 0` means the geometry is unknown (a foreign write intervened), in
|
|
114
|
-
* which case the only safe move is to start on a fresh line and erase nothing.
|
|
115
|
-
*/
|
|
116
|
-
export function finalizeBytes(input) {
|
|
117
|
-
const head = input.eraseUp < 0 ? '\r\n' : up(input.eraseUp) + '\r' + SGR0 + ED0;
|
|
118
|
-
return head + rows(input.statics) + rows(input.summary) + SHOW_CURSOR;
|
|
119
|
-
}
|
|
120
|
-
const ESCAPE = /(\x1b\[[0-?]*[ -/]*[@-~]|\x1b\][^\x07\x1b]*(?:\x07|\x1b\\))/;
|
|
121
|
-
const segmenter = typeof Intl !== 'undefined' && 'Segmenter' in Intl
|
|
122
|
-
? new Intl.Segmenter(undefined, { granularity: 'grapheme' })
|
|
123
|
-
: null;
|
|
124
|
-
function graphemes(text) {
|
|
125
|
-
return segmenter ? Array.from(segmenter.segment(text), (part) => part.segment) : Array.from(text);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Cut a row to `maxCols` DISPLAY columns (I-S13), keeping SGR / OSC 8 intact.
|
|
129
|
-
*
|
|
130
|
-
* Returns the input unchanged (same reference) when it already fits, which is the
|
|
131
|
-
* overwhelmingly common case. Width is measured the way Ink measures it
|
|
132
|
-
* (`string-width` over the ANSI-stripped text): that is the number Ink used to
|
|
133
|
-
* wrap, so a disagreement with the terminal is the only way a row can exceed it.
|
|
134
|
-
*/
|
|
135
|
-
export function clipLine(line, maxCols) {
|
|
136
|
-
if (maxCols < 1)
|
|
137
|
-
return { text: '', clipped: line.length > 0 };
|
|
138
|
-
if (stringWidth(stripAnsi(line)) <= maxCols)
|
|
139
|
-
return { text: line, clipped: false };
|
|
140
|
-
let out = '';
|
|
141
|
-
let width = 0;
|
|
142
|
-
let linkOpen = false;
|
|
143
|
-
for (const part of line.split(ESCAPE)) {
|
|
144
|
-
if (part.startsWith('\x1b')) {
|
|
145
|
-
out += part;
|
|
146
|
-
if (part.startsWith('\x1b]8;'))
|
|
147
|
-
linkOpen = !/^\x1b\]8;[^;]*;(?:\x07|\x1b\\)$/.test(part);
|
|
148
|
-
continue;
|
|
149
|
-
}
|
|
150
|
-
for (const glyph of graphemes(part)) {
|
|
151
|
-
const glyphWidth = stringWidth(glyph);
|
|
152
|
-
if (width + glyphWidth > maxCols)
|
|
153
|
-
return { text: out + SGR0 + (linkOpen ? OSC8_CLOSE : ''), clipped: true };
|
|
154
|
-
out += glyph;
|
|
155
|
-
width += glyphWidth;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
return { text: out, clipped: false };
|
|
159
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import type { MouseEvent } from '../input/mouse-events.js';
|
|
2
|
-
import { type ScrollbarGeometry } from './layout/scrollbar-geometry.js';
|
|
3
|
-
export interface ScrollbarController {
|
|
4
|
-
handle(event: MouseEvent): boolean;
|
|
5
|
-
cancel(): void;
|
|
6
|
-
dispose(): void;
|
|
7
|
-
isCaptured(): boolean;
|
|
8
|
-
}
|
|
9
|
-
export interface ScrollbarOptions {
|
|
10
|
-
getGeometry(): ScrollbarGeometry | null;
|
|
11
|
-
setOffset(offset: number): void;
|
|
12
|
-
page(direction: 'pageUp' | 'pageDown'): void;
|
|
13
|
-
onHold(held: boolean): void;
|
|
14
|
-
onStart(): void;
|
|
15
|
-
isEnabled(): boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface ScrollbarBridge {
|
|
18
|
-
controller: ScrollbarController | null;
|
|
19
|
-
geometry: ScrollbarGeometry | null;
|
|
20
|
-
frameReady: boolean;
|
|
21
|
-
isEnabled(): boolean;
|
|
22
|
-
onStart?: () => void;
|
|
23
|
-
onGeometry?: () => void;
|
|
24
|
-
requestRedraw?: () => void;
|
|
25
|
-
invalidate(): void;
|
|
26
|
-
}
|
|
27
|
-
/** Build the late-bound terminal bridge; no scroll position is owned here. */
|
|
28
|
-
export declare function createScrollbarBridge(isEnabled: () => boolean): ScrollbarBridge;
|
|
29
|
-
/** Own one pointer gesture and bounded timers; positioning remains in the viewport. */
|
|
30
|
-
export declare function createScrollbarController(options: ScrollbarOptions): ScrollbarController;
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { offsetForThumb } from './layout/scrollbar-geometry.js';
|
|
2
|
-
/** Build the late-bound terminal bridge; no scroll position is owned here. */
|
|
3
|
-
export function createScrollbarBridge(isEnabled) {
|
|
4
|
-
const bridge = {
|
|
5
|
-
controller: null, geometry: null, frameReady: false, isEnabled,
|
|
6
|
-
invalidate: () => { bridge.frameReady = false; bridge.controller?.cancel(); },
|
|
7
|
-
};
|
|
8
|
-
return bridge;
|
|
9
|
-
}
|
|
10
|
-
/** Own one pointer gesture and bounded timers; positioning remains in the viewport. */
|
|
11
|
-
export function createScrollbarController(options) {
|
|
12
|
-
return new ScrollbarGesture(options);
|
|
13
|
-
}
|
|
14
|
-
class ScrollbarGesture {
|
|
15
|
-
options;
|
|
16
|
-
capture = null;
|
|
17
|
-
timer = null;
|
|
18
|
-
watchdog = null;
|
|
19
|
-
swallowLate = false;
|
|
20
|
-
disposed = false;
|
|
21
|
-
constructor(options) {
|
|
22
|
-
this.options = options;
|
|
23
|
-
}
|
|
24
|
-
isCaptured() { return this.capture !== null; }
|
|
25
|
-
cancel() {
|
|
26
|
-
if (this.timer)
|
|
27
|
-
clearTimeout(this.timer);
|
|
28
|
-
if (this.watchdog)
|
|
29
|
-
clearTimeout(this.watchdog);
|
|
30
|
-
this.timer = this.watchdog = null;
|
|
31
|
-
const held = this.capture !== null;
|
|
32
|
-
this.capture = null;
|
|
33
|
-
if (held) {
|
|
34
|
-
this.swallowLate = true;
|
|
35
|
-
this.options.onHold(false);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
dispose() { this.cancel(); this.disposed = true; }
|
|
39
|
-
armWatchdog() {
|
|
40
|
-
if (this.watchdog)
|
|
41
|
-
clearTimeout(this.watchdog);
|
|
42
|
-
this.watchdog = setTimeout(() => this.cancel(), 30000);
|
|
43
|
-
this.watchdog.unref?.();
|
|
44
|
-
}
|
|
45
|
-
flush() {
|
|
46
|
-
if (this.timer)
|
|
47
|
-
clearTimeout(this.timer);
|
|
48
|
-
this.timer = null;
|
|
49
|
-
const g = this.options.getGeometry();
|
|
50
|
-
if (!this.capture || !g || !this.options.isEnabled() ||
|
|
51
|
-
g.revision !== this.capture.revision) {
|
|
52
|
-
this.cancel();
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const y = this.capture.pendingY;
|
|
56
|
-
this.capture.pendingY = null;
|
|
57
|
-
if (y !== null)
|
|
58
|
-
this.options.setOffset(offsetForThumb({ geometry: g,
|
|
59
|
-
pointerY: y, grabRow: this.capture.grabRow }));
|
|
60
|
-
}
|
|
61
|
-
move(y) {
|
|
62
|
-
if (!this.capture || this.capture.kind !== 'thumb' || y === this.capture.lastPointerY)
|
|
63
|
-
return;
|
|
64
|
-
this.capture.lastPointerY = y;
|
|
65
|
-
this.capture.pendingY = y;
|
|
66
|
-
if (!this.timer) {
|
|
67
|
-
this.timer = setTimeout(() => this.flush(), 16);
|
|
68
|
-
this.timer.unref?.();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
press(event) {
|
|
72
|
-
this.cancel();
|
|
73
|
-
this.swallowLate = false;
|
|
74
|
-
const g = this.options.getGeometry();
|
|
75
|
-
if (!g || !this.canPress(event, g))
|
|
76
|
-
return false;
|
|
77
|
-
const row = event.y - g.trackTop;
|
|
78
|
-
const thumb = g.thumb;
|
|
79
|
-
const inside = thumb && row >= thumb.start && row < thumb.start + thumb.size;
|
|
80
|
-
this.capture = { kind: inside && g.trackRows > thumb.size ? 'thumb' : 'track',
|
|
81
|
-
grabRow: inside ? row - thumb.start : 0, revision: g.revision,
|
|
82
|
-
lastPointerY: event.y, pendingY: null };
|
|
83
|
-
this.options.onStart();
|
|
84
|
-
this.options.onHold(true);
|
|
85
|
-
this.armWatchdog();
|
|
86
|
-
if (thumb && !inside)
|
|
87
|
-
this.options.page(row < thumb.start ? 'pageUp' : 'pageDown');
|
|
88
|
-
return true;
|
|
89
|
-
}
|
|
90
|
-
canPress(event, g) {
|
|
91
|
-
const plainLeft = event.button === 0 && !event.shift && !event.alt && !event.ctrl;
|
|
92
|
-
const inTrack = event.x === g.trackCol && event.y >= g.trackTop &&
|
|
93
|
-
event.y < g.trackTop + g.trackRows;
|
|
94
|
-
return this.options.isEnabled() && plainLeft && inTrack;
|
|
95
|
-
}
|
|
96
|
-
handle(event) {
|
|
97
|
-
if (this.disposed)
|
|
98
|
-
return false;
|
|
99
|
-
if (event.kind === 'wheel')
|
|
100
|
-
return this.capture !== null;
|
|
101
|
-
if (![event.x, event.y].every(Number.isFinite))
|
|
102
|
-
return this.capture !== null;
|
|
103
|
-
if (event.kind === 'press')
|
|
104
|
-
return this.press(event);
|
|
105
|
-
if (!this.capture)
|
|
106
|
-
return this.swallowLate;
|
|
107
|
-
if (event.button !== 0) {
|
|
108
|
-
this.cancel();
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
if (!this.options.isEnabled()) {
|
|
112
|
-
this.cancel();
|
|
113
|
-
return true;
|
|
114
|
-
}
|
|
115
|
-
this.move(event.y);
|
|
116
|
-
if (event.kind === 'release') {
|
|
117
|
-
this.flush();
|
|
118
|
-
this.cancel();
|
|
119
|
-
}
|
|
120
|
-
else
|
|
121
|
-
this.armWatchdog();
|
|
122
|
-
return true;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The row painter (tui-selection-and-scroll-follow §4.4.4). PURE — strings in,
|
|
3
|
-
* strings out.
|
|
4
|
-
*
|
|
5
|
-
* It runs inside the frame differ's `decorate` hook rather than in React (D-6):
|
|
6
|
-
* a re-render per drag event goes through the render governor and the whole
|
|
7
|
-
* component tree, while this repaints one to three rows with no commit at all.
|
|
8
|
-
*/
|
|
9
|
-
import type { Theme } from '../theme.js';
|
|
10
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
11
|
-
/**
|
|
12
|
-
* The SGR sequence that opens a highlighted run.
|
|
13
|
-
*
|
|
14
|
-
* TRUECOLOR OR REVERSE VIDEO, WITH NOTHING IN BETWEEN, and that is deliberate.
|
|
15
|
-
* `getTheme` degrades every palette colour to the terminal's depth, so below
|
|
16
|
-
* ansi-256 `theme.selectionBg` is a CHALK COLOUR NAME (`'blue'`) rather than a
|
|
17
|
-
* hex triple — and a name cannot be turned into an escape sequence here without
|
|
18
|
-
* duplicating chalk's own table. Reverse video is what a terminal that shallow
|
|
19
|
-
* would render anyway, it needs no colour support at all, and it is exactly what
|
|
20
|
-
* the emulator's own selection looks like. The `HEX` test is therefore both the
|
|
21
|
-
* colour-depth check and the type check.
|
|
22
|
-
*/
|
|
23
|
-
export declare function selectionOpen(theme: Theme, caps: TermCapabilities): string;
|
|
24
|
-
/**
|
|
25
|
-
* Paint `[from, to)` of one frame line.
|
|
26
|
-
*
|
|
27
|
-
* `to` is already clamped to the terminal width by the caller, so `Infinity`
|
|
28
|
-
* never reaches here.
|
|
29
|
-
*
|
|
30
|
-
* STRIPPING SGR INSIDE THE SELECTION IS NOT LAZINESS. An inner `\x1b[0m` — which
|
|
31
|
-
* `Markdown` and `cli-highlight` emit constantly — would cancel the highlight
|
|
32
|
-
* attribute mid-run and leave holes in it. Terminals repaint selected text in
|
|
33
|
-
* the selection's own colours for exactly this reason.
|
|
34
|
-
*
|
|
35
|
-
* `pad` is what gives a multi-row selection a straight right edge over short
|
|
36
|
-
* lines, and it measures with `columnsOf` — the same oracle `sliceColumns`
|
|
37
|
-
* charges with — rather than reaching for a third width function (I-12).
|
|
38
|
-
*/
|
|
39
|
-
export declare function paintRow(line: string, from: number, to: number, open: string): string;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The row painter (tui-selection-and-scroll-follow §4.4.4). PURE — strings in,
|
|
3
|
-
* strings out.
|
|
4
|
-
*
|
|
5
|
-
* It runs inside the frame differ's `decorate` hook rather than in React (D-6):
|
|
6
|
-
* a re-render per drag event goes through the render governor and the whole
|
|
7
|
-
* component tree, while this repaints one to three rows with no commit at all.
|
|
8
|
-
*/
|
|
9
|
-
import stripAnsi from 'strip-ansi';
|
|
10
|
-
import { columnsOf, sliceColumns } from './selection.js';
|
|
11
|
-
const CSI = '\x1b[';
|
|
12
|
-
const SGR_RESET = `${CSI}0m`;
|
|
13
|
-
/** Reverse video — the universal fallback, and what a monochrome terminal gets. */
|
|
14
|
-
const REVERSE = `${CSI}7m`;
|
|
15
|
-
const HEX = /^#[0-9a-f]{6}$/i;
|
|
16
|
-
function rgb(hex) {
|
|
17
|
-
const n = Number.parseInt(hex.slice(1), 16);
|
|
18
|
-
return `${(n >> 16) & 0xff};${(n >> 8) & 0xff};${n & 0xff}`;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* The SGR sequence that opens a highlighted run.
|
|
22
|
-
*
|
|
23
|
-
* TRUECOLOR OR REVERSE VIDEO, WITH NOTHING IN BETWEEN, and that is deliberate.
|
|
24
|
-
* `getTheme` degrades every palette colour to the terminal's depth, so below
|
|
25
|
-
* ansi-256 `theme.selectionBg` is a CHALK COLOUR NAME (`'blue'`) rather than a
|
|
26
|
-
* hex triple — and a name cannot be turned into an escape sequence here without
|
|
27
|
-
* duplicating chalk's own table. Reverse video is what a terminal that shallow
|
|
28
|
-
* would render anyway, it needs no colour support at all, and it is exactly what
|
|
29
|
-
* the emulator's own selection looks like. The `HEX` test is therefore both the
|
|
30
|
-
* colour-depth check and the type check.
|
|
31
|
-
*/
|
|
32
|
-
export function selectionOpen(theme, caps) {
|
|
33
|
-
if (caps.colorLevel < 2)
|
|
34
|
-
return REVERSE;
|
|
35
|
-
const bg = theme.selectionBg;
|
|
36
|
-
const fg = theme.selectionFg;
|
|
37
|
-
if (!bg || !fg || !HEX.test(bg) || !HEX.test(fg))
|
|
38
|
-
return REVERSE;
|
|
39
|
-
return `${CSI}48;2;${rgb(bg)}m${CSI}38;2;${rgb(fg)}m`;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Paint `[from, to)` of one frame line.
|
|
43
|
-
*
|
|
44
|
-
* `to` is already clamped to the terminal width by the caller, so `Infinity`
|
|
45
|
-
* never reaches here.
|
|
46
|
-
*
|
|
47
|
-
* STRIPPING SGR INSIDE THE SELECTION IS NOT LAZINESS. An inner `\x1b[0m` — which
|
|
48
|
-
* `Markdown` and `cli-highlight` emit constantly — would cancel the highlight
|
|
49
|
-
* attribute mid-run and leave holes in it. Terminals repaint selected text in
|
|
50
|
-
* the selection's own colours for exactly this reason.
|
|
51
|
-
*
|
|
52
|
-
* `pad` is what gives a multi-row selection a straight right edge over short
|
|
53
|
-
* lines, and it measures with `columnsOf` — the same oracle `sliceColumns`
|
|
54
|
-
* charges with — rather than reaching for a third width function (I-12).
|
|
55
|
-
*/
|
|
56
|
-
export function paintRow(line, from, to, open) {
|
|
57
|
-
if (!(to > from))
|
|
58
|
-
return line;
|
|
59
|
-
const head = sliceColumns(line, 0, from);
|
|
60
|
-
const mid = stripAnsi(sliceColumns(line, from, to));
|
|
61
|
-
const pad = ' '.repeat(Math.max(0, to - from - columnsOf(mid)));
|
|
62
|
-
const tail = sliceColumns(line, to);
|
|
63
|
-
return `${head}${open}${mid}${pad}${SGR_RESET}${tail}`;
|
|
64
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The screen mirror (tui-selection-and-scroll-follow §7) — the single source of
|
|
3
|
-
* truth for what text is on which row.
|
|
4
|
-
*
|
|
5
|
-
* I-4 RIDES ON THIS OBJECT. The highlight and the clipboard both read the rows
|
|
6
|
-
* stored here, written by the same `decorate` call, so whatever changes under a
|
|
7
|
-
* selection is simultaneously what is highlighted and what would be copied. What
|
|
8
|
-
* you see is what you get BY CONSTRUCTION, rather than by a staleness check that
|
|
9
|
-
* can be wrong.
|
|
10
|
-
*
|
|
11
|
-
* `plain` is computed LAZILY. `decorate` runs on every frame Ink produces —
|
|
12
|
-
* 15-30 times a second during a run — while a copy happens when a human releases
|
|
13
|
-
* a mouse button, so stripping every row eagerly would spend H regex passes per
|
|
14
|
-
* frame to serve an event that may never come. The cache is dropped by `set`, so
|
|
15
|
-
* the laziness is invisible to callers and cannot go stale.
|
|
16
|
-
*/
|
|
17
|
-
export interface ScreenMirror {
|
|
18
|
-
/** Last frame, ANSI intact — what `decorate` paints over. */
|
|
19
|
-
readonly raw: readonly string[];
|
|
20
|
-
/** The same rows, ANSI stripped — what `selectedText` reads. */
|
|
21
|
-
readonly plain: readonly string[];
|
|
22
|
-
set(lines: readonly string[]): void;
|
|
23
|
-
}
|
|
24
|
-
export declare function createScreenMirror(): ScreenMirror;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The screen mirror (tui-selection-and-scroll-follow §7) — the single source of
|
|
3
|
-
* truth for what text is on which row.
|
|
4
|
-
*
|
|
5
|
-
* I-4 RIDES ON THIS OBJECT. The highlight and the clipboard both read the rows
|
|
6
|
-
* stored here, written by the same `decorate` call, so whatever changes under a
|
|
7
|
-
* selection is simultaneously what is highlighted and what would be copied. What
|
|
8
|
-
* you see is what you get BY CONSTRUCTION, rather than by a staleness check that
|
|
9
|
-
* can be wrong.
|
|
10
|
-
*
|
|
11
|
-
* `plain` is computed LAZILY. `decorate` runs on every frame Ink produces —
|
|
12
|
-
* 15-30 times a second during a run — while a copy happens when a human releases
|
|
13
|
-
* a mouse button, so stripping every row eagerly would spend H regex passes per
|
|
14
|
-
* frame to serve an event that may never come. The cache is dropped by `set`, so
|
|
15
|
-
* the laziness is invisible to callers and cannot go stale.
|
|
16
|
-
*/
|
|
17
|
-
import stripAnsi from 'strip-ansi';
|
|
18
|
-
export function createScreenMirror() {
|
|
19
|
-
let raw = [];
|
|
20
|
-
let plain = null;
|
|
21
|
-
return {
|
|
22
|
-
get raw() {
|
|
23
|
-
return raw;
|
|
24
|
-
},
|
|
25
|
-
get plain() {
|
|
26
|
-
if (plain === null)
|
|
27
|
-
plain = raw.map((line) => stripAnsi(line));
|
|
28
|
-
return plain;
|
|
29
|
-
},
|
|
30
|
-
set(lines) {
|
|
31
|
-
raw = lines;
|
|
32
|
-
plain = null;
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
}
|