@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,66 +0,0 @@
|
|
|
1
|
-
import { startClipboardTask, } from './clipboard.js';
|
|
2
|
-
class SharedClipboardCoordinator {
|
|
3
|
-
options;
|
|
4
|
-
busy = false;
|
|
5
|
-
cleanupPending = false;
|
|
6
|
-
disposed = false;
|
|
7
|
-
abort = new AbortController();
|
|
8
|
-
constructor(options) {
|
|
9
|
-
this.options = options;
|
|
10
|
-
options.clipboard?.signal?.addEventListener('abort', this.dispose, { once: true });
|
|
11
|
-
if (options.clipboard?.signal?.aborted)
|
|
12
|
-
this.dispose();
|
|
13
|
-
}
|
|
14
|
-
isBusy() { return this.busy; }
|
|
15
|
-
isCleanupPending() { return this.cleanupPending; }
|
|
16
|
-
state() {
|
|
17
|
-
return { busy: this.busy, cleanupPending: this.cleanupPending };
|
|
18
|
-
}
|
|
19
|
-
notifyState() {
|
|
20
|
-
if (!this.disposed)
|
|
21
|
-
this.options.onStateChange?.(this.state());
|
|
22
|
-
}
|
|
23
|
-
requestCopy = (request) => {
|
|
24
|
-
if (this.disposed)
|
|
25
|
-
return Promise.resolve({ status: 'failed', reason: 'cancelled' });
|
|
26
|
-
if (this.busy) {
|
|
27
|
-
this.options.onRequest?.();
|
|
28
|
-
this.options.onBusy?.(this.state());
|
|
29
|
-
return Promise.resolve({ status: 'busy' });
|
|
30
|
-
}
|
|
31
|
-
// Claim synchronously, before callbacks or Promise work can re-enter this port.
|
|
32
|
-
this.busy = true;
|
|
33
|
-
this.options.onRequest?.();
|
|
34
|
-
this.notifyState();
|
|
35
|
-
const snapshot = { ...request };
|
|
36
|
-
const task = startClipboardTask(snapshot.text, {
|
|
37
|
-
...this.options.clipboard, signal: this.abort.signal,
|
|
38
|
-
});
|
|
39
|
-
const result = task.result.then((value) => {
|
|
40
|
-
if (!this.disposed) {
|
|
41
|
-
this.cleanupPending = this.busy && value.status === 'failed';
|
|
42
|
-
this.notifyState();
|
|
43
|
-
this.options.onResult?.(value, snapshot);
|
|
44
|
-
}
|
|
45
|
-
return value;
|
|
46
|
-
});
|
|
47
|
-
// Failure feedback is not a release signal: the old native writer may still live.
|
|
48
|
-
void task.released.then(() => {
|
|
49
|
-
this.busy = false;
|
|
50
|
-
this.cleanupPending = false;
|
|
51
|
-
this.notifyState();
|
|
52
|
-
});
|
|
53
|
-
return result;
|
|
54
|
-
};
|
|
55
|
-
dispose = () => {
|
|
56
|
-
if (this.disposed)
|
|
57
|
-
return;
|
|
58
|
-
this.disposed = true;
|
|
59
|
-
this.options.clipboard?.signal?.removeEventListener('abort', this.dispose);
|
|
60
|
-
this.abort.abort();
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
/** Create the App-owned copy port; use its live busy state before taking a selection. */
|
|
64
|
-
export function createClipboardCoordinator(options = {}) {
|
|
65
|
-
return new SharedClipboardCoordinator(options);
|
|
66
|
-
}
|
package/dist/ui/clipboard.d.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export type CopyFailureReason = 'empty' | 'unavailable' | 'write' | 'timeout' | 'too-large' | 'cancelled';
|
|
2
|
-
export type CopyResult = {
|
|
3
|
-
status: 'confirmed';
|
|
4
|
-
via: 'native';
|
|
5
|
-
} | {
|
|
6
|
-
status: 'sent';
|
|
7
|
-
via: 'osc52';
|
|
8
|
-
fallbackReason?: CopyFailureReason;
|
|
9
|
-
} | {
|
|
10
|
-
status: 'failed';
|
|
11
|
-
reason: CopyFailureReason;
|
|
12
|
-
};
|
|
13
|
-
export interface ClipboardOptions {
|
|
14
|
-
/** Frame differ's foreign-write door, never the intercepted stdout stream. */
|
|
15
|
-
write?: (chunk: string) => void;
|
|
16
|
-
remote?: boolean;
|
|
17
|
-
timeoutMs?: number;
|
|
18
|
-
signal?: AbortSignal;
|
|
19
|
-
}
|
|
20
|
-
export interface ClipboardTask {
|
|
21
|
-
result: Promise<CopyResult>;
|
|
22
|
-
/** Resolves only after no writer can change the clipboard again. */
|
|
23
|
-
released: Promise<void>;
|
|
24
|
-
}
|
|
25
|
-
export declare const MAX_OSC52_BYTES = 56000;
|
|
26
|
-
/** Encode the full clipboard selection as UTF-8, without truncating its payload. */
|
|
27
|
-
export declare function osc52(text: string): string;
|
|
28
|
-
/** Start a copy without rejecting; result and writer release are separate signals. */
|
|
29
|
-
export declare function startClipboardTask(text: string, options?: ClipboardOptions): ClipboardTask;
|
|
30
|
-
/** Promise convenience wrapper; interactive callers must use the shared coordinator. */
|
|
31
|
-
export declare function copyText(text: string, options?: ClipboardOptions): Promise<CopyResult>;
|
package/dist/ui/clipboard.js
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/** The only clipboard writer. Interaction callers share clipboard-task's coordinator. */
|
|
2
|
-
import { spawn } from 'node:child_process';
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
export const MAX_OSC52_BYTES = 56_000;
|
|
5
|
-
const CLEANUP_GRACE_MS = 500;
|
|
6
|
-
// clip.exe preserves a supplied BOM and guesses BOM-less UTF-16 incorrectly for
|
|
7
|
-
// short CJK text. Decode stdin explicitly; never interpolate clipboard content.
|
|
8
|
-
const WINDOWS_CLIPBOARD_COMMAND = "$ErrorActionPreference='Stop'; "
|
|
9
|
-
+ '$reader=[IO.StreamReader]::new([Console]::OpenStandardInput(),'
|
|
10
|
-
+ '[Text.UTF8Encoding]::new($false),$false); Set-Clipboard -Value $reader.ReadToEnd()';
|
|
11
|
-
/** Encode the full clipboard selection as UTF-8, without truncating its payload. */
|
|
12
|
-
export function osc52(text) {
|
|
13
|
-
return `\x1b]52;c;${Buffer.from(text, 'utf8').toString('base64')}\x07`;
|
|
14
|
-
}
|
|
15
|
-
function sendOsc52(text, options, fallbackReason) {
|
|
16
|
-
if (options.signal?.aborted)
|
|
17
|
-
return { status: 'failed', reason: 'cancelled' };
|
|
18
|
-
if (Buffer.byteLength(text, 'utf8') > MAX_OSC52_BYTES) {
|
|
19
|
-
return { status: 'failed', reason: 'too-large' };
|
|
20
|
-
}
|
|
21
|
-
if (!options.write)
|
|
22
|
-
return { status: 'failed', reason: fallbackReason ?? 'unavailable' };
|
|
23
|
-
try {
|
|
24
|
-
options.write(osc52(text));
|
|
25
|
-
return { status: 'sent', via: 'osc52', ...(fallbackReason ? { fallbackReason } : {}) };
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return { status: 'failed', reason: 'write' };
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function settledTask(result) {
|
|
32
|
-
return { result: Promise.resolve(result), released: Promise.resolve() };
|
|
33
|
-
}
|
|
34
|
-
function spawnNative() {
|
|
35
|
-
const windows = process.platform === 'win32';
|
|
36
|
-
const file = windows ? 'powershell.exe' : process.platform === 'darwin' ? 'pbcopy' : 'xclip';
|
|
37
|
-
const args = windows
|
|
38
|
-
? ['-NoProfile', '-NonInteractive', '-STA', '-Command', WINDOWS_CLIPBOARD_COMMAND]
|
|
39
|
-
: file === 'xclip' ? ['-selection', 'clipboard'] : [];
|
|
40
|
-
return spawn(file, args, {
|
|
41
|
-
stdio: ['pipe', 'ignore', 'ignore'], shell: false, windowsHide: true,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/** Owns a writer through close, even when its user-facing result timed out earlier. */
|
|
45
|
-
class NativeClipboardTask {
|
|
46
|
-
child;
|
|
47
|
-
text;
|
|
48
|
-
options;
|
|
49
|
-
result;
|
|
50
|
-
released;
|
|
51
|
-
resolveResult;
|
|
52
|
-
resolveReleased;
|
|
53
|
-
settled = false;
|
|
54
|
-
closed = false;
|
|
55
|
-
stopping = false;
|
|
56
|
-
failure;
|
|
57
|
-
timer;
|
|
58
|
-
cleanupTimer;
|
|
59
|
-
constructor(child, text, options) {
|
|
60
|
-
this.child = child;
|
|
61
|
-
this.text = text;
|
|
62
|
-
this.options = options;
|
|
63
|
-
this.result = new Promise((resolve) => { this.resolveResult = resolve; });
|
|
64
|
-
this.released = new Promise((resolve) => { this.resolveReleased = resolve; });
|
|
65
|
-
child.on('error', this.onError);
|
|
66
|
-
child.once('close', this.onClose);
|
|
67
|
-
child.stdin?.on('error', this.onStdinError);
|
|
68
|
-
options.signal?.addEventListener('abort', this.onAbort, { once: true });
|
|
69
|
-
this.timer = setTimeout(() => this.stop('timeout'), options.timeoutMs ?? 1500);
|
|
70
|
-
if (options.signal?.aborted) {
|
|
71
|
-
this.onAbort();
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
if (!child.stdin) {
|
|
75
|
-
this.stop('write');
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
try {
|
|
79
|
-
child.stdin.end(Buffer.from(text, 'utf8'));
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
this.stop('write');
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
settle(result) {
|
|
86
|
-
if (this.settled)
|
|
87
|
-
return;
|
|
88
|
-
this.settled = true;
|
|
89
|
-
clearTimeout(this.timer);
|
|
90
|
-
clearTimeout(this.cleanupTimer);
|
|
91
|
-
this.resolveResult(result);
|
|
92
|
-
}
|
|
93
|
-
stop(reason) {
|
|
94
|
-
if (this.closed || this.stopping)
|
|
95
|
-
return;
|
|
96
|
-
this.stopping = true;
|
|
97
|
-
this.failure = reason;
|
|
98
|
-
clearTimeout(this.timer);
|
|
99
|
-
// No fallback before close: even a successful kill request is not proof of exit.
|
|
100
|
-
if (!this.settled) {
|
|
101
|
-
this.cleanupTimer = setTimeout(() => {
|
|
102
|
-
this.settle({ status: 'failed', reason });
|
|
103
|
-
}, CLEANUP_GRACE_MS);
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
this.child.stdin?.destroy();
|
|
107
|
-
}
|
|
108
|
-
catch { /* Keep error listeners until close. */ }
|
|
109
|
-
try {
|
|
110
|
-
this.child.kill();
|
|
111
|
-
}
|
|
112
|
-
catch { /* A failed kill must not release the writer lock. */ }
|
|
113
|
-
}
|
|
114
|
-
onAbort = () => {
|
|
115
|
-
this.settle({ status: 'failed', reason: 'cancelled' });
|
|
116
|
-
this.stop('cancelled');
|
|
117
|
-
};
|
|
118
|
-
onError = () => { this.stop('unavailable'); };
|
|
119
|
-
onStdinError = () => { this.stop('write'); };
|
|
120
|
-
onClose = (code) => {
|
|
121
|
-
this.closed = true;
|
|
122
|
-
clearTimeout(this.timer);
|
|
123
|
-
clearTimeout(this.cleanupTimer);
|
|
124
|
-
this.options.signal?.removeEventListener('abort', this.onAbort);
|
|
125
|
-
if (!this.settled) {
|
|
126
|
-
const result = code === 0 && !this.failure
|
|
127
|
-
? { status: 'confirmed', via: 'native' }
|
|
128
|
-
: sendOsc52(this.text, this.options, this.failure ?? 'write');
|
|
129
|
-
this.settle(result);
|
|
130
|
-
}
|
|
131
|
-
this.child.removeListener('error', this.onError);
|
|
132
|
-
this.child.stdin?.removeListener('error', this.onStdinError);
|
|
133
|
-
this.resolveReleased();
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
/** Start a copy without rejecting; result and writer release are separate signals. */
|
|
137
|
-
export function startClipboardTask(text, options = {}) {
|
|
138
|
-
if (options.signal?.aborted)
|
|
139
|
-
return settledTask({ status: 'failed', reason: 'cancelled' });
|
|
140
|
-
if (text.length === 0)
|
|
141
|
-
return settledTask({ status: 'failed', reason: 'empty' });
|
|
142
|
-
const remote = options.remote ?? Boolean(process.env.SSH_CONNECTION || process.env.SSH_TTY);
|
|
143
|
-
if (remote)
|
|
144
|
-
return settledTask(sendOsc52(text, options));
|
|
145
|
-
let child;
|
|
146
|
-
try {
|
|
147
|
-
child = spawnNative();
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
return settledTask(sendOsc52(text, options, 'unavailable'));
|
|
151
|
-
}
|
|
152
|
-
return new NativeClipboardTask(child, text, options);
|
|
153
|
-
}
|
|
154
|
-
/** Promise convenience wrapper; interactive callers must use the shared coordinator. */
|
|
155
|
-
export function copyText(text, options = {}) {
|
|
156
|
-
return startClipboardTask(text, options).result;
|
|
157
|
-
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { TermCapabilities } from './capabilities.js';
|
|
2
|
-
/** Highlight cache entries must not cross color preferences between sessions. */
|
|
3
|
-
export declare function syntaxColorLevel(): number;
|
|
4
|
-
/** Apply session colors without changing environment inherited by agent tools. */
|
|
5
|
-
export declare function useTuiColors(level: TermCapabilities['colorLevel']): () => void;
|
package/dist/ui/color-runtime.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'node:module';
|
|
2
|
-
import { pathToFileURL } from 'node:url';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
const require = createRequire(import.meta.url);
|
|
5
|
-
/** Resolve the actual dependency instance even when npm nests its Chalk. */
|
|
6
|
-
async function dependencyChalk(packageName) {
|
|
7
|
-
const dependency = createRequire(require.resolve(packageName));
|
|
8
|
-
return (await import(pathToFileURL(dependency.resolve('chalk')).href)).default;
|
|
9
|
-
}
|
|
10
|
-
const [inkChalk, highlightChalk] = await Promise.all([
|
|
11
|
-
dependencyChalk('ink'), dependencyChalk('cli-highlight'),
|
|
12
|
-
]);
|
|
13
|
-
/** Highlight cache entries must not cross color preferences between sessions. */
|
|
14
|
-
export function syntaxColorLevel() { return highlightChalk.level; }
|
|
15
|
-
/** Apply session colors without changing environment inherited by agent tools. */
|
|
16
|
-
export function useTuiColors(level) {
|
|
17
|
-
const renderers = new Set([chalk, inkChalk, highlightChalk]);
|
|
18
|
-
const previous = new Map([...renderers].map(renderer => [renderer, renderer.level]));
|
|
19
|
-
for (const renderer of renderers)
|
|
20
|
-
renderer.level = level;
|
|
21
|
-
let restored = false;
|
|
22
|
-
return () => {
|
|
23
|
-
if (restored)
|
|
24
|
-
return;
|
|
25
|
-
restored = true;
|
|
26
|
-
for (const [renderer, original] of previous)
|
|
27
|
-
renderer.level = original;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { type EditorState, type InputSegment } from './editor-reducer.js';
|
|
2
|
-
export interface ComposerSubmitResult {
|
|
3
|
-
accepted: boolean;
|
|
4
|
-
reason?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* A fill carries the prompt body; `submit` folds "insert and send" into the SAME
|
|
8
|
-
* transaction, so `Ctrl+Enter` in the picker is literally the Enter key one step
|
|
9
|
-
* later rather than a second submission path (quick-prompt-library P0-1 / I-9).
|
|
10
|
-
*/
|
|
11
|
-
export type ComposerInputIntent = InputSegment | {
|
|
12
|
-
kind: 'newline';
|
|
13
|
-
} | {
|
|
14
|
-
kind: 'submit';
|
|
15
|
-
} | {
|
|
16
|
-
kind: 'fill';
|
|
17
|
-
text: string;
|
|
18
|
-
mode: 'insert' | 'replace';
|
|
19
|
-
submit: boolean;
|
|
20
|
-
};
|
|
21
|
-
export interface ComposerInputOptions {
|
|
22
|
-
editor: EditorState;
|
|
23
|
-
intents: readonly ComposerInputIntent[];
|
|
24
|
-
resolveSubmit: (editor: EditorState) => string | null;
|
|
25
|
-
checkPasteLimit: (segments: InputSegment[], editor: EditorState) => string | null;
|
|
26
|
-
}
|
|
27
|
-
export interface ComposerInputPlan {
|
|
28
|
-
nextEditor: EditorState;
|
|
29
|
-
rejectedEditor: EditorState;
|
|
30
|
-
submission?: string;
|
|
31
|
-
notice?: string;
|
|
32
|
-
refusal?: string;
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Plan both accepted and rejected drafts before any submission side effect.
|
|
36
|
-
* Uses caller-assigned paste IDs and pure callbacks; never mutates the source editor.
|
|
37
|
-
*/
|
|
38
|
-
export declare function planComposerInput(options: ComposerInputOptions): ComposerInputPlan;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { editorReducer } from './editor-reducer.js';
|
|
2
|
-
import { planPromptFill } from '../prompts/fill.js';
|
|
3
|
-
const MORE_INPUT_NOTICE = 'More input is kept in the draft; press Enter to send.';
|
|
4
|
-
/**
|
|
5
|
-
* Apply one fill to one draft. TWO CALLS PER INTENT, on purpose: the same plan runs
|
|
6
|
-
* against the accepted and the rejected draft (P0-1), so a submission the host
|
|
7
|
-
* refuses leaves the FILLED text in the composer rather than the text from before
|
|
8
|
-
* the fill. Doing it once and sharing the result would silently drop the prompt the
|
|
9
|
-
* user just chose, which is the data loss this design exists to prevent.
|
|
10
|
-
*
|
|
11
|
-
* THE REDUCER OWNS THE RESULT. `planPromptFill` says what to insert; `insert` and
|
|
12
|
-
* `replace` decide the caret, the paste-token snapping and the draft-flag reset,
|
|
13
|
-
* exactly as they do for typing.
|
|
14
|
-
*/
|
|
15
|
-
function applyFill(editor, intent) {
|
|
16
|
-
const plan = planPromptFill({
|
|
17
|
-
draft: editor.buffer,
|
|
18
|
-
cursor: editor.cursor,
|
|
19
|
-
content: intent.text,
|
|
20
|
-
mode: intent.mode,
|
|
21
|
-
});
|
|
22
|
-
return plan.mode === 'replace'
|
|
23
|
-
? editorReducer(editor, { type: 'replace', buffer: plan.text, cursor: plan.cursor })
|
|
24
|
-
: editorReducer(editor, { type: 'insert', text: plan.text });
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Plan both accepted and rejected drafts before any submission side effect.
|
|
28
|
-
* Uses caller-assigned paste IDs and pure callbacks; never mutates the source editor.
|
|
29
|
-
*/
|
|
30
|
-
export function planComposerInput(options) {
|
|
31
|
-
let nextEditor = options.editor;
|
|
32
|
-
let rejectedEditor = options.editor;
|
|
33
|
-
let acceptedBase = options.editor;
|
|
34
|
-
let acceptedPastes = [];
|
|
35
|
-
const rejectedPastes = [];
|
|
36
|
-
let submission;
|
|
37
|
-
let notice;
|
|
38
|
-
for (const intent of options.intents) {
|
|
39
|
-
if (intent.kind === 'fill') {
|
|
40
|
-
nextEditor = applyFill(nextEditor, intent);
|
|
41
|
-
rejectedEditor = applyFill(rejectedEditor, intent);
|
|
42
|
-
// A plain fill stops here: the draft is filled, nothing is sent (AC-16).
|
|
43
|
-
if (!intent.submit)
|
|
44
|
-
continue;
|
|
45
|
-
}
|
|
46
|
-
else if (intent.kind !== 'submit') {
|
|
47
|
-
const segment = intent.kind === 'newline'
|
|
48
|
-
? { kind: 'text', text: '\n' } : intent;
|
|
49
|
-
const segments = [segment];
|
|
50
|
-
if (segment.kind === 'paste') {
|
|
51
|
-
// Inline pastes have no map entry; count every paste in this callback as before.
|
|
52
|
-
acceptedPastes.push(segment);
|
|
53
|
-
rejectedPastes.push(segment);
|
|
54
|
-
const refusal = options.checkPasteLimit(acceptedPastes, acceptedBase)
|
|
55
|
-
?? options.checkPasteLimit(rejectedPastes, options.editor);
|
|
56
|
-
if (refusal) {
|
|
57
|
-
return { nextEditor: options.editor, rejectedEditor: options.editor, refusal };
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
nextEditor = editorReducer(nextEditor, { type: 'input', segments });
|
|
61
|
-
rejectedEditor = editorReducer(rejectedEditor, { type: 'input', segments });
|
|
62
|
-
continue;
|
|
63
|
-
}
|
|
64
|
-
// THE ONE SUBMIT PATH. A `fill` with `submit` and a bare `submit` reach this
|
|
65
|
-
// block and nothing else, so queueing, paste expansion and the
|
|
66
|
-
// accepted/rejected contract are inherited rather than re-implemented.
|
|
67
|
-
const text = options.resolveSubmit(nextEditor);
|
|
68
|
-
if (submission !== undefined) {
|
|
69
|
-
notice = MORE_INPUT_NOTICE;
|
|
70
|
-
}
|
|
71
|
-
else if (text !== null && text.trim().length > 0) {
|
|
72
|
-
submission = text;
|
|
73
|
-
nextEditor = editorReducer(nextEditor, { type: 'clear' });
|
|
74
|
-
acceptedBase = nextEditor;
|
|
75
|
-
acceptedPastes = [];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
return { nextEditor, rejectedEditor, submission, notice };
|
|
79
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer and transcript row ceilings (tui-paste-handling section 5.5 / 5.6).
|
|
3
|
-
*
|
|
4
|
-
* Structural, not policy (D-10): the only user-facing key this feature adds is
|
|
5
|
-
* the boolean `paste`. Everything here is a bound that keeps the frame's row
|
|
6
|
-
* arithmetic true, and every one of them is switchable by returning a larger
|
|
7
|
-
* number rather than by a config flag.
|
|
8
|
-
*/
|
|
9
|
-
/** At or below BOTH of these a paste is inserted verbatim rather than collapsed. */
|
|
10
|
-
export declare const PASTE_INLINE_MAX_LINES = 6;
|
|
11
|
-
export declare const PASTE_INLINE_MAX_CHARS = 400;
|
|
12
|
-
/**
|
|
13
|
-
* Rows one submitted user message may RENDER in the transcript, before the
|
|
14
|
-
* `... +N more lines` tail (G7).
|
|
15
|
-
*
|
|
16
|
-
* `ui/layout/virtual-window.ts` imports this rather than duplicating the number,
|
|
17
|
-
* unlike `DIFF_COLLAPSED_LINES` / `TOOL_LIVE_TAIL_ROWS` beside it: I-13 makes the
|
|
18
|
-
* render cap and the height estimate THE SAME NUMBER, and there is no
|
|
19
|
-
* import-cycle reason here for them to be two.
|
|
20
|
-
*/
|
|
21
|
-
export declare const USER_ENTRY_MAX_ROWS = 40;
|
|
22
|
-
/**
|
|
23
|
-
* Ceiling on the composer's DRAFT rows at a given terminal height.
|
|
24
|
-
*
|
|
25
|
-
* Non-decreasing in `terminalRows`, with one quarter of the terminal available
|
|
26
|
-
* to the draft and an absolute six-row ceiling shared by rendering and budgets.
|
|
27
|
-
*/
|
|
28
|
-
export declare function draftMaxRows(terminalRows: number): number;
|
|
29
|
-
/** Compatibility export for the shared hint visibility threshold. */
|
|
30
|
-
export declare const DRAFT_MAX_ROWS_HINT_TIER = 20;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer and transcript row ceilings (tui-paste-handling section 5.5 / 5.6).
|
|
3
|
-
*
|
|
4
|
-
* Structural, not policy (D-10): the only user-facing key this feature adds is
|
|
5
|
-
* the boolean `paste`. Everything here is a bound that keeps the frame's row
|
|
6
|
-
* arithmetic true, and every one of them is switchable by returning a larger
|
|
7
|
-
* number rather than by a config flag.
|
|
8
|
-
*/
|
|
9
|
-
/** At or below BOTH of these a paste is inserted verbatim rather than collapsed. */
|
|
10
|
-
export const PASTE_INLINE_MAX_LINES = 6;
|
|
11
|
-
export const PASTE_INLINE_MAX_CHARS = 400;
|
|
12
|
-
/**
|
|
13
|
-
* Rows one submitted user message may RENDER in the transcript, before the
|
|
14
|
-
* `... +N more lines` tail (G7).
|
|
15
|
-
*
|
|
16
|
-
* `ui/layout/virtual-window.ts` imports this rather than duplicating the number,
|
|
17
|
-
* unlike `DIFF_COLLAPSED_LINES` / `TOOL_LIVE_TAIL_ROWS` beside it: I-13 makes the
|
|
18
|
-
* render cap and the height estimate THE SAME NUMBER, and there is no
|
|
19
|
-
* import-cycle reason here for them to be two.
|
|
20
|
-
*/
|
|
21
|
-
export const USER_ENTRY_MAX_ROWS = 40;
|
|
22
|
-
/**
|
|
23
|
-
* The terminal height at which the composer's hint row starts to fit.
|
|
24
|
-
*
|
|
25
|
-
* DELIBERATELY A SECOND COPY of `ui/layout/budget.ts::HINT_MIN_ROWS` rather than
|
|
26
|
-
* an import: `budget.ts` calls `draftMaxRows` to clamp its composer term, so an
|
|
27
|
-
* import in this direction would close an ESM cycle whose only protection is
|
|
28
|
-
* that neither side reads the other at module scope -- true today, and a
|
|
29
|
-
* confusing TDZ crash the first time someone hoists a use. `budget.test.ts`
|
|
30
|
-
* asserts the two numbers are equal, so they cannot drift in silence.
|
|
31
|
-
*/
|
|
32
|
-
const DRAFT_TIER_MIN_ROWS = 20;
|
|
33
|
-
/**
|
|
34
|
-
* Ceiling on the composer's DRAFT rows at a given terminal height.
|
|
35
|
-
*
|
|
36
|
-
* Non-decreasing in `terminalRows`, with one quarter of the terminal available
|
|
37
|
-
* to the draft and an absolute six-row ceiling shared by rendering and budgets.
|
|
38
|
-
*/
|
|
39
|
-
export function draftMaxRows(terminalRows) {
|
|
40
|
-
if (!Number.isFinite(terminalRows))
|
|
41
|
-
return 3;
|
|
42
|
-
return Math.max(1, Math.min(6, Math.floor(terminalRows / 4)));
|
|
43
|
-
}
|
|
44
|
-
/** Compatibility export for the shared hint visibility threshold. */
|
|
45
|
-
export const DRAFT_MAX_ROWS_HINT_TIER = DRAFT_TIER_MIN_ROWS;
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Composer layout (tui-paste-handling section 5.5) -- pure. No Ink, no React.
|
|
3
|
-
*
|
|
4
|
-
* THE ONE PLACE THAT MAPS A BUFFER INDEX TO A SCREEN CELL (I-9). The composer
|
|
5
|
-
* used to hand its buffer to Ink one `<Text>` per logical line and let Yoga wrap
|
|
6
|
-
* it, which is fine until the draft is taller than the frame: `AppShell` gives
|
|
7
|
-
* the bottom chrome `flexShrink={0}`, so a tall composer does not grow the frame
|
|
8
|
-
* -- Yoga takes the rows out of the transcript and `overflow: hidden` clips them
|
|
9
|
-
* away, while `layout/budget.ts` keeps telling five consumers the composer is
|
|
10
|
-
* three rows tall. Four hundred presses of `Shift+Enter` do it without pasting
|
|
11
|
-
* anything.
|
|
12
|
-
*
|
|
13
|
-
* So the wrap happens HERE, the row count is a number this module returns, and
|
|
14
|
-
* `budget.ts` is told that number (I-8).
|
|
15
|
-
*
|
|
16
|
-
* HARD WRAP BY DISPLAY COLUMN, NEVER `layout/wrap-rows.ts::wrapToRows` (D-15).
|
|
17
|
-
* That function is a PROSE wrapper: it splits on `/\s+/` and rejoins with single
|
|
18
|
-
* spaces, so it destroys indentation and makes the character-index-to-screen-cell
|
|
19
|
-
* mapping the caret depends on impossible to state, let alone compute.
|
|
20
|
-
*/
|
|
21
|
-
export interface ComposerSegment {
|
|
22
|
-
readonly text: string;
|
|
23
|
-
readonly kind: 'text' | 'token';
|
|
24
|
-
}
|
|
25
|
-
export interface ComposerRow {
|
|
26
|
-
readonly segments: ComposerSegment[];
|
|
27
|
-
}
|
|
28
|
-
export interface ComposerLayout {
|
|
29
|
-
/** At most `maxRows`, and always containing the caret when `active`. */
|
|
30
|
-
readonly rows: ComposerRow[];
|
|
31
|
-
/** Index into `rows`, or -1 when the composer is not focused. */
|
|
32
|
-
readonly cursorRow: number;
|
|
33
|
-
/** Display column within that row. */
|
|
34
|
-
readonly cursorCol: number;
|
|
35
|
-
/** Rows the buffer occupies BEFORE the window was applied. */
|
|
36
|
-
readonly totalRows: number;
|
|
37
|
-
readonly hiddenAbove: number;
|
|
38
|
-
readonly hiddenBelow: number;
|
|
39
|
-
}
|
|
40
|
-
export interface ComposerLayoutInput {
|
|
41
|
-
readonly buffer: string;
|
|
42
|
-
readonly cursor: number;
|
|
43
|
-
readonly cols: number;
|
|
44
|
-
readonly maxRows: number;
|
|
45
|
-
readonly active: boolean;
|
|
46
|
-
}
|
|
47
|
-
/** Width of a displayed run, measured by complete graphemes. */
|
|
48
|
-
export declare function displayWidth(text: string): number;
|
|
49
|
-
/**
|
|
50
|
-
* Wrap `buffer` into rows, locate the caret, and select a window of at most
|
|
51
|
-
* `maxRows` rows that contains it.
|
|
52
|
-
*
|
|
53
|
-
* The window is pinned to the BOTTOM -- where the user is typing -- and pulled up
|
|
54
|
-
* only far enough to keep the caret visible. That is deterministic, which matters
|
|
55
|
-
* because this function holds no state between calls: a scroll offset would have
|
|
56
|
-
* to live in the reducer and would then need its own invalidation rules.
|
|
57
|
-
*/
|
|
58
|
-
export declare function layoutComposer(input: ComposerLayoutInput): ComposerLayout;
|
|
59
|
-
export interface RowSplit {
|
|
60
|
-
readonly before: ComposerSegment[];
|
|
61
|
-
/** The one cell the caret sits on, or `null` when it sits past the last one. */
|
|
62
|
-
readonly at: ComposerSegment | null;
|
|
63
|
-
readonly after: ComposerSegment[];
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Split one row at a display column so the renderer can draw an inverse caret on
|
|
67
|
-
* exactly one cell.
|
|
68
|
-
*
|
|
69
|
-
* Lives here rather than in the component because it walks the SAME width table
|
|
70
|
-
* `layoutComposer` walked (I-9): a second, subtly different measurement is how
|
|
71
|
-
* the caret ends up drawn on a cell that does not hold the character it is on.
|
|
72
|
-
*/
|
|
73
|
-
export declare function splitRowAtColumn(row: ComposerRow, column: number): RowSplit;
|