@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
package/dist/tools/patch.js
DELETED
|
@@ -1,453 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Structured file patches (agent-activity-presentation §3.3).
|
|
3
|
-
*
|
|
4
|
-
* PURE, NO I/O, NO REACT, ASCII-ONLY MARKERS. `glyphs.test.ts`'s static scan
|
|
5
|
-
* walks ALL of `src/` (skipping only `__tests__/` and two exempt files), so this
|
|
6
|
-
* module sits inside that guard rail directly rather than by analogy. The
|
|
7
|
-
* substantive reason is the one `reducer.ts` gives for `PREVIEW_TRUNCATION_MARK`:
|
|
8
|
-
* a string produced outside `src/ui/**` has no `TermCapabilities` in scope and
|
|
9
|
-
* must be safe on a legacy `cmd.exe`.
|
|
10
|
-
*
|
|
11
|
-
* The ladder is ANCHORED SPLIT -> BOUNDED LCS -> BLOCK REPLACE, and every
|
|
12
|
-
* recursion path terminates in one of three leaf returns. `blockReplace` is
|
|
13
|
-
* exactly what `renderUnifiedDiff` produced before this round — every old row as
|
|
14
|
-
* `del`, then every new row as `add` — kept as the explicit, bounded fallback so
|
|
15
|
-
* a pathological input degrades to today's behaviour rather than hanging.
|
|
16
|
-
*
|
|
17
|
-
* `buildPatch` is TOTAL: it never throws, for any pair of strings.
|
|
18
|
-
*/
|
|
19
|
-
export const PATCH_LIMITS = {
|
|
20
|
-
/**
|
|
21
|
-
* Context rows kept either side of a change, FOR THE UI.
|
|
22
|
-
*
|
|
23
|
-
* The text renderer does NOT use this (D-20): `renderUnifiedDiff` keeps its
|
|
24
|
-
* own `CONTEXT_LINES = 2` default so the model-facing diff does not silently
|
|
25
|
-
* widen by two rows on every single-region edit. One algorithm, two widths,
|
|
26
|
-
* chosen by the caller.
|
|
27
|
-
*/
|
|
28
|
-
context: 3,
|
|
29
|
-
/**
|
|
30
|
-
* Hunks separated by this many context rows or fewer are merged into one.
|
|
31
|
-
*
|
|
32
|
-
* MUST STAY `>= 2 * context` FOR EVERY CALLER'S CONTEXT WIDTH, or two adjacent
|
|
33
|
-
* hunks expanded by `context` would overlap and the same row would be rendered
|
|
34
|
-
* twice with two different line numbers. 6 covers both widths in use (3 and 2).
|
|
35
|
-
*/
|
|
36
|
-
mergeGap: 6,
|
|
37
|
-
/** Rendered rows a patch may carry, across all hunks. */
|
|
38
|
-
maxLines: 200,
|
|
39
|
-
/** Total characters across all `PatchLine.text`. Mirrors STORED_PREVIEW_CHARS. */
|
|
40
|
-
maxChars: 8_000,
|
|
41
|
-
/** A single row is truncated past this, with `TRUNCATION_MARK`. */
|
|
42
|
-
maxLineChars: 500,
|
|
43
|
-
/** Above this cell count the LCS leaf is refused; the segment becomes a block replace. */
|
|
44
|
-
lcsCellBudget: 160_000, // 400 x 400
|
|
45
|
-
/** Recursion depth ceiling for the anchor split. */
|
|
46
|
-
maxDepth: 32,
|
|
47
|
-
/** Old-side bytes above which `write_file` does not read for a diff. */
|
|
48
|
-
readMaxBytes: 2 * 1024 * 1024,
|
|
49
|
-
/** Model-facing diff text ceiling — a bound `edit_file` does not have today. */
|
|
50
|
-
modelDiffMaxChars: 4_000,
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Appended to a row clipped at `maxLineChars`.
|
|
54
|
-
*
|
|
55
|
-
* SPELLED HERE RATHER THAN IMPORTED from `agent/reducer.ts`, so that `tools/`
|
|
56
|
-
* does not take a runtime dependency on the view model for one three-character
|
|
57
|
-
* string. `patch.test.ts` asserts the two spellings are equal, so the pair
|
|
58
|
-
* cannot drift silently — which is the property the import would have bought.
|
|
59
|
-
*/
|
|
60
|
-
export const TRUNCATION_MARK = '...';
|
|
61
|
-
/** The note emitted when exactly one side ends with a newline. */
|
|
62
|
-
export const NO_NEWLINE_NOTE = '(no newline at end of file)';
|
|
63
|
-
// ---------------------------------------------------------------------------
|
|
64
|
-
// Entry point
|
|
65
|
-
// ---------------------------------------------------------------------------
|
|
66
|
-
export function buildPatch(oldText, newText, options) {
|
|
67
|
-
const context = clampContext(options.context);
|
|
68
|
-
const oldLines = oldText === null ? [] : splitLines(oldText);
|
|
69
|
-
const newLines = splitLines(newText);
|
|
70
|
-
const rows = oldText === null
|
|
71
|
-
? newLines.map((_, i) => ({ kind: 'add', b: i }))
|
|
72
|
-
: collectRows(oldLines, newLines, context);
|
|
73
|
-
if (oldText !== null && endsWithNewline(oldText) !== endsWithNewline(newText)) {
|
|
74
|
-
rows.push({ kind: 'ctx', note: true });
|
|
75
|
-
}
|
|
76
|
-
// Counted BEFORE truncation, so the `+6 -5` summary always describes the real
|
|
77
|
-
// change even when the body is clipped.
|
|
78
|
-
let added = 0;
|
|
79
|
-
let removed = 0;
|
|
80
|
-
for (const row of rows) {
|
|
81
|
-
if (row.kind === 'add')
|
|
82
|
-
added += 1;
|
|
83
|
-
else if (row.kind === 'del')
|
|
84
|
-
removed += 1;
|
|
85
|
-
}
|
|
86
|
-
const budgeted = applyBudgets(assembleHunks(rows, oldLines, newLines, context));
|
|
87
|
-
return {
|
|
88
|
-
path: options.path,
|
|
89
|
-
kind: oldText === null && !options.degraded ? 'create' : 'update',
|
|
90
|
-
added,
|
|
91
|
-
removed,
|
|
92
|
-
hunks: budgeted.hunks,
|
|
93
|
-
truncated: budgeted.truncated,
|
|
94
|
-
lineCount: budgeted.lineCount,
|
|
95
|
-
...(options.degraded ? { degraded: options.degraded } : {}),
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
// ---------------------------------------------------------------------------
|
|
99
|
-
// Step 0 — split and normalize
|
|
100
|
-
// ---------------------------------------------------------------------------
|
|
101
|
-
/**
|
|
102
|
-
* Split on `\n`, dropping the phantom trailing element a file-final newline
|
|
103
|
-
* produces. An empty string is ZERO lines, not one empty line.
|
|
104
|
-
*
|
|
105
|
-
* The RAW string is what later comparisons see, `\r` included: a CRLF-to-LF
|
|
106
|
-
* conversion is a change and must be reported as one. Only `PatchLine.text` has
|
|
107
|
-
* the CR stripped, and only for rendering.
|
|
108
|
-
*/
|
|
109
|
-
function splitLines(text) {
|
|
110
|
-
if (text.length === 0)
|
|
111
|
-
return [];
|
|
112
|
-
const lines = text.split('\n');
|
|
113
|
-
if (lines[lines.length - 1] === '')
|
|
114
|
-
lines.pop();
|
|
115
|
-
return lines;
|
|
116
|
-
}
|
|
117
|
-
function endsWithNewline(text) {
|
|
118
|
-
return text.endsWith('\n');
|
|
119
|
-
}
|
|
120
|
-
function renderText(raw) {
|
|
121
|
-
return raw.endsWith('\r') ? raw.slice(0, -1) : raw;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* The context width, clamped to HALF the merge gap.
|
|
125
|
-
*
|
|
126
|
-
* The ceiling is structural, not taste: two groups survive as separate hunks
|
|
127
|
-
* only when more than `mergeGap` context rows separate them, and each is then
|
|
128
|
-
* expanded by `context` rows from its own side. At `context > mergeGap / 2` the
|
|
129
|
-
* two expansions overlap and the same source row is rendered twice, under two
|
|
130
|
-
* different line numbers, with nothing reporting it. Both callers pass 3 or 2.
|
|
131
|
-
*/
|
|
132
|
-
function clampContext(requested) {
|
|
133
|
-
const ceiling = Math.floor(PATCH_LIMITS.mergeGap / 2);
|
|
134
|
-
if (requested === undefined || !Number.isFinite(requested)) {
|
|
135
|
-
return Math.min(PATCH_LIMITS.context, ceiling);
|
|
136
|
-
}
|
|
137
|
-
return Math.max(0, Math.min(ceiling, Math.floor(requested)));
|
|
138
|
-
}
|
|
139
|
-
// ---------------------------------------------------------------------------
|
|
140
|
-
// Steps 2-3 — trim, then the anchored split
|
|
141
|
-
// ---------------------------------------------------------------------------
|
|
142
|
-
/**
|
|
143
|
-
* Trim the common prefix and suffix, diff the middle, and emit at most `context`
|
|
144
|
-
* unchanged rows on either side.
|
|
145
|
-
*
|
|
146
|
-
* Emitting only the fringe rather than the whole file is what keeps this O(change)
|
|
147
|
-
* in allocations: a one-line edit in a 50 000-line file builds a handful of rows,
|
|
148
|
-
* not fifty thousand.
|
|
149
|
-
*/
|
|
150
|
-
function collectRows(oldLines, newLines, context) {
|
|
151
|
-
let start = 0;
|
|
152
|
-
const maxStart = Math.min(oldLines.length, newLines.length);
|
|
153
|
-
while (start < maxStart && oldLines[start] === newLines[start])
|
|
154
|
-
start += 1;
|
|
155
|
-
let endOld = oldLines.length - 1;
|
|
156
|
-
let endNew = newLines.length - 1;
|
|
157
|
-
while (endOld >= start && endNew >= start && oldLines[endOld] === newLines[endNew]) {
|
|
158
|
-
endOld -= 1;
|
|
159
|
-
endNew -= 1;
|
|
160
|
-
}
|
|
161
|
-
// Identical files: no hunks at all, rather than today's stray context rows.
|
|
162
|
-
if (start > endOld && start > endNew)
|
|
163
|
-
return [];
|
|
164
|
-
const rows = [];
|
|
165
|
-
const lead = Math.min(context, start);
|
|
166
|
-
for (let i = start - lead; i < start; i += 1)
|
|
167
|
-
rows.push({ kind: 'ctx', a: i, b: i });
|
|
168
|
-
const middle = { aLo: start, aHi: endOld, bLo: start, bHi: endNew };
|
|
169
|
-
for (const row of diffRange(oldLines, newLines, middle, 0))
|
|
170
|
-
rows.push(row);
|
|
171
|
-
const tail = Math.min(context, oldLines.length - 1 - endOld);
|
|
172
|
-
for (let k = 1; k <= tail; k += 1)
|
|
173
|
-
rows.push({ kind: 'ctx', a: endOld + k, b: endNew + k });
|
|
174
|
-
return rows;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Patience-style recursive split.
|
|
178
|
-
*
|
|
179
|
-
* TERMINATION: the three degenerate cases and the depth cap return leaves
|
|
180
|
-
* outright; the recursive branch only runs when at least one anchor was kept,
|
|
181
|
-
* and every sub-range it builds excludes that anchor's rows on both sides — so
|
|
182
|
-
* each call is on a strictly smaller range.
|
|
183
|
-
*/
|
|
184
|
-
function diffRange(a, b, r, depth) {
|
|
185
|
-
if (r.aLo > r.aHi && r.bLo > r.bHi)
|
|
186
|
-
return [];
|
|
187
|
-
if (r.aLo > r.aHi)
|
|
188
|
-
return addRows(r.bLo, r.bHi);
|
|
189
|
-
if (r.bLo > r.bHi)
|
|
190
|
-
return delRows(r.aLo, r.aHi);
|
|
191
|
-
if (depth >= PATCH_LIMITS.maxDepth)
|
|
192
|
-
return blockReplace(r);
|
|
193
|
-
const anchors = pickAnchors(a, b, r);
|
|
194
|
-
if (anchors.length === 0) {
|
|
195
|
-
const cells = (r.aHi - r.aLo + 1) * (r.bHi - r.bLo + 1);
|
|
196
|
-
return cells <= PATCH_LIMITS.lcsCellBudget ? lcsDiff(a, b, r) : blockReplace(r);
|
|
197
|
-
}
|
|
198
|
-
const out = [];
|
|
199
|
-
let ai = r.aLo;
|
|
200
|
-
let bi = r.bLo;
|
|
201
|
-
for (const anchor of anchors) {
|
|
202
|
-
const gap = { aLo: ai, aHi: anchor.a - 1, bLo: bi, bHi: anchor.b - 1 };
|
|
203
|
-
for (const row of diffRange(a, b, gap, depth + 1))
|
|
204
|
-
out.push(row);
|
|
205
|
-
out.push({ kind: 'ctx', a: anchor.a, b: anchor.b });
|
|
206
|
-
ai = anchor.a + 1;
|
|
207
|
-
bi = anchor.b + 1;
|
|
208
|
-
}
|
|
209
|
-
const rest = { aLo: ai, aHi: r.aHi, bLo: bi, bHi: r.bHi };
|
|
210
|
-
for (const row of diffRange(a, b, rest, depth + 1))
|
|
211
|
-
out.push(row);
|
|
212
|
-
return out;
|
|
213
|
-
}
|
|
214
|
-
function addRows(lo, hi) {
|
|
215
|
-
const out = [];
|
|
216
|
-
for (let i = lo; i <= hi; i += 1)
|
|
217
|
-
out.push({ kind: 'add', b: i });
|
|
218
|
-
return out;
|
|
219
|
-
}
|
|
220
|
-
function delRows(lo, hi) {
|
|
221
|
-
const out = [];
|
|
222
|
-
for (let i = lo; i <= hi; i += 1)
|
|
223
|
-
out.push({ kind: 'del', a: i });
|
|
224
|
-
return out;
|
|
225
|
-
}
|
|
226
|
-
/** Today's behaviour, kept as the bounded fallback: every del, then every add. */
|
|
227
|
-
function blockReplace(r) {
|
|
228
|
-
return [...delRows(r.aLo, r.aHi), ...addRows(r.bLo, r.bHi)];
|
|
229
|
-
}
|
|
230
|
-
/** Lines occurring EXACTLY ONCE on both sides, kept in a common increasing order. */
|
|
231
|
-
function pickAnchors(a, b, r) {
|
|
232
|
-
const aSeen = new Map();
|
|
233
|
-
const aAt = new Map();
|
|
234
|
-
for (let i = r.aLo; i <= r.aHi; i += 1) {
|
|
235
|
-
const line = a[i];
|
|
236
|
-
aSeen.set(line, (aSeen.get(line) ?? 0) + 1);
|
|
237
|
-
aAt.set(line, i);
|
|
238
|
-
}
|
|
239
|
-
const bSeen = new Map();
|
|
240
|
-
const bAt = new Map();
|
|
241
|
-
for (let i = r.bLo; i <= r.bHi; i += 1) {
|
|
242
|
-
const line = b[i];
|
|
243
|
-
bSeen.set(line, (bSeen.get(line) ?? 0) + 1);
|
|
244
|
-
bAt.set(line, i);
|
|
245
|
-
}
|
|
246
|
-
const pairs = [];
|
|
247
|
-
for (const [line, count] of aSeen) {
|
|
248
|
-
if (count !== 1 || bSeen.get(line) !== 1)
|
|
249
|
-
continue;
|
|
250
|
-
pairs.push({ a: aAt.get(line), b: bAt.get(line) });
|
|
251
|
-
}
|
|
252
|
-
pairs.sort((x, y) => x.a - y.a);
|
|
253
|
-
return longestIncreasingByB(pairs);
|
|
254
|
-
}
|
|
255
|
-
/** Longest strictly-increasing subsequence by `b`, via binary-searched piles. */
|
|
256
|
-
function longestIncreasingByB(pairs) {
|
|
257
|
-
const tails = [];
|
|
258
|
-
const prev = new Array(pairs.length).fill(-1);
|
|
259
|
-
for (let i = 0; i < pairs.length; i += 1) {
|
|
260
|
-
let lo = 0;
|
|
261
|
-
let hi = tails.length;
|
|
262
|
-
while (lo < hi) {
|
|
263
|
-
const mid = (lo + hi) >> 1;
|
|
264
|
-
if (pairs[tails[mid]].b < pairs[i].b)
|
|
265
|
-
lo = mid + 1;
|
|
266
|
-
else
|
|
267
|
-
hi = mid;
|
|
268
|
-
}
|
|
269
|
-
if (lo > 0)
|
|
270
|
-
prev[i] = tails[lo - 1];
|
|
271
|
-
tails[lo] = i;
|
|
272
|
-
}
|
|
273
|
-
const out = [];
|
|
274
|
-
let k = tails.length > 0 ? tails[tails.length - 1] : -1;
|
|
275
|
-
while (k >= 0) {
|
|
276
|
-
out.push(pairs[k]);
|
|
277
|
-
k = prev[k];
|
|
278
|
-
}
|
|
279
|
-
return out.reverse();
|
|
280
|
-
}
|
|
281
|
-
/** Textbook LCS over a leaf small enough to afford it (`lcsCellBudget`). */
|
|
282
|
-
function lcsDiff(a, b, r) {
|
|
283
|
-
const n = r.aHi - r.aLo + 1;
|
|
284
|
-
const m = r.bHi - r.bLo + 1;
|
|
285
|
-
const width = m + 1;
|
|
286
|
-
const dp = new Int32Array((n + 1) * width);
|
|
287
|
-
for (let i = n - 1; i >= 0; i -= 1) {
|
|
288
|
-
for (let j = m - 1; j >= 0; j -= 1) {
|
|
289
|
-
dp[i * width + j] =
|
|
290
|
-
a[r.aLo + i] === b[r.bLo + j]
|
|
291
|
-
? dp[(i + 1) * width + j + 1] + 1
|
|
292
|
-
: Math.max(dp[(i + 1) * width + j], dp[i * width + j + 1]);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
const out = [];
|
|
296
|
-
let i = 0;
|
|
297
|
-
let j = 0;
|
|
298
|
-
while (i < n && j < m) {
|
|
299
|
-
if (a[r.aLo + i] === b[r.bLo + j]) {
|
|
300
|
-
out.push({ kind: 'ctx', a: r.aLo + i, b: r.bLo + j });
|
|
301
|
-
i += 1;
|
|
302
|
-
j += 1;
|
|
303
|
-
}
|
|
304
|
-
else if (dp[(i + 1) * width + j] >= dp[i * width + j + 1]) {
|
|
305
|
-
out.push({ kind: 'del', a: r.aLo + i });
|
|
306
|
-
i += 1;
|
|
307
|
-
}
|
|
308
|
-
else {
|
|
309
|
-
out.push({ kind: 'add', b: r.bLo + j });
|
|
310
|
-
j += 1;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
for (; i < n; i += 1)
|
|
314
|
-
out.push({ kind: 'del', a: r.aLo + i });
|
|
315
|
-
for (; j < m; j += 1)
|
|
316
|
-
out.push({ kind: 'add', b: r.bLo + j });
|
|
317
|
-
return out;
|
|
318
|
-
}
|
|
319
|
-
// ---------------------------------------------------------------------------
|
|
320
|
-
// Step 4 — hunks
|
|
321
|
-
// ---------------------------------------------------------------------------
|
|
322
|
-
/**
|
|
323
|
-
* Group changed rows into hunks, expanding each group by `context` rows.
|
|
324
|
-
*
|
|
325
|
-
* THE NOTE ROW COUNTS AS A CHANGE for grouping purposes even though it renders
|
|
326
|
-
* as context: a file whose ONLY difference is its final newline has no `add` and
|
|
327
|
-
* no `del` row at all, and grouping on kind alone would produce zero hunks and
|
|
328
|
-
* report the change as nothing.
|
|
329
|
-
*/
|
|
330
|
-
function assembleHunks(rows, oldLines, newLines, context) {
|
|
331
|
-
const changed = [];
|
|
332
|
-
for (let i = 0; i < rows.length; i += 1) {
|
|
333
|
-
const row = rows[i];
|
|
334
|
-
if (row.kind !== 'ctx' || row.note)
|
|
335
|
-
changed.push(i);
|
|
336
|
-
}
|
|
337
|
-
if (changed.length === 0)
|
|
338
|
-
return [];
|
|
339
|
-
const groups = [];
|
|
340
|
-
let from = changed[0];
|
|
341
|
-
let to = changed[0];
|
|
342
|
-
for (let k = 1; k < changed.length; k += 1) {
|
|
343
|
-
const idx = changed[k];
|
|
344
|
-
if (idx - to - 1 <= PATCH_LIMITS.mergeGap) {
|
|
345
|
-
to = idx;
|
|
346
|
-
continue;
|
|
347
|
-
}
|
|
348
|
-
groups.push([from, to]);
|
|
349
|
-
from = idx;
|
|
350
|
-
to = idx;
|
|
351
|
-
}
|
|
352
|
-
groups.push([from, to]);
|
|
353
|
-
return groups.map(([lo, hi]) => {
|
|
354
|
-
const slice = rows.slice(Math.max(0, lo - context), Math.min(rows.length, hi + context + 1));
|
|
355
|
-
return makeHunk(slice.map((row) => toPatchLine(row, oldLines, newLines)));
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
function toPatchLine(row, oldLines, newLines) {
|
|
359
|
-
if (row.note)
|
|
360
|
-
return { kind: 'ctx', text: NO_NEWLINE_NOTE };
|
|
361
|
-
const line = { kind: row.kind, text: '' };
|
|
362
|
-
if (row.a !== undefined) {
|
|
363
|
-
line.oldLine = row.a + 1;
|
|
364
|
-
line.text = renderText(oldLines[row.a]);
|
|
365
|
-
}
|
|
366
|
-
if (row.b !== undefined) {
|
|
367
|
-
line.newLine = row.b + 1;
|
|
368
|
-
line.text = renderText(newLines[row.b]);
|
|
369
|
-
}
|
|
370
|
-
return line;
|
|
371
|
-
}
|
|
372
|
-
/** Derive the `@@` header numbers from the rows the hunk actually carries. */
|
|
373
|
-
function makeHunk(lines) {
|
|
374
|
-
let oldStart = 0;
|
|
375
|
-
let oldCount = 0;
|
|
376
|
-
let newStart = 0;
|
|
377
|
-
let newCount = 0;
|
|
378
|
-
for (const line of lines) {
|
|
379
|
-
if (line.oldLine !== undefined) {
|
|
380
|
-
if (oldCount === 0)
|
|
381
|
-
oldStart = line.oldLine;
|
|
382
|
-
oldCount += 1;
|
|
383
|
-
}
|
|
384
|
-
if (line.newLine !== undefined) {
|
|
385
|
-
if (newCount === 0)
|
|
386
|
-
newStart = line.newLine;
|
|
387
|
-
newCount += 1;
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
|
-
return { oldStart, oldCount, newStart, newCount, lines };
|
|
391
|
-
}
|
|
392
|
-
/**
|
|
393
|
-
* Clip long rows, then drop whole hunks from the TAIL until the row and
|
|
394
|
-
* character budgets hold. Tail-first, because the top of a change is where a
|
|
395
|
-
* reader starts.
|
|
396
|
-
*
|
|
397
|
-
* THE FIRST HUNK IS KEPT EVEN WHEN IT ALONE EXCEEDS THE BUDGET, and its rows are
|
|
398
|
-
* clipped from the tail instead. A 300-line `write_file` is one hunk of 300 add
|
|
399
|
-
* rows against a 200-row ceiling: dropping whole hunks only would leave ZERO,
|
|
400
|
-
* and the card would render a `+300 -0` summary over nothing — precisely the
|
|
401
|
-
* "reported as a byte count" failure this feature exists to fix (see the Issues
|
|
402
|
-
* Found section of the design).
|
|
403
|
-
*/
|
|
404
|
-
function applyBudgets(input) {
|
|
405
|
-
const hunks = input.map(clipHunkText);
|
|
406
|
-
let rows = 0;
|
|
407
|
-
let chars = 0;
|
|
408
|
-
let keep = 0;
|
|
409
|
-
for (const hunk of hunks) {
|
|
410
|
-
const hunkRows = hunk.lines.length;
|
|
411
|
-
const hunkChars = hunk.lines.reduce((n, line) => n + line.text.length, 0);
|
|
412
|
-
const fits = rows + hunkRows <= PATCH_LIMITS.maxLines && chars + hunkChars <= PATCH_LIMITS.maxChars;
|
|
413
|
-
// The FIRST hunk is accepted whether or not it fits; see the note above.
|
|
414
|
-
if (keep > 0 && !fits)
|
|
415
|
-
break;
|
|
416
|
-
rows += hunkRows;
|
|
417
|
-
chars += hunkChars;
|
|
418
|
-
keep += 1;
|
|
419
|
-
}
|
|
420
|
-
const kept = hunks.slice(0, Math.max(1, Math.min(keep, hunks.length)));
|
|
421
|
-
let truncated = kept.length < hunks.length;
|
|
422
|
-
if (rows > PATCH_LIMITS.maxLines || chars > PATCH_LIMITS.maxChars) {
|
|
423
|
-
kept[0] = clipHunkRows(kept[0]);
|
|
424
|
-
truncated = true;
|
|
425
|
-
}
|
|
426
|
-
return {
|
|
427
|
-
hunks: kept,
|
|
428
|
-
truncated,
|
|
429
|
-
lineCount: kept.reduce((n, hunk) => n + hunk.lines.length, 0),
|
|
430
|
-
};
|
|
431
|
-
}
|
|
432
|
-
function clipHunkText(hunk) {
|
|
433
|
-
return {
|
|
434
|
-
...hunk,
|
|
435
|
-
lines: hunk.lines.map((line) => line.text.length <= PATCH_LIMITS.maxLineChars
|
|
436
|
-
? line
|
|
437
|
-
: { ...line, text: `${line.text.slice(0, PATCH_LIMITS.maxLineChars)}${TRUNCATION_MARK}` }),
|
|
438
|
-
};
|
|
439
|
-
}
|
|
440
|
-
/** Keep the head of one hunk's rows, and re-derive its header numbers from it. */
|
|
441
|
-
function clipHunkRows(hunk) {
|
|
442
|
-
const lines = [];
|
|
443
|
-
let chars = 0;
|
|
444
|
-
for (const line of hunk.lines) {
|
|
445
|
-
if (lines.length >= PATCH_LIMITS.maxLines)
|
|
446
|
-
break;
|
|
447
|
-
if (lines.length > 0 && chars + line.text.length > PATCH_LIMITS.maxChars)
|
|
448
|
-
break;
|
|
449
|
-
lines.push(line);
|
|
450
|
-
chars += line.text.length;
|
|
451
|
-
}
|
|
452
|
-
return makeHunk(lines);
|
|
453
|
-
}
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Raw child-process output to terminal-safe rows (agent-activity-presentation-live
|
|
3
|
-
* L2 / §3.2).
|
|
4
|
-
*
|
|
5
|
-
* NOTHING ELSE IN THIS TREE STRIPS ANSI (E-13). `renderBash` hands each line to
|
|
6
|
-
* `<Text>` unmodified (`ui/entries/ToolPreview.tsx:180`), and that survives only
|
|
7
|
-
* because the settled preview is printed ONCE, after the command has stopped
|
|
8
|
-
* writing. Redraw the same text every frame while the child is still emitting
|
|
9
|
-
* `\r`-rewritten progress bars and `\x1b[A` cursor moves and it stops being
|
|
10
|
-
* survivable: the terminal honours cursor motion Ink does not know it emitted,
|
|
11
|
-
* and `wrappedRows` measures escape bytes as if they were columns.
|
|
12
|
-
*
|
|
13
|
-
* So this module is the boundary. It runs ONCE, inside the store's `append`
|
|
14
|
-
* (§3.1.1), and every reader downstream is already safe.
|
|
15
|
-
*
|
|
16
|
-
* Pure, ASCII-only, React-free, Ink-free, and TOTAL: `sanitizeChunk` never
|
|
17
|
-
* throws, for any input including lone surrogates, NUL bytes, a chunk consisting
|
|
18
|
-
* solely of `\x1b`, and a 4 MB chunk containing no `\n` at all.
|
|
19
|
-
*
|
|
20
|
-
* D-27 — IT STRIPS, IT DOES NOT INTERPRET. Keeping colour would mean validating
|
|
21
|
-
* it (an unterminated SGR leaks its attribute into the rest of the frame), and
|
|
22
|
-
* interpreting cursor motion would mean owning a screen buffer. Neither is a
|
|
23
|
-
* presentation round's job.
|
|
24
|
-
*/
|
|
25
|
-
/** Columns a live row may occupy before it is clipped. */
|
|
26
|
-
export declare const LIVE_ROW_MAX_CHARS = 200;
|
|
27
|
-
/** Tab stop width, matching every terminal's default. */
|
|
28
|
-
export declare const TAB_WIDTH = 8;
|
|
29
|
-
/**
|
|
30
|
-
* The in-progress line's ceiling before it is flushed as a row (§3.2 step 7).
|
|
31
|
-
*
|
|
32
|
-
* AFTER STEP 4 THIS IS A RARE PATH RATHER THAN THE PROGRESS-BAR PATH (D-33). A
|
|
33
|
-
* `\r`-rewritten bar collapses to one row however many times it is redrawn, so
|
|
34
|
-
* reaching 400 characters with no `\n` requires a line that is genuinely that
|
|
35
|
-
* long -- `cat` on a minified bundle. Without the bound the carry is an
|
|
36
|
-
* unbounded accumulator.
|
|
37
|
-
*/
|
|
38
|
-
export declare const CARRY_MAX_CHARS: number;
|
|
39
|
-
/**
|
|
40
|
-
* Appended to a row clipped at `LIVE_ROW_MAX_CHARS`.
|
|
41
|
-
*
|
|
42
|
-
* SPELLED HERE RATHER THAN IMPORTED from `agent/reducer.ts`, the rule
|
|
43
|
-
* `patch.ts:95-103` already states for the identical string: `tools/` keeps no
|
|
44
|
-
* runtime dependency on the view model for three characters, and
|
|
45
|
-
* `terminal-output.test.ts` asserts the spellings are equal so the pair cannot
|
|
46
|
-
* drift silently.
|
|
47
|
-
*/
|
|
48
|
-
export declare const TRUNCATION_MARK = "...";
|
|
49
|
-
export interface SanitizeResult {
|
|
50
|
-
/** Complete rows, terminal-safe, in order. Each at most `LIVE_ROW_MAX_CHARS` (+ mark). */
|
|
51
|
-
rows: string[];
|
|
52
|
-
/**
|
|
53
|
-
* The in-progress line: stripped, `\r`-collapsed and tab-expanded, bounded by
|
|
54
|
-
* `CARRY_MAX_CHARS`.
|
|
55
|
-
*
|
|
56
|
-
* THIS IS STATE, NOT A ROW, and the difference is load-bearing. It is threaded
|
|
57
|
-
* back into the next `sanitizeChunk` call verbatim, so it is deliberately NOT
|
|
58
|
-
* clipped (a `'...'` spliced into the middle of a line the command is still
|
|
59
|
-
* writing would then be overwritten INTO the stream) and it may carry a
|
|
60
|
-
* trailing incomplete escape awaiting its final byte. Render it with
|
|
61
|
-
* `toDisplayRow`, never directly.
|
|
62
|
-
*/
|
|
63
|
-
carry: string;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Remove every escape sequence and control byte except `\t` `\n` `\r`.
|
|
67
|
-
*
|
|
68
|
-
* SEQUENCE SYNTAX HAS ONE OWNER (`input/control-sequences.ts`); this function
|
|
69
|
-
* adds only the control-byte sweep a DISPLAY row wants. Both call sites in this
|
|
70
|
-
* module already cut an unfinished escape off into the carry before calling it
|
|
71
|
-
* (`partialEscapeStart`), so the shared one-shot rule for a truncated sequence
|
|
72
|
-
* is exactly what they need -- and it fixes AC-24's failure in place: the old
|
|
73
|
-
* two-byte rule consumed the `\x1b[` of an unfinished CSI and left the
|
|
74
|
-
* PARAMETERS behind, so `\x1b[31m` split across chunks rendered as `red 3`.
|
|
75
|
-
*
|
|
76
|
-
* Exported for the tests, and used by `toDisplayRow` as the second line of
|
|
77
|
-
* defence over a carry that ends mid-escape.
|
|
78
|
-
*/
|
|
79
|
-
export declare function stripAnsi(text: string): string;
|
|
80
|
-
/**
|
|
81
|
-
* Apply `\r` as the LINE REWRITE it is (§3.2 step 4 / D-33).
|
|
82
|
-
*
|
|
83
|
-
* A piece containing `\r` is a sequence of overwrites, so the later segment
|
|
84
|
-
* replaces the earlier one's PREFIX and anything the earlier one had beyond it
|
|
85
|
-
* survives -- which is what a real terminal shows, and what keeps R-6's classic
|
|
86
|
-
* `\r`-only tooling from losing content. A thousand progress-bar rewrites
|
|
87
|
-
* collapse to one row holding the final state.
|
|
88
|
-
*/
|
|
89
|
-
export declare function applyCarriageReturns(piece: string): string;
|
|
90
|
-
/** Expand tabs to the next multiple of `TAB_WIDTH`. */
|
|
91
|
-
export declare function expandTabs(row: string): string;
|
|
92
|
-
/** Clip a row at `LIVE_ROW_MAX_CHARS`, marking the cut. */
|
|
93
|
-
export declare function clipRow(row: string): string;
|
|
94
|
-
/**
|
|
95
|
-
* The carry as a RENDERED row: the held-back incomplete escape removed, then
|
|
96
|
-
* stripped and clipped.
|
|
97
|
-
*
|
|
98
|
-
* THE PARTIAL MUST BE CUT OFF, NOT STRIPPED (AC-24). `stripAnsi` alone is not
|
|
99
|
-
* enough and fails in the visible direction: its two-byte rule consumes the
|
|
100
|
-
* `\x1b[` of an unfinished CSI and leaves the PARAMETERS behind, so a chunk that
|
|
101
|
-
* split inside `\x1b[31m` renders as `red 3`. The bytes are held for the next
|
|
102
|
-
* chunk to complete; until then they are not text.
|
|
103
|
-
*/
|
|
104
|
-
export declare function toDisplayRow(carry: string): string;
|
|
105
|
-
/**
|
|
106
|
-
* Turn a raw chunk into complete rows plus the in-progress line.
|
|
107
|
-
*
|
|
108
|
-
* The order of the steps IS the specification (§3.2), and step 4's "every piece,
|
|
109
|
-
* THE INCOMPLETE TAIL INCLUDED" is the whole of P0-1: a progress bar emits no
|
|
110
|
-
* `\n` for its entire run, so a rule that collapsed only completed lines would
|
|
111
|
-
* never run for npm, pip, curl, docker or any other `\r` writer -- the tail
|
|
112
|
-
* would stay empty, `showLive` false, and the card the single `running` row this
|
|
113
|
-
* round exists to replace.
|
|
114
|
-
*/
|
|
115
|
-
export declare function sanitizeChunk(carry: string, chunk: string): SanitizeResult;
|