@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,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer editor state — F3 of tui-input-flicker-fix (§3.4).
|
|
3
|
-
*
|
|
4
|
-
* Ink creates its container with tag `0` — a LEGACY React root
|
|
5
|
-
* (`ink/build/ink.js:59-61`). In a legacy root, `setState` called outside a
|
|
6
|
-
* React event handler is NOT batched: each call schedules and immediately
|
|
7
|
-
* flushes a synchronous render. `useInput`'s callback runs from a stdin
|
|
8
|
-
* `'data'` listener, which is outside React entirely, so `PromptInput.insert`'s
|
|
9
|
-
* five `setState` calls became five commits, five whole-tree Yoga layouts, and
|
|
10
|
-
* — through Ink's 32 ms leading+trailing throttle — TWO full-frame repaints per
|
|
11
|
-
* printable character (§2 R3). The flicker got worse the faster the user typed,
|
|
12
|
-
* which is exactly what the report described.
|
|
13
|
-
*
|
|
14
|
-
* Collapsing the five always-together pieces of state into one reducer makes a
|
|
15
|
-
* keystroke cost one commit. `fileMatches` deliberately stays a separate
|
|
16
|
-
* `useState` in the component: it is written from the debounced async glob
|
|
17
|
-
* effect, not from the key handler, so folding it in here would couple two
|
|
18
|
-
* unrelated update sources.
|
|
19
|
-
*
|
|
20
|
-
* THE RULE A REVIEWER SHOULD CHECK LINE BY LINE: every branch of the `useInput`
|
|
21
|
-
* callback performs at most ONE `dispatch` and then returns.
|
|
22
|
-
*
|
|
23
|
-
* Extracted from the component so it is unit-testable without mounting Ink.
|
|
24
|
-
*/
|
|
25
|
-
import { expandRangeOverTokens, formatPasteToken, makePasteRecord, referencedIds, shouldCollapse, snapOutOfToken, } from './paste-tokens.js';
|
|
26
|
-
import { snapGrapheme, stepGrapheme } from './editor-navigation.js';
|
|
27
|
-
const NO_PASTES = new Map();
|
|
28
|
-
export const INITIAL_EDITOR_STATE = {
|
|
29
|
-
buffer: '',
|
|
30
|
-
cursor: 0,
|
|
31
|
-
historyIndex: null,
|
|
32
|
-
dismissed: false,
|
|
33
|
-
sel: 0,
|
|
34
|
-
pastes: NO_PASTES,
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* The three flags `resetDraftFlags()` used to clear with three separate
|
|
38
|
-
* `setState` calls.
|
|
39
|
-
*
|
|
40
|
-
* Every action that CHANGES THE BUFFER resets them, and that is the pre-existing
|
|
41
|
-
* semantics rather than a new rule: an edit invalidates the history cursor (the
|
|
42
|
-
* draft is no longer the recalled entry), un-dismisses the popup (the user is
|
|
43
|
-
* typing again, so suggestions should come back), and re-homes the selection
|
|
44
|
-
* (the candidate list is about to be recomputed).
|
|
45
|
-
*/
|
|
46
|
-
const DRAFT_FLAGS = {
|
|
47
|
-
historyIndex: null, dismissed: false, sel: 0, preferredVisualColumn: undefined,
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Drop payloads the buffer no longer references (I-7).
|
|
51
|
-
*
|
|
52
|
-
* A WRAPPER, NOT A LINE IN ONE BRANCH (P1-6). v1 of the design pruned only inside
|
|
53
|
-
* `input`, which leaves `replace` (the action behind `Ctrl+U` / `Ctrl+K` /
|
|
54
|
-
* `Ctrl+W` and every `applyEdit`), `backspace` and `recall` able to delete a token
|
|
55
|
-
* without releasing its payload. A rule the body contradicts is worse than no
|
|
56
|
-
* rule, because the next reader trusts the invariant.
|
|
57
|
-
*
|
|
58
|
-
* `moveCursor`, `select` and `dismiss` do not change the buffer and are left
|
|
59
|
-
* alone, which keeps their "return the same object so React bails out" property.
|
|
60
|
-
*/
|
|
61
|
-
function withPrune(next) {
|
|
62
|
-
if (next.pastes.size === 0)
|
|
63
|
-
return next;
|
|
64
|
-
const live = referencedIds(next.buffer);
|
|
65
|
-
// EVERY held id is tested, rather than `live.size === next.pastes.size`.
|
|
66
|
-
// Equal counts do not mean equal sets: `referencedIds` reads the BUFFER, which
|
|
67
|
-
// can name an id this map never held — a user who types `[Pasted text #99 +2
|
|
68
|
-
// lines]` by hand, or edits the number inside a real token. One such id
|
|
69
|
-
// balances out one deleted token and the cheap check then returns early with a
|
|
70
|
-
// payload the buffer no longer references, which is the leak I-7 forbids.
|
|
71
|
-
let stale = false;
|
|
72
|
-
for (const id of next.pastes.keys()) {
|
|
73
|
-
if (!live.has(id)) {
|
|
74
|
-
stale = true;
|
|
75
|
-
break;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
if (!stale)
|
|
79
|
-
return next;
|
|
80
|
-
const kept = new Map();
|
|
81
|
-
for (const [id, record] of next.pastes)
|
|
82
|
-
if (live.has(id))
|
|
83
|
-
kept.set(id, record);
|
|
84
|
-
return { ...next, pastes: kept };
|
|
85
|
-
}
|
|
86
|
-
export function editorReducer(state, action) {
|
|
87
|
-
switch (action.type) {
|
|
88
|
-
case 'adopt':
|
|
89
|
-
return withPrune(action.state);
|
|
90
|
-
case 'insert': {
|
|
91
|
-
// D-8: typing can never land INSIDE a token. A no-op on a buffer with no
|
|
92
|
-
// tokens, which is every buffer until the first collapse.
|
|
93
|
-
const cursor = snapOutOfToken(state.buffer, snapGrapheme(state.buffer, state.cursor));
|
|
94
|
-
const buffer = state.buffer.slice(0, cursor) + action.text + state.buffer.slice(cursor);
|
|
95
|
-
return withPrune({
|
|
96
|
-
...state,
|
|
97
|
-
...DRAFT_FLAGS,
|
|
98
|
-
buffer,
|
|
99
|
-
cursor: snapGrapheme(buffer, cursor + action.text.length, true),
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
case 'replace':
|
|
103
|
-
return withPrune({
|
|
104
|
-
...state,
|
|
105
|
-
...DRAFT_FLAGS,
|
|
106
|
-
buffer: action.buffer,
|
|
107
|
-
cursor: snapGrapheme(action.buffer, action.cursor),
|
|
108
|
-
});
|
|
109
|
-
case 'backspace':
|
|
110
|
-
case 'delete': {
|
|
111
|
-
const cursor = snapGrapheme(state.buffer, state.cursor);
|
|
112
|
-
const backwards = action.type === 'backspace';
|
|
113
|
-
if (backwards ? cursor <= 0 : cursor >= state.buffer.length)
|
|
114
|
-
return state;
|
|
115
|
-
// G5: one `Backspace` immediately after `...lines]` removes the whole
|
|
116
|
-
// token and releases its payload, in ONE dispatch.
|
|
117
|
-
const other = stepGrapheme(state.buffer, cursor, backwards ? 'left' : 'right');
|
|
118
|
-
const range = expandRangeOverTokens(state.buffer, backwards ? other : cursor, backwards ? cursor : other);
|
|
119
|
-
const buffer = state.buffer.slice(0, range.from) + state.buffer.slice(range.to);
|
|
120
|
-
return withPrune({
|
|
121
|
-
...state,
|
|
122
|
-
...DRAFT_FLAGS,
|
|
123
|
-
buffer,
|
|
124
|
-
cursor: snapGrapheme(buffer, range.from),
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
case 'input': {
|
|
128
|
-
let buffer = state.buffer;
|
|
129
|
-
let cursor = snapOutOfToken(buffer, snapGrapheme(buffer, state.cursor));
|
|
130
|
-
let pastes = null;
|
|
131
|
-
for (const segment of action.segments) {
|
|
132
|
-
const collapse = segment.kind === 'paste' && shouldCollapse(segment.text);
|
|
133
|
-
let text = segment.text;
|
|
134
|
-
if (collapse) {
|
|
135
|
-
const record = makePasteRecord(segment.id, segment.text);
|
|
136
|
-
text = formatPasteToken(record);
|
|
137
|
-
pastes = pastes ?? new Map(state.pastes);
|
|
138
|
-
pastes.set(record.id, record);
|
|
139
|
-
}
|
|
140
|
-
buffer = buffer.slice(0, cursor) + text + buffer.slice(cursor);
|
|
141
|
-
cursor = snapGrapheme(buffer, cursor + text.length, true);
|
|
142
|
-
}
|
|
143
|
-
return withPrune({
|
|
144
|
-
...state,
|
|
145
|
-
...DRAFT_FLAGS,
|
|
146
|
-
buffer,
|
|
147
|
-
cursor,
|
|
148
|
-
...(pastes ? { pastes } : {}),
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
case 'moveCursor': {
|
|
152
|
-
// NO DRAFT-FLAG RESET. Moving the caret is not an edit: clearing
|
|
153
|
-
// `historyIndex` here would end a history walk the moment the user pressed
|
|
154
|
-
// ← to look at what they recalled.
|
|
155
|
-
const cursor = snapGrapheme(state.buffer, action.cursor);
|
|
156
|
-
const preferredVisualColumn = action.preferredVisualColumn;
|
|
157
|
-
return state.cursor === cursor && state.preferredVisualColumn === preferredVisualColumn
|
|
158
|
-
? state : { ...state, cursor, preferredVisualColumn };
|
|
159
|
-
}
|
|
160
|
-
case 'recall':
|
|
161
|
-
// `historyIndex` is SET, not reset, which is why recall cannot reuse
|
|
162
|
-
// `replace` — the two differ in exactly the field that keeps the walk
|
|
163
|
-
// alive. `dismissed` is forced TRUE (history-recall-autocomplete-popup):
|
|
164
|
-
// recalled content is not a query the user is typing, so the suggestion
|
|
165
|
-
// popup must not appear over it - while it is visible it owns Up/Down and
|
|
166
|
-
// the second Up moves the highlight instead of stepping history. Any
|
|
167
|
-
// buffer edit (insert / backspace / replace / input ...) re-arms the
|
|
168
|
-
// popup through DRAFT_FLAGS, so typing over a recall restores them. The
|
|
169
|
-
// same gate covers the `@file` popup, which shares `dismissed`.
|
|
170
|
-
// `sel` is still LEFT ALONE: invisible while dismissed, re-homed by the
|
|
171
|
-
// next buffer change; touching it would only widen the diff (K-7 note).
|
|
172
|
-
return withPrune({
|
|
173
|
-
...state,
|
|
174
|
-
buffer: action.buffer,
|
|
175
|
-
cursor: snapGrapheme(action.buffer, action.cursor),
|
|
176
|
-
preferredVisualColumn: undefined,
|
|
177
|
-
historyIndex: action.historyIndex,
|
|
178
|
-
dismissed: true,
|
|
179
|
-
});
|
|
180
|
-
case 'select':
|
|
181
|
-
return state.sel === action.sel ? state : { ...state, sel: action.sel };
|
|
182
|
-
case 'dismiss':
|
|
183
|
-
return state.dismissed ? state : { ...state, dismissed: true };
|
|
184
|
-
case 'clear':
|
|
185
|
-
return INITIAL_EDITOR_STATE;
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
export type ComposerFrame = {
|
|
2
|
-
kind: 'text';
|
|
3
|
-
text: string;
|
|
4
|
-
} | {
|
|
5
|
-
kind: 'paste';
|
|
6
|
-
text: string;
|
|
7
|
-
} | {
|
|
8
|
-
kind: 'newline';
|
|
9
|
-
} | {
|
|
10
|
-
kind: 'submit';
|
|
11
|
-
};
|
|
12
|
-
/** True when this `input` carries at least one Enter frame -- the branch guard. */
|
|
13
|
-
export declare function hasEnterFrame(input: string): boolean;
|
|
14
|
-
/**
|
|
15
|
-
* Decode paste regions before interpreting CR/LF or newline frames as keys.
|
|
16
|
-
* Paste IDs remain the caller's responsibility.
|
|
17
|
-
*/
|
|
18
|
-
export declare function splitEnterFrames(input: string): ComposerFrame[];
|
|
19
|
-
/**
|
|
20
|
-
* Merge newline runs with the paste frames that share the same `input`.
|
|
21
|
-
*
|
|
22
|
-
* Ink drains its buffer in one size-less `read()`, so the filter's TWO writes
|
|
23
|
-
* (one per frame family) can arrive as ONE chunk carrying both a paste frame
|
|
24
|
-
* and an Enter frame. Neither splitter alone preserves that order --
|
|
25
|
-
* `splitPasteFrames` sanitises `\n` out of its text runs, and this module's
|
|
26
|
-
* spans treat a paste payload as ordinary text -- so the merge walks the
|
|
27
|
-
* ORIGINAL string once: paste frames become paste segments (payload through
|
|
28
|
-
* `sanitisePaste`, as `splitPasteFrames` does), and the spans between them are
|
|
29
|
-
* segmented with the SAME walker `splitEnterFrames` uses, which is what keeps
|
|
30
|
-
* the two views from disagreeing about where a newline sits.
|
|
31
|
-
*
|
|
32
|
-
* Paste segments carry NO id here (P1-5); the caller assigns one per segment
|
|
33
|
-
* only when it builds the reducer's action.
|
|
34
|
-
*/
|
|
35
|
-
export declare function mergeWithPasteRuns(input: string, runs: ComposerFrame[]): ComposerFrame[];
|
|
36
|
-
/**
|
|
37
|
-
* Remove every Enter frame for a consumer that has no newline model of its
|
|
38
|
-
* own, replacing each frame with `'\n'` (tui-shift-enter-copy-queue 3.5, the
|
|
39
|
-
* I-12 analogue for this frame family).
|
|
40
|
-
*
|
|
41
|
-
* NO OTHER SANITISATION, unlike `stripPasteFrames`: the overlay call sites wrap
|
|
42
|
-
* this INSIDE their existing `stripPasteFrames(...)` call, and the composite
|
|
43
|
-
* keeps that function's byte-level guarantees. Composed the other way round a
|
|
44
|
-
* lone NUL frame would survive as its payload letter; composed this way the
|
|
45
|
-
* frame's newline lands exactly where a bare Ctrl+J lands today.
|
|
46
|
-
*/
|
|
47
|
-
export declare function stripEnterFrames(input: string): string;
|
package/dist/ui/enter-frames.js
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { ENTER_NEWLINE_FRAME, PASTE_CLOSE, PASTE_OPEN } from '../input/limits.js';
|
|
2
|
-
import { sanitisePaste } from '../input/paste-parse.js';
|
|
3
|
-
import { sanitiseTyped } from './paste-frames.js';
|
|
4
|
-
/** True when this `input` carries at least one Enter frame -- the branch guard. */
|
|
5
|
-
export function hasEnterFrame(input) {
|
|
6
|
-
return input.includes(ENTER_NEWLINE_FRAME);
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Split one paste-free span into ordered text, newline and submit intents.
|
|
10
|
-
*
|
|
11
|
-
* Every newline source -- frame or bare `\n` -- yields ONE
|
|
12
|
-
* `{ kind: 'newline' }` segment, so the editor's existing `input`
|
|
13
|
-
* action inserts it through the same path typing uses and the draft's row
|
|
14
|
-
* budget applies unchanged. Non-newline text is accumulated and passed through
|
|
15
|
-
* `sanitiseTyped` (I-14): a chunk that carries a frame can also carry the
|
|
16
|
-
* keystrokes that arrived beside it, and a coalesced CR must not be spliced
|
|
17
|
-
* back into the draft raw.
|
|
18
|
-
*/
|
|
19
|
-
function splitEnterSpan(span) {
|
|
20
|
-
const segments = [];
|
|
21
|
-
let text = '';
|
|
22
|
-
const pushText = () => {
|
|
23
|
-
const clean = sanitiseTyped(text);
|
|
24
|
-
if (clean.length > 0)
|
|
25
|
-
segments.push({ kind: 'text', text: clean });
|
|
26
|
-
text = '';
|
|
27
|
-
};
|
|
28
|
-
let i = 0;
|
|
29
|
-
while (i < span.length) {
|
|
30
|
-
if (span.startsWith(ENTER_NEWLINE_FRAME, i)) {
|
|
31
|
-
pushText();
|
|
32
|
-
segments.push({ kind: 'newline' });
|
|
33
|
-
i += ENTER_NEWLINE_FRAME.length;
|
|
34
|
-
continue;
|
|
35
|
-
}
|
|
36
|
-
if (span[i] === '\r') {
|
|
37
|
-
pushText();
|
|
38
|
-
segments.push({ kind: 'submit' });
|
|
39
|
-
i += 1;
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (span[i] === '\n') {
|
|
43
|
-
pushText();
|
|
44
|
-
segments.push({ kind: 'newline' });
|
|
45
|
-
i += 1;
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
text += span[i];
|
|
49
|
-
i += 1;
|
|
50
|
-
}
|
|
51
|
-
pushText();
|
|
52
|
-
return segments;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Decode paste regions before interpreting CR/LF or newline frames as keys.
|
|
56
|
-
* Paste IDs remain the caller's responsibility.
|
|
57
|
-
*/
|
|
58
|
-
export function splitEnterFrames(input) {
|
|
59
|
-
return input.includes(PASTE_OPEN)
|
|
60
|
-
? mergeWithPasteRuns(input, []) : splitEnterSpan(input);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Merge newline runs with the paste frames that share the same `input`.
|
|
64
|
-
*
|
|
65
|
-
* Ink drains its buffer in one size-less `read()`, so the filter's TWO writes
|
|
66
|
-
* (one per frame family) can arrive as ONE chunk carrying both a paste frame
|
|
67
|
-
* and an Enter frame. Neither splitter alone preserves that order --
|
|
68
|
-
* `splitPasteFrames` sanitises `\n` out of its text runs, and this module's
|
|
69
|
-
* spans treat a paste payload as ordinary text -- so the merge walks the
|
|
70
|
-
* ORIGINAL string once: paste frames become paste segments (payload through
|
|
71
|
-
* `sanitisePaste`, as `splitPasteFrames` does), and the spans between them are
|
|
72
|
-
* segmented with the SAME walker `splitEnterFrames` uses, which is what keeps
|
|
73
|
-
* the two views from disagreeing about where a newline sits.
|
|
74
|
-
*
|
|
75
|
-
* Paste segments carry NO id here (P1-5); the caller assigns one per segment
|
|
76
|
-
* only when it builds the reducer's action.
|
|
77
|
-
*/
|
|
78
|
-
export function mergeWithPasteRuns(input, runs) {
|
|
79
|
-
if (!input.includes(PASTE_OPEN))
|
|
80
|
-
return runs;
|
|
81
|
-
const merged = [];
|
|
82
|
-
let i = 0;
|
|
83
|
-
while (i < input.length) {
|
|
84
|
-
const open = input.indexOf(PASTE_OPEN, i);
|
|
85
|
-
if (open === -1) {
|
|
86
|
-
merged.push(...splitEnterSpan(input.slice(i)));
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
merged.push(...splitEnterSpan(input.slice(i, open)));
|
|
90
|
-
const bodyStart = open + PASTE_OPEN.length;
|
|
91
|
-
const close = input.indexOf(PASTE_CLOSE, bodyStart);
|
|
92
|
-
const body = close === -1 ? input.slice(bodyStart) : input.slice(bodyStart, close);
|
|
93
|
-
const payload = sanitisePaste(body);
|
|
94
|
-
if (payload.length > 0)
|
|
95
|
-
merged.push({ kind: 'paste', text: payload });
|
|
96
|
-
if (close === -1)
|
|
97
|
-
break;
|
|
98
|
-
i = close + PASTE_CLOSE.length;
|
|
99
|
-
}
|
|
100
|
-
return merged;
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Remove every Enter frame for a consumer that has no newline model of its
|
|
104
|
-
* own, replacing each frame with `'\n'` (tui-shift-enter-copy-queue 3.5, the
|
|
105
|
-
* I-12 analogue for this frame family).
|
|
106
|
-
*
|
|
107
|
-
* NO OTHER SANITISATION, unlike `stripPasteFrames`: the overlay call sites wrap
|
|
108
|
-
* this INSIDE their existing `stripPasteFrames(...)` call, and the composite
|
|
109
|
-
* keeps that function's byte-level guarantees. Composed the other way round a
|
|
110
|
-
* lone NUL frame would survive as its payload letter; composed this way the
|
|
111
|
-
* frame's newline lands exactly where a bare Ctrl+J lands today.
|
|
112
|
-
*/
|
|
113
|
-
export function stripEnterFrames(input) {
|
|
114
|
-
if (!hasEnterFrame(input))
|
|
115
|
-
return input;
|
|
116
|
-
return input.split(ENTER_NEWLINE_FRAME).join('\n');
|
|
117
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Render a streaming assistant entry: an optional collapsible thinking block
|
|
3
|
-
* above the markdown-rendered answer text. Empty entries render nothing (a turn
|
|
4
|
-
* that only produced tool calls has no assistant text).
|
|
5
|
-
*
|
|
6
|
-
* The role glyph and spacing belong to `EntryFrame` (§4.3) — including the
|
|
7
|
-
* streaming spinner, which IS the role marker while text is arriving.
|
|
8
|
-
*
|
|
9
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3):
|
|
10
|
-
* every prop here is a scalar except `theme` and `caps`, both of which are
|
|
11
|
-
* `useMemo`d in `App.tsx` and therefore referentially stable across frames
|
|
12
|
-
* (I-L2-1, asserted by `render-memo.test.tsx`). If either ever becomes a fresh
|
|
13
|
-
* object per render this boundary silently becomes a no-op — which is exactly
|
|
14
|
-
* why that assertion exists rather than a comment.
|
|
15
|
-
*/
|
|
16
|
-
import React from 'react';
|
|
17
|
-
import type { Theme } from '../theme.js';
|
|
18
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
19
|
-
interface AssistantEntryProps {
|
|
20
|
-
text: string;
|
|
21
|
-
thinking?: string;
|
|
22
|
-
thinkingOpen: boolean;
|
|
23
|
-
thinkingVisible: boolean;
|
|
24
|
-
streaming: boolean;
|
|
25
|
-
aborted?: boolean;
|
|
26
|
-
/**
|
|
27
|
-
* Sealed reasoning time (§3.1.2). OMITTED WHEN UNKNOWN rather than printed as
|
|
28
|
-
* `0s`: a session restored from a file written by an older build has none, and
|
|
29
|
-
* `thought for 0s` is a lie where a bare `thought` is merely terse.
|
|
30
|
-
*/
|
|
31
|
-
thinkingMs?: number;
|
|
32
|
-
theme: Theme;
|
|
33
|
-
caps: TermCapabilities;
|
|
34
|
-
}
|
|
35
|
-
declare function AssistantEntryImpl(props: AssistantEntryProps): React.ReactElement | null;
|
|
36
|
-
export declare const AssistantEntry: React.MemoExoticComponent<typeof AssistantEntryImpl>;
|
|
37
|
-
export {};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* Render a streaming assistant entry: an optional collapsible thinking block
|
|
4
|
-
* above the markdown-rendered answer text. Empty entries render nothing (a turn
|
|
5
|
-
* that only produced tool calls has no assistant text).
|
|
6
|
-
*
|
|
7
|
-
* The role glyph and spacing belong to `EntryFrame` (§4.3) — including the
|
|
8
|
-
* streaming spinner, which IS the role marker while text is arriving.
|
|
9
|
-
*
|
|
10
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3):
|
|
11
|
-
* every prop here is a scalar except `theme` and `caps`, both of which are
|
|
12
|
-
* `useMemo`d in `App.tsx` and therefore referentially stable across frames
|
|
13
|
-
* (I-L2-1, asserted by `render-memo.test.tsx`). If either ever becomes a fresh
|
|
14
|
-
* object per render this boundary silently becomes a no-op — which is exactly
|
|
15
|
-
* why that assertion exists rather than a comment.
|
|
16
|
-
*/
|
|
17
|
-
import React from 'react';
|
|
18
|
-
import { Box, Text } from 'ink';
|
|
19
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
20
|
-
import { Markdown } from '../Markdown.js';
|
|
21
|
-
import { splitLinesCached } from '../render-cache.js';
|
|
22
|
-
import { clampLiveText } from '../live-clamp.js';
|
|
23
|
-
import { formatDuration } from '../../agent/usage.js';
|
|
24
|
-
function AssistantEntryImpl(props) {
|
|
25
|
-
const { text, thinking, thinkingOpen, thinkingVisible, streaming, aborted, thinkingMs, theme, caps, } = props;
|
|
26
|
-
const glyphs = pickGlyphs(caps);
|
|
27
|
-
const hasThinking = !!thinking && thinking.trim().length > 0;
|
|
28
|
-
const hasText = text.trim().length > 0;
|
|
29
|
-
if (!hasThinking && !hasText && !streaming)
|
|
30
|
-
return null;
|
|
31
|
-
// The thinking block is clamped to its TAIL while streaming even in
|
|
32
|
-
// full-screen mode: it is scratch reasoning the user reads the newest end of,
|
|
33
|
-
// and an unbounded one is the single easiest way to push a live entry past the
|
|
34
|
-
// whole viewport.
|
|
35
|
-
const thinkingRows = streaming ? STREAMING_THINKING_ROWS : undefined;
|
|
36
|
-
const clampedThinking = hasThinking && thinkingRows !== undefined
|
|
37
|
-
? clampLiveText(thinking, thinkingRows)
|
|
38
|
-
: { text: thinking ?? '', hiddenRows: 0 };
|
|
39
|
-
return (_jsxs(Box, { flexDirection: "column", children: [hasThinking && thinkingVisible && (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate", color: theme.thinking, children: [glyphs.thinking, " thinking", thinkingOpen ? glyphs.ellipsis : ''] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [clampedThinking.hiddenRows > 0 && (_jsxs(Text, { color: theme.muted, children: [glyphs.ellipsis, " ", clampedThinking.hiddenRows, " earlier", ' ', clampedThinking.hiddenRows === 1 ? 'line' : 'lines'] })), splitLinesCached(clampedThinking.text).map((line, i) => (_jsx(Text, { color: theme.thinking, dimColor: true, children: line }, i)))] })] })), hasThinking && !thinkingVisible && !streaming && (_jsxs(Text, { wrap: "truncate", color: theme.muted, children: [glyphs.thinking, " thought", thinkingMs !== undefined ? ` for ${formatDuration(thinkingMs)}` : '', ` ${glyphs.midDot} ctrl+t to show`] })), (hasText || streaming) && (_jsxs(Box, { flexDirection: "column", children: [hasText ? (_jsx(Markdown, { text: text, theme: theme, caps: caps })) : (_jsx(Text, { color: theme.muted, children: glyphs.ellipsis })), aborted && _jsx(Text, { color: theme.noticeWarn, children: "[aborted]" })] }))] }));
|
|
40
|
-
}
|
|
41
|
-
/** Rows of live thinking kept on screen while an answer streams. */
|
|
42
|
-
const STREAMING_THINKING_ROWS = 24;
|
|
43
|
-
export const AssistantEntry = React.memo(AssistantEntryImpl);
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CompactionCard — one context compaction in the transcript
|
|
3
|
-
* (context-auto-compaction §6.3).
|
|
4
|
-
*
|
|
5
|
-
* ASCII ONLY: every glyph comes from `pickGlyphs`, INCLUDING THE ARROW. The mock
|
|
6
|
-
* in the design shows `112 -> 9 messages`; that arrow is `glyphs.arrowRight`, the
|
|
7
|
-
* one `StatusBar` already uses, not a literal — `ui/` is inside
|
|
8
|
-
* `glyphs.test.ts::inScope`, so a literal here fails the scan (P2-7).
|
|
9
|
-
*
|
|
10
|
-
* EXPANDABLE, UNLIKE `FastCard`. A critique is already clamped to
|
|
11
|
-
* `fast.reviewMaxChars` before it reaches its card, so there is nothing hidden
|
|
12
|
-
* for Ctrl+O to reveal; a summary is up to `summaryMaxChars` and there genuinely
|
|
13
|
-
* is more to see. That is why `App`'s Ctrl+O predicate had to learn about this
|
|
14
|
-
* kind — without it the card renders a hint that does nothing and expands an
|
|
15
|
-
* older tool card instead (C-15 / P1-8 / AC-21).
|
|
16
|
-
*
|
|
17
|
-
* EVERY STRING DESCRIBES THE HISTORY, NEVER THE SCREEN (§6.4 / P2-9).
|
|
18
|
-
* `/clear screen` empties the transcript view but not `messages`, so this card
|
|
19
|
-
* can legitimately report a message count the visible rows do not add up to.
|
|
20
|
-
* Nothing here says "above" or "earlier in this transcript". `/clear` itself is
|
|
21
|
-
* the conversation boundary now: it drops the history and this card with it.
|
|
22
|
-
*/
|
|
23
|
-
import React from 'react';
|
|
24
|
-
import type { Theme } from '../theme.js';
|
|
25
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
26
|
-
import type { CompactionDecision, CompactionMode, CompactionPhase, CompactionUiTrigger } from '../../compaction/types.js';
|
|
27
|
-
export interface CompactionCardProps {
|
|
28
|
-
decision?: CompactionDecision;
|
|
29
|
-
memoryVersion?: 2;
|
|
30
|
-
index: number;
|
|
31
|
-
trigger: CompactionUiTrigger;
|
|
32
|
-
mode: CompactionMode;
|
|
33
|
-
applied: boolean;
|
|
34
|
-
reason?: string;
|
|
35
|
-
messagesBefore: number;
|
|
36
|
-
messagesAfter: number;
|
|
37
|
-
tokensBefore: number;
|
|
38
|
-
tokensAfter: number;
|
|
39
|
-
summary?: string;
|
|
40
|
-
model: string;
|
|
41
|
-
durationMs?: number;
|
|
42
|
-
/** The live card's stage, so "compacting" also says WHAT (never-fires C). */
|
|
43
|
-
phase?: CompactionPhase;
|
|
44
|
-
/** Set when this cut existed only because `keepRecentTurns` was relaxed (B). */
|
|
45
|
-
keepRelaxed?: boolean;
|
|
46
|
-
retainedTurns?: number;
|
|
47
|
-
/** Messages the relaxed cut left verbatim, which is not the same as turns. */
|
|
48
|
-
retainedMessages?: number;
|
|
49
|
-
keepRecentTurnsUsed?: number;
|
|
50
|
-
/** Messages the digest left out and therefore cannot be quoted (A1). */
|
|
51
|
-
elidedMessages?: number;
|
|
52
|
-
/**
|
|
53
|
-
* Wall-clock since the card opened, LIVE ONLY
|
|
54
|
-
* (context-auto-compaction-hardening §3.6 / W5).
|
|
55
|
-
*
|
|
56
|
-
* Rendered in the position `durationMs` occupies once settled, so the number
|
|
57
|
-
* does not move when the card settles. Only the single live card receives it,
|
|
58
|
-
* so exactly one memoized card re-renders per second.
|
|
59
|
-
*/
|
|
60
|
-
elapsedMs?: number;
|
|
61
|
-
/** Set when tail relief clipped the retained turns (W2). */
|
|
62
|
-
tailRelief?: {
|
|
63
|
-
messages: number;
|
|
64
|
-
charsRemoved: number;
|
|
65
|
-
};
|
|
66
|
-
live: boolean;
|
|
67
|
-
expanded?: boolean;
|
|
68
|
-
reducedMotion?: boolean;
|
|
69
|
-
theme: Theme;
|
|
70
|
-
caps: TermCapabilities;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* The card's colour.
|
|
74
|
-
*
|
|
75
|
-
* `truncated` is a WARNING rather than the accent, because it is a real and
|
|
76
|
-
* bounded data loss the user is entitled to notice; `applied: false` is an error
|
|
77
|
-
* because the run is still at the occupancy that triggered it.
|
|
78
|
-
*/
|
|
79
|
-
export declare function compactionCardColor(props: Pick<CompactionCardProps, 'live' | 'applied' | 'mode'>, theme: Theme): string | undefined;
|
|
80
|
-
declare function CompactionCardImpl(props: CompactionCardProps): React.ReactElement;
|
|
81
|
-
/**
|
|
82
|
-
* `React.memo` with the DEFAULT comparator (tui-render-performance L2 / R3).
|
|
83
|
-
* `mapEntry` already preserves object identity for untouched entries, so the
|
|
84
|
-
* props below are stable references on a settled card, and `theme` / `caps` are
|
|
85
|
-
* `useMemo`d in `App.tsx` (I-L2-1).
|
|
86
|
-
*/
|
|
87
|
-
export declare const CompactionCard: React.MemoExoticComponent<typeof CompactionCardImpl>;
|
|
88
|
-
export {};
|