@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,98 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Structural limits of native-scroll mode (tui-native-terminal-scroll §4.3-§4.6).
|
|
3
|
-
*
|
|
4
|
-
* Structural caps live here; tunable policy lives in `config/schema.ts`. None of
|
|
5
|
-
* these is a user preference: each one bounds a failure (a runaway write, a live
|
|
6
|
-
* region that eats the screen) rather than expressing a taste.
|
|
7
|
-
*/
|
|
8
|
-
export const SCROLLBACK_LIMITS = {
|
|
9
|
-
/** Pending static entries the drain holds before folding the oldest into a marker. */
|
|
10
|
-
feedCapacity: 32,
|
|
11
|
-
/** Rows one entry may print; the rest is replaced by one ASCII notice row. */
|
|
12
|
-
maxRowsPerEntry: 400,
|
|
13
|
-
/** Static rows per `stdout.write`; larger feeds are split into consecutive batches. */
|
|
14
|
-
maxRowsPerBatch: 2000,
|
|
15
|
-
/** tall-frame swallows within this window after a resize are expected and uncounted. */
|
|
16
|
-
guardResizeGraceMs: 250,
|
|
17
|
-
/** Consecutive out-of-resize tall frames that degrade the app to the placeholder. */
|
|
18
|
-
guardTripCount: 3,
|
|
19
|
-
/** Session summary rows printed on exit. */
|
|
20
|
-
exitSummaryMaxRows: 4,
|
|
21
|
-
/**
|
|
22
|
-
* Entries the region may hold on screen at once
|
|
23
|
-
* (tui-full-height-live-region D6; the WINDOW is defined by I-F8 and computed in
|
|
24
|
-
* `tail-window.ts`).
|
|
25
|
-
*
|
|
26
|
-
* 10 is DERIVED, not a preference. The band's left column is the whole pool
|
|
27
|
-
* (`pool = rows - 1 - header - composer - status`, i.e. 24 rows on a 30-row
|
|
28
|
-
* terminal) and one entry occupies about 2.4 rows, so a window of 4 would leave
|
|
29
|
-
* the column half empty - the blank band this feature removes. It stays in the
|
|
30
|
-
* per-frame COST class the old value of 4 was measured in: `EntryView` is
|
|
31
|
-
* memoised and only the streaming entry re-renders, so this bounds component
|
|
32
|
-
* instances, not per-frame work.
|
|
33
|
-
*
|
|
34
|
-
* There is deliberately NO companion row cap any more (retired: the old
|
|
35
|
-
* `maxLiveTailRows` / `liveTailRowShare` pair). The rows a tail may take are
|
|
36
|
-
* `band.previewRows` - the whole left column - and "the region can never be
|
|
37
|
-
* taller than the screen" is `liveRows === rows - 1`'s job (I-F5), not a second
|
|
38
|
-
* number's. Those two caps disagreed with the pool, and that disagreement WAS the
|
|
39
|
-
* blank band between the result and the running card.
|
|
40
|
-
*/
|
|
41
|
-
liveTailMaxEntries: 10,
|
|
42
|
-
/**
|
|
43
|
-
* Safety margin the live tail asks for before it anchors its content to the TOP of
|
|
44
|
-
* the region (tui-first-reply-bottom-aligned, plan A-prime; the decision itself is
|
|
45
|
-
* `tail-anchor.ts`).
|
|
46
|
-
*
|
|
47
|
-
* 2 is DERIVED, not a preference. The anchor is decided from
|
|
48
|
-
* `layout/virtual-window.ts::estimateEntryRows`, which charges one separation row per
|
|
49
|
-
* entry and counts RAW markdown lines - so it UNDER-estimates a `#` heading (which
|
|
50
|
-
* also draws an `hrule`) and a code block (whose rail narrows the text by two columns,
|
|
51
|
-
* making long lines wrap). Inside a virtual window that error self-corrects when the
|
|
52
|
-
* entry is measured; the live region has no measurement pass, so the same error would
|
|
53
|
-
* decide which rows get CLIPPED - and `flex-start` clips the NEWEST rows.
|
|
54
|
-
* The margin must therefore always stay on the `bottom` side: a needless fallback
|
|
55
|
-
* costs one stacked frame, an early anchor hides the text the user is waiting for.
|
|
56
|
-
*/
|
|
57
|
-
tailAnchorSlackRows: 2,
|
|
58
|
-
/**
|
|
59
|
-
* Rows the rail needs before the band will show it: `TODO_LIMITS.panelMinRows + 1`.
|
|
60
|
-
*
|
|
61
|
-
* The `+ 1` is not decoration - the rail takes its rows from the same pool as one
|
|
62
|
-
* preview row, and a band that seats the rail but no preview loses the streaming
|
|
63
|
-
* answer entirely (band.ts step 3 / AC-12).
|
|
64
|
-
*/
|
|
65
|
-
railBandMinRows: 4,
|
|
66
|
-
/**
|
|
67
|
-
* How long the cursor-position probe waits for `ESC[<row>;<col>R`.
|
|
68
|
-
*
|
|
69
|
-
* A STRUCTURAL CAP, not a preference (tui-bottom-anchored-live-region §4.4): it
|
|
70
|
-
* bounds "how much startup latency a terminal that does not answer may cost". The
|
|
71
|
-
* round trip is under 5 ms locally and under 60 ms over SSH, so 150 ms is
|
|
72
|
-
* generous, and the probe runs once per session — never per frame, never per
|
|
73
|
-
* keystroke. Anything longer and a terminal without CPR support would pay it on
|
|
74
|
-
* every launch.
|
|
75
|
-
*/
|
|
76
|
-
anchorProbeTimeoutMs: 150,
|
|
77
|
-
/**
|
|
78
|
-
* Settle window before re-measuring the cursor after a resize.
|
|
79
|
-
*
|
|
80
|
-
* A STRUCTURAL CAP for the same reason: a drag fires dozens of resize events, and
|
|
81
|
-
* one CPR per event would both flood the input channel and make the region jitter.
|
|
82
|
-
* 200 ms is below the point a user perceives as "the input box is stuck".
|
|
83
|
-
*/
|
|
84
|
-
anchorReprobeDelayMs: 200,
|
|
85
|
-
/**
|
|
86
|
-
* Structural ceiling on the height of a STARTING canvas.
|
|
87
|
-
*
|
|
88
|
-
* It bounds the bytes a batch may write and the rows the content cache may hold on
|
|
89
|
-
* an extreme terminal (`rows` 3000). Two limits on how it may be applied, both
|
|
90
|
-
* arithmetic rather than taste:
|
|
91
|
-
* - the rows a canvas leaves unused do not disappear, they stay above it as the
|
|
92
|
-
* permanent region, so a smaller starting canvas never loses content;
|
|
93
|
-
* - it must NEVER clip a live canvas. A canvas that has overflowed and scrolled
|
|
94
|
-
* grows to `rows - 1`, and shrinking one back would make the next erase reach
|
|
95
|
-
* above its own top: host output erased, every visible row printed twice.
|
|
96
|
-
*/
|
|
97
|
-
maxCanvasRows: 200,
|
|
98
|
-
};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plain-text fallback rows for the native-scroll live region
|
|
3
|
-
* (tui-native-terminal-scroll §4.6, tui-full-height-live-region RV-P2-7).
|
|
4
|
-
*
|
|
5
|
-
* THE REAL TAIL IS `LiveTail`, NOT THIS. Native mode draws the region's tail with the
|
|
6
|
-
* actual entry components, so these rows are only the fallback for a frame that mounts
|
|
7
|
-
* no component there (and the floor of the measurement path). They are kept rather than
|
|
8
|
-
* deleted because the render tests use them to assert exactly that frame, and because
|
|
9
|
-
* `<= 24 wrapToRows` calls per frame is far below the cost of the components it stands
|
|
10
|
-
* in for.
|
|
11
|
-
*
|
|
12
|
-
* The input is the TAIL WINDOW (`selectTailWindow`), settled entries included: at
|
|
13
|
-
* `H = rows - 1` the region shows the last K entries of the conversation, so a
|
|
14
|
-
* projection built only from the unfinished ones would disagree with the screen.
|
|
15
|
-
* The field keeps its historical name `unsettled` because it is still "the entries the
|
|
16
|
-
* region is showing", and renaming it would touch the preview tests for no behaviour.
|
|
17
|
-
*
|
|
18
|
-
* PURE: no Ink, no theme, no I/O. Every returned row fits `cols` display columns.
|
|
19
|
-
*/
|
|
20
|
-
import type { Entry } from '../../agent/reducer.js';
|
|
21
|
-
export interface LivePreviewInput {
|
|
22
|
-
/**
|
|
23
|
-
* The entries to project, oldest first - the tail window in native mode. May include
|
|
24
|
-
* excluded entries; they are skipped.
|
|
25
|
-
*/
|
|
26
|
-
unsettled: readonly Entry[];
|
|
27
|
-
/** Content width (`cols - 1`). */
|
|
28
|
-
cols: number;
|
|
29
|
-
/** Rows granted by the budget. */
|
|
30
|
-
rows: number;
|
|
31
|
-
thinkingVisible: boolean;
|
|
32
|
-
}
|
|
33
|
-
/** The last `rows` preview rows, oldest first. `[]` when `rows <= 0`. */
|
|
34
|
-
export declare function buildLivePreview(input: LivePreviewInput): string[];
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plain-text fallback rows for the native-scroll live region
|
|
3
|
-
* (tui-native-terminal-scroll §4.6, tui-full-height-live-region RV-P2-7).
|
|
4
|
-
*
|
|
5
|
-
* THE REAL TAIL IS `LiveTail`, NOT THIS. Native mode draws the region's tail with the
|
|
6
|
-
* actual entry components, so these rows are only the fallback for a frame that mounts
|
|
7
|
-
* no component there (and the floor of the measurement path). They are kept rather than
|
|
8
|
-
* deleted because the render tests use them to assert exactly that frame, and because
|
|
9
|
-
* `<= 24 wrapToRows` calls per frame is far below the cost of the components it stands
|
|
10
|
-
* in for.
|
|
11
|
-
*
|
|
12
|
-
* The input is the TAIL WINDOW (`selectTailWindow`), settled entries included: at
|
|
13
|
-
* `H = rows - 1` the region shows the last K entries of the conversation, so a
|
|
14
|
-
* projection built only from the unfinished ones would disagree with the screen.
|
|
15
|
-
* The field keeps its historical name `unsettled` because it is still "the entries the
|
|
16
|
-
* region is showing", and renaming it would touch the preview tests for no behaviour.
|
|
17
|
-
*
|
|
18
|
-
* PURE: no Ink, no theme, no I/O. Every returned row fits `cols` display columns.
|
|
19
|
-
*/
|
|
20
|
-
import { clampLiveText } from '../live-clamp.js';
|
|
21
|
-
import { wrapToRows } from '../layout/wrap-rows.js';
|
|
22
|
-
import { isExcluded } from './settled-boundary.js';
|
|
23
|
-
import { isLiveTeamCard, outcomePhrase, rosterCounts } from '../team-status.js';
|
|
24
|
-
import { clipLine } from './writer-shapes.js';
|
|
25
|
-
const MAX_TEAM_RUN_ROWS = 3;
|
|
26
|
-
const TOOL_LIVE_ROWS = 6;
|
|
27
|
-
function firstLine(text) {
|
|
28
|
-
const line = text.split('\n').find((candidate) => candidate.trim().length > 0);
|
|
29
|
-
return (line ?? '').trim();
|
|
30
|
-
}
|
|
31
|
-
function fit(text, cols) {
|
|
32
|
-
return clipLine(text, Math.max(1, cols)).text;
|
|
33
|
-
}
|
|
34
|
-
function assistantRows(entry, cols, rows, thinkingVisible) {
|
|
35
|
-
const out = [];
|
|
36
|
-
const thinking = (entry.thinking ?? '').trim();
|
|
37
|
-
if (entry.text.trim().length === 0) {
|
|
38
|
-
if (thinking.length > 0 && thinkingVisible) {
|
|
39
|
-
const last = thinking.split('\n').filter((line) => line.trim().length > 0).pop() ?? '';
|
|
40
|
-
out.push(fit(`thinking: ${last.trim()}`, cols));
|
|
41
|
-
}
|
|
42
|
-
else if (entry.streaming) {
|
|
43
|
-
out.push('thinking...');
|
|
44
|
-
}
|
|
45
|
-
return out;
|
|
46
|
-
}
|
|
47
|
-
const clamped = clampLiveText(entry.text, rows * 2);
|
|
48
|
-
out.push(...wrapToRows(clamped.text, cols).map((row) => fit(row, cols)));
|
|
49
|
-
return out;
|
|
50
|
-
}
|
|
51
|
-
function toolRows(entry, cols) {
|
|
52
|
-
const head = entry.label && entry.label.length > 0 ? entry.label : entry.name;
|
|
53
|
-
const out = [fit(`${entry.status === 'running' ? '>' : '.'} ${head}`, cols)];
|
|
54
|
-
const live = (entry.live ?? []).slice(-TOOL_LIVE_ROWS);
|
|
55
|
-
for (const row of live)
|
|
56
|
-
out.push(fit(` ${row}`, cols));
|
|
57
|
-
return out;
|
|
58
|
-
}
|
|
59
|
-
function teamRows(entry, cols) {
|
|
60
|
-
// ONLY A SETTLED CARD REACHES HERE (the live one projects nothing, below), so the
|
|
61
|
-
// outcome phrase - `team-status.ts`'s own sentence - replaces an always-zero fraction.
|
|
62
|
-
const counts = rosterCounts(entry.runs);
|
|
63
|
-
const out = [fit(`Team: ${outcomePhrase(counts)}`, cols)];
|
|
64
|
-
for (const run of entry.runs.slice(0, MAX_TEAM_RUN_ROWS)) {
|
|
65
|
-
out.push(fit(` ${run.label} ${run.phase}`, cols));
|
|
66
|
-
}
|
|
67
|
-
return out;
|
|
68
|
-
}
|
|
69
|
-
function entryRows(entry, input) {
|
|
70
|
-
const { cols, rows, thinkingVisible } = input;
|
|
71
|
-
switch (entry.kind) {
|
|
72
|
-
case 'assistant':
|
|
73
|
-
return assistantRows(entry, cols, rows, thinkingVisible);
|
|
74
|
-
case 'tool':
|
|
75
|
-
return toolRows(entry, cols);
|
|
76
|
-
case 'team':
|
|
77
|
-
// THE LIVE DISPATCH HAS ONE SURFACE (tui-subagent-double-roster A-2): this
|
|
78
|
-
// projection is the text fallback for the same slot `LiveTail` fills, so a
|
|
79
|
-
// `Team: n/m running` line here would be the second live block again, one level
|
|
80
|
-
// down. A settled card still projects normally.
|
|
81
|
-
return isLiveTeamCard(entry) ? [] : teamRows(entry, cols);
|
|
82
|
-
case 'todo':
|
|
83
|
-
return [fit(`Todo: ${entry.doneCount}/${entry.total}`, cols)];
|
|
84
|
-
case 'compaction':
|
|
85
|
-
return [fit(`Compacting context...`, cols)];
|
|
86
|
-
case 'retry':
|
|
87
|
-
return [fit(`Retrying (${entry.attempt}/${entry.maxRetries})...`, cols)];
|
|
88
|
-
case 'fast':
|
|
89
|
-
return [fit(`Fast review ${entry.reviewIndex}...`, cols)];
|
|
90
|
-
case 'queued':
|
|
91
|
-
return [fit(`Queued: ${firstLine(entry.text)}`, cols)];
|
|
92
|
-
case 'user':
|
|
93
|
-
return [fit(`> ${firstLine(entry.text)}`, cols)];
|
|
94
|
-
case 'notice':
|
|
95
|
-
return [fit(firstLine(entry.text), cols)];
|
|
96
|
-
case 'service':
|
|
97
|
-
return [];
|
|
98
|
-
case 'governance':
|
|
99
|
-
return [fit(`Governance: ${entry.card.title}`, cols)];
|
|
100
|
-
default: {
|
|
101
|
-
const exhaustive = entry;
|
|
102
|
-
return exhaustive;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
/** The last `rows` preview rows, oldest first. `[]` when `rows <= 0`. */
|
|
107
|
-
export function buildLivePreview(input) {
|
|
108
|
-
const rows = Math.floor(input.rows);
|
|
109
|
-
if (rows <= 0)
|
|
110
|
-
return [];
|
|
111
|
-
const all = [];
|
|
112
|
-
for (const entry of input.unsettled) {
|
|
113
|
-
if (isExcluded(entry))
|
|
114
|
-
continue;
|
|
115
|
-
all.push(...entryRows(entry, input));
|
|
116
|
-
}
|
|
117
|
-
return all.slice(-rows);
|
|
118
|
-
}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TOP GIVE-WAY - the row-level print plan of the native-scroll live region
|
|
3
|
-
* (tui-final-reply-truncated-unscrollable, plan A-prime / B3).
|
|
4
|
-
*
|
|
5
|
-
* THE DEFECT THIS ANSWERS. The region is the whole screen (`H = rows - 1`), so the box
|
|
6
|
-
* that holds the conversation is only `previewRows` tall (24 rows on a 30-row terminal),
|
|
7
|
-
* while the boundary that decides what may print into the terminal's scrollback is
|
|
8
|
-
* counted in ENTRIES (`liveTailMaxEntries`). A settled answer taller than the box is
|
|
9
|
-
* therefore inside the window, never printed, and clipped from the top by
|
|
10
|
-
* `justifyContent="flex-end"`. Native mode has no in-frame viewport - the wheel scrolls
|
|
11
|
-
* the terminal's scrollback - so the clipped rows exist nowhere the user can reach.
|
|
12
|
-
*
|
|
13
|
-
* The region cannot simply grow: a frame as tall as the terminal makes Ink write
|
|
14
|
-
* `clearTerminal` (which contains `ESC[3J`) and that erases the user's scrollback. So the
|
|
15
|
-
* only direction that keeps both promises is this one: the box keeps showing what it can,
|
|
16
|
-
* and the rows it hides are PRINTED into the scrollback, where the terminal's own scroll
|
|
17
|
-
* already reaches. Nothing on screen changes; the head of a long answer simply becomes
|
|
18
|
-
* readable one wheel turn up.
|
|
19
|
-
*
|
|
20
|
-
* WHAT THE PLAN GUARANTEES (the invariants the implementation batches are verified by):
|
|
21
|
-
* I-B1 `printed(e) + visible(e) = rows(e)` and the two ranges are adjacent and disjoint,
|
|
22
|
-
* so `scrollback + screen` covers every row exactly once (no gap, no duplicate).
|
|
23
|
-
* I-B2 Only STABLE entries may print, and the FIRST unstable entry is a wall: nothing at
|
|
24
|
-
* or after it is ever planned, even when a stable entry follows it (a `notice` after
|
|
25
|
-
* a streaming answer is stable, and printing it here would put rows into the
|
|
26
|
-
* scrollback out of conversation order, which is unrecoverable).
|
|
27
|
-
* I-B3 The plan is ordered oldest-first and carries no gaps: the caller prints the
|
|
28
|
-
* segments in the order given, so the scrollback keeps conversation order.
|
|
29
|
-
* I-B4 It never plans a row that is still on screen: `hiddenRows` is measured against the
|
|
30
|
-
* box height, and the box clips from the TOP only while it is bottom-anchored
|
|
31
|
-
* (`tail-anchor.ts`), which the caller checks before printing anything.
|
|
32
|
-
*
|
|
33
|
-
* PURE: no Ink, no I/O, no clock, no `node:*`. That is why the caller injects the measured
|
|
34
|
-
* heights and the printed counts instead of this module measuring anything itself: the same
|
|
35
|
-
* arithmetic then drives a unit test with an arbitrary table instead of a screen.
|
|
36
|
-
*/
|
|
37
|
-
import type { Entry } from '../../agent/reducer.js';
|
|
38
|
-
/** One entry of the tail window, as the planner needs it. */
|
|
39
|
-
export interface OverflowWindowEntry {
|
|
40
|
-
entry: Entry;
|
|
41
|
-
/**
|
|
42
|
-
* Rows this entry occupies in the live region, measured at the SAME width the region
|
|
43
|
-
* draws it at (`previewCols`). An estimate is not good enough here: the plan decides how
|
|
44
|
-
* many rows are hidden, and a wrong count either duplicates a visible row or leaves one
|
|
45
|
-
* unreachable.
|
|
46
|
-
*/
|
|
47
|
-
rows: number;
|
|
48
|
-
/** Leading rows of this entry already in the scrollback, `0` when none. */
|
|
49
|
-
printed: number;
|
|
50
|
-
/**
|
|
51
|
-
* `isEntryStable(entry, runActive, isTail)` for this entry - the caller's answer, because
|
|
52
|
-
* "is this the tail" is a property of the FULL list and the window is a filtered slice.
|
|
53
|
-
*/
|
|
54
|
-
stable: boolean;
|
|
55
|
-
}
|
|
56
|
-
/** One run of rows to print: `[fromRow, toRow)` of `entry`'s own rows. */
|
|
57
|
-
export interface OverflowSegment {
|
|
58
|
-
/** Index into the window the planner was given. */
|
|
59
|
-
index: number;
|
|
60
|
-
id: string;
|
|
61
|
-
/** First row to print, 0-based from the top of the entry. */
|
|
62
|
-
fromRow: number;
|
|
63
|
-
/** One past the last row to print. */
|
|
64
|
-
toRow: number;
|
|
65
|
-
}
|
|
66
|
-
export interface OverflowPlan {
|
|
67
|
-
/** Rows to hand to the writer, oldest entry first (I-B3). */
|
|
68
|
-
segments: readonly OverflowSegment[];
|
|
69
|
-
/** Rows the box hides above its top edge; `0` when the window fits. */
|
|
70
|
-
hiddenRows: number;
|
|
71
|
-
/** Measured height of the whole window, including entries past the wall. */
|
|
72
|
-
totalRows: number;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Which rows of the window the box is hiding, and how many of them are not printed yet.
|
|
76
|
-
*
|
|
77
|
-
* @param window The tail window, OLDEST FIRST, excluded entries already dropped.
|
|
78
|
-
* @param budgetRows Height of the box that shows the window (`band.previewRows`).
|
|
79
|
-
* @returns The print plan; `segments` is empty when nothing is hidden or when the first
|
|
80
|
-
* unstable entry sits at the top of the window (see I-B2).
|
|
81
|
-
*/
|
|
82
|
-
export declare function planOverflowPrint(window: readonly OverflowWindowEntry[], budgetRows: number): OverflowPlan;
|
|
83
|
-
/**
|
|
84
|
-
* The row that marks a WIDTH CHANGE inside one entry's printed history.
|
|
85
|
-
*
|
|
86
|
-
* "Rows already printed" is a width-relative quantity: a line that took two rows at 80
|
|
87
|
-
* columns takes one at 120. Continuing to slice at the old index would skip content
|
|
88
|
-
* (`W1` breaks) or repeat it silently. So a width change prints this seam and restarts the
|
|
89
|
-
* entry at the new width: every row stays reachable, and the only cost is one bounded
|
|
90
|
-
* repetition of the rows above the seam (documented in the README).
|
|
91
|
-
*/
|
|
92
|
-
export declare function reflowSeamRow(printedRows: number, printedCols: number, cols: number): string;
|
|
93
|
-
/** The single wording of the per-entry row cap, shared by the renderer and the pipeline. */
|
|
94
|
-
export declare function elisionRow(hidden: number): string;
|
|
95
|
-
/**
|
|
96
|
-
* Apply `maxRowsPerEntry` to the REMAINDER of one entry.
|
|
97
|
-
*
|
|
98
|
-
* The cap used to be a single "keep the first 399 rows, then say how many were dropped".
|
|
99
|
-
* That is still what a never-printed entry gets (`headRows === 0`), because it keeps the
|
|
100
|
-
* part of the answer the user has already scrolled past. An entry whose HEAD is already in
|
|
101
|
-
* the scrollback gets the opposite treatment on purpose: the notice goes FIRST and the LAST
|
|
102
|
-
* rows follow, because the tail is the part the reader is looking at on screen, and eliding
|
|
103
|
-
* it would delete the answer they just finished reading from their history.
|
|
104
|
-
*
|
|
105
|
-
* @param tail Rows still to print (`body.slice(fromRow)`).
|
|
106
|
-
* @param headRows Rows of this entry already printed.
|
|
107
|
-
*/
|
|
108
|
-
export declare function capPrintedRows(tail: readonly string[], headRows: number): readonly string[];
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TOP GIVE-WAY - the row-level print plan of the native-scroll live region
|
|
3
|
-
* (tui-final-reply-truncated-unscrollable, plan A-prime / B3).
|
|
4
|
-
*
|
|
5
|
-
* THE DEFECT THIS ANSWERS. The region is the whole screen (`H = rows - 1`), so the box
|
|
6
|
-
* that holds the conversation is only `previewRows` tall (24 rows on a 30-row terminal),
|
|
7
|
-
* while the boundary that decides what may print into the terminal's scrollback is
|
|
8
|
-
* counted in ENTRIES (`liveTailMaxEntries`). A settled answer taller than the box is
|
|
9
|
-
* therefore inside the window, never printed, and clipped from the top by
|
|
10
|
-
* `justifyContent="flex-end"`. Native mode has no in-frame viewport - the wheel scrolls
|
|
11
|
-
* the terminal's scrollback - so the clipped rows exist nowhere the user can reach.
|
|
12
|
-
*
|
|
13
|
-
* The region cannot simply grow: a frame as tall as the terminal makes Ink write
|
|
14
|
-
* `clearTerminal` (which contains `ESC[3J`) and that erases the user's scrollback. So the
|
|
15
|
-
* only direction that keeps both promises is this one: the box keeps showing what it can,
|
|
16
|
-
* and the rows it hides are PRINTED into the scrollback, where the terminal's own scroll
|
|
17
|
-
* already reaches. Nothing on screen changes; the head of a long answer simply becomes
|
|
18
|
-
* readable one wheel turn up.
|
|
19
|
-
*
|
|
20
|
-
* WHAT THE PLAN GUARANTEES (the invariants the implementation batches are verified by):
|
|
21
|
-
* I-B1 `printed(e) + visible(e) = rows(e)` and the two ranges are adjacent and disjoint,
|
|
22
|
-
* so `scrollback + screen` covers every row exactly once (no gap, no duplicate).
|
|
23
|
-
* I-B2 Only STABLE entries may print, and the FIRST unstable entry is a wall: nothing at
|
|
24
|
-
* or after it is ever planned, even when a stable entry follows it (a `notice` after
|
|
25
|
-
* a streaming answer is stable, and printing it here would put rows into the
|
|
26
|
-
* scrollback out of conversation order, which is unrecoverable).
|
|
27
|
-
* I-B3 The plan is ordered oldest-first and carries no gaps: the caller prints the
|
|
28
|
-
* segments in the order given, so the scrollback keeps conversation order.
|
|
29
|
-
* I-B4 It never plans a row that is still on screen: `hiddenRows` is measured against the
|
|
30
|
-
* box height, and the box clips from the TOP only while it is bottom-anchored
|
|
31
|
-
* (`tail-anchor.ts`), which the caller checks before printing anything.
|
|
32
|
-
*
|
|
33
|
-
* PURE: no Ink, no I/O, no clock, no `node:*`. That is why the caller injects the measured
|
|
34
|
-
* heights and the printed counts instead of this module measuring anything itself: the same
|
|
35
|
-
* arithmetic then drives a unit test with an arbitrary table instead of a screen.
|
|
36
|
-
*/
|
|
37
|
-
import { SCROLLBACK_LIMITS } from './limits.js';
|
|
38
|
-
function wholeRows(value) {
|
|
39
|
-
return Number.isFinite(value) ? Math.max(0, Math.floor(value)) : 0;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Which rows of the window the box is hiding, and how many of them are not printed yet.
|
|
43
|
-
*
|
|
44
|
-
* @param window The tail window, OLDEST FIRST, excluded entries already dropped.
|
|
45
|
-
* @param budgetRows Height of the box that shows the window (`band.previewRows`).
|
|
46
|
-
* @returns The print plan; `segments` is empty when nothing is hidden or when the first
|
|
47
|
-
* unstable entry sits at the top of the window (see I-B2).
|
|
48
|
-
*/
|
|
49
|
-
export function planOverflowPrint(window, budgetRows) {
|
|
50
|
-
const totalRows = window.reduce((sum, item) => sum + wholeRows(item.rows), 0);
|
|
51
|
-
// Rows past the wall are on screen too (the box is one box), so they count towards the
|
|
52
|
-
// height - they are simply never printable themselves.
|
|
53
|
-
const hiddenRows = Math.max(0, totalRows - wholeRows(budgetRows));
|
|
54
|
-
if (hiddenRows === 0)
|
|
55
|
-
return { segments: [], hiddenRows, totalRows };
|
|
56
|
-
const segments = [];
|
|
57
|
-
let offset = 0;
|
|
58
|
-
for (const [index, item] of window.entries()) {
|
|
59
|
-
// I-B2 - the wall. Nothing at or after the first unstable entry may print, and because
|
|
60
|
-
// the loop walks in order, "at or after" needs nothing more than a `break`.
|
|
61
|
-
if (!item.stable)
|
|
62
|
-
break;
|
|
63
|
-
// Every row from here down is visible: the box clips exactly `hiddenRows` rows off the
|
|
64
|
-
// top, so once the accumulated offset reaches it the plan is complete.
|
|
65
|
-
if (offset >= hiddenRows)
|
|
66
|
-
break;
|
|
67
|
-
const hiddenOfEntry = Math.min(wholeRows(item.rows), hiddenRows - offset);
|
|
68
|
-
const printed = wholeRows(item.printed);
|
|
69
|
-
if (hiddenOfEntry > printed) {
|
|
70
|
-
segments.push({ index, id: item.entry.id, fromRow: printed, toRow: hiddenOfEntry });
|
|
71
|
-
}
|
|
72
|
-
offset += wholeRows(item.rows);
|
|
73
|
-
}
|
|
74
|
-
return { segments, hiddenRows, totalRows };
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* The row that marks a WIDTH CHANGE inside one entry's printed history.
|
|
78
|
-
*
|
|
79
|
-
* "Rows already printed" is a width-relative quantity: a line that took two rows at 80
|
|
80
|
-
* columns takes one at 120. Continuing to slice at the old index would skip content
|
|
81
|
-
* (`W1` breaks) or repeat it silently. So a width change prints this seam and restarts the
|
|
82
|
-
* entry at the new width: every row stays reachable, and the only cost is one bounded
|
|
83
|
-
* repetition of the rows above the seam (documented in the README).
|
|
84
|
-
*/
|
|
85
|
-
export function reflowSeamRow(printedRows, printedCols, cols) {
|
|
86
|
-
return `[-- reflowed to ${cols} columns; ${printedRows} row(s) above were printed at ` +
|
|
87
|
-
`${printedCols} columns --]`;
|
|
88
|
-
}
|
|
89
|
-
/** The single wording of the per-entry row cap, shared by the renderer and the pipeline. */
|
|
90
|
-
export function elisionRow(hidden) {
|
|
91
|
-
return `[+${hidden} rows not printed - scrollback entry cap]`;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Apply `maxRowsPerEntry` to the REMAINDER of one entry.
|
|
95
|
-
*
|
|
96
|
-
* The cap used to be a single "keep the first 399 rows, then say how many were dropped".
|
|
97
|
-
* That is still what a never-printed entry gets (`headRows === 0`), because it keeps the
|
|
98
|
-
* part of the answer the user has already scrolled past. An entry whose HEAD is already in
|
|
99
|
-
* the scrollback gets the opposite treatment on purpose: the notice goes FIRST and the LAST
|
|
100
|
-
* rows follow, because the tail is the part the reader is looking at on screen, and eliding
|
|
101
|
-
* it would delete the answer they just finished reading from their history.
|
|
102
|
-
*
|
|
103
|
-
* @param tail Rows still to print (`body.slice(fromRow)`).
|
|
104
|
-
* @param headRows Rows of this entry already printed.
|
|
105
|
-
*/
|
|
106
|
-
export function capPrintedRows(tail, headRows) {
|
|
107
|
-
const cap = SCROLLBACK_LIMITS.maxRowsPerEntry;
|
|
108
|
-
const printed = wholeRows(headRows);
|
|
109
|
-
if (printed + tail.length <= cap)
|
|
110
|
-
return tail;
|
|
111
|
-
if (printed === 0) {
|
|
112
|
-
const keep = Math.max(0, cap - 1);
|
|
113
|
-
return [...tail.slice(0, keep), elisionRow(tail.length - keep)];
|
|
114
|
-
}
|
|
115
|
-
// One row is spent on the notice itself.
|
|
116
|
-
const keep = Math.max(0, cap - printed - 1);
|
|
117
|
-
if (keep === 0)
|
|
118
|
-
return [elisionRow(tail.length)];
|
|
119
|
-
return [elisionRow(tail.length - keep), ...tail.slice(tail.length - keep)];
|
|
120
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Offscreen entry renderer (tui-native-terminal-scroll §4.5 / D4).
|
|
3
|
-
*
|
|
4
|
-
* Settled entries are rendered ONCE, to ANSI text, by a resident Ink instance that
|
|
5
|
-
* writes to a fake stdout (`debug: true`: Ink then emits the complete layout in one
|
|
6
|
-
* write per render and never touches log-update). The resulting rows go to the feed
|
|
7
|
-
* and are printed; they are never mounted in the live React tree, so the per-frame
|
|
8
|
-
* render cost stays proportional to what is on screen, not to the session length.
|
|
9
|
-
*
|
|
10
|
-
* Failure isolation (I-S12): one entry that throws while rendering degrades to a
|
|
11
|
-
* single placeholder row. It must never block the queue or take the session down.
|
|
12
|
-
*/
|
|
13
|
-
import React from 'react';
|
|
14
|
-
import type { Entry } from '../../agent/reducer.js';
|
|
15
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
16
|
-
import type { DensityMode } from '../density.js';
|
|
17
|
-
import type { Theme } from '../theme.js';
|
|
18
|
-
export interface EntryRenderOptions {
|
|
19
|
-
theme: Theme;
|
|
20
|
-
caps: TermCapabilities;
|
|
21
|
-
density: DensityMode;
|
|
22
|
-
thinkingVisible: boolean;
|
|
23
|
-
reducedMotion: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface EntryRenderer {
|
|
26
|
-
/** Rows for one entry at `cols` columns, capped at `maxRowsPerEntry`; `[]` when it renders as nothing. */
|
|
27
|
-
renderEntry(entry: Entry, prev: Entry | undefined, cols: number, expanded?: boolean): string[];
|
|
28
|
-
/**
|
|
29
|
-
* The SAME rows, UNCAPPED.
|
|
30
|
-
*
|
|
31
|
-
* "Top give-way" (`overflow-print.ts`) slices one entry across two print passes, so it
|
|
32
|
-
* needs the real row count and the real rows: `capRows` truncates before returning, and a
|
|
33
|
-
* row budget computed from a truncated array puts the cut in the wrong place (a 800-row
|
|
34
|
-
* answer would compute its cut on 400 rows and print rows the screen is still showing).
|
|
35
|
-
* The cap is applied by the caller, once, where it knows how many rows are already printed.
|
|
36
|
-
*/
|
|
37
|
-
renderEntryRows(entry: Entry, prev: Entry | undefined, cols: number, expanded?: boolean): string[];
|
|
38
|
-
/** Rows for an arbitrary node (the startup header and opener). */
|
|
39
|
-
renderNode(node: React.ReactNode, cols: number): string[];
|
|
40
|
-
/** Options for LATER renders; already printed rows never change. */
|
|
41
|
-
setOptions(partial: Partial<EntryRenderOptions>): void;
|
|
42
|
-
stats(): {
|
|
43
|
-
elidedRows: number;
|
|
44
|
-
failures: number;
|
|
45
|
-
};
|
|
46
|
-
dispose(): void;
|
|
47
|
-
}
|
|
48
|
-
export declare function createEntryRenderer(initial: EntryRenderOptions): EntryRenderer;
|