@dsh-cc/tui 0.5.0
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/LICENSE +201 -0
- package/README.md +144 -0
- package/lib/bash-history.d.ts +31 -0
- package/lib/bash-history.d.ts.map +1 -0
- package/lib/bash-history.js +94 -0
- package/lib/bash-history.js.map +1 -0
- package/lib/compact-fold.d.ts +35 -0
- package/lib/compact-fold.d.ts.map +1 -0
- package/lib/compact-fold.js +60 -0
- package/lib/compact-fold.js.map +1 -0
- package/lib/components/arg-completers.d.ts +22 -0
- package/lib/components/arg-completers.d.ts.map +1 -0
- package/lib/components/arg-completers.js +75 -0
- package/lib/components/arg-completers.js.map +1 -0
- package/lib/components/code-theme.d.ts +25 -0
- package/lib/components/code-theme.d.ts.map +1 -0
- package/lib/components/code-theme.js +137 -0
- package/lib/components/code-theme.js.map +1 -0
- package/lib/components/completion.d.ts +50 -0
- package/lib/components/completion.d.ts.map +1 -0
- package/lib/components/completion.js +279 -0
- package/lib/components/completion.js.map +1 -0
- package/lib/components/diff-card.d.ts +29 -0
- package/lib/components/diff-card.d.ts.map +1 -0
- package/lib/components/diff-card.js +175 -0
- package/lib/components/diff-card.js.map +1 -0
- package/lib/components/diff-hunks.d.ts +44 -0
- package/lib/components/diff-hunks.d.ts.map +1 -0
- package/lib/components/diff-hunks.js +188 -0
- package/lib/components/diff-hunks.js.map +1 -0
- package/lib/components/editor-history.d.ts +23 -0
- package/lib/components/editor-history.d.ts.map +1 -0
- package/lib/components/editor-history.js +29 -0
- package/lib/components/editor-history.js.map +1 -0
- package/lib/components/markdown-theme.d.ts +11 -0
- package/lib/components/markdown-theme.d.ts.map +1 -0
- package/lib/components/markdown-theme.js +29 -0
- package/lib/components/markdown-theme.js.map +1 -0
- package/lib/components/masked-input.d.ts +24 -0
- package/lib/components/masked-input.d.ts.map +1 -0
- package/lib/components/masked-input.js +168 -0
- package/lib/components/masked-input.js.map +1 -0
- package/lib/components/overlay-host.d.ts +31 -0
- package/lib/components/overlay-host.d.ts.map +1 -0
- package/lib/components/overlay-host.js +128 -0
- package/lib/components/overlay-host.js.map +1 -0
- package/lib/components/overlays.d.ts +94 -0
- package/lib/components/overlays.d.ts.map +1 -0
- package/lib/components/overlays.js +450 -0
- package/lib/components/overlays.js.map +1 -0
- package/lib/components/provider-box.d.ts +23 -0
- package/lib/components/provider-box.d.ts.map +1 -0
- package/lib/components/provider-box.js +164 -0
- package/lib/components/provider-box.js.map +1 -0
- package/lib/components/read-group.d.ts +51 -0
- package/lib/components/read-group.d.ts.map +1 -0
- package/lib/components/read-group.js +105 -0
- package/lib/components/read-group.js.map +1 -0
- package/lib/components/root-bash.d.ts +36 -0
- package/lib/components/root-bash.d.ts.map +1 -0
- package/lib/components/root-bash.js +112 -0
- package/lib/components/root-bash.js.map +1 -0
- package/lib/components/root-types.d.ts +42 -0
- package/lib/components/root-types.d.ts.map +1 -0
- package/lib/components/root-types.js +8 -0
- package/lib/components/root-types.js.map +1 -0
- package/lib/components/root-utils.d.ts +22 -0
- package/lib/components/root-utils.d.ts.map +1 -0
- package/lib/components/root-utils.js +45 -0
- package/lib/components/root-utils.js.map +1 -0
- package/lib/components/root.d.ts +25 -0
- package/lib/components/root.d.ts.map +1 -0
- package/lib/components/root.js +357 -0
- package/lib/components/root.js.map +1 -0
- package/lib/components/theme.d.ts +61 -0
- package/lib/components/theme.d.ts.map +1 -0
- package/lib/components/theme.js +99 -0
- package/lib/components/theme.js.map +1 -0
- package/lib/components/transcript.d.ts +43 -0
- package/lib/components/transcript.d.ts.map +1 -0
- package/lib/components/transcript.js +203 -0
- package/lib/components/transcript.js.map +1 -0
- package/lib/components/working-line.d.ts +35 -0
- package/lib/components/working-line.d.ts.map +1 -0
- package/lib/components/working-line.js +66 -0
- package/lib/components/working-line.js.map +1 -0
- package/lib/effort-catalog.d.ts +27 -0
- package/lib/effort-catalog.d.ts.map +1 -0
- package/lib/effort-catalog.js +36 -0
- package/lib/effort-catalog.js.map +1 -0
- package/lib/export-markdown.d.ts +18 -0
- package/lib/export-markdown.d.ts.map +1 -0
- package/lib/export-markdown.js +124 -0
- package/lib/export-markdown.js.map +1 -0
- package/lib/harness/approval-preview.d.ts +33 -0
- package/lib/harness/approval-preview.d.ts.map +1 -0
- package/lib/harness/approval-preview.js +179 -0
- package/lib/harness/approval-preview.js.map +1 -0
- package/lib/harness/boot-banner.d.ts +14 -0
- package/lib/harness/boot-banner.d.ts.map +1 -0
- package/lib/harness/boot-banner.js +89 -0
- package/lib/harness/boot-banner.js.map +1 -0
- package/lib/harness/driver-agent.d.ts +78 -0
- package/lib/harness/driver-agent.d.ts.map +1 -0
- package/lib/harness/driver-agent.js +314 -0
- package/lib/harness/driver-agent.js.map +1 -0
- package/lib/harness/driver-agents.d.ts +20 -0
- package/lib/harness/driver-agents.d.ts.map +1 -0
- package/lib/harness/driver-agents.js +123 -0
- package/lib/harness/driver-agents.js.map +1 -0
- package/lib/harness/driver-approvals.d.ts +38 -0
- package/lib/harness/driver-approvals.d.ts.map +1 -0
- package/lib/harness/driver-approvals.js +277 -0
- package/lib/harness/driver-approvals.js.map +1 -0
- package/lib/harness/driver-bash.d.ts +15 -0
- package/lib/harness/driver-bash.d.ts.map +1 -0
- package/lib/harness/driver-bash.js +73 -0
- package/lib/harness/driver-bash.js.map +1 -0
- package/lib/harness/driver-catalog.d.ts +84 -0
- package/lib/harness/driver-catalog.d.ts.map +1 -0
- package/lib/harness/driver-catalog.js +256 -0
- package/lib/harness/driver-catalog.js.map +1 -0
- package/lib/harness/driver-ctx.d.ts +462 -0
- package/lib/harness/driver-ctx.d.ts.map +1 -0
- package/lib/harness/driver-ctx.js +11 -0
- package/lib/harness/driver-ctx.js.map +1 -0
- package/lib/harness/driver-hud.d.ts +31 -0
- package/lib/harness/driver-hud.d.ts.map +1 -0
- package/lib/harness/driver-hud.js +204 -0
- package/lib/harness/driver-hud.js.map +1 -0
- package/lib/harness/driver-live.d.ts +36 -0
- package/lib/harness/driver-live.d.ts.map +1 -0
- package/lib/harness/driver-live.js +44 -0
- package/lib/harness/driver-live.js.map +1 -0
- package/lib/harness/driver-modal.d.ts +52 -0
- package/lib/harness/driver-modal.d.ts.map +1 -0
- package/lib/harness/driver-modal.js +78 -0
- package/lib/harness/driver-modal.js.map +1 -0
- package/lib/harness/driver-mode.d.ts +35 -0
- package/lib/harness/driver-mode.d.ts.map +1 -0
- package/lib/harness/driver-mode.js +84 -0
- package/lib/harness/driver-mode.js.map +1 -0
- package/lib/harness/driver-pickers.d.ts +48 -0
- package/lib/harness/driver-pickers.d.ts.map +1 -0
- package/lib/harness/driver-pickers.js +249 -0
- package/lib/harness/driver-pickers.js.map +1 -0
- package/lib/harness/driver-promote.d.ts +29 -0
- package/lib/harness/driver-promote.d.ts.map +1 -0
- package/lib/harness/driver-promote.js +36 -0
- package/lib/harness/driver-promote.js.map +1 -0
- package/lib/harness/driver-queue.d.ts +19 -0
- package/lib/harness/driver-queue.d.ts.map +1 -0
- package/lib/harness/driver-queue.js +281 -0
- package/lib/harness/driver-queue.js.map +1 -0
- package/lib/harness/driver-run-local.d.ts +32 -0
- package/lib/harness/driver-run-local.d.ts.map +1 -0
- package/lib/harness/driver-run-local.js +366 -0
- package/lib/harness/driver-run-local.js.map +1 -0
- package/lib/harness/driver-sessions.d.ts +28 -0
- package/lib/harness/driver-sessions.d.ts.map +1 -0
- package/lib/harness/driver-sessions.js +386 -0
- package/lib/harness/driver-sessions.js.map +1 -0
- package/lib/harness/driver.d.ts +22 -0
- package/lib/harness/driver.d.ts.map +1 -0
- package/lib/harness/driver.js +459 -0
- package/lib/harness/driver.js.map +1 -0
- package/lib/harness/preset.d.ts +32 -0
- package/lib/harness/preset.d.ts.map +1 -0
- package/lib/harness/preset.js +34 -0
- package/lib/harness/preset.js.map +1 -0
- package/lib/harness/session-list.d.ts +65 -0
- package/lib/harness/session-list.d.ts.map +1 -0
- package/lib/harness/session-list.js +91 -0
- package/lib/harness/session-list.js.map +1 -0
- package/lib/harness/shell-output.d.ts +44 -0
- package/lib/harness/shell-output.d.ts.map +1 -0
- package/lib/harness/shell-output.js +90 -0
- package/lib/harness/shell-output.js.map +1 -0
- package/lib/harness/statusline-cc-transcript.d.ts +51 -0
- package/lib/harness/statusline-cc-transcript.d.ts.map +1 -0
- package/lib/harness/statusline-cc-transcript.js +191 -0
- package/lib/harness/statusline-cc-transcript.js.map +1 -0
- package/lib/harness/statusline-command.d.ts +54 -0
- package/lib/harness/statusline-command.d.ts.map +1 -0
- package/lib/harness/statusline-command.js +161 -0
- package/lib/harness/statusline-command.js.map +1 -0
- package/lib/harness/statusline-payload.d.ts +79 -0
- package/lib/harness/statusline-payload.d.ts.map +1 -0
- package/lib/harness/statusline-payload.js +93 -0
- package/lib/harness/statusline-payload.js.map +1 -0
- package/lib/harness/statusline-settings.d.ts +47 -0
- package/lib/harness/statusline-settings.d.ts.map +1 -0
- package/lib/harness/statusline-settings.js +57 -0
- package/lib/harness/statusline-settings.js.map +1 -0
- package/lib/harness/statusline-wiring.d.ts +45 -0
- package/lib/harness/statusline-wiring.d.ts.map +1 -0
- package/lib/harness/statusline-wiring.js +247 -0
- package/lib/harness/statusline-wiring.js.map +1 -0
- package/lib/harness/usage-view.d.ts +84 -0
- package/lib/harness/usage-view.d.ts.map +1 -0
- package/lib/harness/usage-view.js +199 -0
- package/lib/harness/usage-view.js.map +1 -0
- package/lib/harness/worktree-exit.d.ts +105 -0
- package/lib/harness/worktree-exit.d.ts.map +1 -0
- package/lib/harness/worktree-exit.js +168 -0
- package/lib/harness/worktree-exit.js.map +1 -0
- package/lib/history.d.ts +50 -0
- package/lib/history.d.ts.map +1 -0
- package/lib/history.js +139 -0
- package/lib/history.js.map +1 -0
- package/lib/index.d.ts +63 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +54 -0
- package/lib/index.js.map +1 -0
- package/lib/input.d.ts +158 -0
- package/lib/input.d.ts.map +1 -0
- package/lib/input.js +400 -0
- package/lib/input.js.map +1 -0
- package/lib/invariant.d.ts +14 -0
- package/lib/invariant.d.ts.map +1 -0
- package/lib/invariant.js +20 -0
- package/lib/invariant.js.map +1 -0
- package/lib/mode-cycle.d.ts +22 -0
- package/lib/mode-cycle.d.ts.map +1 -0
- package/lib/mode-cycle.js +32 -0
- package/lib/mode-cycle.js.map +1 -0
- package/lib/model-catalog.d.ts +22 -0
- package/lib/model-catalog.d.ts.map +1 -0
- package/lib/model-catalog.js +45 -0
- package/lib/model-catalog.js.map +1 -0
- package/lib/packaged-preset.d.ts +32 -0
- package/lib/packaged-preset.d.ts.map +1 -0
- package/lib/packaged-preset.js +94 -0
- package/lib/packaged-preset.js.map +1 -0
- package/lib/plugin.d.ts +11 -0
- package/lib/plugin.d.ts.map +1 -0
- package/lib/plugin.js +88 -0
- package/lib/plugin.js.map +1 -0
- package/lib/profile.d.ts +4 -0
- package/lib/profile.d.ts.map +1 -0
- package/lib/profile.js +7 -0
- package/lib/profile.js.map +1 -0
- package/lib/project-sessions.d.ts +29 -0
- package/lib/project-sessions.d.ts.map +1 -0
- package/lib/project-sessions.js +60 -0
- package/lib/project-sessions.js.map +1 -0
- package/lib/project.d.ts +75 -0
- package/lib/project.d.ts.map +1 -0
- package/lib/project.js +196 -0
- package/lib/project.js.map +1 -0
- package/lib/provider-actions.d.ts +37 -0
- package/lib/provider-actions.d.ts.map +1 -0
- package/lib/provider-actions.js +417 -0
- package/lib/provider-actions.js.map +1 -0
- package/lib/provider-command.d.ts +109 -0
- package/lib/provider-command.d.ts.map +1 -0
- package/lib/provider-command.js +220 -0
- package/lib/provider-command.js.map +1 -0
- package/lib/provider-detail.d.ts +15 -0
- package/lib/provider-detail.d.ts.map +1 -0
- package/lib/provider-detail.js +201 -0
- package/lib/provider-detail.js.map +1 -0
- package/lib/provider-flow.d.ts +191 -0
- package/lib/provider-flow.d.ts.map +1 -0
- package/lib/provider-flow.js +192 -0
- package/lib/provider-flow.js.map +1 -0
- package/lib/provider-presets.d.ts +32 -0
- package/lib/provider-presets.d.ts.map +1 -0
- package/lib/provider-presets.js +105 -0
- package/lib/provider-presets.js.map +1 -0
- package/lib/provider-read.d.ts +63 -0
- package/lib/provider-read.d.ts.map +1 -0
- package/lib/provider-read.js +115 -0
- package/lib/provider-read.js.map +1 -0
- package/lib/provider-settings.d.ts +30 -0
- package/lib/provider-settings.d.ts.map +1 -0
- package/lib/provider-settings.js +65 -0
- package/lib/provider-settings.js.map +1 -0
- package/lib/resume-target.d.ts +59 -0
- package/lib/resume-target.d.ts.map +1 -0
- package/lib/resume-target.js +143 -0
- package/lib/resume-target.js.map +1 -0
- package/lib/slash.d.ts +44 -0
- package/lib/slash.d.ts.map +1 -0
- package/lib/slash.js +81 -0
- package/lib/slash.js.map +1 -0
- package/lib/state/driver-types.d.ts +505 -0
- package/lib/state/driver-types.d.ts.map +1 -0
- package/lib/state/driver-types.js +8 -0
- package/lib/state/driver-types.js.map +1 -0
- package/lib/state/driver-usage-types.d.ts +59 -0
- package/lib/state/driver-usage-types.d.ts.map +1 -0
- package/lib/state/driver-usage-types.js +8 -0
- package/lib/state/driver-usage-types.js.map +1 -0
- package/lib/statusline.d.ts +63 -0
- package/lib/statusline.d.ts.map +1 -0
- package/lib/statusline.js +97 -0
- package/lib/statusline.js.map +1 -0
- package/lib/store/pickers.d.ts +34 -0
- package/lib/store/pickers.d.ts.map +1 -0
- package/lib/store/pickers.js +111 -0
- package/lib/store/pickers.js.map +1 -0
- package/lib/store/provider-panel.d.ts +107 -0
- package/lib/store/provider-panel.d.ts.map +1 -0
- package/lib/store/provider-panel.js +151 -0
- package/lib/store/provider-panel.js.map +1 -0
- package/lib/store/question.d.ts +21 -0
- package/lib/store/question.d.ts.map +1 -0
- package/lib/store/question.js +59 -0
- package/lib/store/question.js.map +1 -0
- package/lib/store/queue.d.ts +27 -0
- package/lib/store/queue.d.ts.map +1 -0
- package/lib/store/queue.js +34 -0
- package/lib/store/queue.js.map +1 -0
- package/lib/store/session.d.ts +73 -0
- package/lib/store/session.d.ts.map +1 -0
- package/lib/store/session.js +172 -0
- package/lib/store/session.js.map +1 -0
- package/lib/store/subagents.d.ts +16 -0
- package/lib/store/subagents.d.ts.map +1 -0
- package/lib/store/subagents.js +44 -0
- package/lib/store/subagents.js.map +1 -0
- package/lib/store/todos.d.ts +35 -0
- package/lib/store/todos.d.ts.map +1 -0
- package/lib/store/todos.js +68 -0
- package/lib/store/todos.js.map +1 -0
- package/lib/store/usage.d.ts +15 -0
- package/lib/store/usage.d.ts.map +1 -0
- package/lib/store/usage.js +27 -0
- package/lib/store/usage.js.map +1 -0
- package/lib/store/views.d.ts +419 -0
- package/lib/store/views.d.ts.map +1 -0
- package/lib/store/views.js +3 -0
- package/lib/store/views.js.map +1 -0
- package/lib/store.d.ts +19 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +10 -0
- package/lib/store.js.map +1 -0
- package/lib/terminal/lease.d.ts +33 -0
- package/lib/terminal/lease.d.ts.map +1 -0
- package/lib/terminal/lease.js +99 -0
- package/lib/terminal/lease.js.map +1 -0
- package/lib/tool-card.d.ts +75 -0
- package/lib/tool-card.d.ts.map +1 -0
- package/lib/tool-card.js +109 -0
- package/lib/tool-card.js.map +1 -0
- package/lib/tool-verbs.d.ts +12 -0
- package/lib/tool-verbs.d.ts.map +1 -0
- package/lib/tool-verbs.js +29 -0
- package/lib/tool-verbs.js.map +1 -0
- package/lib/transcript.d.ts +40 -0
- package/lib/transcript.d.ts.map +1 -0
- package/lib/transcript.js +413 -0
- package/lib/transcript.js.map +1 -0
- package/lib/working-line.d.ts +44 -0
- package/lib/working-line.d.ts.map +1 -0
- package/lib/working-line.js +56 -0
- package/lib/working-line.js.map +1 -0
- package/package.json +72 -0
- package/presets/cc/.dsh-cc-managed.json +5 -0
- package/presets/cc/agent.cordis.yml +524 -0
- package/presets/cc/preset.yml +3 -0
- package/scripts/stage-preset.mjs +26 -0
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approval and question overlay containers. Rendered inline (not as pi-tui
|
|
3
|
+
* overlays) so they participate in the main-screen scrollback flow, matching
|
|
4
|
+
* the previous Ink layout.
|
|
5
|
+
* @module @dsh-cc/tui/components/overlays
|
|
6
|
+
*/
|
|
7
|
+
import { Container, Markdown, Text } from '@dsh-cc/pi-tui';
|
|
8
|
+
import { BYPASS_CONFIRMATION } from '@dsh-cc/command-permissions';
|
|
9
|
+
import { renderDiffLines } from "./diff-card.js";
|
|
10
|
+
import { createMarkdownTheme } from "./markdown-theme.js";
|
|
11
|
+
import { defaultTheme } from "./theme.js";
|
|
12
|
+
import { formatSessionRow } from "../harness/session-list.js";
|
|
13
|
+
/**
|
|
14
|
+
* Cap on command/JSON preview lines in an approval box so a long payload
|
|
15
|
+
* cannot push the composer off-screen; a trailing `…` marks the cut.
|
|
16
|
+
*/
|
|
17
|
+
const APPROVAL_PREVIEW_MAX_LINES = 8;
|
|
18
|
+
/**
|
|
19
|
+
* Cap on diff lines in an approval box, passed to the transcript's diff
|
|
20
|
+
* renderer (which cuts on a hunk boundary and appends its own dim trailer).
|
|
21
|
+
*/
|
|
22
|
+
const APPROVAL_DIFF_MAX_LINES = 16;
|
|
23
|
+
/**
|
|
24
|
+
* Approval box: the title ("Approve <tool>?", or "Approval (1 of N)" when
|
|
25
|
+
* other modals wait behind this one) + optional reason + the structured
|
|
26
|
+
* payload preview (command block, diff card, or raw-arguments JSON block) +
|
|
27
|
+
* an explicit key→outcome hint including the always-allow option.
|
|
28
|
+
*/
|
|
29
|
+
export function createApprovalBox(approval, theme = defaultTheme) {
|
|
30
|
+
const box = new Container();
|
|
31
|
+
const title = approval.pendingCount === undefined
|
|
32
|
+
? `Approve ${approval.toolName}?`
|
|
33
|
+
: `Approval (1 of ${approval.pendingCount + 1})`;
|
|
34
|
+
box.addChild(new Text(theme.warning(title), 0, 0));
|
|
35
|
+
if (approval.reason !== undefined) {
|
|
36
|
+
box.addChild(new Text(theme.muted(approval.reason), 0, 0));
|
|
37
|
+
}
|
|
38
|
+
const preview = approval.preview;
|
|
39
|
+
if (preview?.kind === 'command') {
|
|
40
|
+
for (const line of previewLines(preview.command, APPROVAL_PREVIEW_MAX_LINES)) {
|
|
41
|
+
box.addChild(new Text(theme.muted(line), 0, 0));
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else if (preview?.kind === 'diff') {
|
|
45
|
+
for (const line of renderDiffLines(preview.diffs, APPROVAL_DIFF_MAX_LINES, theme)) {
|
|
46
|
+
box.addChild(new Text(theme.muted(line), 0, 0));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else if (preview?.kind === 'args') {
|
|
50
|
+
for (const line of previewLines(preview.json, APPROVAL_PREVIEW_MAX_LINES)) {
|
|
51
|
+
box.addChild(new Text(theme.muted(line), 0, 0));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
box.addChild(new Text(theme.muted('1 once · 2 no · 3 always · s session'), 0, 0));
|
|
55
|
+
return box;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Cap a multi-line preview at `maxLines`; a trailing `…` marks the cut so a
|
|
59
|
+
* long payload cannot push the composer off-screen.
|
|
60
|
+
*/
|
|
61
|
+
function previewLines(text, maxLines) {
|
|
62
|
+
const lines = text.split('\n');
|
|
63
|
+
if (lines.length <= maxLines)
|
|
64
|
+
return lines;
|
|
65
|
+
return [...lines.slice(0, maxLines - 1), `${lines[maxLines - 1]} …`];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Question box v2: title + question text, the plan markdown for plan-review
|
|
69
|
+
* intents, focusable option rows (multi-select checkboxes), the trailing
|
|
70
|
+
* free-text "Other" row, and a key hint footer.
|
|
71
|
+
*/
|
|
72
|
+
export function createQuestionBox(question, theme = defaultTheme) {
|
|
73
|
+
const box = new Container();
|
|
74
|
+
const planReview = question.intent?.kind === 'plan-review' && question.detail !== undefined;
|
|
75
|
+
box.addChild(new Text(theme.bold(planReview ? 'Plan review' : question.header), 0, 0));
|
|
76
|
+
box.addChild(new Text(question.question, 0, 0));
|
|
77
|
+
if (planReview) {
|
|
78
|
+
box.addChild(new Markdown(question.detail, 0, 0, createMarkdownTheme(theme)));
|
|
79
|
+
}
|
|
80
|
+
const lastRow = question.options.length; // trailing "Other" row index
|
|
81
|
+
for (let index = 0; index <= lastRow; index += 1) {
|
|
82
|
+
const focused = question.focused === index;
|
|
83
|
+
const marker = focused ? '❯ ' : ' ';
|
|
84
|
+
if (index < question.options.length) {
|
|
85
|
+
const option = question.options[index];
|
|
86
|
+
const check = question.multiSelect
|
|
87
|
+
? question.selected.includes(option.label) ? '[x] ' : '[ ] '
|
|
88
|
+
: '';
|
|
89
|
+
const description = option.description === undefined
|
|
90
|
+
? ''
|
|
91
|
+
: theme.muted(` — ${option.description}`);
|
|
92
|
+
box.addChild(new Text(`${marker}${index + 1}. ${check}${option.label}${description}`, 0, 0));
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
box.addChild(new Text(`${marker}Other: ${question.custom}`, 0, 0));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const hint = question.multiSelect
|
|
99
|
+
? '↑↓ move · space toggle · enter confirm · esc cancel'
|
|
100
|
+
: '↑↓ move · enter select · type to answer freely · esc cancel';
|
|
101
|
+
box.addChild(new Text(theme.muted(hint), 0, 0));
|
|
102
|
+
return box;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Maximum model-picker rows rendered at once. A longer catalog is windowed
|
|
106
|
+
* around the focus so the box can never overflow the frame (the 16-line
|
|
107
|
+
* catalog-dump regression class).
|
|
108
|
+
*/
|
|
109
|
+
const MODEL_PICKER_VISIBLE_ROWS = 10;
|
|
110
|
+
/**
|
|
111
|
+
* Model picker box: a modal list of `provider/id — name` rows with a `❯`
|
|
112
|
+
* focus marker and a `*` on the active route, windowed to
|
|
113
|
+
* {@link MODEL_PICKER_VISIBLE_ROWS} rows around the focus.
|
|
114
|
+
*
|
|
115
|
+
* Hand-rolled (not the vendored `SelectList`) because SelectList owns its own
|
|
116
|
+
* `selectedIndex` and routes input through its own `handleInput`, which would
|
|
117
|
+
* fight the driver-owned `modelPicker` state and the emit/setter flow the rest
|
|
118
|
+
* of the overlays use. SelectList also renders a `→` prefix and a two-column
|
|
119
|
+
* layout that clash with the `❯` + Text-row convention shared by the approval
|
|
120
|
+
* and question boxes. A focused-list mirroring the question overlay keeps one
|
|
121
|
+
* state owner and one styling language.
|
|
122
|
+
*/
|
|
123
|
+
export function createModelPickerBox(picker, theme = defaultTheme) {
|
|
124
|
+
const box = new Container();
|
|
125
|
+
box.addChild(new Text(theme.bold('Select model'), 0, 0));
|
|
126
|
+
const total = picker.entries.length;
|
|
127
|
+
const cap = MODEL_PICKER_VISIBLE_ROWS;
|
|
128
|
+
let start = 0;
|
|
129
|
+
if (total > cap) {
|
|
130
|
+
start = Math.max(0, Math.min(picker.focused - Math.floor(cap / 2), total - cap));
|
|
131
|
+
}
|
|
132
|
+
const end = Math.min(start + cap, total);
|
|
133
|
+
for (let index = start; index < end; index += 1) {
|
|
134
|
+
const entry = picker.entries[index];
|
|
135
|
+
const focused = picker.focused === index;
|
|
136
|
+
const isCurrent = picker.current !== undefined
|
|
137
|
+
&& picker.current.provider === entry.provider
|
|
138
|
+
&& picker.current.model === entry.id;
|
|
139
|
+
const marker = focused ? '❯ ' : ' ';
|
|
140
|
+
const currentMark = isCurrent ? ' *' : '';
|
|
141
|
+
box.addChild(new Text(`${marker}${entry.provider}/${entry.id} — ${entry.name}${currentMark}`, 0, 0));
|
|
142
|
+
}
|
|
143
|
+
box.addChild(new Text(theme.muted('↑↓ move · enter select · esc cancel'), 0, 0));
|
|
144
|
+
return box;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Maximum effort-picker rows rendered at once. Mirrors the model picker cap so
|
|
148
|
+
* an unexpectedly long effort list can never overflow the frame.
|
|
149
|
+
*/
|
|
150
|
+
const EFFORT_PICKER_VISIBLE_ROWS = 10;
|
|
151
|
+
/**
|
|
152
|
+
* Effort picker box: a modal list of the active model's reasoning-effort
|
|
153
|
+
* levels with a `❯` focus marker and a `*` on the live effort, windowed to
|
|
154
|
+
* {@link EFFORT_PICKER_VISIBLE_ROWS} rows around the focus. The trailing
|
|
155
|
+
* reserved `'default'` entry renders as `default (provider)` to make clear it
|
|
156
|
+
* restores the provider default rather than selecting a level named default.
|
|
157
|
+
*/
|
|
158
|
+
export function createEffortPickerBox(picker, theme = defaultTheme) {
|
|
159
|
+
const box = new Container();
|
|
160
|
+
box.addChild(new Text(theme.bold('Select effort'), 0, 0));
|
|
161
|
+
const total = picker.entries.length;
|
|
162
|
+
const cap = EFFORT_PICKER_VISIBLE_ROWS;
|
|
163
|
+
let start = 0;
|
|
164
|
+
if (total > cap) {
|
|
165
|
+
start = Math.max(0, Math.min(picker.focused - Math.floor(cap / 2), total - cap));
|
|
166
|
+
}
|
|
167
|
+
const end = Math.min(start + cap, total);
|
|
168
|
+
for (let index = start; index < end; index += 1) {
|
|
169
|
+
const entry = picker.entries[index];
|
|
170
|
+
const focused = picker.focused === index;
|
|
171
|
+
const isCurrent = picker.current === entry;
|
|
172
|
+
const marker = focused ? '❯ ' : ' ';
|
|
173
|
+
const label = entry === 'default' ? 'default (provider)' : entry;
|
|
174
|
+
const currentMark = isCurrent ? ' *' : '';
|
|
175
|
+
box.addChild(new Text(`${marker}${label}${currentMark}`, 0, 0));
|
|
176
|
+
}
|
|
177
|
+
box.addChild(new Text(theme.muted('↑↓ move · enter select · esc cancel'), 0, 0));
|
|
178
|
+
return box;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Permission picker box: a modal list of the five CC rule-engine modes with
|
|
182
|
+
* a `❯` focus marker and a `*` on the live mode. While `confirmingBypass`
|
|
183
|
+
* is set the list is replaced by the shared bypass risk-gate copy.
|
|
184
|
+
*/
|
|
185
|
+
export function createPermissionPickerBox(picker, theme = defaultTheme) {
|
|
186
|
+
const box = new Container();
|
|
187
|
+
if (picker.confirmingBypass === true) {
|
|
188
|
+
box.addChild(new Text(theme.bold(BYPASS_CONFIRMATION.title), 0, 0));
|
|
189
|
+
box.addChild(new Text(BYPASS_CONFIRMATION.description, 0, 0));
|
|
190
|
+
box.addChild(new Text(theme.muted('enter confirm · esc back'), 0, 0));
|
|
191
|
+
return box;
|
|
192
|
+
}
|
|
193
|
+
box.addChild(new Text(theme.bold('Select permission mode'), 0, 0));
|
|
194
|
+
for (let index = 0; index < picker.entries.length; index += 1) {
|
|
195
|
+
const entry = picker.entries[index];
|
|
196
|
+
const focused = picker.focused === index;
|
|
197
|
+
const marker = focused ? '❯ ' : ' ';
|
|
198
|
+
const currentMark = picker.current === entry.id ? ' *' : '';
|
|
199
|
+
box.addChild(new Text(`${marker}${entry.label}${currentMark}`, 0, 0));
|
|
200
|
+
}
|
|
201
|
+
box.addChild(new Text(theme.muted('↑↓ move · enter select · esc cancel'), 0, 0));
|
|
202
|
+
return box;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Maximum session-switcher rows rendered at once. Mirrors the model picker
|
|
206
|
+
* cap so a long session list can never overflow the frame.
|
|
207
|
+
*/
|
|
208
|
+
const SESSION_SWITCHER_VISIBLE_ROWS = 10;
|
|
209
|
+
/**
|
|
210
|
+
* Session switcher box: title `Resume session` (plus the live query while a
|
|
211
|
+
* filter is typed), rows of relative last-activity time + title (or short
|
|
212
|
+
* id) + short id via {@link formatSessionRow}, with the cwd basename added
|
|
213
|
+
* in all-projects scope, a `❯` focus marker, and a `●` on the current
|
|
214
|
+
* session, windowed to {@link SESSION_SWITCHER_VISIBLE_ROWS} rows. An empty
|
|
215
|
+
* visible list explains itself (cwd scope hints at Tab → all projects). A
|
|
216
|
+
* dim `Switching…` footer replaces the key hint while a switch is in flight
|
|
217
|
+
* (input blocked).
|
|
218
|
+
*/
|
|
219
|
+
export function createSessionSwitcherBox(sw, theme = defaultTheme) {
|
|
220
|
+
const box = new Container();
|
|
221
|
+
const querySuffix = sw.query.length > 0 ? theme.muted(` /${sw.query}`) : '';
|
|
222
|
+
box.addChild(new Text(theme.bold('Resume session') + querySuffix, 0, 0));
|
|
223
|
+
const total = sw.sessions.length;
|
|
224
|
+
if (total === 0) {
|
|
225
|
+
const empty = sw.scope === 'all'
|
|
226
|
+
? 'No matching sessions'
|
|
227
|
+
: sw.totalCount === undefined
|
|
228
|
+
? 'No sessions in this project — Tab to view all'
|
|
229
|
+
: `No sessions in this project — Tab to view all (${sw.totalCount})`;
|
|
230
|
+
box.addChild(new Text(theme.muted(empty), 0, 0));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const cap = SESSION_SWITCHER_VISIBLE_ROWS;
|
|
234
|
+
let start = 0;
|
|
235
|
+
if (total > cap) {
|
|
236
|
+
start = Math.max(0, Math.min(sw.focused - Math.floor(cap / 2), total - cap));
|
|
237
|
+
}
|
|
238
|
+
const end = Math.min(start + cap, total);
|
|
239
|
+
for (let index = start; index < end; index += 1) {
|
|
240
|
+
const session = sw.sessions[index];
|
|
241
|
+
const row = formatSessionRow(session, {
|
|
242
|
+
now: Date.now(),
|
|
243
|
+
currentId: sw.currentId,
|
|
244
|
+
// All scope labels every row; cwd (project) scope labels only rows
|
|
245
|
+
// recorded elsewhere — worktree / subdirectory sessions of the same
|
|
246
|
+
// project — so they stay distinguishable from same-cwd ones.
|
|
247
|
+
showCwd: sw.scope === 'all'
|
|
248
|
+
|| (session.cwd !== undefined && sw.cwd !== undefined && session.cwd !== sw.cwd),
|
|
249
|
+
});
|
|
250
|
+
const marker = sw.focused === index ? '❯ ' : ' ';
|
|
251
|
+
const currentMark = row.current ? ' ●' : '';
|
|
252
|
+
const cwdPart = row.cwdPart === undefined ? '' : theme.muted(` — ${row.cwdPart}`);
|
|
253
|
+
box.addChild(new Text(`${marker}${row.time} ${row.label} ${row.shortId}${cwdPart}${currentMark}`, 0, 0));
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
box.addChild(new Text(sw.switching
|
|
257
|
+
? theme.muted('Switching…')
|
|
258
|
+
: theme.muted('↑↓ move · enter resume · tab all projects · type to filter · esc close'), 0, 0));
|
|
259
|
+
return box;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Maximum todo-panel rows rendered at once. A longer list is windowed around
|
|
263
|
+
* the focus (mirroring the model picker cap) so the box can never overflow
|
|
264
|
+
* the frame.
|
|
265
|
+
*/
|
|
266
|
+
const TODO_PANEL_VISIBLE_ROWS = 12;
|
|
267
|
+
/**
|
|
268
|
+
* Status icon for one todo row: checked for completed, half-full for the
|
|
269
|
+
* in-progress item, empty for pending.
|
|
270
|
+
*/
|
|
271
|
+
function todoIcon(status) {
|
|
272
|
+
if (status === 'completed')
|
|
273
|
+
return '☑';
|
|
274
|
+
if (status === 'in_progress')
|
|
275
|
+
return '◐';
|
|
276
|
+
return '☐';
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Todo panel box: the session todo list with status icons, a `❯` focus
|
|
280
|
+
* marker, and a key hint footer, windowed to {@link TODO_PANEL_VISIBLE_ROWS}
|
|
281
|
+
* rows around the focus. An empty (or absent) todo list renders a dim
|
|
282
|
+
* placeholder instead of rows; the panel still opens so Ctrl+T is a stable
|
|
283
|
+
* toggle either way.
|
|
284
|
+
*/
|
|
285
|
+
export function createTodoPanelBox(todos, focused, theme = defaultTheme) {
|
|
286
|
+
const box = new Container();
|
|
287
|
+
box.addChild(new Text(theme.bold('Todos'), 0, 0));
|
|
288
|
+
const total = todos.length;
|
|
289
|
+
if (total === 0) {
|
|
290
|
+
box.addChild(new Text(theme.muted('No todos'), 0, 0));
|
|
291
|
+
box.addChild(new Text(theme.muted('↑↓ navigate · Esc close'), 0, 0));
|
|
292
|
+
return box;
|
|
293
|
+
}
|
|
294
|
+
const cap = TODO_PANEL_VISIBLE_ROWS;
|
|
295
|
+
let start = 0;
|
|
296
|
+
if (total > cap) {
|
|
297
|
+
start = Math.max(0, Math.min(focused - Math.floor(cap / 2), total - cap));
|
|
298
|
+
}
|
|
299
|
+
const end = Math.min(start + cap, total);
|
|
300
|
+
for (let index = start; index < end; index += 1) {
|
|
301
|
+
const todo = todos[index];
|
|
302
|
+
const marker = focused === index ? '❯ ' : ' ';
|
|
303
|
+
box.addChild(new Text(`${marker}${todoIcon(todo.status)} ${todo.content}`, 0, 0));
|
|
304
|
+
}
|
|
305
|
+
box.addChild(new Text(theme.muted('↑↓ navigate · Esc close'), 0, 0));
|
|
306
|
+
return box;
|
|
307
|
+
}
|
|
308
|
+
/** Width (in cells) of the context-occupancy bar in the usage panel. */
|
|
309
|
+
const USAGE_BAR_WIDTH = 10;
|
|
310
|
+
/**
|
|
311
|
+
* Compact token count for the context line: digits below a thousand, then
|
|
312
|
+
* `86k` / `1.2k`-style thousands (single decimal, dropped when it rounds to
|
|
313
|
+
* `.0`; none past three digits).
|
|
314
|
+
*/
|
|
315
|
+
function compactTokens(count) {
|
|
316
|
+
if (count < 1000)
|
|
317
|
+
return String(count);
|
|
318
|
+
const k = count / 1000;
|
|
319
|
+
const text = k >= 100 ? String(Math.round(k)) : k.toFixed(1).replace(/\.0$/, '');
|
|
320
|
+
return `${text}k`;
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Context-occupancy line: a bar, the percent, and both raw counts —
|
|
324
|
+
* `████░░░░░░ 43% (86k/200k)`. The bar fills by the rounded occupancy ratio
|
|
325
|
+
* with the percent clamped to [0, 100]. Each unknown degrades to a dim
|
|
326
|
+
* fallback: no used count at all renders `n/a`; a used count without a known
|
|
327
|
+
* window renders the count plus a dim `window n/a` (no percent is claimed).
|
|
328
|
+
*/
|
|
329
|
+
function contextLine(view, theme) {
|
|
330
|
+
const { contextUsed, contextWindow } = view ?? {};
|
|
331
|
+
if (contextUsed === undefined)
|
|
332
|
+
return theme.muted('n/a');
|
|
333
|
+
if (contextWindow === undefined) {
|
|
334
|
+
return theme.muted(`${compactTokens(contextUsed)} tok · window n/a`);
|
|
335
|
+
}
|
|
336
|
+
const ratio = contextUsed / contextWindow;
|
|
337
|
+
const percent = Math.max(0, Math.min(100, Math.round(ratio * 100)));
|
|
338
|
+
const filled = Math.max(0, Math.min(USAGE_BAR_WIDTH, Math.round(ratio * USAGE_BAR_WIDTH)));
|
|
339
|
+
const bar = '█'.repeat(filled) + '░'.repeat(USAGE_BAR_WIDTH - filled);
|
|
340
|
+
return `${bar} ${percent}% (${compactTokens(contextUsed)}/${compactTokens(contextWindow)})`;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Cache-hit rate as a rounded percent, `cacheRead / (input + cacheRead)` —
|
|
344
|
+
* `input` is the uncached bucket, so the denominator is all prompt input.
|
|
345
|
+
* Undefined when there is nothing to show: no `cacheRead` total at all, or a
|
|
346
|
+
* zero denominator (no input and no cache read). Ratios above 1 clamp at 100.
|
|
347
|
+
*/
|
|
348
|
+
export function cacheHitPercent(totals) {
|
|
349
|
+
if (totals.cacheRead === undefined)
|
|
350
|
+
return undefined;
|
|
351
|
+
const denominator = totals.input + totals.cacheRead;
|
|
352
|
+
if (denominator === 0)
|
|
353
|
+
return undefined;
|
|
354
|
+
return Math.max(0, Math.min(100, Math.round((totals.cacheRead / denominator) * 100)));
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Aligned ` label value` rows (thousands separators, shared column widths)
|
|
358
|
+
* for one usage-panel section.
|
|
359
|
+
*/
|
|
360
|
+
function alignedRows(entries) {
|
|
361
|
+
const labelWidth = Math.max(...entries.map(([label]) => label.length));
|
|
362
|
+
const valueWidth = Math.max(...entries.map(([, value]) => value.toLocaleString('en-US').length));
|
|
363
|
+
return entries.map(([label, value]) => ` ${label.padEnd(labelWidth)} ${value.toLocaleString('en-US').padStart(valueWidth)}`);
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Usage panel box (`/usage`): the live context-occupancy bar, the cumulative
|
|
367
|
+
* token totals (cache rows only when non-zero, mirroring /cost), and the
|
|
368
|
+
* context breakdown by role. Pure display — no focus or navigation — and
|
|
369
|
+
* each section degrades independently to a dim `n/a` when its projection has
|
|
370
|
+
* no data. Quota and rate-limit figures have no projection at all, so the
|
|
371
|
+
* footer says so explicitly instead of implying the panel is exhaustive.
|
|
372
|
+
*/
|
|
373
|
+
export function createUsagePanelBox(view, theme = defaultTheme) {
|
|
374
|
+
const box = new Container();
|
|
375
|
+
box.addChild(new Text(theme.bold('Usage'), 0, 0));
|
|
376
|
+
box.addChild(new Text(contextLine(view, theme), 0, 0));
|
|
377
|
+
box.addChild(new Text('Tokens', 0, 0));
|
|
378
|
+
const totals = view?.totals;
|
|
379
|
+
if (totals === undefined) {
|
|
380
|
+
box.addChild(new Text(theme.muted('n/a'), 0, 0));
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
const entries = [['input', totals.input], ['output', totals.output]];
|
|
384
|
+
const { cacheRead, cacheWrite } = totals;
|
|
385
|
+
if (cacheRead !== undefined && cacheRead > 0)
|
|
386
|
+
entries.push(['cache r', cacheRead]);
|
|
387
|
+
if (cacheWrite !== undefined && cacheWrite > 0)
|
|
388
|
+
entries.push(['cache w', cacheWrite]);
|
|
389
|
+
for (const line of alignedRows(entries)) {
|
|
390
|
+
box.addChild(new Text(line, 0, 0));
|
|
391
|
+
}
|
|
392
|
+
const hit = cacheHitPercent(totals);
|
|
393
|
+
if (hit !== undefined)
|
|
394
|
+
box.addChild(new Text(` hit ${hit}%`, 0, 0));
|
|
395
|
+
}
|
|
396
|
+
box.addChild(new Text('Breakdown', 0, 0));
|
|
397
|
+
const breakdown = view?.breakdown;
|
|
398
|
+
if (breakdown === undefined) {
|
|
399
|
+
box.addChild(new Text(theme.muted('n/a'), 0, 0));
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
for (const line of alignedRows([
|
|
403
|
+
['system', breakdown.system],
|
|
404
|
+
['tools', breakdown.tools],
|
|
405
|
+
['messages', breakdown.messages],
|
|
406
|
+
])) {
|
|
407
|
+
box.addChild(new Text(line, 0, 0));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
box.addChild(new Text(theme.muted('quota data unavailable · Esc close'), 0, 0));
|
|
411
|
+
return box;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* `/quit` worktree-exit confirmation box: the session descriptor, the
|
|
415
|
+
* removal evidence next to the destructive option, and the three choices
|
|
416
|
+
* (keep / remove / cancel). Focused row carries a `❯` prefix. While a
|
|
417
|
+
* removal is in flight (`busy`) the footer reports progress and keys are
|
|
418
|
+
* swallowed upstream.
|
|
419
|
+
*/
|
|
420
|
+
export function createWorktreeExitBox(view, theme = defaultTheme) {
|
|
421
|
+
const box = new Container();
|
|
422
|
+
box.addChild(new Text(theme.bold('Exit worktree session?'), 0, 0));
|
|
423
|
+
box.addChild(new Text(`Worktree: ${view.worktreePath}`, 0, 0));
|
|
424
|
+
box.addChild(new Text(`Branch: ${view.branch}`, 0, 0));
|
|
425
|
+
if (view.dirtyFiles !== undefined) {
|
|
426
|
+
box.addChild(new Text(`Uncommitted changes: ${view.dirtyFiles}`, 0, 0));
|
|
427
|
+
}
|
|
428
|
+
// Commits-ahead is only ever known for launcher-managed sessions (it needs
|
|
429
|
+
// the base commit); detected sessions show dirtiness alone.
|
|
430
|
+
if (view.commitsAhead !== undefined) {
|
|
431
|
+
box.addChild(new Text(`Commits ahead of base: ${view.commitsAhead}`, 0, 0));
|
|
432
|
+
}
|
|
433
|
+
const options = [
|
|
434
|
+
'Keep worktree and exit',
|
|
435
|
+
view.ownsBranch ? `Remove worktree and exit (and delete branch ${view.branch})` : 'Remove worktree and exit',
|
|
436
|
+
'Cancel',
|
|
437
|
+
];
|
|
438
|
+
for (let index = 0; index < options.length; index += 1) {
|
|
439
|
+
const marker = view.focused === index ? '❯ ' : ' ';
|
|
440
|
+
box.addChild(new Text(`${marker}${options[index]}`, 0, 0));
|
|
441
|
+
}
|
|
442
|
+
if (view.busy) {
|
|
443
|
+
box.addChild(new Text(theme.muted('Removing worktree…'), 0, 0));
|
|
444
|
+
}
|
|
445
|
+
else {
|
|
446
|
+
box.addChild(new Text(theme.muted('↑↓ move · enter confirm · esc cancel'), 0, 0));
|
|
447
|
+
}
|
|
448
|
+
return box;
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=overlays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays.js","sourceRoot":"","sources":["../../src/components/overlays.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `/provider` overlay box (design doc §4.2–§4.6): the two-section provider
|
|
3
|
+
* list with credential badges, the manage detail view (§4.4), the add /
|
|
4
|
+
* custom / rotate wizard phases (§4.3, §4.6), and the remove double-confirm.
|
|
5
|
+
* The wizard's live text entry is a real pi-tui `Input` owned by the runtime
|
|
6
|
+
* (provider-command.ts) and rendered inside this box when a text step is
|
|
7
|
+
* active; the box itself stays a pure function of the panel state.
|
|
8
|
+
* @module @dsh-cc/tui/components/provider-box
|
|
9
|
+
*/
|
|
10
|
+
import { Container } from '@dsh-cc/pi-tui';
|
|
11
|
+
import type { ProviderPanelView } from '../store.ts';
|
|
12
|
+
import { type Theme } from './theme.ts';
|
|
13
|
+
/**
|
|
14
|
+
* Provider list box: "Providers" title, then the Configured section (live
|
|
15
|
+
* settings dict, document order) and the Available section (presets), with
|
|
16
|
+
* `●`/`○` current markers, credential badges, model counts, ⚠ on configured
|
|
17
|
+
* routes with models but no key, and the directory tail collapsed under
|
|
18
|
+
* "More providers (…)".
|
|
19
|
+
*/
|
|
20
|
+
export declare function createProviderPanelBox(view: ProviderPanelView, theme?: Theme, field?: {
|
|
21
|
+
render(width: number): string[];
|
|
22
|
+
}): Container;
|
|
23
|
+
//# sourceMappingURL=provider-box.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-box.d.ts","sourceRoot":"","sources":["../../src/components/provider-box.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,SAAS,EAAQ,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAgB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAA;AAiBrD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,GAAE,KAAoB,EAAE,KAAK,CAAC,EAAE;IAAE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAoCnJ"}
|