@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,275 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Roster geometry and cell text for the legion panel (governance-mode section 10.3).
|
|
3
|
-
*
|
|
4
|
-
* Pure and total: no Ink, no clock, no terminal. ASCII ONLY.
|
|
5
|
-
*
|
|
6
|
-
* WHY COMPUTED FIXED-WIDTH COLUMNS. Same lesson as `team-row.ts`, whose header records
|
|
7
|
-
* it at length: a fixed-height parent makes Yoga size a flex column to its widest CHILD,
|
|
8
|
-
* so a row placed by `flexGrow` stops short of the terminal and the cells to its right
|
|
9
|
-
* lose their absolute offsets. Every column below therefore has a COMPUTED integer width
|
|
10
|
-
* and exactly ONE column is elastic; it sits between the fixed cluster on its left and
|
|
11
|
-
* the fixed `delta` cell on its right, so the score change always lands in the row's
|
|
12
|
-
* last column whatever the activity text says.
|
|
13
|
-
*
|
|
14
|
-
* `columnPlan` is TOTAL: for any width (including 0 and 400) the widths never sum past
|
|
15
|
-
* the width it was given. `governance-panel-layout.test.ts` runs it for every width.
|
|
16
|
-
*/
|
|
17
|
-
import { statusMarkerCell, statusMarkerWidth } from '../team-status.js';
|
|
18
|
-
import { GAUGE_CELLS, deltaCell, gaugeFilledCells, govChildStatus, labelTag, scoreText, scoreToneKey, segment, statusTone, } from '../governance-status.js';
|
|
19
|
-
import { NOT_SCORED, ROLE_LABEL, STATE_WORD, WORKING_VERB, replacedByText, } from '../governance-copy.js';
|
|
20
|
-
import { cellWidth, fitCells } from './cells.js';
|
|
21
|
-
/** The elastic column keeps at least this many columns, else it is dropped (activity) or kept (wp). */
|
|
22
|
-
const ELASTIC_MIN_CELLS = { activity: 12, wp: 6 };
|
|
23
|
-
/** One leading margin column, drawn by the component. */
|
|
24
|
-
export const PANEL_MARGIN_CELLS = 1;
|
|
25
|
-
function columnSpecs(tier, markerCells) {
|
|
26
|
-
const marker = { key: 'marker', width: markerCells };
|
|
27
|
-
const delta = { key: 'delta', width: 7, align: 'right', drop: 2 };
|
|
28
|
-
switch (tier) {
|
|
29
|
-
case 'full':
|
|
30
|
-
return [
|
|
31
|
-
marker,
|
|
32
|
-
{ key: 'id', width: 8 },
|
|
33
|
-
{ key: 'role', width: 6, drop: 3 },
|
|
34
|
-
{ key: 'state', width: 12 },
|
|
35
|
-
{ key: 'gauge', width: GAUGE_CELLS + 1, drop: 5 },
|
|
36
|
-
{ key: 'score', width: 5, align: 'right' },
|
|
37
|
-
{ key: 'prov', width: 7, drop: 4 },
|
|
38
|
-
{ key: 'tag', width: 8, drop: 6 },
|
|
39
|
-
{ key: 'wp', width: 11 },
|
|
40
|
-
{ key: 'activity', width: 0, elastic: true },
|
|
41
|
-
delta,
|
|
42
|
-
];
|
|
43
|
-
case 'standard':
|
|
44
|
-
return [
|
|
45
|
-
marker,
|
|
46
|
-
{ key: 'id', width: 8 },
|
|
47
|
-
{ key: 'role', width: 6, drop: 3 },
|
|
48
|
-
{ key: 'state', width: 12 },
|
|
49
|
-
{ key: 'gauge', width: GAUGE_CELLS + 1, drop: 5 },
|
|
50
|
-
{ key: 'score', width: 5, align: 'right' },
|
|
51
|
-
{ key: 'prov', width: 7, drop: 4 },
|
|
52
|
-
{ key: 'tag', width: 8, drop: 6 },
|
|
53
|
-
{ key: 'wp', width: 0, elastic: true },
|
|
54
|
-
delta,
|
|
55
|
-
];
|
|
56
|
-
default:
|
|
57
|
-
return [
|
|
58
|
-
marker,
|
|
59
|
-
{ key: 'id', width: 8 },
|
|
60
|
-
{ key: 'state', width: 12, drop: 3 },
|
|
61
|
-
{ key: 'score', width: 5, align: 'right' },
|
|
62
|
-
{ key: 'wp', width: 0, elastic: true },
|
|
63
|
-
delta,
|
|
64
|
-
];
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
function fixedSum(specs) {
|
|
68
|
-
return specs.reduce((sum, spec) => sum + (spec.elastic ? 0 : spec.width), 0);
|
|
69
|
-
}
|
|
70
|
-
/** The column that gives way first: the highest `drop` rank, or -1 when none can. */
|
|
71
|
-
function dropVictim(specs) {
|
|
72
|
-
let victim = -1;
|
|
73
|
-
let rank = 0;
|
|
74
|
-
specs.forEach((spec, index) => {
|
|
75
|
-
if (spec.drop !== undefined && spec.drop > rank) {
|
|
76
|
-
rank = spec.drop;
|
|
77
|
-
victim = index;
|
|
78
|
-
}
|
|
79
|
-
});
|
|
80
|
-
return victim;
|
|
81
|
-
}
|
|
82
|
-
/** Last-resort squeeze so the sum NEVER exceeds `inner`, from the right edge inward. */
|
|
83
|
-
function squeeze(columns, inner) {
|
|
84
|
-
let over = columns.reduce((sum, column) => sum + column.width, 0) - inner;
|
|
85
|
-
for (let index = columns.length - 1; index >= 0 && over > 0; index -= 1) {
|
|
86
|
-
const column = columns[index];
|
|
87
|
-
const cut = Math.min(column.width, over);
|
|
88
|
-
column.width -= cut;
|
|
89
|
-
over -= cut;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Give the activity column up and make the work-package cell the elastic one, which turns
|
|
94
|
-
* a `full` row into a `standard` one without losing the single-elastic-column invariant.
|
|
95
|
-
*/
|
|
96
|
-
function promoteWorkPackage(specs) {
|
|
97
|
-
return specs
|
|
98
|
-
.filter((spec) => spec.key !== 'activity')
|
|
99
|
-
.map((spec) => (spec.key === 'wp' ? { key: 'wp', width: 0, elastic: true } : spec));
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* The row's columns for a tier at `inner` columns (the terminal width minus the margin).
|
|
103
|
-
*
|
|
104
|
-
* THE DROP LADDER IS THE SPECIFICATION, in the order the cells give way: the activity
|
|
105
|
-
* text first (the only column whose loss costs nothing structural - the work-package cell
|
|
106
|
-
* becomes the elastic one), then the tag, gauge, provisional, role and delta cells. The
|
|
107
|
-
* elastic column keeps at least its floor; when even the fixed cluster does not fit,
|
|
108
|
-
* `squeeze` trims from the right so the sum stays inside `inner` for any input.
|
|
109
|
-
*/
|
|
110
|
-
export function columnPlan(tier, inner, markerCells) {
|
|
111
|
-
const width = Number.isFinite(inner) ? Math.max(0, Math.floor(inner)) : 0;
|
|
112
|
-
let specs = columnSpecs(tier, markerCells);
|
|
113
|
-
const floorOf = (spec) => spec?.key === 'activity' ? ELASTIC_MIN_CELLS.activity : ELASTIC_MIN_CELLS.wp;
|
|
114
|
-
for (;;) {
|
|
115
|
-
const elastic = specs.find((spec) => spec.elastic === true);
|
|
116
|
-
if (fixedSum(specs) + floorOf(elastic) <= width)
|
|
117
|
-
break;
|
|
118
|
-
if (elastic?.key === 'activity') {
|
|
119
|
-
specs = promoteWorkPackage(specs);
|
|
120
|
-
continue;
|
|
121
|
-
}
|
|
122
|
-
const victim = dropVictim(specs);
|
|
123
|
-
if (victim < 0)
|
|
124
|
-
break;
|
|
125
|
-
specs = specs.filter((_, index) => index !== victim);
|
|
126
|
-
}
|
|
127
|
-
const remaining = Math.max(0, width - fixedSum(specs));
|
|
128
|
-
const columns = specs.map((spec) => ({
|
|
129
|
-
key: spec.key,
|
|
130
|
-
width: spec.elastic ? remaining : spec.width,
|
|
131
|
-
elastic: spec.elastic === true,
|
|
132
|
-
align: spec.align ?? 'left',
|
|
133
|
-
}));
|
|
134
|
-
squeeze(columns, width);
|
|
135
|
-
return columns;
|
|
136
|
-
}
|
|
137
|
-
export function columnsWidth(columns) {
|
|
138
|
-
return columns.reduce((sum, column) => sum + column.width, 0);
|
|
139
|
-
}
|
|
140
|
-
const BLANK_TONE = 'muted';
|
|
141
|
-
function textCell(column, text, tone, ellipsis, bold = false) {
|
|
142
|
-
const clipped = column.width === 0 ? '' : fitCells(text, column.width, ellipsis);
|
|
143
|
-
return {
|
|
144
|
-
key: column.key,
|
|
145
|
-
width: column.width,
|
|
146
|
-
elastic: column.elastic,
|
|
147
|
-
align: column.align,
|
|
148
|
-
segments: clipped === '' ? [] : [segment(clipped, tone, bold)],
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
function leading(text) {
|
|
152
|
-
return text === '' ? '' : ` ${text}`;
|
|
153
|
-
}
|
|
154
|
-
/** `not scored` replaces the gauge for the inspector (spec 5.1: never scored). */
|
|
155
|
-
function gaugeCell(column, row, glyphs) {
|
|
156
|
-
if (row.confirmed === null)
|
|
157
|
-
return textCell(column, NOT_SCORED, 'muted', glyphs.ellipsis);
|
|
158
|
-
const filled = gaugeFilledCells(row.confirmed);
|
|
159
|
-
const bar = [
|
|
160
|
-
segment(glyphs.gaugeFull.repeat(filled), scoreToneKey(row.label)),
|
|
161
|
-
segment(glyphs.gaugeEmpty.repeat(GAUGE_CELLS - filled), 'border'),
|
|
162
|
-
].filter((part) => part.text !== '');
|
|
163
|
-
return {
|
|
164
|
-
key: column.key,
|
|
165
|
-
width: column.width,
|
|
166
|
-
elastic: false,
|
|
167
|
-
align: 'left',
|
|
168
|
-
segments: bar,
|
|
169
|
-
};
|
|
170
|
-
}
|
|
171
|
-
function stateText(row) {
|
|
172
|
-
return row.state === 'working' ? WORKING_VERB[row.role] : STATE_WORD[row.state];
|
|
173
|
-
}
|
|
174
|
-
function rightAligned(column, text) {
|
|
175
|
-
return ' '.repeat(Math.max(0, column.width - cellWidth(text))) + text;
|
|
176
|
-
}
|
|
177
|
-
function scoreCell(column, row, ctx) {
|
|
178
|
-
const ell = ctx.glyphs.ellipsis;
|
|
179
|
-
if (row.confirmed === null)
|
|
180
|
-
return textCell(column, '', BLANK_TONE, ell);
|
|
181
|
-
const text = rightAligned(column, scoreText(row.confirmed));
|
|
182
|
-
return textCell(column, text, scoreToneKey(row.label), ell);
|
|
183
|
-
}
|
|
184
|
-
function deltaColumnCell(column, row, ctx) {
|
|
185
|
-
const delta = deltaCell(row, ctx.now, ctx.reducedMotion);
|
|
186
|
-
const text = delta.text === '' ? '' : rightAligned(column, delta.text);
|
|
187
|
-
return textCell(column, text, delta.tone, ctx.glyphs.ellipsis, delta.bold);
|
|
188
|
-
}
|
|
189
|
-
/** One builder per column: a table, so adding a column cannot raise a function's complexity. */
|
|
190
|
-
const CELL_BUILDERS = {
|
|
191
|
-
marker: (column, row, ctx) => {
|
|
192
|
-
const status = govChildStatus(row.state);
|
|
193
|
-
const text = ` ${statusMarkerCell(status, ctx.glyphs)} `;
|
|
194
|
-
return textCell(column, text, statusTone(status), ctx.glyphs.ellipsis);
|
|
195
|
-
},
|
|
196
|
-
id: (column, row, ctx) => textCell(column, row.id, 'primary', ctx.glyphs.ellipsis),
|
|
197
|
-
role: (column, row, ctx) => textCell(column, ROLE_LABEL[row.role], 'muted', ctx.glyphs.ellipsis),
|
|
198
|
-
state: (column, row, ctx) => {
|
|
199
|
-
const tone = statusTone(govChildStatus(row.state));
|
|
200
|
-
return textCell(column, stateText(row), tone, ctx.glyphs.ellipsis);
|
|
201
|
-
},
|
|
202
|
-
gauge: (column, row, ctx) => gaugeCell(column, row, ctx.glyphs),
|
|
203
|
-
score: scoreCell,
|
|
204
|
-
prov: (column, row, ctx) => {
|
|
205
|
-
const text = row.provisional > 0 ? leading(`+${row.provisional}P`) : '';
|
|
206
|
-
return textCell(column, text, 'muted', ctx.glyphs.ellipsis);
|
|
207
|
-
},
|
|
208
|
-
tag: (column, row, ctx) => {
|
|
209
|
-
const text = leading(labelTag(row.label));
|
|
210
|
-
return textCell(column, text, scoreToneKey(row.label), ctx.glyphs.ellipsis, true);
|
|
211
|
-
},
|
|
212
|
-
wp: (column, row, ctx) => textCell(column, leading(row.wpId ?? '-'), 'text', ctx.glyphs.ellipsis),
|
|
213
|
-
activity: (column, row, ctx) => {
|
|
214
|
-
const text = leading(row.activity.replace(/\s+/g, ' ').trim());
|
|
215
|
-
return textCell(column, text, 'muted', ctx.glyphs.ellipsis);
|
|
216
|
-
},
|
|
217
|
-
delta: deltaColumnCell,
|
|
218
|
-
note: (column, _row, ctx) => textCell(column, '', BLANK_TONE, ctx.glyphs.ellipsis),
|
|
219
|
-
};
|
|
220
|
-
function cellFor(column, row, ctx) {
|
|
221
|
-
return CELL_BUILDERS[column.key](column, row, ctx);
|
|
222
|
-
}
|
|
223
|
-
/** Columns a replaced member's one-line note spans. */
|
|
224
|
-
const NOTE_SPAN = new Set(['state', 'gauge', 'score', 'prov', 'tag']);
|
|
225
|
-
/**
|
|
226
|
-
* A replaced member: marker, id and role stay (so the row is recognisable), and one
|
|
227
|
-
* muted note spans the state-through-tag cells. The note NAMES the successor, which is the
|
|
228
|
-
* information the member's vanishing from the panel next phase would otherwise erase.
|
|
229
|
-
*/
|
|
230
|
-
function eliminatedCells(columns, row, ctx) {
|
|
231
|
-
const cells = [];
|
|
232
|
-
let spanned = 0;
|
|
233
|
-
let spanColumn = null;
|
|
234
|
-
const flush = () => {
|
|
235
|
-
if (spanColumn === null)
|
|
236
|
-
return;
|
|
237
|
-
const merged = { ...spanColumn, key: 'note', width: spanned, align: 'left' };
|
|
238
|
-
const text = ` ${replacedByText(row.replacedBy)}`;
|
|
239
|
-
cells.push(textCell(merged, text, 'muted', ctx.glyphs.ellipsis));
|
|
240
|
-
spanColumn = null;
|
|
241
|
-
spanned = 0;
|
|
242
|
-
};
|
|
243
|
-
for (const column of columns) {
|
|
244
|
-
if (NOTE_SPAN.has(column.key)) {
|
|
245
|
-
spanColumn ??= column;
|
|
246
|
-
spanned += column.width;
|
|
247
|
-
continue;
|
|
248
|
-
}
|
|
249
|
-
flush();
|
|
250
|
-
const cell = cellFor(column, row, ctx);
|
|
251
|
-
const quiet = column.key === 'id' || column.key === 'role' || column.key === 'marker';
|
|
252
|
-
cells.push(quiet ? mute(cell) : blank(cell));
|
|
253
|
-
}
|
|
254
|
-
flush();
|
|
255
|
-
return cells;
|
|
256
|
-
}
|
|
257
|
-
function mute(cell) {
|
|
258
|
-
return { ...cell, segments: cell.segments.map((part) => ({ ...part, tone: 'muted' })) };
|
|
259
|
-
}
|
|
260
|
-
function blank(cell) {
|
|
261
|
-
return { ...cell, segments: [] };
|
|
262
|
-
}
|
|
263
|
-
/** One roster row's cells, text already clamped to its cell. */
|
|
264
|
-
export function buildRosterLine(input) {
|
|
265
|
-
const { columns, row, glyphs, now, reducedMotion } = input;
|
|
266
|
-
const ctx = { glyphs, now, reducedMotion };
|
|
267
|
-
if (row.state === 'eliminated') {
|
|
268
|
-
return { key: row.id, kind: 'eliminated', cells: eliminatedCells(columns, row, ctx) };
|
|
269
|
-
}
|
|
270
|
-
return { key: row.id, kind: 'agent', cells: columns.map((column) => cellFor(column, row, ctx)) };
|
|
271
|
-
}
|
|
272
|
-
/** The marker cell's width in the current glyph tier: 1 + widest marker + 1. */
|
|
273
|
-
export function markerCells(glyphs) {
|
|
274
|
-
return 1 + statusMarkerWidth(glyphs) + 1;
|
|
275
|
-
}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The right-hand hint budget for the header row
|
|
3
|
-
* (tui-shortcut-drawer-and-task-summary §4.2).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* THIS FILE USED TO BE A SIX-RUNG LADDER. `^L branch`, `^P prompts`, `^I Index`,
|
|
8
|
-
* `^K switch kit`, `^G more` and the expanded variants competed for a width
|
|
9
|
-
* budget, so what a user saw was not "my shortcuts" but "which clauses happen to
|
|
10
|
-
* fit at this width" - and on an 80-column terminal that was three of six. The
|
|
11
|
-
* requirement replaces the whole idea with ONE entry point (`ctrl+G more`) whose
|
|
12
|
-
* panel lists every shortcut, so the ladder is gone and what remains is a
|
|
13
|
-
* three-state single clause.
|
|
14
|
-
*
|
|
15
|
-
* WHY A PLANNER AND NOT A TERNARY IN THE JSX (R-0-4, unchanged): the header's
|
|
16
|
-
* right side was once one hand-computed width constant, and every later addition
|
|
17
|
-
* to it produced either a clipped hint or a pushed-out word mark with no test
|
|
18
|
-
* able to see it - the only thing lost is trailing characters.
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Bounds for the hint budget.
|
|
22
|
-
*
|
|
23
|
-
* WHY THEY LIVE IN THIS FILE (R-21, accepted): `CLAUDE.md`'s general rule is that
|
|
24
|
-
* structural bounds live in the subsystem's `limits.ts`, and `ui/layout/` has none
|
|
25
|
-
* - `budget.ts` keeps `HINT_MIN_ROWS` beside its own module for the same reason.
|
|
26
|
-
*/
|
|
27
|
-
export declare const HEADER_HINT_LIMITS: {
|
|
28
|
-
/**
|
|
29
|
-
* Cells the LEFT half of the header must keep.
|
|
30
|
-
*
|
|
31
|
-
* 24 = the 13-cell word mark plus at least 11 for `provider:model`, the
|
|
32
|
-
* directory and the key symbol. Lower than `status-layout`'s 34 because the top
|
|
33
|
-
* row has a brand to lose while the bottom row has a phase that must not
|
|
34
|
-
* disappear.
|
|
35
|
-
*/
|
|
36
|
-
readonly minLeftCells: 24;
|
|
37
|
-
/**
|
|
38
|
-
* Blank cells between the header's left half and this hint column (defect 12).
|
|
39
|
-
*
|
|
40
|
-
* A SEPARATE CONCEPT FROM CLAUSE SPACING: this one separates the two HALVES of
|
|
41
|
-
* the row, and it is spent out of the same `columns` budget so the row still
|
|
42
|
-
* spans exactly the terminal width.
|
|
43
|
-
*/
|
|
44
|
-
readonly separatorCells: 2;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* What the right-hand column says. THREE STATES, NO LADDER.
|
|
48
|
-
*
|
|
49
|
-
* `none` - no overlay: `^G more`, the only shortcut hint the header teaches.
|
|
50
|
-
* `shortcuts` - this panel is open: `^G close`, the key that closes it.
|
|
51
|
-
* `other` - some other overlay owns the keyboard: `Esc close`, which is true
|
|
52
|
-
* for every overlay and is the only key that works in all of them.
|
|
53
|
-
*/
|
|
54
|
-
export type HeaderPanelState = 'none' | 'shortcuts' | 'other';
|
|
55
|
-
export interface HeaderHintPlan {
|
|
56
|
-
/** The whole right-hand string, scroll chip included with its trailing spacing. */
|
|
57
|
-
text: string;
|
|
58
|
-
/** Total cells of the right column; `Header` sizes the left one from it. */
|
|
59
|
-
cells: number;
|
|
60
|
-
/** Cells taken by the scroll chip (0 when there is none). */
|
|
61
|
-
scrollCells: number;
|
|
62
|
-
}
|
|
63
|
-
/** The verbatim text of each state. Exported so a test can name it instead of guessing. */
|
|
64
|
-
export declare const HEADER_HINTS: Readonly<Record<HeaderPanelState, string>>;
|
|
65
|
-
/**
|
|
66
|
-
* Plan the right-hand hint.
|
|
67
|
-
*
|
|
68
|
-
* NO WIDTH BRANCHING: the clause is always rendered. When the row cannot hold it
|
|
69
|
-
* the LEFT half is what shrinks (to zero) and `overflow="hidden"` keeps that from
|
|
70
|
-
* spilling - the pre-feature behaviour, which is what makes the header safe at 20
|
|
71
|
-
* columns without a ladder. `headerHintFits` below exists only so the threshold
|
|
72
|
-
* is documented and testable, not so the renderer can branch on it.
|
|
73
|
-
*/
|
|
74
|
-
export declare function planHeaderHints(input: {
|
|
75
|
-
columns: number;
|
|
76
|
-
panel: HeaderPanelState;
|
|
77
|
-
scrolledLines: number;
|
|
78
|
-
}): HeaderHintPlan;
|
|
79
|
-
/**
|
|
80
|
-
* Whether the row can hold the hint column without squeezing the left half below
|
|
81
|
-
* `minLeftCells`.
|
|
82
|
-
*
|
|
83
|
-
* A FORMULA, NOT A TABLE OF MAGIC NUMBERS: `columns - minLeftCells -
|
|
84
|
-
* separatorCells >= scrollCells + bodyCells`. Substituting the three states gives
|
|
85
|
-
* 32 / 34 / 35 columns with no chip, plus up to 8 more for a saturated `^9999+ `.
|
|
86
|
-
* v1 claimed "any width >= 35", which forgot the chip entirely.
|
|
87
|
-
*/
|
|
88
|
-
export declare function headerHintFits(columns: number, panel: HeaderPanelState): boolean;
|
|
89
|
-
/** The narrowest width at which each state fits with no scroll chip. */
|
|
90
|
-
export declare function headerHintThreshold(panel: HeaderPanelState): number;
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The right-hand hint budget for the header row
|
|
3
|
-
* (tui-shortcut-drawer-and-task-summary §4.2).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`.
|
|
6
|
-
*
|
|
7
|
-
* THIS FILE USED TO BE A SIX-RUNG LADDER. `^L branch`, `^P prompts`, `^I Index`,
|
|
8
|
-
* `^K switch kit`, `^G more` and the expanded variants competed for a width
|
|
9
|
-
* budget, so what a user saw was not "my shortcuts" but "which clauses happen to
|
|
10
|
-
* fit at this width" - and on an 80-column terminal that was three of six. The
|
|
11
|
-
* requirement replaces the whole idea with ONE entry point (`ctrl+G more`) whose
|
|
12
|
-
* panel lists every shortcut, so the ladder is gone and what remains is a
|
|
13
|
-
* three-state single clause.
|
|
14
|
-
*
|
|
15
|
-
* WHY A PLANNER AND NOT A TERNARY IN THE JSX (R-0-4, unchanged): the header's
|
|
16
|
-
* right side was once one hand-computed width constant, and every later addition
|
|
17
|
-
* to it produced either a clipped hint or a pushed-out word mark with no test
|
|
18
|
-
* able to see it - the only thing lost is trailing characters.
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Bounds for the hint budget.
|
|
22
|
-
*
|
|
23
|
-
* WHY THEY LIVE IN THIS FILE (R-21, accepted): `CLAUDE.md`'s general rule is that
|
|
24
|
-
* structural bounds live in the subsystem's `limits.ts`, and `ui/layout/` has none
|
|
25
|
-
* - `budget.ts` keeps `HINT_MIN_ROWS` beside its own module for the same reason.
|
|
26
|
-
*/
|
|
27
|
-
export const HEADER_HINT_LIMITS = {
|
|
28
|
-
/**
|
|
29
|
-
* Cells the LEFT half of the header must keep.
|
|
30
|
-
*
|
|
31
|
-
* 24 = the 13-cell word mark plus at least 11 for `provider:model`, the
|
|
32
|
-
* directory and the key symbol. Lower than `status-layout`'s 34 because the top
|
|
33
|
-
* row has a brand to lose while the bottom row has a phase that must not
|
|
34
|
-
* disappear.
|
|
35
|
-
*/
|
|
36
|
-
minLeftCells: 24,
|
|
37
|
-
/**
|
|
38
|
-
* Blank cells between the header's left half and this hint column (defect 12).
|
|
39
|
-
*
|
|
40
|
-
* A SEPARATE CONCEPT FROM CLAUSE SPACING: this one separates the two HALVES of
|
|
41
|
-
* the row, and it is spent out of the same `columns` budget so the row still
|
|
42
|
-
* spans exactly the terminal width.
|
|
43
|
-
*/
|
|
44
|
-
separatorCells: 2,
|
|
45
|
-
};
|
|
46
|
-
/** The verbatim text of each state. Exported so a test can name it instead of guessing. */
|
|
47
|
-
export const HEADER_HINTS = {
|
|
48
|
-
none: '^G more',
|
|
49
|
-
shortcuts: '^G close',
|
|
50
|
-
other: 'Esc close',
|
|
51
|
-
};
|
|
52
|
-
/** Above this, the chip stops counting and saturates (`^9999+`), as it always has. */
|
|
53
|
-
const SCROLL_CHIP_MAX = 9999;
|
|
54
|
-
/**
|
|
55
|
-
* Plan the right-hand hint.
|
|
56
|
-
*
|
|
57
|
-
* NO WIDTH BRANCHING: the clause is always rendered. When the row cannot hold it
|
|
58
|
-
* the LEFT half is what shrinks (to zero) and `overflow="hidden"` keeps that from
|
|
59
|
-
* spilling - the pre-feature behaviour, which is what makes the header safe at 20
|
|
60
|
-
* columns without a ladder. `headerHintFits` below exists only so the threshold
|
|
61
|
-
* is documented and testable, not so the renderer can branch on it.
|
|
62
|
-
*/
|
|
63
|
-
export function planHeaderHints(input) {
|
|
64
|
-
const columns = normalizeDimension(input.columns, 80);
|
|
65
|
-
const scrolledLines = Math.max(0, Math.floor(normalizeDimension(input.scrolledLines, 0)));
|
|
66
|
-
const overlayOpen = input.panel !== 'none';
|
|
67
|
-
const chip = scrollChip(scrolledLines, overlayOpen);
|
|
68
|
-
const body = HEADER_HINTS[input.panel] ?? HEADER_HINTS.none;
|
|
69
|
-
const text = chip.length > 0 ? `${chip}${body}` : body;
|
|
70
|
-
return { text, cells: text.length, scrollCells: chip.length };
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Whether the row can hold the hint column without squeezing the left half below
|
|
74
|
-
* `minLeftCells`.
|
|
75
|
-
*
|
|
76
|
-
* A FORMULA, NOT A TABLE OF MAGIC NUMBERS: `columns - minLeftCells -
|
|
77
|
-
* separatorCells >= scrollCells + bodyCells`. Substituting the three states gives
|
|
78
|
-
* 32 / 34 / 35 columns with no chip, plus up to 8 more for a saturated `^9999+ `.
|
|
79
|
-
* v1 claimed "any width >= 35", which forgot the chip entirely.
|
|
80
|
-
*/
|
|
81
|
-
export function headerHintFits(columns, panel) {
|
|
82
|
-
const cols = normalizeDimension(columns, 80);
|
|
83
|
-
const plan = planHeaderHints({ columns: cols, panel, scrolledLines: 0 });
|
|
84
|
-
return cols - HEADER_HINT_LIMITS.minLeftCells - HEADER_HINT_LIMITS.separatorCells
|
|
85
|
-
>= plan.cells;
|
|
86
|
-
}
|
|
87
|
-
/** The narrowest width at which each state fits with no scroll chip. */
|
|
88
|
-
export function headerHintThreshold(panel) {
|
|
89
|
-
return HEADER_HINTS[panel].length
|
|
90
|
-
+ HEADER_HINT_LIMITS.minLeftCells
|
|
91
|
-
+ HEADER_HINT_LIMITS.separatorCells;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* `^<n>` plus its trailing spacing, or `''`.
|
|
95
|
-
*
|
|
96
|
-
* THE SPACING IS PART OF THE CHIP, not something `Header` adds afterwards: with two
|
|
97
|
-
* sources of spacing a reviewer has to read two files to answer "how wide is the
|
|
98
|
-
* chip". One space while an overlay is open, two otherwise - copied byte for byte
|
|
99
|
-
* from the expression the header already used.
|
|
100
|
-
*/
|
|
101
|
-
function scrollChip(scrolledLines, overlayOpen) {
|
|
102
|
-
if (scrolledLines <= 0)
|
|
103
|
-
return '';
|
|
104
|
-
const label = scrolledLines > SCROLL_CHIP_MAX ? `^${SCROLL_CHIP_MAX}+` : `^${scrolledLines}`;
|
|
105
|
-
return label + (overlayOpen ? ' ' : ' ');
|
|
106
|
-
}
|
|
107
|
-
/** The `budget.ts::dimension()` rule, local because that helper is not exported. */
|
|
108
|
-
function normalizeDimension(value, fallback) {
|
|
109
|
-
return Number.isFinite(value) && value >= 1 ? Math.floor(value) : fallback;
|
|
110
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The header's LEFT half budget (tui-shortcut-drawer-and-task-summary §4.3).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY: `src/ui/**` is inside the glyph scanner's scope.
|
|
5
|
-
*
|
|
6
|
-
* WHY A PLANNER (the same argument `header-hints.ts` makes one file over): the
|
|
7
|
-
* left half used to be a `<Text wrap="truncate">` over four clauses with no
|
|
8
|
-
* clause-level arithmetic anywhere, so the only thing that ever decided what got
|
|
9
|
-
* cut was the terminal. Adding a fifth clause - the task summary - to that shape
|
|
10
|
-
* produces a header where the summary silently eats the directory name on an
|
|
11
|
-
* 80-column terminal and NO ASSERTION WOULD SEE IT, because losing trailing
|
|
12
|
-
* characters is invisible to a snapshot test.
|
|
13
|
-
*
|
|
14
|
-
* THE PRIORITY ORDER IS THE DESIGN: brand, then `provider:model`, then cwd, then
|
|
15
|
-
* the summary, with the key symbol reserved up front. The summary is the only
|
|
16
|
-
* clause that is allowed to disappear entirely - it is the newest and the least
|
|
17
|
-
* load-bearing (D-2) - and it is dropped rather than rendered as `...`, because a
|
|
18
|
-
* cell holding three dots spends eight columns to say nothing.
|
|
19
|
-
*/
|
|
20
|
-
export declare const HEADER_LEFT_LIMITS: {
|
|
21
|
-
/** The `AragonAgent` word mark, the same 13 `header-hints.ts` documents. */
|
|
22
|
-
readonly brandCells: 13;
|
|
23
|
-
/** Blank cells between two left clauses. */
|
|
24
|
-
readonly gapCells: 2;
|
|
25
|
-
/** The has-key symbol (1 cell) plus its gap, always reserved. */
|
|
26
|
-
readonly keyCells: 3;
|
|
27
|
-
/** Below this the model clause is dropped rather than rendered as `a...`. */
|
|
28
|
-
readonly modelMinCells: 8;
|
|
29
|
-
/** Below this the cwd clause is dropped. */
|
|
30
|
-
readonly cwdMinCells: 8;
|
|
31
|
-
/** Below this the summary is dropped instead of rendered as `...`. */
|
|
32
|
-
readonly summaryMinCells: 8;
|
|
33
|
-
/**
|
|
34
|
-
* The separator that belongs to the SUMMARY rather than to the general gap:
|
|
35
|
-
* two spaces, the mid dot and one space. It is reserved together with the label
|
|
36
|
-
* so a summary can never be drawn without its dot, or the dot without it.
|
|
37
|
-
*/
|
|
38
|
-
readonly summaryGapCells: 4;
|
|
39
|
-
};
|
|
40
|
-
export interface HeaderLeftPlan {
|
|
41
|
-
text: {
|
|
42
|
-
model: string;
|
|
43
|
-
cwd: string;
|
|
44
|
-
summary: string;
|
|
45
|
-
};
|
|
46
|
-
cells: {
|
|
47
|
-
model: number;
|
|
48
|
-
cwd: number;
|
|
49
|
-
summary: number;
|
|
50
|
-
};
|
|
51
|
-
/**
|
|
52
|
-
* Why the summary cell is empty. `pending` is not a reason: a pending summary
|
|
53
|
-
* draws nothing at all, so the plan is indistinguishable from `empty` - which
|
|
54
|
-
* is exactly what removed the v1 layout jitter on the first submit.
|
|
55
|
-
*/
|
|
56
|
-
summaryReason: 'ok' | 'empty' | 'narrow' | 'disabled';
|
|
57
|
-
}
|
|
58
|
-
export interface HeaderLeftInput {
|
|
59
|
-
/** Cells the header gives the left half (`columns - hintCells - separatorCells`). */
|
|
60
|
-
leftCells: number;
|
|
61
|
-
provider: string;
|
|
62
|
-
model: string;
|
|
63
|
-
cwd: string;
|
|
64
|
-
hasKey: boolean;
|
|
65
|
-
/** `null` while pending, empty or disabled - the planner never sees a placeholder. */
|
|
66
|
-
summary: {
|
|
67
|
-
text: string;
|
|
68
|
-
tone: 'model' | 'fallback';
|
|
69
|
-
} | null;
|
|
70
|
-
summaryEnabled: boolean;
|
|
71
|
-
ellipsis: string;
|
|
72
|
-
}
|
|
73
|
-
/** `provider:model`, the clause `Header` prints after the word mark. */
|
|
74
|
-
export declare function modelClause(provider: string, model: string): string;
|
|
75
|
-
/** The directory name, falling back to the whole path for a bare root. */
|
|
76
|
-
export declare function cwdClause(cwd: string, basename: (path: string) => string): string;
|
|
77
|
-
/**
|
|
78
|
-
* Allocate the left half.
|
|
79
|
-
*
|
|
80
|
-
* THE ORDER OF THE FOUR STEPS IS THE PRIORITY (D-2):
|
|
81
|
-
* 1. reserve the word mark, its gap and the key symbol - they are never cut;
|
|
82
|
-
* 2. `provider:model`, down to `modelMinCells`, then dropped;
|
|
83
|
-
* 3. cwd, down to `cwdMinCells`, then dropped;
|
|
84
|
-
* 4. the summary, capped at `TASK_SUMMARY_LIMITS.maxCells`, dropped below
|
|
85
|
-
* `summaryMinCells` and reported as `narrow`.
|
|
86
|
-
*
|
|
87
|
-
* THE LADDER IS EXPLICIT RATHER THAN GREEDY, and that is a correction to v2's
|
|
88
|
-
* algorithm, which funded the summary out of the reserved budget and could therefore
|
|
89
|
-
* show a label on a row where the model name had already been dropped. Four
|
|
90
|
-
* presence sets are tried from most to least complete; within a set the LAST clause
|
|
91
|
-
* gives way first, each only down to its own minimum. The first set that fits wins.
|
|
92
|
-
*
|
|
93
|
-
* Every returned text already MEASURES its reported width, so `Header` renders
|
|
94
|
-
* cells rather than hoping for them.
|
|
95
|
-
*/
|
|
96
|
-
export declare function planHeaderLeft(input: HeaderLeftInput): HeaderLeftPlan;
|
|
97
|
-
/**
|
|
98
|
-
* Cells the plan actually spends, for the row invariant:
|
|
99
|
-
* `brand + gap + model + gap + cwd + gap + summary + key <= leftCells`.
|
|
100
|
-
*
|
|
101
|
-
* Exported so `header-left.test.ts` can assert the inequality against the SAME
|
|
102
|
-
* arithmetic the renderer uses instead of re-deriving it in the test (which is how
|
|
103
|
-
* the two drift apart).
|
|
104
|
-
*/
|
|
105
|
-
export declare function planHeaderLeftCells(plan: HeaderLeftPlan): number;
|
|
106
|
-
/**
|
|
107
|
-
* The fixed cells a plan needs before any clause can appear: the word mark plus the
|
|
108
|
-
* key symbol and its gap.
|
|
109
|
-
*
|
|
110
|
-
* Below this the row does not "spend too much", it simply cannot show a clause - the
|
|
111
|
-
* renderer truncates the overflow and `Header`'s own `wrap="truncate"` keeps that from
|
|
112
|
-
* spilling. Stating it as a constant keeps the invariant in the tests honest:
|
|
113
|
-
* `planHeaderLeftCells(plan) <= max(leftCells, HEADER_LEFT_BASELINE)`.
|
|
114
|
-
*/
|
|
115
|
-
export declare const HEADER_LEFT_BASELINE: number;
|