@aragon-agent/cli 0.6.46 → 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 +28 -0
- package/README.md +80 -12
- package/dist/agent/coalesce.d.ts +5 -1
- package/dist/agent/coalesce.js +13 -0
- package/dist/agent/controller.d.ts +41 -20
- package/dist/agent/controller.js +68 -15
- 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/agent/user-attention.d.ts +17 -0
- package/dist/agent/user-attention.js +32 -0
- package/dist/{ui → app}/App.d.ts +9 -9
- package/dist/{ui → app}/App.js +113 -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 +31 -32
- 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 +10 -31
- 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 +8 -5
- package/dist/proc/readiness.js +1 -1
- package/dist/proc/supervisor.d.ts +1 -1
- package/dist/proc/supervisor.js +10 -4
- package/dist/proc/wait-plan.d.ts +39 -0
- package/dist/proc/wait-plan.js +77 -0
- package/dist/proc/wait.d.ts +37 -4
- package/dist/proc/wait.js +68 -5
- 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/checkpoint.js +2 -0
- package/dist/session/clear-archive.d.ts +2 -2
- package/dist/session/persist.d.ts +2 -2
- package/dist/session/persist.js +20 -3
- package/dist/session/startup-session.d.ts +2 -2
- package/dist/session/validate-session.js +6 -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 +14 -3
- package/dist/tools/job-tools.js +158 -35
- 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 -837
- package/dist/agent/reducer.js +0 -1617
- 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 -1377
- 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 -200
- package/dist/proc/limits.js +0 -207
- package/dist/proc/progress.d.ts +0 -40
- package/dist/proc/progress.js +0 -135
- package/dist/proc/types.d.ts +0 -263
- package/dist/proc/types.js +0 -15
- 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 -48
- 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 -129
- 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 -251
- 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 -160
- 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/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 -82
- package/dist/ui/interaction-copy.js +0 -38
- 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 -139
- package/dist/ui/layout/status-layout.js +0 -253
- 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 -488
- 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 -61
- 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 -118
- 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,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scroll-thumb geometry (mouse-wheel-region-routing §4.8) — pure, React-free.
|
|
3
|
-
*
|
|
4
|
-
* Wheel scrolling without a position indicator is a half-finished affordance:
|
|
5
|
-
* the user learns THAT they moved but not HOW FAR or how much is left. The
|
|
6
|
-
* status bar's `↑N` answers neither.
|
|
7
|
-
*
|
|
8
|
-
* OFFSET COUNTS FROM THE BOTTOM, exactly as `scroll.ts` documents — `0` is
|
|
9
|
-
* pinned to the newest output and `overflow` is parked at the very top. The
|
|
10
|
-
* rows hidden ABOVE are therefore `overflow - offset`, and that inversion is
|
|
11
|
-
* precisely what gets done by accident, so it is computed here once and named.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Where the thumb sits, or `null` when the content fits and there is nothing to
|
|
15
|
-
* indicate.
|
|
16
|
-
*
|
|
17
|
-
* `size` never rounds to zero: a 10-row window over a 5000-row transcript still
|
|
18
|
-
* gets a one-row thumb, because an indicator that vanishes at exactly the
|
|
19
|
-
* moment the transcript is longest is worse than no indicator at all.
|
|
20
|
-
*/
|
|
21
|
-
export function thumbRange(viewportRows, contentRows, offsetFromBottom, reserveTravel = false) {
|
|
22
|
-
const viewport = Math.floor(viewportRows);
|
|
23
|
-
const content = Math.floor(contentRows);
|
|
24
|
-
if (!Number.isFinite(viewport) || !Number.isFinite(content))
|
|
25
|
-
return null;
|
|
26
|
-
if (viewport <= 0 || content <= viewport)
|
|
27
|
-
return null;
|
|
28
|
-
const overflow = content - viewport;
|
|
29
|
-
const offset = Math.min(Math.max(Math.floor(offsetFromBottom) || 0, 0), overflow);
|
|
30
|
-
const maximum = reserveTravel && viewport >= 2 ? viewport - 1 : viewport;
|
|
31
|
-
const size = Math.min(maximum, Math.max(1, Math.round((viewport * viewport) / content)));
|
|
32
|
-
const travel = viewport - size;
|
|
33
|
-
const hiddenAbove = overflow - offset;
|
|
34
|
-
const start = travel <= 0 ? 0 : Math.round((hiddenAbove / overflow) * travel);
|
|
35
|
-
return { start: Math.min(Math.max(start, 0), travel), size };
|
|
36
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scroll maths for the self-drawn viewport (spec §4.5). Pure, React-free.
|
|
3
|
-
*
|
|
4
|
-
* `offset` counts LINES FROM THE BOTTOM — equivalently, the number of rows
|
|
5
|
-
* currently hidden BELOW the viewport. `0` means pinned to the newest output;
|
|
6
|
-
* `overflowLines` means parked at the very top. Counting from the bottom is what
|
|
7
|
-
* makes auto-follow free: when new content arrives `overflowLines` grows while
|
|
8
|
-
* `offset` stays 0, so the viewport keeps showing the tail without anyone
|
|
9
|
-
* calling a "scroll to bottom" routine.
|
|
10
|
-
*
|
|
11
|
-
* The rows hidden ABOVE are therefore `overflowLines - offset`. Mixing the two
|
|
12
|
-
* up inverts both the bottom-snap test and the "N new lines" hint.
|
|
13
|
-
*/
|
|
14
|
-
export interface ScrollState {
|
|
15
|
-
offset: number;
|
|
16
|
-
}
|
|
17
|
-
export interface ViewportMetrics {
|
|
18
|
-
/** Visible height of the clipping box, in rows. */
|
|
19
|
-
viewport: number;
|
|
20
|
-
/** Natural (unclipped) height of the content, in rows. */
|
|
21
|
-
content: number;
|
|
22
|
-
}
|
|
23
|
-
export type ScrollIntent = 'lineUp' | 'lineDown' | 'pageUp' | 'pageDown' | 'toTop' | 'toBottom';
|
|
24
|
-
export declare const BOTTOM_SNAP_TOLERANCE = 2;
|
|
25
|
-
export declare function clampScroll(offset: number, overflowLines: number): number;
|
|
26
|
-
export declare function pageSize(viewportHeight: number): number;
|
|
27
|
-
export declare function isPinnedToBottom(state: ScrollState): boolean;
|
|
28
|
-
export declare function applyScroll(state: ScrollState, intent: ScrollIntent, metrics: ViewportMetrics): ScrollState;
|
|
29
|
-
/**
|
|
30
|
-
* Fold `applyScroll` `times` times — one `setState`, one render, however fast
|
|
31
|
-
* the wheel spins (mouse-wheel-region-routing §5.5).
|
|
32
|
-
*
|
|
33
|
-
* Folding rather than multiplying is deliberate: `applyScroll` owns the
|
|
34
|
-
* downward bottom-snap and the clamp, and reimplementing either here would give
|
|
35
|
-
* the wheel a different notion of "pinned to the bottom" than the keyboard has.
|
|
36
|
-
*/
|
|
37
|
-
export declare function applyScrollTimes(state: ScrollState, intent: ScrollIntent, metrics: ViewportMetrics, times: number): ScrollState;
|
package/dist/ui/layout/scroll.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Scroll maths for the self-drawn viewport (spec §4.5). Pure, React-free.
|
|
3
|
-
*
|
|
4
|
-
* `offset` counts LINES FROM THE BOTTOM — equivalently, the number of rows
|
|
5
|
-
* currently hidden BELOW the viewport. `0` means pinned to the newest output;
|
|
6
|
-
* `overflowLines` means parked at the very top. Counting from the bottom is what
|
|
7
|
-
* makes auto-follow free: when new content arrives `overflowLines` grows while
|
|
8
|
-
* `offset` stays 0, so the viewport keeps showing the tail without anyone
|
|
9
|
-
* calling a "scroll to bottom" routine.
|
|
10
|
-
*
|
|
11
|
-
* The rows hidden ABOVE are therefore `overflowLines - offset`. Mixing the two
|
|
12
|
-
* up inverts both the bottom-snap test and the "N new lines" hint.
|
|
13
|
-
*/
|
|
14
|
-
/**
|
|
15
|
-
* Rows of context kept across a page turn, and — not a coincidence — the
|
|
16
|
-
* bottom-snap tolerance. The tolerance must be >= whatever a page turn can
|
|
17
|
-
* leave behind, or PgDn parks the user in a fake off-bottom state that they
|
|
18
|
-
* cannot press their way out of.
|
|
19
|
-
*/
|
|
20
|
-
const PAGE_CONTEXT_LINES = 2;
|
|
21
|
-
export const BOTTOM_SNAP_TOLERANCE = PAGE_CONTEXT_LINES;
|
|
22
|
-
export function clampScroll(offset, overflowLines) {
|
|
23
|
-
const max = Math.max(0, overflowLines);
|
|
24
|
-
if (!Number.isFinite(offset) || offset < 0)
|
|
25
|
-
return 0;
|
|
26
|
-
return Math.min(Math.floor(offset), max);
|
|
27
|
-
}
|
|
28
|
-
export function pageSize(viewportHeight) {
|
|
29
|
-
return Math.max(1, Math.floor(viewportHeight) - PAGE_CONTEXT_LINES);
|
|
30
|
-
}
|
|
31
|
-
export function isPinnedToBottom(state) {
|
|
32
|
-
return state.offset === 0;
|
|
33
|
-
}
|
|
34
|
-
/** Intents that move toward the newest output; only these snap to the bottom. */
|
|
35
|
-
function isDownward(intent) {
|
|
36
|
-
return intent === 'lineDown' || intent === 'pageDown' || intent === 'toBottom';
|
|
37
|
-
}
|
|
38
|
-
export function applyScroll(state, intent, metrics) {
|
|
39
|
-
const overflowLines = Math.max(0, metrics.content - metrics.viewport);
|
|
40
|
-
const page = pageSize(metrics.viewport);
|
|
41
|
-
let next;
|
|
42
|
-
switch (intent) {
|
|
43
|
-
case 'lineUp':
|
|
44
|
-
next = state.offset + 1;
|
|
45
|
-
break;
|
|
46
|
-
case 'lineDown':
|
|
47
|
-
next = state.offset - 1;
|
|
48
|
-
break;
|
|
49
|
-
case 'pageUp':
|
|
50
|
-
next = state.offset + page;
|
|
51
|
-
break;
|
|
52
|
-
case 'pageDown':
|
|
53
|
-
next = state.offset - page;
|
|
54
|
-
break;
|
|
55
|
-
case 'toTop':
|
|
56
|
-
next = overflowLines;
|
|
57
|
-
break;
|
|
58
|
-
case 'toBottom':
|
|
59
|
-
next = 0;
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
const clamped = clampScroll(next, overflowLines);
|
|
63
|
-
// `offset` IS the number of rows hidden below the viewport, so proximity to
|
|
64
|
-
// the bottom is `offset <= tolerance` — not `overflowLines - offset`, which
|
|
65
|
-
// measures the distance to the TOP. Without the snap, a PgDn that lands one
|
|
66
|
-
// row short parks the user in a fake off-bottom state (a stuck `↑1` and a
|
|
67
|
-
// permanent "new lines" hint) that no further PgDn can clear, because the
|
|
68
|
-
// hint row itself shrinks the viewport and keeps re-introducing the residue.
|
|
69
|
-
//
|
|
70
|
-
// Downward intents only: with the correct comparison, snapping on the way up
|
|
71
|
-
// would turn `lineUp` from a pinned viewport into a no-op.
|
|
72
|
-
if (isDownward(intent) && clamped <= BOTTOM_SNAP_TOLERANCE) {
|
|
73
|
-
return { offset: 0 };
|
|
74
|
-
}
|
|
75
|
-
return { offset: clamped };
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Upper bound on one folded burst. `repeat` arrives from the wheel router's
|
|
79
|
-
* coalescing window, and an unbounded fold is a free CPU-burn primitive for a
|
|
80
|
-
* high-resolution / free-spinning wheel (R-10).
|
|
81
|
-
*/
|
|
82
|
-
const MAX_SCROLL_REPEAT = 100;
|
|
83
|
-
/**
|
|
84
|
-
* Fold `applyScroll` `times` times — one `setState`, one render, however fast
|
|
85
|
-
* the wheel spins (mouse-wheel-region-routing §5.5).
|
|
86
|
-
*
|
|
87
|
-
* Folding rather than multiplying is deliberate: `applyScroll` owns the
|
|
88
|
-
* downward bottom-snap and the clamp, and reimplementing either here would give
|
|
89
|
-
* the wheel a different notion of "pinned to the bottom" than the keyboard has.
|
|
90
|
-
*/
|
|
91
|
-
export function applyScrollTimes(state, intent, metrics, times) {
|
|
92
|
-
const n = Number.isFinite(times)
|
|
93
|
-
? Math.min(MAX_SCROLL_REPEAT, Math.max(1, Math.floor(times)))
|
|
94
|
-
: 1;
|
|
95
|
-
let next = state;
|
|
96
|
-
for (let i = 0; i < n; i += 1)
|
|
97
|
-
next = applyScroll(next, intent, metrics);
|
|
98
|
-
return next;
|
|
99
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ThumbRange } from './scroll-indicator.js';
|
|
2
|
-
export interface ScrollbarGeometry {
|
|
3
|
-
trackTop: number;
|
|
4
|
-
trackCol: number;
|
|
5
|
-
trackRows: number;
|
|
6
|
-
contentRows: number;
|
|
7
|
-
offset: number;
|
|
8
|
-
thumb: ThumbRange | null;
|
|
9
|
-
revision: number;
|
|
10
|
-
}
|
|
11
|
-
export interface ThumbOffsetInput {
|
|
12
|
-
geometry: ScrollbarGeometry;
|
|
13
|
-
pointerY: number;
|
|
14
|
-
grabRow: number;
|
|
15
|
-
}
|
|
16
|
-
/** Convert a captured pointer to a bottom-relative offset, with exact endpoints. */
|
|
17
|
-
export declare function offsetForThumb({ geometry: g, pointerY, grabRow }: ThumbOffsetInput): number;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** Convert a captured pointer to a bottom-relative offset, with exact endpoints. */
|
|
2
|
-
export function offsetForThumb({ geometry: g, pointerY, grabRow }) {
|
|
3
|
-
const values = [g.trackTop, g.trackRows, g.contentRows, pointerY, grabRow];
|
|
4
|
-
if (!values.every(Number.isFinite) || !g.thumb)
|
|
5
|
-
return g.offset;
|
|
6
|
-
const overflow = Math.max(0, g.contentRows - g.trackRows);
|
|
7
|
-
const travel = g.trackRows - g.thumb.size;
|
|
8
|
-
if (travel <= 0 || overflow === 0)
|
|
9
|
-
return g.offset;
|
|
10
|
-
const grab = Math.min(Math.max(0, Math.floor(grabRow)), g.thumb.size - 1);
|
|
11
|
-
const top = Math.min(travel, Math.max(0, Math.floor(pointerY) - g.trackTop - grab));
|
|
12
|
-
return overflow - Math.round(top / travel * overflow);
|
|
13
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session-id chip: pure width planning, no JSX
|
|
3
|
-
* (tui-session-id-resume §3.9 / D-11 / D-12).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* WHY A PLANNER AND NOT A STYLED `<Text>`: the status bar is a cell-by-cell
|
|
8
|
-
* measured row with a six-rung degradation ladder (`status-layout.ts`), not a
|
|
9
|
-
* flex layout.
|
|
10
|
-
* Anything positioned "just to the right" pushes the left half over or covers
|
|
11
|
-
* `phase`, and `phase` is the field a user needs while a run is in flight. The
|
|
12
|
-
* chip therefore spends cells out of the SAME budget as every other field.
|
|
13
|
-
*
|
|
14
|
-
* THE ID IS NEVER TRUNCATED (D-12). A truncated id produces a `--resume` command
|
|
15
|
-
* that is guaranteed to fail, which is strictly worse than showing nothing: the
|
|
16
|
-
* rungs below are, in order, "drop the label" and only then "hide the whole
|
|
17
|
-
* chip", and `/session` reports the full id at any width.
|
|
18
|
-
*/
|
|
19
|
-
export declare const SESSION_CHIP_LIMITS: {
|
|
20
|
-
/** The same threshold `Header.tsx` uses for its `^I Index` hint. */
|
|
21
|
-
readonly labelMinCols: 72;
|
|
22
|
-
/** Blank cells between the last status field and the chip. */
|
|
23
|
-
readonly gapCells: 2;
|
|
24
|
-
/**
|
|
25
|
-
* The tightest rung's worst-case width for the fields on the LEFT, summed:
|
|
26
|
-
* phase glyph(1)+label(4)=5, sep 1 -> 6, deferred mode 'C>B' 3 -> 9,
|
|
27
|
-
* sep 1 -> 10, 'C'+'~999%' 6 -> 16, sep 1 -> 17, thinking code 1 -> 18,
|
|
28
|
-
* sep 1 -> 19, '>99M/s' 6 -> 25, sep 1 -> 26, '>999d' 5 -> 31.
|
|
29
|
-
*
|
|
30
|
-
* 34 IS A FLOOR ROUNDED UP, not a measurement: over-estimating hides the chip
|
|
31
|
-
* one column early, which is invisible; under-estimating lets the chip eat the
|
|
32
|
-
* phase field, which is not.
|
|
33
|
-
*/
|
|
34
|
-
readonly minStatusCells: 34;
|
|
35
|
-
};
|
|
36
|
-
export interface SessionChipPlan {
|
|
37
|
-
visible: boolean;
|
|
38
|
-
text: string;
|
|
39
|
-
cells: number;
|
|
40
|
-
gap: number;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Plan the chip for `columns` and this session's id.
|
|
44
|
-
*
|
|
45
|
-
* Inputs are the same ones the status row already has, so the two plans cannot
|
|
46
|
-
* disagree about the terminal: `StatusBar` computes `chip` first and hands
|
|
47
|
-
* `chip.cells + chip.gap` to `planPrimaryStatusFields` as `reserveRight`.
|
|
48
|
-
*/
|
|
49
|
-
export declare function planSessionChip(input: {
|
|
50
|
-
columns: number;
|
|
51
|
-
sessionId?: string | null;
|
|
52
|
-
}): SessionChipPlan;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The session-id chip: pure width planning, no JSX
|
|
3
|
-
* (tui-session-id-resume §3.9 / D-11 / D-12).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* WHY A PLANNER AND NOT A STYLED `<Text>`: the status bar is a cell-by-cell
|
|
8
|
-
* measured row with a six-rung degradation ladder (`status-layout.ts`), not a
|
|
9
|
-
* flex layout.
|
|
10
|
-
* Anything positioned "just to the right" pushes the left half over or covers
|
|
11
|
-
* `phase`, and `phase` is the field a user needs while a run is in flight. The
|
|
12
|
-
* chip therefore spends cells out of the SAME budget as every other field.
|
|
13
|
-
*
|
|
14
|
-
* THE ID IS NEVER TRUNCATED (D-12). A truncated id produces a `--resume` command
|
|
15
|
-
* that is guaranteed to fail, which is strictly worse than showing nothing: the
|
|
16
|
-
* rungs below are, in order, "drop the label" and only then "hide the whole
|
|
17
|
-
* chip", and `/session` reports the full id at any width.
|
|
18
|
-
*/
|
|
19
|
-
import stringWidth from 'string-width';
|
|
20
|
-
export const SESSION_CHIP_LIMITS = {
|
|
21
|
-
/** The same threshold `Header.tsx` uses for its `^I Index` hint. */
|
|
22
|
-
labelMinCols: 72,
|
|
23
|
-
/** Blank cells between the last status field and the chip. */
|
|
24
|
-
gapCells: 2,
|
|
25
|
-
/**
|
|
26
|
-
* The tightest rung's worst-case width for the fields on the LEFT, summed:
|
|
27
|
-
* phase glyph(1)+label(4)=5, sep 1 -> 6, deferred mode 'C>B' 3 -> 9,
|
|
28
|
-
* sep 1 -> 10, 'C'+'~999%' 6 -> 16, sep 1 -> 17, thinking code 1 -> 18,
|
|
29
|
-
* sep 1 -> 19, '>99M/s' 6 -> 25, sep 1 -> 26, '>999d' 5 -> 31.
|
|
30
|
-
*
|
|
31
|
-
* 34 IS A FLOOR ROUNDED UP, not a measurement: over-estimating hides the chip
|
|
32
|
-
* one column early, which is invisible; under-estimating lets the chip eat the
|
|
33
|
-
* phase field, which is not.
|
|
34
|
-
*/
|
|
35
|
-
minStatusCells: 34,
|
|
36
|
-
};
|
|
37
|
-
/** `{visible:false}` - the shape every caller can cheaply branch on. */
|
|
38
|
-
const HIDDEN = { visible: false, text: '', cells: 0, gap: 0 };
|
|
39
|
-
/**
|
|
40
|
-
* Plan the chip for `columns` and this session's id.
|
|
41
|
-
*
|
|
42
|
-
* Inputs are the same ones the status row already has, so the two plans cannot
|
|
43
|
-
* disagree about the terminal: `StatusBar` computes `chip` first and hands
|
|
44
|
-
* `chip.cells + chip.gap` to `planPrimaryStatusFields` as `reserveRight`.
|
|
45
|
-
*/
|
|
46
|
-
export function planSessionChip(input) {
|
|
47
|
-
// No identity (the default build, a test, or a host with no session) is the
|
|
48
|
-
// `undefined` case, and it must cost nothing: reserveRight stays 0 and the
|
|
49
|
-
// status row's output is byte-identical to the pre-feature build (I-6).
|
|
50
|
-
if (!input.sessionId)
|
|
51
|
-
return HIDDEN;
|
|
52
|
-
const columns = Number.isFinite(input.columns) ? Math.floor(input.columns) : 80;
|
|
53
|
-
const id = input.sessionId;
|
|
54
|
-
const gap = SESSION_CHIP_LIMITS.gapCells;
|
|
55
|
-
const fits = (text) => columns - 1 - gap - stringWidth(text) >= SESSION_CHIP_LIMITS.minStatusCells;
|
|
56
|
-
// Widest form first, then drop the label, then hide: the order is the decision.
|
|
57
|
-
const labelled = `id ${id}`;
|
|
58
|
-
if (columns >= SESSION_CHIP_LIMITS.labelMinCols && fits(labelled)) {
|
|
59
|
-
return { visible: true, text: labelled, cells: stringWidth(labelled), gap };
|
|
60
|
-
}
|
|
61
|
-
if (fits(id))
|
|
62
|
-
return { visible: true, text: id, cells: stringWidth(id), gap };
|
|
63
|
-
return HIDDEN;
|
|
64
|
-
}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The shortcut drawer's geometry and row layout
|
|
3
|
-
* (tui-shortcut-drawer-and-task-summary §4.5).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY: `src/ui/**` is inside the glyph scanner's scope, so every symbol
|
|
6
|
-
* this module emits arrives as a `glyphs` field and is never spelled here.
|
|
7
|
-
*
|
|
8
|
-
* PURE AND TOTAL. No Ink, no clock, no terminal: the drawer component renders
|
|
9
|
-
* what this returns, `OverlayFrame` slices the window this function DERIVED, and
|
|
10
|
-
* `shortcut-panel-layout.test.ts` pins the arithmetic directly. That split is the
|
|
11
|
-
* whole defence against P0-1, which was not a rendering bug: v1 hand-fixed the key
|
|
12
|
-
* column at 21 cells, which left six cells for the keyword at 80 columns, so every
|
|
13
|
-
* keyword was truncated to `promp...` while a "does not overflow" assertion stayed
|
|
14
|
-
* green. The column is therefore DERIVED from the table, and a keyword that does
|
|
15
|
-
* not fit makes its row STACK rather than be cut.
|
|
16
|
-
*
|
|
17
|
-
* THERE IS EXACTLY ONE WINDOW AUTHORITY: `cursor`. v1 took both `cursor` and
|
|
18
|
-
* `scrollOffset`, which meant paging could leave the selected row - and the detail
|
|
19
|
-
* line that belongs to it - off screen. Paging now moves the CURSOR by a page and
|
|
20
|
-
* the window is the smallest one containing it.
|
|
21
|
-
*/
|
|
22
|
-
import { type OverlayWindow } from './overlay-window.js';
|
|
23
|
-
import { type ShortcutEntry } from '../shortcuts.js';
|
|
24
|
-
export declare const SHORTCUT_PANEL_LIMITS: {
|
|
25
|
-
/** Below this the drawer is full width: a 30-cell bar on a 40-cell screen is noise. */
|
|
26
|
-
readonly minSplitCols: 64;
|
|
27
|
-
/** Fraction of the terminal the drawer takes when it IS a drawer. */
|
|
28
|
-
readonly widthFraction: 0.34;
|
|
29
|
-
readonly minWidth: 30;
|
|
30
|
-
readonly maxWidth: 46;
|
|
31
|
-
/** Rail (1 cell) + `paddingLeft` (1 cell) that `OverlayFrame` spends below 48 columns. */
|
|
32
|
-
readonly railCells: 2;
|
|
33
|
-
/** Border (2 cells) + `paddingX` (2 cells) that `OverlayFrame` spends at or above 48. */
|
|
34
|
-
readonly boxCells: 4;
|
|
35
|
-
/**
|
|
36
|
-
* The key column is DERIVED: `min(longestKeys, ceil(listCells * 0.55))`.
|
|
37
|
-
*
|
|
38
|
-
* A hard 21 is what turned `prompt library` into `promp...` at 80 columns. The
|
|
39
|
-
* share is a ceiling, not a target: a table of short keys gets a narrow key
|
|
40
|
-
* column and the leftover width goes to the keyword.
|
|
41
|
-
*/
|
|
42
|
-
readonly keyColumnShare: 0.55;
|
|
43
|
-
/** The keyword column must be at least this wide, or the row stacks. */
|
|
44
|
-
readonly keywordMinCells: 8;
|
|
45
|
-
/** Hard ceiling for a keyword string; a longer one is a spec bug, not a width problem. */
|
|
46
|
-
readonly keywordMaxCells: 10;
|
|
47
|
-
/** Gap between the key column and the keyword column. */
|
|
48
|
-
readonly keyGapCells: 1;
|
|
49
|
-
/** Indent for the selected row's detail lines, and for a stacked keyword. */
|
|
50
|
-
readonly detailIndent: 2;
|
|
51
|
-
/** Title + footer rows are chrome and are spent out of the row budget. */
|
|
52
|
-
readonly chromeRows: 2;
|
|
53
|
-
/** The task section is capped so the key list always gets the majority of the panel. */
|
|
54
|
-
readonly taskMaxRows: 2;
|
|
55
|
-
/**
|
|
56
|
-
* ABOVE THIS BODY HEIGHT THE GROUP HEADERS GET THEIR OWN ROWS.
|
|
57
|
-
*
|
|
58
|
-
* Below it they are dropped entirely - not compressed into `---- GROUP ----`
|
|
59
|
-
* separators, which was v2's rule and left FOUR entry rows visible on an
|
|
60
|
-
* 80x24 terminal (title + task + rule + five separators = 9 of 13 body rows).
|
|
61
|
-
* See `spec.md`'s `## 实施过程发现的方案缺陷` note 1: the ordering still runs
|
|
62
|
-
* COMPOSE -> RUN -> PANELS -> SESSION -> VIEW, and the requirement ("list every
|
|
63
|
-
* shortcut from top to bottom") is met by the entries themselves.
|
|
64
|
-
*/
|
|
65
|
-
readonly groupHeaderMinRows: 18;
|
|
66
|
-
/** The longest detail line the selected row may grow to. */
|
|
67
|
-
readonly detailMaxRows: 2;
|
|
68
|
-
};
|
|
69
|
-
/**
|
|
70
|
-
* The drawer's width in columns.
|
|
71
|
-
*
|
|
72
|
-
* `cols < 64` is FULL WIDTH on purpose: at 40 columns a right-aligned 30-cell bar
|
|
73
|
-
* spends 10 of the user's columns on empty space. The clamp mirrors
|
|
74
|
-
* `rail.ts::todoRailWidth` (same shape, same reason).
|
|
75
|
-
*/
|
|
76
|
-
export declare function shortcutPanelWidth(cols: number): number;
|
|
77
|
-
/**
|
|
78
|
-
* Cells the drawer may draw on INSIDE its frame.
|
|
79
|
-
*
|
|
80
|
-
* THE FORM IS DECIDED BY THE TERMINAL, exactly as `OverlayFrame` decides it
|
|
81
|
-
* (`cols >= BORDERLESS_COLS`), so this function takes the same `cols` the frame
|
|
82
|
-
* receives. Passing the panel's own width instead would make a 46-cell drawer on
|
|
83
|
-
* a 200-column terminal fall back to the rail form for ever, because 46 < 48.
|
|
84
|
-
*/
|
|
85
|
-
export declare function shortcutPanelContentCells(cols: number): number;
|
|
86
|
-
/** One rendered row. `text` already measures at most the panel's content width. */
|
|
87
|
-
export interface ShortcutRow {
|
|
88
|
-
/** `entry` = key + keyword on one row; `stacked` = key alone, keyword below. */
|
|
89
|
-
kind: 'task' | 'rule' | 'group' | 'entry' | 'stacked' | 'keyword' | 'detail';
|
|
90
|
-
text: string;
|
|
91
|
-
/** Which entry a `detail` / `keyword` row belongs to; `null` for every other kind. */
|
|
92
|
-
entryId: string | null;
|
|
93
|
-
tone: 'accent' | 'primary' | 'muted' | 'dim';
|
|
94
|
-
}
|
|
95
|
-
/** The task section's inputs, already flattened by the caller. */
|
|
96
|
-
export interface ShortcutTaskSection {
|
|
97
|
-
/** The label, or `null` when there is none yet. */
|
|
98
|
-
text: string | null;
|
|
99
|
-
/** `model` / `fallback`, so the row can be coloured by provenance. */
|
|
100
|
-
tone: 'model' | 'fallback' | null;
|
|
101
|
-
/** Why it is a fallback, or `null`. */
|
|
102
|
-
reason: string | null;
|
|
103
|
-
/** `provider:model`, or `''`. */
|
|
104
|
-
by: string;
|
|
105
|
-
/** Age in ms, or `null` when unknown. */
|
|
106
|
-
ageMs: number | null;
|
|
107
|
-
/** `false` when `taskSummary.enabled` is off. */
|
|
108
|
-
enabled: boolean;
|
|
109
|
-
/** A call is in flight. */
|
|
110
|
-
pending: boolean;
|
|
111
|
-
}
|
|
112
|
-
export interface BuildShortcutRowsInput {
|
|
113
|
-
cols: number;
|
|
114
|
-
/** Body rows available INSIDE the frame (`OverlayFrame` already subtracted its chrome). */
|
|
115
|
-
rows: number;
|
|
116
|
-
/** Index into the FILTERED entry list. The one authority for the window. */
|
|
117
|
-
cursor: number;
|
|
118
|
-
/**
|
|
119
|
-
* THE ENTRIES ARRIVE FILTERED AND WITH THEIR AVAILABILITY, so this module takes
|
|
120
|
-
* neither a `query` nor a `context` for them (review fix RF-2). It used to accept
|
|
121
|
-
* both - and `detailsExpanded` as well - and read none of them, which is the exact
|
|
122
|
-
* "second source of truth that silently does nothing" its own 0-3 rule forbids: a
|
|
123
|
-
* caller could pass `query: 'git'` and get the unfiltered list with nothing
|
|
124
|
-
* failing.
|
|
125
|
-
*/
|
|
126
|
-
entries: readonly ShortcutEntry[];
|
|
127
|
-
task: ShortcutTaskSection;
|
|
128
|
-
/** Per-entry availability, so an unavailable row renders dim and explains itself. */
|
|
129
|
-
entryAvailable?: (entry: ShortcutEntry) => boolean;
|
|
130
|
-
/** The sentence appended to an unavailable row's detail line. */
|
|
131
|
-
unavailableReason?: string;
|
|
132
|
-
glyphs: {
|
|
133
|
-
ellipsis: string;
|
|
134
|
-
cursor: string;
|
|
135
|
-
hrule: string;
|
|
136
|
-
midDot: string;
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
export interface BuildShortcutRowsResult {
|
|
140
|
-
rows: ShortcutRow[];
|
|
141
|
-
window: OverlayWindow;
|
|
142
|
-
/** Row index of the selected entry; equal to `window.start + 0` at the top. */
|
|
143
|
-
cursorRow: number;
|
|
144
|
-
/** Total rows the panel holds, which is what the frame's position indicator counts. */
|
|
145
|
-
total: number;
|
|
146
|
-
/** The footer string; `OverlayFrame`'s `hint`, and chrome rather than a row. */
|
|
147
|
-
hint: string;
|
|
148
|
-
}
|
|
149
|
-
/** Column widths for one geometry. Exported so the tests can assert them directly. */
|
|
150
|
-
export interface ShortcutColumns {
|
|
151
|
-
/** The panel's own width. */
|
|
152
|
-
width: number;
|
|
153
|
-
/** Content cells inside the frame. */
|
|
154
|
-
available: number;
|
|
155
|
-
/** Cells left for a list row after the cursor column is spent. */
|
|
156
|
-
listCells: number;
|
|
157
|
-
keyCells: number;
|
|
158
|
-
keywordCells: number;
|
|
159
|
-
/** True when no entry fits the two-column form and every row stacks. */
|
|
160
|
-
stacked: boolean;
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Derive the two columns (P0-1).
|
|
164
|
-
*
|
|
165
|
-
* `stacked` is a GLOBAL flag only when the keyword column is too narrow for any
|
|
166
|
-
* keyword at all; otherwise stacking is decided per row, so one long binding
|
|
167
|
-
* (`Shift+Up / Shift+Down`, 20 cells) does not cost the other thirty rows a line.
|
|
168
|
-
*/
|
|
169
|
-
export declare function shortcutColumns(cols: number, entries: readonly ShortcutEntry[], glyphs: {
|
|
170
|
-
cursor: string;
|
|
171
|
-
}): ShortcutColumns;
|
|
172
|
-
/**
|
|
173
|
-
* The footer, built by DROPPING clauses from the right (never by re-wording).
|
|
174
|
-
*
|
|
175
|
-
* `Esc close` is never dropped: it is the one thing a user must be able to find on
|
|
176
|
-
* a terminal too narrow to explain anything else. The rest go in a fixed order so
|
|
177
|
-
* the footer is stable across resizes instead of shuffling.
|
|
178
|
-
*/
|
|
179
|
-
export declare function shortcutFooter(cols: number, glyphs: {
|
|
180
|
-
midDot: string;
|
|
181
|
-
}, opts?: {
|
|
182
|
-
canRefresh: boolean;
|
|
183
|
-
}): string;
|
|
184
|
-
/**
|
|
185
|
-
* Build every row the drawer can show, and derive the window from the cursor.
|
|
186
|
-
*
|
|
187
|
-
* @param input.cols Terminal columns (the frame receives the same number).
|
|
188
|
-
* @param input.rows Body rows inside the frame - `overlayBodyRows(maxRows, cols)`.
|
|
189
|
-
* @param input.cursor Index into `input.entries`; clamped, never trusted.
|
|
190
|
-
*/
|
|
191
|
-
export declare function buildShortcutRows(input: BuildShortcutRowsInput): BuildShortcutRowsResult;
|