@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,301 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from 'node:crypto';
|
|
2
|
-
import { emptyModelProfiles, duplicateModelProfile, normalizeModelProfiles, validateModelProfiles } from '../../config/model-profiles.js';
|
|
3
|
-
import { parseContextWindowInput } from '../../config/schema.js';
|
|
4
|
-
import { stepFanoutValue, teamFanoutValues } from './team-fanout-state.js';
|
|
5
|
-
import { draftGovernance, stepGovernanceSetting } from './governance-settings.js';
|
|
6
|
-
/** The picker's built-in `Fast tier model` row; never a profile id on disk. */
|
|
7
|
-
export const SUBAGENT_FAST_ROW_ID = '__fast__';
|
|
8
|
-
/** Keep the original secret separate from the empty replacement field. */
|
|
9
|
-
export function createProfileEditor(profile) {
|
|
10
|
-
return { original: { ...profile }, name: profile.name, provider: profile.provider,
|
|
11
|
-
model: profile.model, baseUrl: profile.baseUrl ?? '', apiKey: '',
|
|
12
|
-
contextWindow: profile.contextWindow === null ? '' : String(profile.contextWindow),
|
|
13
|
-
credentialMode: profile.apiKey ? 'keep' : 'shared', endpointChanged: false };
|
|
14
|
-
}
|
|
15
|
-
/** Validate locally before merging the child form into the root transaction. */
|
|
16
|
-
export function finishProfileEditor(editor) {
|
|
17
|
-
// STRICT IN THE UI, TOLERANT ON DISK (§6.5 / invariant 4): a typo is refused
|
|
18
|
-
// here with an inline error and the focus jump its `field` enables; it never
|
|
19
|
-
// reaches the draft. The message prefix matches the editor's LABELS row.
|
|
20
|
-
const window = parseContextWindowInput(editor.contextWindow);
|
|
21
|
-
if (window.kind === 'invalid') {
|
|
22
|
-
return { error: 'Context window: use a number or auto.', field: 'contextWindow' };
|
|
23
|
-
}
|
|
24
|
-
const profile = { id: editor.original.id, name: editor.name.trim(),
|
|
25
|
-
provider: editor.provider, model: editor.model.trim(), baseUrl: editor.baseUrl.trim() || null,
|
|
26
|
-
apiKey: editor.credentialMode === 'keep' ? editor.original.apiKey
|
|
27
|
-
: editor.credentialMode === 'replace' ? editor.apiKey.trim() : null,
|
|
28
|
-
contextWindow: window.kind === 'auto' ? null : window.value };
|
|
29
|
-
const library = { ...emptyModelProfiles(), entries: [profile] };
|
|
30
|
-
const issue = validateModelProfiles(library)[0];
|
|
31
|
-
if (issue)
|
|
32
|
-
return { error: issue.message, field: issue.path.split('.').at(-1) };
|
|
33
|
-
return { profile: normalizeModelProfiles(library).entries[0] };
|
|
34
|
-
}
|
|
35
|
-
/** Make an isolated root draft; opening the screen never mutates live config. */
|
|
36
|
-
export function createModelProfileState(draft) {
|
|
37
|
-
const copy = structuredClone(draft);
|
|
38
|
-
if (validateModelProfiles(copy.profiles).length
|
|
39
|
-
|| validateModelProfiles(copy.baseline.modelProfiles).length) {
|
|
40
|
-
copy.profiles = undefined;
|
|
41
|
-
copy.readError = 'invalid_profiles';
|
|
42
|
-
}
|
|
43
|
-
return { draft: copy, page: 'root', role: 'main', returnPage: 'manager',
|
|
44
|
-
bindNew: false, dirty: false };
|
|
45
|
-
}
|
|
46
|
-
/** The kits whose three slots name `id`, for the delete confirmation (D-9). */
|
|
47
|
-
export function kitsUsingProfile(profiles, id) {
|
|
48
|
-
return (profiles?.kits ?? []).filter((kit) => kit.mainProfileId === id
|
|
49
|
-
|| kit.fastProfileId === id
|
|
50
|
-
|| (kit.subagent.model === 'profile' && kit.subagent.modelProfileId === id));
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Drop `slot` from the session kit (§4.3 row 2 / AC-38).
|
|
54
|
-
*
|
|
55
|
-
* THE DRAFT IS NARROWED HERE, NOT ONLY AT SAVE TIME. `releasedSlots` already
|
|
56
|
-
* strips the same slot from the transaction before it commits, but the ROOT PAGE
|
|
57
|
-
* paints the kit's effective value for every HELD slot - so without this line a
|
|
58
|
-
* user picks a profile and the row keeps showing the one they just replaced,
|
|
59
|
-
* which is the most confusing thing a settings screen can do. Releasing the last
|
|
60
|
-
* slot ends the kit: `held: []` is not a state any surface can render.
|
|
61
|
-
*/
|
|
62
|
-
function releaseHeldSlot(draft, slot) {
|
|
63
|
-
const current = draft.sessionKit;
|
|
64
|
-
if (!current || !current.held.includes(slot))
|
|
65
|
-
return draft;
|
|
66
|
-
const held = current.held.filter((item) => item !== slot);
|
|
67
|
-
return { ...draft, sessionKit: held.length ? { id: current.id, held } : null };
|
|
68
|
-
}
|
|
69
|
-
/** Describe references using text so ASCII and no-color modes remain usable. */
|
|
70
|
-
export function profileUsers(profiles, id, subagentProfileId) {
|
|
71
|
-
// THE KITS ARE REFERENCES TOO (D-9 / RV-P2-6): "Main + kit "Deep work"" is what
|
|
72
|
-
// makes the confirmation honest, because deleting this entry also deletes that
|
|
73
|
-
// kit. The empty case must stay empty - a leading ` + ` is what a naive
|
|
74
|
-
// `join` after an unconditional push produces.
|
|
75
|
-
return [profiles?.mainId === id ? 'Main' : '', profiles?.fastId === id ? 'Fast' : '',
|
|
76
|
-
subagentProfileId === id ? 'Subagent' : '',
|
|
77
|
-
...kitsUsingProfile(profiles, id).map((kit) => `kit "${kit.name}"`)]
|
|
78
|
-
.filter(Boolean).join(' + ');
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* The team section a draft would save: the patch first, then the disk baseline
|
|
82
|
-
* (subagent-model §3.6). The explicit-`undefined` test is what makes an
|
|
83
|
-
* explicit `null` in the patch win over the baseline - `??` would fold it away.
|
|
84
|
-
*/
|
|
85
|
-
export function draftTeam(draft) {
|
|
86
|
-
const patch = draft.patch.team;
|
|
87
|
-
const baseline = draft.baseline.team;
|
|
88
|
-
return {
|
|
89
|
-
model: patch?.model !== undefined ? patch.model : baseline?.model ?? 'main',
|
|
90
|
-
modelProfileId: patch?.modelProfileId !== undefined ? patch.modelProfileId
|
|
91
|
-
: baseline?.modelProfileId ?? null,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/** The profile id the draft's team section binds, for reference checks (3.7). */
|
|
95
|
-
export function draftSubagentProfileId(draft) {
|
|
96
|
-
return draftTeam(draft).model === 'profile' ? draftTeam(draft).modelProfileId : null;
|
|
97
|
-
}
|
|
98
|
-
/** The projected picker selection for the subagent role (6.2). */
|
|
99
|
-
export function subagentSelectedId(draft) {
|
|
100
|
-
const team = draftTeam(draft);
|
|
101
|
-
if (team.model === 'profile')
|
|
102
|
-
return team.modelProfileId;
|
|
103
|
-
return team.model === 'fast' ? SUBAGENT_FAST_ROW_ID : null;
|
|
104
|
-
}
|
|
105
|
-
export function subagentModelSummary(input) {
|
|
106
|
-
if (input.mode === 'main')
|
|
107
|
-
return `Same as main (${input.mainConnection})`;
|
|
108
|
-
if (input.mode === 'fast') {
|
|
109
|
-
return input.fastConnection
|
|
110
|
-
? `Fast tier (${input.fastConnection})`
|
|
111
|
-
: 'Fast tier (off - falls back to main)';
|
|
112
|
-
}
|
|
113
|
-
const entry = input.modelProfileId
|
|
114
|
-
? input.profiles?.entries.find((candidate) => candidate.id === input.modelProfileId)
|
|
115
|
-
: undefined;
|
|
116
|
-
if (!entry)
|
|
117
|
-
return 'Profile missing - falls back to main';
|
|
118
|
-
const missing = !entry.apiKey && !input.hasKey(entry.provider);
|
|
119
|
-
return `${entry.name} ${entry.provider}:${entry.model}${missing ? ' [Missing API key]' : ''}`;
|
|
120
|
-
}
|
|
121
|
-
/** Adopt persisted fields only, resolving the old fast inheritance once. */
|
|
122
|
-
export function createCustomProfile(draft, role) {
|
|
123
|
-
const file = draft.baseline;
|
|
124
|
-
const provider = (role === 'fast' ? file.fast?.provider : undefined)
|
|
125
|
-
|| file.provider || 'anthropic';
|
|
126
|
-
const model = role === 'fast' ? file.fast?.model ?? '' : file.model ?? '';
|
|
127
|
-
const baseUrl = role === 'fast' && !model ? null
|
|
128
|
-
: (role === 'fast' ? file.fast?.baseUrl
|
|
129
|
-
|| (provider === (file.provider || 'anthropic') ? file.baseUrl : null)
|
|
130
|
-
: file.baseUrl) || null;
|
|
131
|
-
return { id: randomUUID(), name: '', provider, model, baseUrl,
|
|
132
|
-
apiKey: role === 'fast' && !model ? null : file.apiKeys?.[provider] || null,
|
|
133
|
-
// Carry the user's existing top-level correction into the first profile
|
|
134
|
-
// (§6.5): binding an AUTO profile would otherwise silently retire it
|
|
135
|
-
// (tradeoff B's migration risk, mitigated exactly here).
|
|
136
|
-
contextWindow: file.contextWindow ?? null };
|
|
137
|
-
}
|
|
138
|
-
function editField(state, action) {
|
|
139
|
-
if (!state.editor)
|
|
140
|
-
return state;
|
|
141
|
-
const editor = { ...state.editor, [action.field]: action.value };
|
|
142
|
-
if (action.field === 'provider' || action.field === 'baseUrl') {
|
|
143
|
-
editor.apiKey = '';
|
|
144
|
-
editor.credentialMode = 'shared';
|
|
145
|
-
editor.endpointChanged = true;
|
|
146
|
-
}
|
|
147
|
-
if (action.field === 'credentialMode' && action.value !== 'replace')
|
|
148
|
-
editor.apiKey = '';
|
|
149
|
-
return { ...state, editor, error: undefined };
|
|
150
|
-
}
|
|
151
|
-
function mergeEditor(state) {
|
|
152
|
-
if (!state.editor)
|
|
153
|
-
return state;
|
|
154
|
-
const result = finishProfileEditor(state.editor);
|
|
155
|
-
if (!result.profile)
|
|
156
|
-
return { ...state, error: result.error };
|
|
157
|
-
const library = state.draft.profiles ?? emptyModelProfiles();
|
|
158
|
-
const exists = library.entries.some((entry) => entry.id === result.profile.id);
|
|
159
|
-
if (!exists && library.entries.length >= 200)
|
|
160
|
-
return { ...state,
|
|
161
|
-
error: 'Maximum 200 profiles. Delete an unused profile first.' };
|
|
162
|
-
const profiles = { ...library, entries: exists
|
|
163
|
-
? library.entries.map((entry) => entry.id === result.profile.id ? result.profile : entry)
|
|
164
|
-
: [...library.entries, result.profile] };
|
|
165
|
-
const merged = { ...state, draft: { ...state.draft, profiles }, dirty: true,
|
|
166
|
-
editor: undefined, page: state.returnPage, error: undefined };
|
|
167
|
-
return state.bindNew ? modelProfileReducer(merged, { type: 'select', role: state.role, id: result.profile.id }) : merged;
|
|
168
|
-
}
|
|
169
|
-
/** All child actions modify only the root draft; persistence belongs to Save. */
|
|
170
|
-
export function modelProfileReducer(state, action) {
|
|
171
|
-
const library = state.draft.profiles ?? emptyModelProfiles();
|
|
172
|
-
switch (action.type) {
|
|
173
|
-
case 'reload': return createModelProfileState(action.draft);
|
|
174
|
-
case 'page': return { ...state, page: action.page, role: action.role ?? state.role,
|
|
175
|
-
error: undefined };
|
|
176
|
-
case 'select': {
|
|
177
|
-
// THE SUBAGENT BRANCH (D-5): selection writes the DRAFT's team patch -
|
|
178
|
-
// `profiles` and `activateRoles` are untouched, because 'subagent' is a
|
|
179
|
-
// picker-only role with no `${role}Id` library key (6.2). Save is the
|
|
180
|
-
// one place the patch ever reaches disk (I-5).
|
|
181
|
-
if (action.role === 'subagent') {
|
|
182
|
-
const team = action.id === null
|
|
183
|
-
? { model: 'main', modelProfileId: null }
|
|
184
|
-
: action.id === SUBAGENT_FAST_ROW_ID
|
|
185
|
-
? { model: 'fast', modelProfileId: null }
|
|
186
|
-
: { model: 'profile', modelProfileId: action.id };
|
|
187
|
-
return { ...state, page: 'root', dirty: true, error: undefined,
|
|
188
|
-
draft: releaseHeldSlot({ ...state.draft,
|
|
189
|
-
patch: { ...state.draft.patch, team } }, 'subagent') };
|
|
190
|
-
}
|
|
191
|
-
// `'binding'` NEVER REACHES THIS REDUCER: a kit slot's choice is applied
|
|
192
|
-
// by `kitReducer` (`kit-main` / `kit-fast`), because the value belongs to
|
|
193
|
-
// an editor draft rather than to a `${role}Id` library key. Returning the
|
|
194
|
-
// state unchanged is the honest answer to an impossible action.
|
|
195
|
-
if (action.role === 'binding')
|
|
196
|
-
return state;
|
|
197
|
-
return { ...state, page: 'root', dirty: true, error: undefined,
|
|
198
|
-
draft: releaseHeldSlot({ ...state.draft,
|
|
199
|
-
profiles: { ...library, [`${action.role}Id`]: action.id },
|
|
200
|
-
activateRoles: [...new Set([...state.draft.activateRoles, action.role])] }, action.role) };
|
|
201
|
-
}
|
|
202
|
-
case 'edit': return { ...state, editor: createProfileEditor(action.profile), page: 'editor',
|
|
203
|
-
// A PROFILE BORN IN A KIT SLOT RETURNS TO THAT SLOT (§4.5): the picker's
|
|
204
|
-
// `Create profile` action is the only way to invent one and it is offered on
|
|
205
|
-
// the kit's slot chooser - landing in the profile MANAGER there would
|
|
206
|
-
// abandon the half-built kit behind a page the user never asked for.
|
|
207
|
-
returnPage: state.page === 'picker' || state.page === 'kit-slot'
|
|
208
|
-
? state.page : 'manager',
|
|
209
|
-
bindNew: action.bindNew ?? false, error: undefined };
|
|
210
|
-
case 'editor-field': return editField(state, action);
|
|
211
|
-
case 'retain-key': return state.editor?.original.apiKey ? { ...state,
|
|
212
|
-
editor: { ...state.editor, credentialMode: 'keep', apiKey: '' } } : state;
|
|
213
|
-
case 'merge-editor': return mergeEditor(state);
|
|
214
|
-
case 'choose-model': {
|
|
215
|
-
// Legal ONLY from the list page (§7). `editor-field` would do the same thing,
|
|
216
|
-
// but routing the list page through the generic field action would also let a
|
|
217
|
-
// future `editField` side effect (key reset, endpoint flag) fire on a choice
|
|
218
|
-
// that never touched the endpoint.
|
|
219
|
-
if (!state.editor || state.page !== 'models')
|
|
220
|
-
return state;
|
|
221
|
-
return { ...state, page: 'editor', error: undefined,
|
|
222
|
-
editor: { ...state.editor, model: action.model } };
|
|
223
|
-
}
|
|
224
|
-
case 'cancel-editor': return { ...state, editor: undefined, page: state.returnPage,
|
|
225
|
-
error: undefined };
|
|
226
|
-
case 'team-fanout': {
|
|
227
|
-
// THE FRAGMENT IS THE ONLY THING WRITTEN (D-17 / R-P0-1). `stepFanoutValue`
|
|
228
|
-
// returns `Partial<TeamFanoutPatch>`, so `model` and `modelProfileId` - the
|
|
229
|
-
// two keys `releasedSlots` reads as "the user re-decided the subagent slot" -
|
|
230
|
-
// cannot enter the patch from here. `teamFanoutValues` is the CLAMPED view
|
|
231
|
-
// (R-P0-2), so a step starts from the number the user is looking at.
|
|
232
|
-
const step = stepFanoutValue(teamFanoutValues(state.draft), action.field, action.delta);
|
|
233
|
-
return { ...state, dirty: true, error: undefined,
|
|
234
|
-
draft: { ...state.draft,
|
|
235
|
-
patch: { ...state.draft.patch, team: { ...state.draft.patch.team, ...step } } } };
|
|
236
|
-
}
|
|
237
|
-
case 'governance-step': {
|
|
238
|
-
// THE FRAGMENT IS THE ONLY THING WRITTEN, as for `team-fanout`: `stepGovernanceSetting`
|
|
239
|
-
// returns exactly one key, clamped, from the value the screen is showing
|
|
240
|
-
// (`draftGovernance`), so a step can never drag a second key into the patch.
|
|
241
|
-
const step = stepGovernanceSetting(draftGovernance(state.draft), action.key, action.delta);
|
|
242
|
-
return { ...state, dirty: true, error: undefined,
|
|
243
|
-
draft: { ...state.draft, patch: { ...state.draft.patch,
|
|
244
|
-
governance: { ...state.draft.patch.governance, ...step } } } };
|
|
245
|
-
}
|
|
246
|
-
case 'duplicate': {
|
|
247
|
-
if (library.entries.length >= 200)
|
|
248
|
-
return { ...state,
|
|
249
|
-
error: 'Maximum 200 profiles. Delete an unused profile first.' };
|
|
250
|
-
const original = library.entries.find((entry) => entry.id === action.id);
|
|
251
|
-
return original ? { ...state, dirty: true, draft: { ...state.draft,
|
|
252
|
-
profiles: { ...library, entries: [...library.entries, duplicateModelProfile(original)] } } }
|
|
253
|
-
: state;
|
|
254
|
-
}
|
|
255
|
-
case 'delete': {
|
|
256
|
-
// UNBIND-AND-DELETE (D-6): being referenced no longer refuses the flow.
|
|
257
|
-
// The references - subagent included - are computed here, shown on the
|
|
258
|
-
// confirm page, and cleared by `confirm-delete` inside the draft.
|
|
259
|
-
const users = profileUsers(library, action.id, draftSubagentProfileId(state.draft));
|
|
260
|
-
return { ...state, page: 'delete-confirm', deleteId: action.id,
|
|
261
|
-
deleteUsers: users, error: undefined };
|
|
262
|
-
}
|
|
263
|
-
case 'confirm-delete': {
|
|
264
|
-
const id = state.deleteId;
|
|
265
|
-
if (!id)
|
|
266
|
-
return state;
|
|
267
|
-
// THE DRAFT-SIDE UNBIND: Main/Fast bindings pointing at the entry are
|
|
268
|
-
// nulled here (not refused) and the subagent binding resets to main
|
|
269
|
-
// when it named THIS entry. `removeModelProfile`'s throw stays as the
|
|
270
|
-
// bottom-line defense - the UI has already unbound, so it cannot fire
|
|
271
|
-
// on this path.
|
|
272
|
-
//
|
|
273
|
-
// AND THE KITS GO WITH IT (agent-model-kits D-9 / I-8): a kit naming a
|
|
274
|
-
// deleted profile can neither be applied nor repaired from any screen, so
|
|
275
|
-
// leaving it behind would be leaving a permanent error. The confirmation
|
|
276
|
-
// page has already named them, so this is the action the user agreed to.
|
|
277
|
-
const doomed = kitsUsingProfile(library, id);
|
|
278
|
-
const defaultKitKept = doomed.some((kit) => kit.id === (library.defaultKitId ?? null))
|
|
279
|
-
? null : library.defaultKitId;
|
|
280
|
-
const sessionReleased = doomed.some((kit) => kit.id === state.draft.sessionKit?.id)
|
|
281
|
-
? null : state.draft.sessionKit;
|
|
282
|
-
const profiles = {
|
|
283
|
-
...library,
|
|
284
|
-
mainId: library.mainId === id ? null : library.mainId,
|
|
285
|
-
fastId: library.fastId === id ? null : library.fastId,
|
|
286
|
-
entries: library.entries.filter((entry) => entry.id !== id),
|
|
287
|
-
kits: (library.kits ?? []).filter((kit) => !doomed.includes(kit)),
|
|
288
|
-
defaultKitId: defaultKitKept,
|
|
289
|
-
};
|
|
290
|
-
const teamReset = draftSubagentProfileId(state.draft) === id
|
|
291
|
-
? { team: { model: 'main', modelProfileId: null } }
|
|
292
|
-
: {};
|
|
293
|
-
return { ...state, page: 'manager', dirty: true,
|
|
294
|
-
draft: { ...state.draft, profiles, sessionKit: sessionReleased,
|
|
295
|
-
patch: { ...state.draft.patch, ...teamReset } },
|
|
296
|
-
deleteId: undefined, deleteUsers: undefined,
|
|
297
|
-
// No orphan editor for a deleted entry (3.7).
|
|
298
|
-
editor: state.editor?.original.id === id ? undefined : state.editor };
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The prompt manager's state machine and view models (quick-prompt-library §4.4).
|
|
3
|
-
*
|
|
4
|
-
* ASCII ONLY - `src/ui/**` is inside `glyphs.test.ts::inScope`. Every sentence the
|
|
5
|
-
* user reads comes from `prompts/copy.ts`; nothing in this file may hold a literal
|
|
6
|
-
* non-ASCII byte.
|
|
7
|
-
*
|
|
8
|
-
* WHY A PURE REDUCER AND NOT `useState` INSIDE THE COMPONENT: the page stack has two
|
|
9
|
-
* transitions that are easy to get wrong and impossible to see on screen - "the
|
|
10
|
-
* second Esc discards, the first does not" and "the intent is consumed exactly
|
|
11
|
-
* once" - and both are assertions, not screenshots. Everything below can be driven
|
|
12
|
-
* from a test with no Ink mounted.
|
|
13
|
-
*/
|
|
14
|
-
import type { PromptDraftInput, PromptDraftVerdict, PromptEditorDraft, PromptLibrary, PromptLibraryEntry, PromptWriteError, QuickPrompt } from '../../prompts/types.js';
|
|
15
|
-
export type PromptLibraryPage = 'list' | 'editor' | 'delete';
|
|
16
|
-
/** The six rows `Tab` cycles on the editor page, in visual order. */
|
|
17
|
-
export declare const PROMPT_EDITOR_FIELDS: readonly ["title", "content", "description", "tags", "save", "cancel"];
|
|
18
|
-
export type PromptEditorField = (typeof PROMPT_EDITOR_FIELDS)[number];
|
|
19
|
-
export interface PromptLibraryState {
|
|
20
|
-
page: PromptLibraryPage;
|
|
21
|
-
/** Focus index on the list page (clamped by the view). */
|
|
22
|
-
index: number;
|
|
23
|
-
/**
|
|
24
|
-
* Id the focus should land on when the list is next drawn.
|
|
25
|
-
*
|
|
26
|
-
* BY ID, NEVER BY POSITION: a create appends and an edit does not move the entry,
|
|
27
|
-
* but a delete shifts every row after it, and "focus row 3" would then point at a
|
|
28
|
-
* different prompt than the one the user was working on.
|
|
29
|
-
*/
|
|
30
|
-
focusId: string | null;
|
|
31
|
-
draft: PromptEditorDraft;
|
|
32
|
-
/** The entry the draft was seeded from, so `dirty` is a comparison, not a guess. */
|
|
33
|
-
baseline: PromptEditorDraft | null;
|
|
34
|
-
/** The first Esc on a dirty editor arms the discard; any edit disarms it. */
|
|
35
|
-
escArmed: boolean;
|
|
36
|
-
pendingDeleteId: string | null;
|
|
37
|
-
error: PromptWriteError | null;
|
|
38
|
-
/** The row that should own focus after a refusal (D-12). */
|
|
39
|
-
errorField: PromptEditorField | null;
|
|
40
|
-
/** Highest intent nonce this overlay has acted on (I-8). */
|
|
41
|
-
consumedIntentNonce: number;
|
|
42
|
-
}
|
|
43
|
-
export type PromptLibraryAction = {
|
|
44
|
-
type: 'init';
|
|
45
|
-
entry: PromptLibraryEntry;
|
|
46
|
-
library: PromptLibrary;
|
|
47
|
-
nonce: number;
|
|
48
|
-
} | {
|
|
49
|
-
type: 'list';
|
|
50
|
-
focusId?: string;
|
|
51
|
-
} | {
|
|
52
|
-
type: 'focus';
|
|
53
|
-
index: number;
|
|
54
|
-
} | {
|
|
55
|
-
type: 'create';
|
|
56
|
-
seed?: {
|
|
57
|
-
title?: string;
|
|
58
|
-
content?: string;
|
|
59
|
-
};
|
|
60
|
-
} | {
|
|
61
|
-
type: 'edit';
|
|
62
|
-
id: string;
|
|
63
|
-
library: PromptLibrary;
|
|
64
|
-
} | {
|
|
65
|
-
type: 'delete';
|
|
66
|
-
id: string;
|
|
67
|
-
} | {
|
|
68
|
-
type: 'draft';
|
|
69
|
-
patch: Partial<PromptEditorDraft>;
|
|
70
|
-
} | {
|
|
71
|
-
type: 'commit';
|
|
72
|
-
id: string | null;
|
|
73
|
-
} | {
|
|
74
|
-
type: 'failed';
|
|
75
|
-
code: PromptWriteError;
|
|
76
|
-
field?: PromptEditorField;
|
|
77
|
-
} | {
|
|
78
|
-
type: 'esc';
|
|
79
|
-
} | {
|
|
80
|
-
type: 'cancelled';
|
|
81
|
-
};
|
|
82
|
-
/** A new, empty draft. `id: null` is what makes `Save` a create rather than an update. */
|
|
83
|
-
export declare const EMPTY_PROMPT_DRAFT: PromptEditorDraft;
|
|
84
|
-
export declare const INITIAL_PROMPT_LIBRARY_STATE: PromptLibraryState;
|
|
85
|
-
/** The editable projection of a stored entry. */
|
|
86
|
-
export declare function draftFromEntry(entry: QuickPrompt): PromptEditorDraft;
|
|
87
|
-
/** A create draft seeded from a command (`/prompts add title :: body`). */
|
|
88
|
-
export declare function seededDraft(seed?: {
|
|
89
|
-
title?: string;
|
|
90
|
-
content?: string;
|
|
91
|
-
}): PromptEditorDraft;
|
|
92
|
-
/** Structural equality is enough: every field is a string or a boolean. */
|
|
93
|
-
export declare function draftIsDirty(draft: PromptEditorDraft, baseline: PromptEditorDraft | null): boolean;
|
|
94
|
-
/**
|
|
95
|
-
* Validate a draft and turn it into what the store accepts (D-12).
|
|
96
|
-
*
|
|
97
|
-
* THE VALIDATOR IS `store.ts`'S, not a second copy here: the sentence the editor
|
|
98
|
-
* shows and the rule the write applies have to be the same rule, or a user can be
|
|
99
|
-
* told a title is fine by the form and refused by the store.
|
|
100
|
-
*/
|
|
101
|
-
export declare function finishPromptEditor(draft: PromptEditorDraft): PromptDraftVerdict;
|
|
102
|
-
/** Index of the first focusable row, for a refusal that named a field. */
|
|
103
|
-
export declare function fieldIndex(field: PromptEditorField | null): number;
|
|
104
|
-
/**
|
|
105
|
-
* The reducer.
|
|
106
|
-
*
|
|
107
|
-
* `init` is the ONLY action that can jump straight to the editor or the delete page:
|
|
108
|
-
* that is what makes `/prompts edit 2` land where it should (D-21). The intent's
|
|
109
|
-
* nonce is stored as `consumedIntentNonce` by the component before dispatching, so a
|
|
110
|
-
* replayed intent is a no-op at the component, not a second edit here.
|
|
111
|
-
*/
|
|
112
|
-
export declare function promptLibraryReducer(state: PromptLibraryState, action: PromptLibraryAction, library: PromptLibrary): PromptLibraryState;
|
|
113
|
-
export interface PromptLibraryRow {
|
|
114
|
-
id: string;
|
|
115
|
-
/** One-line render text: the title plus its markers. The caret is the component's. */
|
|
116
|
-
label: string;
|
|
117
|
-
markers: {
|
|
118
|
-
favorite: boolean;
|
|
119
|
-
hasTags: boolean;
|
|
120
|
-
uses: number;
|
|
121
|
-
};
|
|
122
|
-
/** Body length in code points; the detail block and the delete page share it. */
|
|
123
|
-
chars: number;
|
|
124
|
-
}
|
|
125
|
-
/** `1.2k` for anything a fixed-width column cannot show in full. */
|
|
126
|
-
export declare function formatCount(count: number): string;
|
|
127
|
-
/** `3d ago` / `2h ago` / `just now`. Deliberately coarse: it is a hint, not a clock. */
|
|
128
|
-
export declare function formatAgo(timestamp: number | undefined, now: number): string;
|
|
129
|
-
/**
|
|
130
|
-
* The list, one row per entry, in the library's own order.
|
|
131
|
-
*
|
|
132
|
-
* DUPLICATE TITLES GET AN ID PREFIX (I-2), exactly as `kit-picker-state.ts` does for
|
|
133
|
-
* duplicate kit names: two rows reading the same words make `Enter` a coin flip.
|
|
134
|
-
*/
|
|
135
|
-
export declare function libraryRows(library: PromptLibrary): PromptLibraryRow[];
|
|
136
|
-
/**
|
|
137
|
-
* The detail block under the list: at most `detailMaxLines` rows, fixed shape.
|
|
138
|
-
*
|
|
139
|
-
* FIXED, because `OverlayFrame`'s window is shared with the list (D-16): a body that
|
|
140
|
-
* participated in row height would squeeze six prompts into two visible rows. The
|
|
141
|
-
* full text has exactly one home, and it is the editor.
|
|
142
|
-
*/
|
|
143
|
-
export declare function libraryDetail(row: PromptLibraryRow | undefined, library: PromptLibrary, cols: number, now?: number): string[];
|
|
144
|
-
/**
|
|
145
|
-
* The list page's footer.
|
|
146
|
-
*
|
|
147
|
-
* THE LAST CLAUSE IS ALWAYS THE WAY OUT (§9.5): a narrow terminal clips from the
|
|
148
|
-
* left, so the reader always keeps `Esc close`. The reorder keys are named here
|
|
149
|
-
* rather than in the row above it because they are the one affordance a user cannot
|
|
150
|
-
* discover by pressing a key they already know.
|
|
151
|
-
*/
|
|
152
|
-
export declare function libraryHint(state: PromptLibraryState, count: number): string;
|
|
153
|
-
/** The delete page's four lines: what it is, how big, and what it costs. */
|
|
154
|
-
export declare function deleteDetail(library: PromptLibrary, id: string | null): string[];
|
|
155
|
-
/**
|
|
156
|
-
* The draft as the store accepts it.
|
|
157
|
-
*
|
|
158
|
-
* THE TAGS FIELD IS PARSED HERE, ONCE, and nowhere else: the editor edits a raw
|
|
159
|
-
* string, the store validates a `string[]`, and a second parser between them is how
|
|
160
|
-
* `a,b` and `a b` come to mean different things depending on which surface saved it.
|
|
161
|
-
*/
|
|
162
|
-
export declare function draftToInput(draft: PromptEditorDraft): PromptDraftInput;
|