@aragon-agent/cli 0.6.47 → 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 +13 -0
- package/README.md +27 -6
- package/dist/agent/coalesce.d.ts +1 -1
- package/dist/agent/controller.d.ts +21 -21
- package/dist/agent/controller.js +13 -13
- 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/{ui → app}/App.d.ts +9 -9
- package/dist/{ui → app}/App.js +79 -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 +29 -29
- 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 +6 -6
- 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 +1 -1
- package/dist/proc/readiness.js +1 -1
- package/dist/proc/supervisor.d.ts +1 -1
- package/dist/proc/supervisor.js +3 -3
- package/dist/proc/wait.d.ts +1 -1
- package/dist/proc/wait.js +1 -1
- 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/clear-archive.d.ts +2 -2
- package/dist/session/persist.d.ts +2 -2
- package/dist/session/persist.js +1 -1
- package/dist/session/startup-session.d.ts +2 -2
- package/dist/session/validate-session.js +3 -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 +2 -2
- package/dist/tools/job-tools.js +4 -4
- 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 -857
- package/dist/agent/reducer.js +0 -1646
- 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 -1383
- 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 -214
- package/dist/proc/limits.js +0 -221
- package/dist/proc/progress.d.ts +0 -47
- package/dist/proc/progress.js +0 -163
- package/dist/proc/types.d.ts +0 -269
- package/dist/proc/types.js +0 -15
- package/dist/proc/wait-view.d.ts +0 -65
- package/dist/proc/wait-view.js +0 -66
- 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 -51
- 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 -130
- 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 -258
- 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 -169
- 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/entries/WaitCard.d.ts +0 -37
- package/dist/ui/entries/WaitCard.js +0 -92
- 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 -84
- package/dist/ui/interaction-copy.js +0 -41
- 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 -140
- package/dist/ui/layout/status-layout.js +0 -262
- 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 -494
- package/dist/ui/layout/wait-bar.d.ts +0 -34
- package/dist/ui/layout/wait-bar.js +0 -48
- 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 -63
- 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 -130
- 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,231 +0,0 @@
|
|
|
1
|
-
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useEffect, useState } from 'react';
|
|
3
|
-
import { Text, useInput } from 'ink';
|
|
4
|
-
import stringWidth from 'string-width';
|
|
5
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
6
|
-
import { OverlayFrame, overlayBodyRows } from '../layout/OverlayFrame.js';
|
|
7
|
-
import { stripPasteFrames } from '../paste-frames.js';
|
|
8
|
-
import { stripEnterFrames } from '../enter-frames.js';
|
|
9
|
-
import { profileUsers, SUBAGENT_FAST_ROW_ID } from './model-profile-state.js';
|
|
10
|
-
/** Move focus into view while accepting App's independent wheel/page scrolling. */
|
|
11
|
-
export function useProfileScroll(props, focus) {
|
|
12
|
-
const [offset, setOffset] = useState(0);
|
|
13
|
-
useEffect(() => { props.onScrollClamp?.(0); }, []);
|
|
14
|
-
useEffect(() => { setOffset(props.scrollOffset); }, [props.scrollOffset]);
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
const height = overlayBodyRows(props.maxRows, props.cols);
|
|
17
|
-
const next = focus < offset ? focus : focus >= offset + height ? focus - height + 1 : offset;
|
|
18
|
-
if (next !== offset) {
|
|
19
|
-
setOffset(next);
|
|
20
|
-
props.onScrollClamp?.(next);
|
|
21
|
-
}
|
|
22
|
-
}, [focus, props.maxRows, props.cols]);
|
|
23
|
-
return offset;
|
|
24
|
-
}
|
|
25
|
-
/** Cut by terminal columns, preserving surrogate pairs and wide names. */
|
|
26
|
-
export function clipProfileText(value, columns) {
|
|
27
|
-
let result = '';
|
|
28
|
-
for (const point of value) {
|
|
29
|
-
if (stringWidth(result + point) > Math.max(0, columns))
|
|
30
|
-
break;
|
|
31
|
-
result += point;
|
|
32
|
-
}
|
|
33
|
-
return result;
|
|
34
|
-
}
|
|
35
|
-
function uniqueId(profile, entries) {
|
|
36
|
-
let length = Math.min(8, profile.id.length);
|
|
37
|
-
while (length < profile.id.length && entries.some((other) => other.id !== profile.id
|
|
38
|
-
&& other.id.slice(0, length) === profile.id.slice(0, length)))
|
|
39
|
-
length++;
|
|
40
|
-
return profile.id.slice(0, length);
|
|
41
|
-
}
|
|
42
|
-
export function profileEndpointSummary(baseUrl) {
|
|
43
|
-
if (!baseUrl)
|
|
44
|
-
return 'Default URL';
|
|
45
|
-
try {
|
|
46
|
-
const url = new URL(baseUrl);
|
|
47
|
-
return url.username || url.password || url.search || url.hash ? 'Invalid URL' : url.host;
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return 'Invalid URL';
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
function host(profile) {
|
|
54
|
-
return profileEndpointSummary(profile.baseUrl);
|
|
55
|
-
}
|
|
56
|
-
function usePickerState(props) {
|
|
57
|
-
const [index, setIndex] = useState(0);
|
|
58
|
-
const [selectedId, setSelectedId] = useState(props.profiles.entries[0]?.id);
|
|
59
|
-
const [query, setQuery] = useState('');
|
|
60
|
-
const [searching, setSearching] = useState(false);
|
|
61
|
-
const searchable = props.profiles.entries.length > 8;
|
|
62
|
-
const entries = props.profiles.entries.filter((entry) => `${entry.name} ${entry.provider} ${entry.model}`.toLocaleLowerCase()
|
|
63
|
-
.includes(query.toLocaleLowerCase()));
|
|
64
|
-
const actions = props.manager ? ['New', 'Edit', 'Duplicate', 'Delete'] : ['Create profile'];
|
|
65
|
-
// THE SUBAGENT PICKER swaps the `Current custom` row for TWO built-in rows:
|
|
66
|
-
// `Same as main` (selection id null) and `Fast tier model` (the sentinel).
|
|
67
|
-
//
|
|
68
|
-
// THE BINDING PICKER HAS NEITHER (agent-model-kits §4.5): a kit slot can only
|
|
69
|
-
// name a profile, so `prefix` is 0 there even though it is a selection page -
|
|
70
|
-
// "no profile" is not a choice a kit may make.
|
|
71
|
-
const prefix = props.role === 'subagent' ? 2 : props.role === 'binding' ? 0
|
|
72
|
-
: props.manager ? 0 : 1;
|
|
73
|
-
const count = entries.length + prefix + actions.length;
|
|
74
|
-
const cursor = Math.min(index, count - 1);
|
|
75
|
-
const focused = entries[cursor - prefix];
|
|
76
|
-
const selected = props.profiles.entries.find((entry) => entry.id === selectedId);
|
|
77
|
-
const offset = useProfileScroll(props, cursor + (searchable ? 1 : 0));
|
|
78
|
-
useEffect(() => { if (focused)
|
|
79
|
-
setSelectedId(focused.id); }, [focused?.id]);
|
|
80
|
-
return { setIndex, query, setQuery, searching, setSearching, searchable, entries,
|
|
81
|
-
actions, prefix, count, cursor, focused, selected, offset };
|
|
82
|
-
}
|
|
83
|
-
function usePickerInput(props, state) {
|
|
84
|
-
const { cursor, focused, selected, actions, prefix, entries, count, searching, searchable, setIndex, setQuery, setSearching } = state;
|
|
85
|
-
function activate() {
|
|
86
|
-
if (props.role === 'subagent') {
|
|
87
|
-
// Built-in rows first: `Same as main`, then `Fast tier model`.
|
|
88
|
-
if (cursor === 0) {
|
|
89
|
-
props.onSelect(null);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
if (cursor === 1) {
|
|
93
|
-
props.onSelect(SUBAGENT_FAST_ROW_ID);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else if (!props.manager && props.role !== 'binding' && cursor === 0) {
|
|
98
|
-
props.onSelect(null);
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
if (focused) {
|
|
102
|
-
if (props.manager)
|
|
103
|
-
setIndex(prefix + entries.length + 1);
|
|
104
|
-
else
|
|
105
|
-
props.onSelect(focused.id);
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
const action = actions[cursor - prefix - entries.length];
|
|
109
|
-
if (action === 'New' || action === 'Create profile')
|
|
110
|
-
props.onCreate();
|
|
111
|
-
if (action === 'Edit' && selected)
|
|
112
|
-
props.onEdit(selected);
|
|
113
|
-
if (action === 'Duplicate' && selected)
|
|
114
|
-
props.onDuplicate(selected.id);
|
|
115
|
-
if (action === 'Delete' && selected)
|
|
116
|
-
props.onDelete(selected.id);
|
|
117
|
-
}
|
|
118
|
-
useInput((input, key) => {
|
|
119
|
-
if (props.isActive === false)
|
|
120
|
-
return;
|
|
121
|
-
if (key.escape) {
|
|
122
|
-
if (searching)
|
|
123
|
-
setSearching(false);
|
|
124
|
-
else
|
|
125
|
-
props.onCancel();
|
|
126
|
-
return;
|
|
127
|
-
}
|
|
128
|
-
if (searching) {
|
|
129
|
-
if (key.return || key.downArrow || key.tab) {
|
|
130
|
-
setSearching(false);
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
if (key.backspace || key.delete)
|
|
134
|
-
setQuery((value) => [...value].slice(0, -1).join(''));
|
|
135
|
-
else if (input && !key.ctrl && !key.meta) {
|
|
136
|
-
setQuery((value) => value + stripPasteFrames(stripEnterFrames(input)));
|
|
137
|
-
}
|
|
138
|
-
setIndex(0);
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
if (key.upArrow || (key.tab && key.shift))
|
|
142
|
-
setIndex((cursor - 1 + count) % count);
|
|
143
|
-
else if (key.downArrow || key.tab)
|
|
144
|
-
setIndex((cursor + 1) % count);
|
|
145
|
-
else if (key.return)
|
|
146
|
-
activate();
|
|
147
|
-
else if (input === '/' && searchable)
|
|
148
|
-
setSearching(true);
|
|
149
|
-
// `e` edits the focused profile directly (profile-picker-edit-key). The
|
|
150
|
-
// branch is deliberately NOT guarded by `!props.manager`: the manager page
|
|
151
|
-
// gains the same one-keystroke path (there `selected === focused`, see the
|
|
152
|
-
// effect in usePickerState), which spares the Enter-to-the-action-row hop.
|
|
153
|
-
// No-op on the `Current custom` row and the action rows (`focused` is
|
|
154
|
-
// undefined there), and the `searching` early-return above keeps `e` a
|
|
155
|
-
// query character while typing a search.
|
|
156
|
-
else if (!key.ctrl && !key.meta && input.toLowerCase() === 'e' && focused) {
|
|
157
|
-
props.onEdit(focused);
|
|
158
|
-
}
|
|
159
|
-
// `d` deletes the focused entry (D-7), symmetric with `e`: same guards,
|
|
160
|
-
// same no-ops on the built-in and action rows (`focused` is undefined
|
|
161
|
-
// there), and the `searching` early-return above keeps `d` a query
|
|
162
|
-
// character while typing a search.
|
|
163
|
-
else if (!key.ctrl && !key.meta && input.toLowerCase() === 'd' && focused) {
|
|
164
|
-
props.onDelete(focused.id);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
/** The selection id this page marks with `[Selected]`, by role (6.2). */
|
|
169
|
-
function currentSelectionId(props) {
|
|
170
|
-
if (props.selectedIdOverride !== undefined)
|
|
171
|
-
return props.selectedIdOverride;
|
|
172
|
-
// `subagent` and `binding` have no `${role}Id` key: their selection arrives
|
|
173
|
-
// through `selectedIdOverride`, so looking one up would read a key that does
|
|
174
|
-
// not exist on the library.
|
|
175
|
-
if (props.role === 'subagent' || props.role === 'binding')
|
|
176
|
-
return undefined;
|
|
177
|
-
return props.profiles[`${props.role}Id`];
|
|
178
|
-
}
|
|
179
|
-
function profilePickerLabel(props, entry) {
|
|
180
|
-
const saved = profileUsers(props.savedProfiles, entry.id, props.subagentProfileId);
|
|
181
|
-
const checked = currentSelectionId(props) === entry.id ? '[Selected] ' : '';
|
|
182
|
-
const duplicate = props.profiles.entries.some((other) => other.id !== entry.id
|
|
183
|
-
&& other.name === entry.name);
|
|
184
|
-
const identity = duplicate ? `#${uniqueId(entry, props.profiles.entries)} ` : '';
|
|
185
|
-
const detail = duplicate ? ` ${host(entry)}` : '';
|
|
186
|
-
return `${identity}${checked}${entry.name} ${entry.provider}:${entry.model}${detail}`
|
|
187
|
-
+ (saved ? ` [${saved}]` : '');
|
|
188
|
-
}
|
|
189
|
-
function buildPickerRows(props, state) {
|
|
190
|
-
const { entries, actions, cursor, searching, searchable, query, focused, selected } = state;
|
|
191
|
-
const glyphs = pickGlyphs(props.caps);
|
|
192
|
-
const lines = [];
|
|
193
|
-
if (props.role === 'subagent') {
|
|
194
|
-
// TWO BUILT-IN ROWS (D-5), marked with the same `[Selected]` prefix the
|
|
195
|
-
// profile rows use; the fast row annotates an unusable tier honestly.
|
|
196
|
-
const current = props.selectedIdOverride ?? null;
|
|
197
|
-
lines.push(`${current === null ? '[Selected] ' : ''}Same as main`);
|
|
198
|
-
lines.push(`${current === SUBAGENT_FAST_ROW_ID ? '[Selected] ' : ''}Fast tier model`
|
|
199
|
-
+ `${props.fastTierOff === true ? ' (fast tier off)' : ''}`);
|
|
200
|
-
}
|
|
201
|
-
else if (!props.manager && props.role !== 'binding')
|
|
202
|
-
lines.push('Current custom');
|
|
203
|
-
lines.push(...entries.map((entry) => profilePickerLabel(props, entry)));
|
|
204
|
-
lines.push(...actions);
|
|
205
|
-
const rows = lines.map((line, row) => _jsxs(Text, { wrap: "truncate", color: row === cursor ? props.theme.accent : props.theme.muted, children: [`${row === cursor && !searching ? glyphs.caret : ' '} `, clipProfileText(line, props.cols - 8)] }, row));
|
|
206
|
-
if (searchable)
|
|
207
|
-
rows.unshift(_jsxs(Text, { wrap: "truncate", color: props.theme.primary, children: [searching ? `${glyphs.caret} ` : ' ', "Search: ", query || '(/ to search)'] }, "search"));
|
|
208
|
-
// The subagent picker has no `Current custom` row to describe; its
|
|
209
|
-
// built-in rows already say everything there is to say.
|
|
210
|
-
const detail = props.role === 'subagent' ? focused
|
|
211
|
-
: !props.manager && props.role !== 'binding' && cursor === 0 ? props.customProfile
|
|
212
|
-
: focused ?? selected;
|
|
213
|
-
if (detail) {
|
|
214
|
-
rows.push(_jsxs(Text, { wrap: "truncate", color: props.theme.muted, children: [detail.provider, ":", detail.model || '(not set)', " ", host(detail), detail === props.customProfile ? '' : ` #${detail.id}`] }, "detail"));
|
|
215
|
-
rows.push(_jsx(Text, { wrap: "truncate", color: props.theme.muted, children: detail.apiKey ? 'Profile key: Configured'
|
|
216
|
-
: props.apiKeys[detail.provider] ? 'Shared / environment: Configured' : 'Missing API key' }, "key"));
|
|
217
|
-
rows.push(_jsx(Text, { wrap: "truncate", color: props.theme.muted, children: `Window: ${detail.contextWindow ?? 'auto'}` }, "window"));
|
|
218
|
-
}
|
|
219
|
-
return rows;
|
|
220
|
-
}
|
|
221
|
-
/** Profile selection and explicit management actions share one input owner. */
|
|
222
|
-
export function ModelProfilePicker(props) {
|
|
223
|
-
const state = usePickerState(props);
|
|
224
|
-
usePickerInput(props, state);
|
|
225
|
-
return _jsx(OverlayFrame, { ...props, title: props.error ?? (props.manager ? 'Manage profiles'
|
|
226
|
-
: props.role === 'subagent' ? 'Subagent model'
|
|
227
|
-
: props.role === 'binding' ? 'Choose profile'
|
|
228
|
-
: `${props.role === 'main' ? 'Main' : 'Fast'} profile`), rows: buildPickerRows(props, state), scrollOffset: state.searching ? 0 : state.offset, hint: state.searching ? 'Type search | Enter done | Esc back'
|
|
229
|
-
: props.manager ? 'Enter action | e edit | d delete | Esc back'
|
|
230
|
-
: 'Enter select | e edit | d delete | Esc back' });
|
|
231
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PlanReviewOverlay — the reviewable card `submit_plan` renders (plan-mode §6.6).
|
|
3
|
-
*
|
|
4
|
-
* `OverlayFrame` MODE A (`rows`), because a 20-step plan must scroll and mode A
|
|
5
|
-
* is the only mode with a position indicator.
|
|
6
|
-
*
|
|
7
|
-
* MODE A SLICES BY ELEMENT, SO THE PROSE IS PRE-WRAPPED. `sliceWindow` counts
|
|
8
|
-
* elements, not lines, and each element must be exactly one row. The summary
|
|
9
|
-
* runs to 600 characters and a step detail to 400 — handing either over as a
|
|
10
|
-
* single `<Text>` would render the whole paragraph as one truncated line and
|
|
11
|
-
* make the frame's `1-14/22` a false statement. `wrapToRows` is what keeps the
|
|
12
|
-
* count honest.
|
|
13
|
-
*
|
|
14
|
-
* ACTIONS LIVE IN THE FRAME HINT, NOT IN `rows`. Mode A slices `rows`; an action
|
|
15
|
-
* row placed there would scroll off exactly when a long plan needs it most.
|
|
16
|
-
* Single-key actions also avoid a second selection cursor competing with the
|
|
17
|
-
* scroll cursor.
|
|
18
|
-
*
|
|
19
|
-
* `Esc` IS NOT HANDLED HERE, and neither is any resolution of the pending
|
|
20
|
-
* request: `App` owns Esc, and the bridge's `settle()` is the only place a human
|
|
21
|
-
* request is answered (R-P12). That holds in the revise sub-state too, which is
|
|
22
|
-
* why the way back from the feedback field is `<-` rather than `Esc` (R2-P1-2).
|
|
23
|
-
*/
|
|
24
|
-
import React from 'react';
|
|
25
|
-
import type { Theme } from '../theme.js';
|
|
26
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
27
|
-
import type { NormalizedPlan } from '../../tools/human-input.js';
|
|
28
|
-
export type PlanVerdict = {
|
|
29
|
-
decision: 'approved' | 'revise';
|
|
30
|
-
feedback: string;
|
|
31
|
-
};
|
|
32
|
-
interface PlanReviewOverlayProps {
|
|
33
|
-
isActive?: boolean;
|
|
34
|
-
plan: NormalizedPlan;
|
|
35
|
-
maxRows: number;
|
|
36
|
-
cols: number;
|
|
37
|
-
scrollOffset: number;
|
|
38
|
-
onScrollClamp: (offset: number) => void;
|
|
39
|
-
theme: Theme;
|
|
40
|
-
caps: TermCapabilities;
|
|
41
|
-
onVerdict: (verdict: PlanVerdict) => void;
|
|
42
|
-
}
|
|
43
|
-
export declare function PlanReviewOverlay({ isActive, plan, maxRows, cols, scrollOffset, onScrollClamp, theme, caps, onVerdict, }: PlanReviewOverlayProps): React.ReactElement;
|
|
44
|
-
/**
|
|
45
|
-
* Flatten the plan into one-row elements.
|
|
46
|
-
*
|
|
47
|
-
* Exported for `plan-mode.test.ts`, which asserts that a 600-character summary
|
|
48
|
-
* really does become many rows rather than one truncated line (P1-3).
|
|
49
|
-
*/
|
|
50
|
-
export declare function buildPlanRows(plan: NormalizedPlan, width: number, theme: Theme, bullet: string): React.ReactElement[];
|
|
51
|
-
export {};
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
3
|
-
* PlanReviewOverlay — the reviewable card `submit_plan` renders (plan-mode §6.6).
|
|
4
|
-
*
|
|
5
|
-
* `OverlayFrame` MODE A (`rows`), because a 20-step plan must scroll and mode A
|
|
6
|
-
* is the only mode with a position indicator.
|
|
7
|
-
*
|
|
8
|
-
* MODE A SLICES BY ELEMENT, SO THE PROSE IS PRE-WRAPPED. `sliceWindow` counts
|
|
9
|
-
* elements, not lines, and each element must be exactly one row. The summary
|
|
10
|
-
* runs to 600 characters and a step detail to 400 — handing either over as a
|
|
11
|
-
* single `<Text>` would render the whole paragraph as one truncated line and
|
|
12
|
-
* make the frame's `1-14/22` a false statement. `wrapToRows` is what keeps the
|
|
13
|
-
* count honest.
|
|
14
|
-
*
|
|
15
|
-
* ACTIONS LIVE IN THE FRAME HINT, NOT IN `rows`. Mode A slices `rows`; an action
|
|
16
|
-
* row placed there would scroll off exactly when a long plan needs it most.
|
|
17
|
-
* Single-key actions also avoid a second selection cursor competing with the
|
|
18
|
-
* scroll cursor.
|
|
19
|
-
*
|
|
20
|
-
* `Esc` IS NOT HANDLED HERE, and neither is any resolution of the pending
|
|
21
|
-
* request: `App` owns Esc, and the bridge's `settle()` is the only place a human
|
|
22
|
-
* request is answered (R-P12). That holds in the revise sub-state too, which is
|
|
23
|
-
* why the way back from the feedback field is `<-` rather than `Esc` (R2-P1-2).
|
|
24
|
-
*/
|
|
25
|
-
import { useState } from 'react';
|
|
26
|
-
import { Text, useInput } from 'ink';
|
|
27
|
-
import { pickGlyphs } from '../glyphs.js';
|
|
28
|
-
import { OverlayFrame, overlayBodyRows } from '../layout/OverlayFrame.js';
|
|
29
|
-
import { wrapToRows } from '../layout/wrap-rows.js';
|
|
30
|
-
import { stripPasteFrames } from '../paste-frames.js';
|
|
31
|
-
import { stripEnterFrames } from '../enter-frames.js';
|
|
32
|
-
/** The frame's border plus its one-column padding on each side. */
|
|
33
|
-
const FRAME_CHROME_COLS = 4;
|
|
34
|
-
export function PlanReviewOverlay({ isActive = true, plan, maxRows, cols, scrollOffset, onScrollClamp, theme, caps, onVerdict, }) {
|
|
35
|
-
const glyphs = pickGlyphs(caps);
|
|
36
|
-
const [feedback, setFeedback] = useState(null);
|
|
37
|
-
useInput((input, key) => {
|
|
38
|
-
if (!isActive)
|
|
39
|
-
return;
|
|
40
|
-
if (key.escape)
|
|
41
|
-
return; // App owns dismiss.
|
|
42
|
-
if (feedback !== null) {
|
|
43
|
-
if (key.return) {
|
|
44
|
-
onVerdict({ decision: 'revise', feedback: feedback.trim() });
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
// THE WAY BACK TO THE CARD, and the reason it is `<-` and not `Esc`:
|
|
48
|
-
// `App` owns Esc here and settles the pending request with it, so a second
|
|
49
|
-
// Esc consumer in this overlay would be the `ConfirmDialog` double-resolve
|
|
50
|
-
// pattern R-P12 exists to keep out. `QuestionOverlay` already spends `<-`
|
|
51
|
-
// on "back", so this costs no key ownership. Without it the field is a
|
|
52
|
-
// one-way door — it consumes printable input and Backspace, and the only
|
|
53
|
-
// other exit throws the whole review away (R2-P1-2).
|
|
54
|
-
if (key.leftArrow) {
|
|
55
|
-
setFeedback(null);
|
|
56
|
-
return;
|
|
57
|
-
}
|
|
58
|
-
if (key.backspace || key.delete) {
|
|
59
|
-
setFeedback(feedback.slice(0, -1));
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
// `stripPasteFrames`, NOT `input` (I-12 / P0-2). This is the THIRD consumer
|
|
63
|
-
// that appends `input` to a string; the design's table listed it as
|
|
64
|
-
// "key-driven only, inert", which was true of the version that had no
|
|
65
|
-
// free-text field. Revision feedback is exactly the kind of thing a user
|
|
66
|
-
// pastes — a failing test, a stack trace — and a framed paste appended
|
|
67
|
-
// verbatim would put NULs into text the model then reads.
|
|
68
|
-
if (input && !key.ctrl && !key.meta && !key.tab) {
|
|
69
|
-
// `stripEnterFrames` rides inside it for the newline frame a
|
|
70
|
-
// Shift+Enter broadcasts (tui-shift-enter-copy-queue 3.5): same hazard,
|
|
71
|
-
// same fix, and this order is the one that leaves no NUL in the draft.
|
|
72
|
-
setFeedback(feedback + stripPasteFrames(stripEnterFrames(input)));
|
|
73
|
-
}
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
if (input === 'a' || input === 'A')
|
|
77
|
-
onVerdict({ decision: 'approved', feedback: '' });
|
|
78
|
-
else if (input === 'r' || input === 'R')
|
|
79
|
-
setFeedback('');
|
|
80
|
-
});
|
|
81
|
-
const width = Math.max(20, cols - FRAME_CHROME_COLS);
|
|
82
|
-
const rows = buildPlanRows(plan, width, theme, glyphs.bullet);
|
|
83
|
-
if (feedback !== null) {
|
|
84
|
-
// `esc dismiss`, NOT "esc back to the plan": `App` owns Esc for this overlay
|
|
85
|
-
// (R-P12) and settles the pending request with `null`, so Esc throws the
|
|
86
|
-
// whole review away from either sub-state. `<-` is the route back to the
|
|
87
|
-
// card, which is why it is named here too.
|
|
88
|
-
const feedbackHint = `${glyphs.enterKey} send ${glyphs.midDot} ${glyphs.arrowLeft} back ${glyphs.midDot} esc dismiss`;
|
|
89
|
-
return (_jsxs(OverlayFrame, { title: "What should change?", hint: feedbackHint, maxRows: maxRows, cols: cols, theme: theme, caps: caps, children: [overlayBodyRows(maxRows, cols) >= 2 && _jsx(Text, { wrap: "truncate", color: theme.muted, children: "The agent revises the plan and submits it again." }), _jsxs(Text, { wrap: "truncate", children: [_jsxs(Text, { color: theme.primary, bold: true, children: [glyphs.caret, ' '] }), feedback.length > 0 ? (_jsx(Text, { children: wrapToRows(feedback, Math.max(1, cols - FRAME_CHROME_COLS - 3)).at(-1) })) : (_jsx(Text, { color: theme.muted, children: "type feedback" })), _jsx(Text, { inverse: true, children: " " })] })] }));
|
|
90
|
-
}
|
|
91
|
-
return (_jsx(OverlayFrame, { title: "Review plan", hint: cols <= 48 ? "a approve r revise Esc cancel"
|
|
92
|
-
: `a approve ${glyphs.midDot} r revise ${glyphs.midDot} esc dismiss ${glyphs.midDot} ${glyphs.arrowUp}${glyphs.arrowDown} scroll`, maxRows: maxRows, cols: cols, rows: rows, scrollOffset: scrollOffset, onScrollClamp: onScrollClamp, theme: theme, caps: caps }));
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Flatten the plan into one-row elements.
|
|
96
|
-
*
|
|
97
|
-
* Exported for `plan-mode.test.ts`, which asserts that a 600-character summary
|
|
98
|
-
* really does become many rows rather than one truncated line (P1-3).
|
|
99
|
-
*/
|
|
100
|
-
export function buildPlanRows(plan, width, theme, bullet) {
|
|
101
|
-
const rows = [];
|
|
102
|
-
let key = 0;
|
|
103
|
-
const push = (node, color, bold) => {
|
|
104
|
-
rows.push(_jsx(Text, { wrap: "truncate", color: color, bold: bold, children: node }, `p${key++}`));
|
|
105
|
-
};
|
|
106
|
-
push(plan.title, theme.assistant, true);
|
|
107
|
-
for (const line of wrapToRows(plan.summary, width))
|
|
108
|
-
push(line || ' ', theme.muted);
|
|
109
|
-
push(' ');
|
|
110
|
-
push('Steps', theme.accent, true);
|
|
111
|
-
plan.steps.forEach((step, i) => {
|
|
112
|
-
const number = String(i + 1).padStart(2, ' ');
|
|
113
|
-
push(`${number} ${step.title}`);
|
|
114
|
-
for (const line of wrapToRows(step.detail, Math.max(10, width - 4))) {
|
|
115
|
-
push(` ${line}`, theme.muted);
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
const section = (label, items) => {
|
|
119
|
-
if (items.length === 0)
|
|
120
|
-
return;
|
|
121
|
-
push(' ');
|
|
122
|
-
push(label, theme.accent, true);
|
|
123
|
-
for (const item of items) {
|
|
124
|
-
for (const line of wrapToRows(`${bullet} ${item}`, width))
|
|
125
|
-
push(line, theme.muted);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
section('Files', plan.filesTouched);
|
|
129
|
-
section('Risks', plan.risks);
|
|
130
|
-
section('Open questions', plan.openQuestions);
|
|
131
|
-
return rows;
|
|
132
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The prompt editor page (quick-prompt-library §4.4 / D-11).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`. Labels and the footer
|
|
5
|
-
* are English like every other overlay; every sentence that explains a REFUSAL comes
|
|
6
|
-
* from `prompts/copy.ts`.
|
|
7
|
-
*
|
|
8
|
-
* SELF-MANAGED `OverlayFrame`, not the controlled one. The two modes are a
|
|
9
|
-
* discriminated union (`children?: undefined`), and this page lays out a multi-row
|
|
10
|
-
* body field that owns its own scrolling: handing it over as `rows` would mean the
|
|
11
|
-
* frame counts a body's lines as rows and windows them again (P2-2).
|
|
12
|
-
*
|
|
13
|
-
* TWO WAYS TO SAVE, AND THE SECOND ONE IS NOT DECORATION. `Ctrl+S` is the fast path,
|
|
14
|
-
* and it is a byte a terminal can eat (XON/XOFF) - so `Tab` to the `Save` row and
|
|
15
|
-
* `Enter` must do exactly the same thing. That is what keeps "I cannot save" from
|
|
16
|
-
* being a bug a whole class of terminals can reproduce.
|
|
17
|
-
*/
|
|
18
|
-
import React from 'react';
|
|
19
|
-
import type { Theme } from '../theme.js';
|
|
20
|
-
import type { TermCapabilities } from '../capabilities.js';
|
|
21
|
-
import { type PromptLibraryState } from './prompt-library-state.js';
|
|
22
|
-
export interface PromptEditorPageProps {
|
|
23
|
-
isActive: boolean;
|
|
24
|
-
state: PromptLibraryState;
|
|
25
|
-
cols: number;
|
|
26
|
-
maxRows: number;
|
|
27
|
-
theme: Theme;
|
|
28
|
-
caps: TermCapabilities;
|
|
29
|
-
reducedMotion?: boolean;
|
|
30
|
-
/** One field changed; the page never owns the text, only the caret. */
|
|
31
|
-
onDraft: (patch: {
|
|
32
|
-
title?: string;
|
|
33
|
-
content?: string;
|
|
34
|
-
description?: string;
|
|
35
|
-
tags?: string;
|
|
36
|
-
}) => void;
|
|
37
|
-
onSave: () => void;
|
|
38
|
-
onEsc: () => void;
|
|
39
|
-
onCancel: () => void;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* The page.
|
|
43
|
-
*
|
|
44
|
-
* The draft lives in the parent (the reducer owns it, so `Save` and `Esc` can see the
|
|
45
|
-
* same text); this component owns only what no other surface needs: which row has
|
|
46
|
-
* focus, and where each single-line field's caret sits.
|
|
47
|
-
*/
|
|
48
|
-
export declare function PromptEditorPage(props: PromptEditorPageProps): React.ReactElement;
|