@namzu/cli 18.0.0 → 19.0.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/CHANGELOG.md +5898 -0
- package/README.md +23 -24
- package/dist/bin.js +12 -1
- package/dist/bin.js.map +1 -1
- package/dist/checkpoints/store.d.ts +75 -0
- package/dist/checkpoints/store.d.ts.map +1 -0
- package/dist/checkpoints/store.js +177 -0
- package/dist/checkpoints/store.js.map +1 -0
- package/dist/checkpoints/wrap.d.ts +15 -0
- package/dist/checkpoints/wrap.d.ts.map +1 -0
- package/dist/checkpoints/wrap.js +37 -0
- package/dist/checkpoints/wrap.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +13 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +3 -0
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +15 -2
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/provider-wait.d.ts +44 -0
- package/dist/commands/provider-wait.d.ts.map +1 -0
- package/dist/commands/provider-wait.js +65 -0
- package/dist/commands/provider-wait.js.map +1 -0
- package/dist/commands/run-flags.d.ts +13 -1
- package/dist/commands/run-flags.d.ts.map +1 -1
- package/dist/commands/run-flags.js +41 -0
- package/dist/commands/run-flags.js.map +1 -1
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +34 -13
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +133 -78
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/stdin.d.ts +17 -0
- package/dist/commands/stdin.d.ts.map +1 -0
- package/dist/commands/stdin.js +69 -0
- package/dist/commands/stdin.js.map +1 -0
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +122 -2
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +92 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/context/doctrine.d.ts +22 -0
- package/dist/context/doctrine.d.ts.map +1 -0
- package/dist/context/doctrine.js +22 -0
- package/dist/context/doctrine.js.map +1 -0
- package/dist/context/environment.d.ts +2 -0
- package/dist/context/environment.d.ts.map +1 -1
- package/dist/context/environment.js +3 -0
- package/dist/context/environment.js.map +1 -1
- package/dist/context/turn-snapshot.d.ts +59 -0
- package/dist/context/turn-snapshot.d.ts.map +1 -0
- package/dist/context/turn-snapshot.js +122 -0
- package/dist/context/turn-snapshot.js.map +1 -0
- package/dist/integrations/mcp/servers.d.ts +19 -0
- package/dist/integrations/mcp/servers.d.ts.map +1 -1
- package/dist/integrations/mcp/servers.js +23 -2
- package/dist/integrations/mcp/servers.js.map +1 -1
- package/dist/integrations/plugins/runtime.d.ts +8 -2
- package/dist/integrations/plugins/runtime.d.ts.map +1 -1
- package/dist/integrations/plugins/runtime.js +24 -12
- package/dist/integrations/plugins/runtime.js.map +1 -1
- package/dist/integrations/providers/chain-capabilities.js +1 -1
- package/dist/integrations/providers/chain-capabilities.js.map +1 -1
- package/dist/integrations/providers/credential-store.d.ts +1 -1
- package/dist/integrations/providers/credential-store.js +1 -1
- package/dist/integrations/providers/harness-credentials.d.ts.map +1 -1
- package/dist/integrations/providers/harness-credentials.js +7 -0
- package/dist/integrations/providers/harness-credentials.js.map +1 -1
- package/dist/integrations/providers/registry.d.ts +2 -2
- package/dist/integrations/providers/registry.js +2 -2
- package/dist/integrations/sessions/store.d.ts +14 -22
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +78 -175
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.js +6 -2
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/integrations/state/identity.d.ts +21 -0
- package/dist/integrations/state/identity.d.ts.map +1 -0
- package/dist/integrations/state/identity.js +49 -0
- package/dist/integrations/state/identity.js.map +1 -0
- package/dist/integrations/state/immutable-json.d.ts +10 -0
- package/dist/integrations/state/immutable-json.d.ts.map +1 -0
- package/dist/integrations/state/immutable-json.js +38 -0
- package/dist/integrations/state/immutable-json.js.map +1 -0
- package/dist/integrations/state/project.d.ts +10 -0
- package/dist/integrations/state/project.d.ts.map +1 -0
- package/dist/integrations/state/project.js +15 -0
- package/dist/integrations/state/project.js.map +1 -0
- package/dist/integrations/state/report.d.ts.map +1 -1
- package/dist/integrations/state/report.js +42 -12
- package/dist/integrations/state/report.js.map +1 -1
- package/dist/integrations/subagents/definitions.d.ts +19 -0
- package/dist/integrations/subagents/definitions.d.ts.map +1 -0
- package/dist/integrations/subagents/definitions.js +26 -0
- package/dist/integrations/subagents/definitions.js.map +1 -0
- package/dist/integrations/subagents/parent.d.ts +13 -0
- package/dist/integrations/subagents/parent.d.ts.map +1 -0
- package/dist/integrations/subagents/parent.js +57 -0
- package/dist/integrations/subagents/parent.js.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +27 -3
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +302 -82
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/memory/store.d.ts +35 -15
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +79 -25
- package/dist/memory/store.js.map +1 -1
- package/dist/permissions/mode.d.ts +12 -20
- package/dist/permissions/mode.d.ts.map +1 -1
- package/dist/permissions/mode.js +18 -3
- package/dist/permissions/mode.js.map +1 -1
- package/dist/release-notes.d.ts +20 -0
- package/dist/release-notes.d.ts.map +1 -0
- package/dist/release-notes.js +64 -0
- package/dist/release-notes.js.map +1 -0
- package/dist/tui/AgentExplorer.d.ts.map +1 -1
- package/dist/tui/AgentExplorer.js +14 -18
- package/dist/tui/AgentExplorer.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +843 -208
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/BrandHeader.d.ts +12 -0
- package/dist/tui/BrandHeader.d.ts.map +1 -0
- package/dist/tui/BrandHeader.js +17 -0
- package/dist/tui/BrandHeader.js.map +1 -0
- package/dist/tui/ChoicePicker.d.ts +11 -1
- package/dist/tui/ChoicePicker.d.ts.map +1 -1
- package/dist/tui/ChoicePicker.js +46 -13
- package/dist/tui/ChoicePicker.js.map +1 -1
- package/dist/tui/Composer.d.ts +9 -1
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +21 -5
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/ComposerFrame.d.ts +10 -0
- package/dist/tui/ComposerFrame.d.ts.map +1 -0
- package/dist/tui/ComposerFrame.js +93 -0
- package/dist/tui/ComposerFrame.js.map +1 -0
- package/dist/tui/EditPromptPicker.d.ts.map +1 -1
- package/dist/tui/EditPromptPicker.js +1 -1
- package/dist/tui/EditPromptPicker.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +12 -5
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/LiveActivity.js +17 -32
- package/dist/tui/LiveActivity.js.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +26 -2
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +118 -11
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/Picker.d.ts +2 -2
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +79 -52
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +5 -2
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/TaskList.d.ts +32 -0
- package/dist/tui/TaskList.d.ts.map +1 -0
- package/dist/tui/TaskList.js +67 -0
- package/dist/tui/TaskList.js.map +1 -0
- package/dist/tui/Transcript.d.ts +3 -3
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/Transcript.js +16 -34
- package/dist/tui/Transcript.js.map +1 -1
- package/dist/tui/agent.d.ts +152 -48
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +622 -256
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/choice-selection.d.ts +17 -0
- package/dist/tui/choice-selection.d.ts.map +1 -0
- package/dist/tui/choice-selection.js +38 -0
- package/dist/tui/choice-selection.js.map +1 -0
- package/dist/tui/exit-summary.d.ts +7 -1
- package/dist/tui/exit-summary.d.ts.map +1 -1
- package/dist/tui/exit-summary.js +12 -3
- package/dist/tui/exit-summary.js.map +1 -1
- package/dist/tui/index.d.ts +3 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +5 -3
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/logo.d.ts +7 -22
- package/dist/tui/logo.d.ts.map +1 -1
- package/dist/tui/logo.js +8 -34
- package/dist/tui/logo.js.map +1 -1
- package/dist/tui/model-choices.d.ts.map +1 -1
- package/dist/tui/model-choices.js +21 -6
- package/dist/tui/model-choices.js.map +1 -1
- package/dist/tui/permission-review.d.ts +15 -4
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +199 -10
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/provider-selection.d.ts +4 -0
- package/dist/tui/provider-selection.d.ts.map +1 -0
- package/dist/tui/provider-selection.js +16 -0
- package/dist/tui/provider-selection.js.map +1 -0
- package/dist/tui/run-interruption.d.ts +3 -2
- package/dist/tui/run-interruption.d.ts.map +1 -1
- package/dist/tui/run-interruption.js +2 -1
- package/dist/tui/run-interruption.js.map +1 -1
- package/dist/tui/shell-escape.d.ts +42 -0
- package/dist/tui/shell-escape.d.ts.map +1 -0
- package/dist/tui/shell-escape.js +110 -0
- package/dist/tui/shell-escape.js.map +1 -0
- package/dist/tui/slashCommands.d.ts +77 -31
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +343 -303
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/stream-blocks.d.ts +24 -0
- package/dist/tui/stream-blocks.d.ts.map +1 -1
- package/dist/tui/stream-blocks.js +74 -0
- package/dist/tui/stream-blocks.js.map +1 -1
- package/dist/tui/terminal-choice-text.d.ts +8 -0
- package/dist/tui/terminal-choice-text.d.ts.map +1 -0
- package/dist/tui/terminal-choice-text.js +37 -0
- package/dist/tui/terminal-choice-text.js.map +1 -0
- package/dist/tui/theme.d.ts +3 -4
- package/dist/tui/theme.d.ts.map +1 -1
- package/dist/tui/theme.js +16 -17
- package/dist/tui/theme.js.map +1 -1
- package/dist/tui/types.d.ts +8 -1
- package/dist/tui/types.d.ts.map +1 -1
- package/package.json +8 -6
|
@@ -9,7 +9,7 @@ export function EditPromptPicker({ prompts, selected }) {
|
|
|
9
9
|
const index = start + visibleIndex;
|
|
10
10
|
const attachmentCount = prompt.message.attachments?.length ?? 0;
|
|
11
11
|
return (_jsxs(Box, { children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.accent.user, children: index === selected ? '›' : ' ' }) }), _jsx(Box, { flexGrow: 1, children: _jsx(Text, { color: index === selected ? theme.text.primary : theme.text.secondary, bold: index === selected, wrap: "truncate-end", children: oneLine(prompt.displayText) }) }), attachmentCount > 0 ? (_jsxs(Text, { color: theme.text.muted, children: ['·', " ", attachmentCount, " attachment", attachmentCount === 1 ? '' : 's'] })) : null] }, prompt.userOrdinal));
|
|
12
|
-
}) }), _jsx(Box, { paddingTop: 1, children: _jsx(Text, { color: theme.text.muted, children: "
|
|
12
|
+
}) }), _jsx(Box, { paddingTop: 1, children: _jsx(Text, { color: theme.text.muted, children: "\u2190 older \u00B7 \u2192 newer \u00B7 PgUp/PgDn jump \u00B7 Home/End \u00B7 enter fork and edit \u00B7 esc cancel" }) })] }));
|
|
13
13
|
}
|
|
14
14
|
function oneLine(text) {
|
|
15
15
|
return text.replace(/\s+/g, ' ').trim() || '(empty text with attachments)';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditPromptPicker.js","sourceRoot":"","sources":["../../src/tui/EditPromptPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAyB;IAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpE,OAAO,CACN,MAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"EditPromptPicker.js","sourceRoot":"","sources":["../../src/tui/EditPromptPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAG/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAOlC,+EAA+E;AAC/E,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAyB;IAC5E,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpE,OAAO,CACN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,aAC3F,MAAC,GAAG,IAAC,cAAc,EAAC,eAAe,aAClC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,6DAE7B,EACP,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,aAC3B,QAAQ,GAAG,CAAC,OAAG,OAAO,CAAC,MAAM,IACxB,IACF,EACN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,YACvC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE;oBACrC,MAAM,KAAK,GAAG,KAAK,GAAG,YAAY,CAAA;oBAClC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAA;oBAC/D,OAAO,CACN,MAAC,GAAG,eACH,KAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAC3B,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,YAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,GAClE,EACN,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,YACf,KAAC,IAAI,IACJ,KAAK,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EACrE,IAAI,EAAE,KAAK,KAAK,QAAQ,EACxB,IAAI,EAAC,cAAc,YAElB,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,GACtB,GACF,EACL,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,CACtB,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,aAC3B,GAAG,OAAG,eAAe,iBAAa,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAC7D,CACP,CAAC,CAAC,CAAC,IAAI,KAjBC,MAAM,CAAC,WAAW,CAkBtB,CACN,CAAA;gBACF,CAAC,CAAC,GACG,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACjB,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,oIAEtB,GACF,IACD,CACN,CAAA;AACF,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,+BAA+B,CAAA;AAC3E,CAAC"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The live region rendered just below the (static) transcript: the tool(s)
|
|
3
|
-
* currently executing
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* in-flight work) to keep per-frame cost bounded.
|
|
3
|
+
* currently executing, with elapsed time and progress, or a "thinking" line
|
|
4
|
+
* before the first token of a reply. One spinner on the Working row marks the
|
|
5
|
+
* active turn. These rows stay tiny to keep per-frame cost bounded.
|
|
7
6
|
*/
|
|
8
7
|
export interface ActiveTool {
|
|
9
8
|
readonly id: string;
|
|
@@ -15,6 +14,8 @@ export interface ActiveTool {
|
|
|
15
14
|
readonly fraction?: number;
|
|
16
15
|
}
|
|
17
16
|
export interface LiveActivityProps {
|
|
17
|
+
/** Show the current tool and total count in two rows on a short terminal. */
|
|
18
|
+
readonly compact?: boolean;
|
|
18
19
|
readonly activeTools: readonly ActiveTool[];
|
|
19
20
|
/** The parent turn is active, including while answer text is streaming. */
|
|
20
21
|
readonly working: boolean;
|
|
@@ -24,8 +25,14 @@ export interface LiveActivityProps {
|
|
|
24
25
|
readonly interruptible?: boolean;
|
|
25
26
|
/** False for non-interactive renderers and deterministic snapshots. */
|
|
26
27
|
readonly animate?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* The model's current line of reasoning, or `null`. Shown dim under the
|
|
30
|
+
* Working row and nowhere else; an empty string means "thinking, but the
|
|
31
|
+
* provider gave no readable text" and still earns the row.
|
|
32
|
+
*/
|
|
33
|
+
readonly thinking?: string | null;
|
|
27
34
|
}
|
|
28
|
-
export declare function LiveActivity({ activeTools, working, agentCount, interruptible, animate, }: LiveActivityProps): import("react/jsx-runtime").JSX.Element | null;
|
|
35
|
+
export declare function LiveActivity({ compact, activeTools, working, agentCount, interruptible, animate, thinking, }: LiveActivityProps): import("react/jsx-runtime").JSX.Element | null;
|
|
29
36
|
/** `420ms` → `0.4s`, `3210ms` → `3.2s`, `12000ms` → `12s`, `83000ms` → `1m23s`. */
|
|
30
37
|
export declare function formatElapsed(ms: number): string;
|
|
31
38
|
//# sourceMappingURL=LiveActivity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveActivity.d.ts","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"LiveActivity.d.ts","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,iBAAiB;IACjC,6EAA6E;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAA;IAC3C,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAKD,wBAAgB,YAAY,CAAC,EAC5B,OAAe,EACf,WAAW,EACX,OAAO,EACP,UAAc,EACd,aAAqB,EACrB,OAAc,EACd,QAAe,GACf,EAAE,iBAAiB,kDAsGnB;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAMhD"}
|
package/dist/tui/LiveActivity.js
CHANGED
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* The live region rendered just below the (static) transcript: the tool(s)
|
|
4
|
-
* currently executing
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* in-flight work) to keep per-frame cost bounded.
|
|
4
|
+
* currently executing, with elapsed time and progress, or a "thinking" line
|
|
5
|
+
* before the first token of a reply. One spinner on the Working row marks the
|
|
6
|
+
* active turn. These rows stay tiny to keep per-frame cost bounded.
|
|
8
7
|
*/
|
|
9
|
-
import { Box, Text } from 'ink';
|
|
10
|
-
import {
|
|
8
|
+
import { Box, Text, useAnimation } from 'ink';
|
|
9
|
+
import { useRef } from 'react';
|
|
11
10
|
import { terminalDisplayText } from './terminal-display.js';
|
|
12
11
|
import { theme } from './theme.js';
|
|
13
12
|
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
14
13
|
const MAX_VISIBLE_TOOLS = 3;
|
|
15
|
-
export function LiveActivity({ activeTools, working, agentCount = 0, interruptible = false, animate = true, }) {
|
|
14
|
+
export function LiveActivity({ compact = false, activeTools, working, agentCount = 0, interruptible = false, animate = true, thinking = null, }) {
|
|
16
15
|
const active = activeTools.length > 0 || working;
|
|
17
16
|
const startedAtRef = useRef(null);
|
|
18
17
|
if (active && startedAtRef.current === null)
|
|
19
18
|
startedAtRef.current = Date.now();
|
|
20
19
|
if (!active)
|
|
21
20
|
startedAtRef.current = null;
|
|
22
|
-
const tick =
|
|
21
|
+
const { frame: tick } = useAnimation({ isActive: active && animate, interval: 120 });
|
|
23
22
|
if (!active)
|
|
24
23
|
return null;
|
|
25
24
|
const spinner = SPINNER_FRAMES[tick % SPINNER_FRAMES.length] ?? '⠋';
|
|
@@ -27,32 +26,18 @@ export function LiveActivity({ activeTools, working, agentCount = 0, interruptib
|
|
|
27
26
|
const elapsed = formatElapsed(now - (startedAtRef.current ?? now));
|
|
28
27
|
const visibleTools = activeTools.slice(0, MAX_VISIBLE_TOOLS);
|
|
29
28
|
const hiddenTools = activeTools.length - visibleTools.length;
|
|
30
|
-
|
|
29
|
+
if (compact) {
|
|
30
|
+
const current = activeTools[0];
|
|
31
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: theme.accent.assistant, children: [spinner, " "] }), _jsx(Text, { color: theme.text.secondary, children: "Working" }), _jsxs(Text, { color: theme.text.muted, children: [' · ', elapsed, activeTools.length > 0
|
|
32
|
+
? ` · ${activeTools.length} tool${activeTools.length === 1 ? '' : 's'}`
|
|
33
|
+
: ''] })] }), current ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(current.label), current.progress ? (_jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", terminalDisplayText(current.progress)] })) : null] }) })) : thinking !== null ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: ["thinking", thinking ? ` · ${terminalDisplayText(thinking)}` : '…'] }) })) : null] }));
|
|
34
|
+
}
|
|
35
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", children: [_jsxs(Text, { color: theme.accent.assistant, children: [animate ? spinner : '∴', " "] }), _jsx(Text, { color: theme.text.secondary, children: "Working" }), _jsxs(Text, { color: theme.text.muted, children: [' (', elapsed, agentCount > 0
|
|
31
36
|
? ` · ${agentCount} agent${agentCount === 1 ? '' : 's'} · ctrl+t to view`
|
|
32
37
|
: '', interruptible ? ' · esc to interrupt' : '', ")"] })] }), visibleTools.map((t, index) => {
|
|
33
38
|
const percent = t.fraction === undefined ? '' : `${Math.round(t.fraction * 100)}% · `;
|
|
34
|
-
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.
|
|
35
|
-
}), hiddenTools > 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, children: ["\u2514 +", hiddenTools, " more tools"] }) })) : null] }));
|
|
36
|
-
}
|
|
37
|
-
/** Three spans regardless of text length: animation cost stays constant. */
|
|
38
|
-
function ShimmerText({ text, tick, animate, }) {
|
|
39
|
-
if (!animate || text.length < 2)
|
|
40
|
-
return _jsx(Text, { color: theme.text.secondary, children: text });
|
|
41
|
-
const sweep = (tick % (text.length + 4)) - 2;
|
|
42
|
-
const start = Math.max(0, Math.min(text.length, sweep));
|
|
43
|
-
const end = Math.max(start, Math.min(text.length, sweep + 3));
|
|
44
|
-
return (_jsxs(Text, { children: [_jsx(Text, { color: theme.text.muted, dimColor: true, children: text.slice(0, start) }), _jsx(Text, { color: theme.text.primary, bold: true, children: text.slice(start, end) }), _jsx(Text, { color: theme.text.secondary, children: text.slice(end) })] }));
|
|
45
|
-
}
|
|
46
|
-
/** Re-render `interval` ms while `active`; returns an incrementing counter. */
|
|
47
|
-
function useTick(active, interval) {
|
|
48
|
-
const [n, setN] = useState(0);
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
if (!active)
|
|
51
|
-
return;
|
|
52
|
-
const id = setInterval(() => setN((v) => v + 1), interval);
|
|
53
|
-
return () => clearInterval(id);
|
|
54
|
-
}, [active, interval]);
|
|
55
|
-
return n;
|
|
39
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { color: theme.text.muted, children: index === visibleTools.length - 1 && hiddenTools === 0 ? '└' : '├' }) }), _jsxs(Text, { color: theme.text.secondary, wrap: "truncate-end", children: [terminalDisplayText(t.label), _jsxs(Text, { color: theme.text.muted, children: [" \u00B7 ", formatElapsed(now - t.startedAt)] })] })] }), t.progress !== undefined ? (_jsx(Box, { flexDirection: "row", paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: [percent, terminalDisplayText(t.progress)] }) })) : null] }, t.id));
|
|
40
|
+
}), hiddenTools > 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, children: ["\u2514 +", hiddenTools, " more tools"] }) })) : null, thinking !== null && activeTools.length === 0 ? (_jsx(Box, { paddingLeft: 2, children: _jsxs(Text, { color: theme.text.muted, wrap: "truncate-end", children: ["\u2514 thinking", thinking.length > 0 ? ` · ${terminalDisplayText(thinking)}` : '…'] }) })) : null] }));
|
|
56
41
|
}
|
|
57
42
|
/** `420ms` → `0.4s`, `3210ms` → `3.2s`, `12000ms` → `12s`, `83000ms` → `1m23s`. */
|
|
58
43
|
export function formatElapsed(ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveActivity.js","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"LiveActivity.js","sourceRoot":"","sources":["../../src/tui/LiveActivity.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* The consent box: what the model wants to do, and the three answers.
|
|
3
|
+
*
|
|
4
|
+
* Shaped like the prompt an operator already knows from other coding
|
|
5
|
+
* agents — a titled box naming the operation, the operation itself in the
|
|
6
|
+
* plainest form the tool allows (the command, the diff, the file), one
|
|
7
|
+
* question, and a numbered choice with a cursor on the answer most people
|
|
8
|
+
* give. App owns every key; this is presentational.
|
|
9
|
+
*
|
|
10
|
+
* Nothing here decides what is SHOWN: the readable text is the kernel-side
|
|
11
|
+
* envelope's projection from `permission-review.ts`, and the exact envelope
|
|
12
|
+
* is one key away. What this file decides is how it reads.
|
|
13
|
+
*/
|
|
2
14
|
import type { PermissionToolCall } from './agent.js';
|
|
3
15
|
import { type PermissionReviewSummary } from './permission-review.js';
|
|
16
|
+
/** The three answers, in the order they are shown and numbered. */
|
|
17
|
+
export type PermissionChoice = 0 | 1 | 2;
|
|
4
18
|
export interface PermissionOverlayProps {
|
|
5
19
|
readonly toolCalls: readonly PermissionToolCall[];
|
|
6
20
|
/** Complete exact review envelope built before the callback was opened. */
|
|
@@ -11,8 +25,18 @@ export interface PermissionOverlayProps {
|
|
|
11
25
|
readonly detailsOpen: boolean;
|
|
12
26
|
/** First physical row shown in the fixed-height pager. */
|
|
13
27
|
readonly reviewOffset?: number;
|
|
28
|
+
/** Which answer the cursor is on. */
|
|
29
|
+
readonly choice?: PermissionChoice;
|
|
14
30
|
/** Live terminal width. Re-wrapping on resize keeps every suffix reachable. */
|
|
15
31
|
readonly columns?: number;
|
|
32
|
+
/** Live terminal height; the pager shows as much as the screen has room for. */
|
|
33
|
+
readonly rows?: number;
|
|
16
34
|
}
|
|
17
|
-
|
|
35
|
+
/** What the box is called, from the batch's shape. */
|
|
36
|
+
export declare function permissionTitle(toolCalls: readonly PermissionToolCall[]): string;
|
|
37
|
+
/** The one question under the operation. */
|
|
38
|
+
export declare function permissionQuestion(toolCalls: readonly PermissionToolCall[]): string;
|
|
39
|
+
/** The three answers, worded for the batch. */
|
|
40
|
+
export declare function permissionChoices(toolCalls: readonly PermissionToolCall[]): readonly string[];
|
|
41
|
+
export declare function PermissionOverlay({ toolCalls, review, summary, detailsOpen, reviewOffset, choice, columns, rows: terminalRows, }: PermissionOverlayProps): import("react/jsx-runtime").JSX.Element;
|
|
18
42
|
//# sourceMappingURL=PermissionOverlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionOverlay.d.ts","sourceRoot":"","sources":["../../src/tui/PermissionOverlay.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"PermissionOverlay.d.ts","sourceRoot":"","sources":["../../src/tui/PermissionOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EACN,KAAK,uBAAuB,EAG5B,MAAM,wBAAwB,CAAA;AAI/B,mEAAmE;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAExC,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,CAAA;IACjD,2EAA2E;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;IACzC,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;IAC7B,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,qCAAqC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACtB;AAQD,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,MAAM,CAqBhF;AAED,4CAA4C;AAC5C,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,MAAM,CAqBnF;AAED,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,MAAM,EAAE,CAO7F;AA2BD,wBAAgB,iBAAiB,CAAC,EACjC,SAAS,EACT,MAAM,EACN,OAAO,EACP,WAAW,EACX,YAAgB,EAChB,MAAU,EACV,OAAO,EACP,IAAI,EAAE,YAAY,GAClB,EAAE,sBAAsB,2CAiExB"}
|
|
@@ -1,19 +1,126 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* The consent box: what the model wants to do, and the three answers.
|
|
4
|
+
*
|
|
5
|
+
* Shaped like the prompt an operator already knows from other coding
|
|
6
|
+
* agents — a titled box naming the operation, the operation itself in the
|
|
7
|
+
* plainest form the tool allows (the command, the diff, the file), one
|
|
8
|
+
* question, and a numbered choice with a cursor on the answer most people
|
|
9
|
+
* give. App owns every key; this is presentational.
|
|
10
|
+
*
|
|
11
|
+
* Nothing here decides what is SHOWN: the readable text is the kernel-side
|
|
12
|
+
* envelope's projection from `permission-review.ts`, and the exact envelope
|
|
13
|
+
* is one key away. What this file decides is how it reads.
|
|
14
|
+
*/
|
|
15
|
+
import { basename } from 'node:path';
|
|
3
16
|
import { Box, Text } from 'ink';
|
|
4
|
-
import {
|
|
17
|
+
import { permissionReviewPageRows, permissionReviewRows, } from './permission-review.js';
|
|
18
|
+
import { terminalDisplayText } from './terminal-display.js';
|
|
5
19
|
import { theme } from './theme.js';
|
|
6
|
-
|
|
7
|
-
|
|
20
|
+
function pathOf(input) {
|
|
21
|
+
if (input === null || typeof input !== 'object')
|
|
22
|
+
return undefined;
|
|
23
|
+
const path = input.path;
|
|
24
|
+
return typeof path === 'string' && path.length > 0 ? path : undefined;
|
|
25
|
+
}
|
|
26
|
+
/** What the box is called, from the batch's shape. */
|
|
27
|
+
export function permissionTitle(toolCalls) {
|
|
28
|
+
const first = toolCalls[0];
|
|
29
|
+
if (toolCalls.length === 1 && first) {
|
|
30
|
+
const path = pathOf(first.input);
|
|
31
|
+
switch (first.name) {
|
|
32
|
+
case 'bash':
|
|
33
|
+
return 'Bash command';
|
|
34
|
+
case 'edit':
|
|
35
|
+
return path ? `Edit file ${path}` : 'Edit file';
|
|
36
|
+
case 'write':
|
|
37
|
+
return path ? `Write file ${path}` : 'Write file';
|
|
38
|
+
case 'Agent':
|
|
39
|
+
return 'Start an agent';
|
|
40
|
+
default:
|
|
41
|
+
return first.name;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (toolCalls.length > 0 && toolCalls.every((call) => call.name === 'Agent')) {
|
|
45
|
+
return `Start ${toolCalls.length} agents`;
|
|
46
|
+
}
|
|
47
|
+
return `${toolCalls.length} tool calls`;
|
|
48
|
+
}
|
|
49
|
+
/** The one question under the operation. */
|
|
50
|
+
export function permissionQuestion(toolCalls) {
|
|
51
|
+
const first = toolCalls[0];
|
|
52
|
+
if (toolCalls.length === 1 && first) {
|
|
53
|
+
const path = pathOf(first.input);
|
|
54
|
+
switch (first.name) {
|
|
55
|
+
case 'bash':
|
|
56
|
+
return 'Do you want to proceed?';
|
|
57
|
+
case 'edit':
|
|
58
|
+
return path ? `Do you want to make this edit to ${basename(path)}?` : 'Do you want to make this edit?';
|
|
59
|
+
case 'write':
|
|
60
|
+
return path ? `Do you want to write ${basename(path)}?` : 'Do you want to write this file?';
|
|
61
|
+
case 'Agent':
|
|
62
|
+
return 'Do you want to start this agent?';
|
|
63
|
+
default:
|
|
64
|
+
return `Do you want to run ${first.name}?`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (toolCalls.length > 0 && toolCalls.every((call) => call.name === 'Agent')) {
|
|
68
|
+
return `Do you want to start ${toolCalls.length} agents?`;
|
|
69
|
+
}
|
|
70
|
+
return `Do you want to run these ${toolCalls.length} tools?`;
|
|
71
|
+
}
|
|
72
|
+
/** The three answers, worded for the batch. */
|
|
73
|
+
export function permissionChoices(toolCalls) {
|
|
74
|
+
const agents = toolCalls.length > 0 && toolCalls.every((call) => call.name === 'Agent');
|
|
75
|
+
return [
|
|
76
|
+
'Yes',
|
|
77
|
+
agents ? 'Yes, and allow all tools this session' : "Yes, and don't ask again this session",
|
|
78
|
+
'No, and tell namzu what to do differently (esc)',
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The readable text, without the batch furniture a single call does not
|
|
83
|
+
* need: its `1. name` heading says what the title already says, and the
|
|
84
|
+
* three-space indent under it exists to set calls apart from each other.
|
|
85
|
+
*/
|
|
86
|
+
function readableBody(summaryText, single) {
|
|
87
|
+
if (!single)
|
|
88
|
+
return summaryText;
|
|
89
|
+
const lines = summaryText.split('\n');
|
|
90
|
+
const body = lines.length > 1 && /^1\. /.test(lines[0] ?? '') ? lines.slice(1) : lines;
|
|
91
|
+
return body.map((line) => (line.startsWith(' ') ? line.slice(3) : line)).join('\n');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* A change row reads as a change: removed text red, added text green. Only in
|
|
95
|
+
* the readable view — the exact view is JSON, where a `-` at column one is a
|
|
96
|
+
* value, not a sign — and only on the summary's own `+ ` / `- ` prefixes,
|
|
97
|
+
* which sit at column one for a single call and column four in a batch.
|
|
98
|
+
*/
|
|
99
|
+
function rowColor(text, detailsOpen) {
|
|
100
|
+
if (detailsOpen)
|
|
101
|
+
return theme.text.secondary;
|
|
102
|
+
if (/^(\s{3})?- /.test(text))
|
|
103
|
+
return theme.status.error;
|
|
104
|
+
if (/^(\s{3})?\+ /.test(text))
|
|
105
|
+
return theme.status.ok;
|
|
106
|
+
return theme.text.primary;
|
|
107
|
+
}
|
|
108
|
+
export function PermissionOverlay({ toolCalls, review, summary, detailsOpen, reviewOffset = 0, choice = 0, columns, rows: terminalRows, }) {
|
|
109
|
+
const pageRows = permissionReviewPageRows(terminalRows);
|
|
110
|
+
const single = toolCalls.length === 1;
|
|
111
|
+
const source = detailsOpen ? review : readableBody(summary.text, single);
|
|
8
112
|
const rows = permissionReviewRows(source, columns);
|
|
9
|
-
const maxOffset = Math.max(0, rows.length -
|
|
113
|
+
const maxOffset = Math.max(0, rows.length - pageRows);
|
|
10
114
|
const offset = Math.min(Math.max(0, reviewOffset), maxOffset);
|
|
11
|
-
const visibleRows = rows.slice(offset, offset +
|
|
115
|
+
const visibleRows = rows.slice(offset, offset + pageRows);
|
|
116
|
+
const paged = rows.length > pageRows;
|
|
12
117
|
const first = rows.length === 0 ? 0 : offset + 1;
|
|
13
|
-
const last = Math.min(rows.length, offset +
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
118
|
+
const last = Math.min(rows.length, offset + pageRows);
|
|
119
|
+
const destructive = toolCalls.some((call) => call.isDestructive);
|
|
120
|
+
const choices = permissionChoices(toolCalls);
|
|
121
|
+
return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme.status.warn, paddingX: 1, marginTop: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: theme.status.warn, bold: true, children: detailsOpen ? 'Exact prepared input' : terminalDisplayText(permissionTitle(toolCalls)) }), destructive ? _jsx(Text, { color: theme.status.error, children: " \u00B7 destructive" }) : null] }), _jsx(Box, { flexDirection: "column", paddingLeft: 2, children: visibleRows.map((row) => (_jsx(Box, { width: "100%", children: _jsx(Text, { color: rowColor(row.text, detailsOpen), children: row.continuation ? `↳ ${row.text}` : row.text }) }, row.index))) }), paged ? (_jsxs(Text, { color: theme.text.muted, children: ["rows ", first, "-", last, "/", rows.length, " \u00B7 PgUp/PgDn page \u00B7 Home/End boundary"] })) : null, _jsxs(Box, { flexDirection: "column", paddingTop: 1, children: [_jsx(Text, { color: theme.text.primary, bold: true, children: terminalDisplayText(permissionQuestion(toolCalls)) }), choices.map((label, index) => {
|
|
122
|
+
const selected = index === choice;
|
|
123
|
+
return (_jsxs(Text, { color: selected ? theme.accent.user : theme.text.secondary, children: [selected ? '❯ ' : ' ', index + 1, ". ", label] }, label));
|
|
124
|
+
})] }), _jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: theme.text.muted, children: ["\u2191\u2193 select \u00B7 enter confirm \u00B7 y / a / n answer \u00B7 d", ' ', detailsOpen ? 'readable view' : 'exact input'] }), _jsx(Text, { color: theme.text.muted, children: "esc decline \u00B7 ctrl+c decline and stop the turn" })] })] }));
|
|
18
125
|
}
|
|
19
126
|
//# sourceMappingURL=PermissionOverlay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionOverlay.js","sourceRoot":"","sources":["../../src/tui/PermissionOverlay.tsx"],"names":[],"mappings":";AAAA,
|
|
1
|
+
{"version":3,"file":"PermissionOverlay.js","sourceRoot":"","sources":["../../src/tui/PermissionOverlay.tsx"],"names":[],"mappings":"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"}
|
package/dist/tui/Picker.d.ts
CHANGED
|
@@ -18,8 +18,8 @@ export interface PickerProps {
|
|
|
18
18
|
* device" back into a two-screen setup flow.
|
|
19
19
|
*/
|
|
20
20
|
readonly selectionKind?: 'provider-and-model' | 'signed-in-subscription';
|
|
21
|
-
/**
|
|
22
|
-
readonly initialView?: 'providers' | 'subscriptions';
|
|
21
|
+
/** `/model` opens the active provider's models; `/login` opens subscriptions. */
|
|
22
|
+
readonly initialView?: 'providers' | 'subscriptions' | 'models';
|
|
23
23
|
/** The model in force, so re-opening starts on it rather than the default. */
|
|
24
24
|
readonly currentModel?: string | null;
|
|
25
25
|
readonly onSubmit: (selection: {
|
package/dist/tui/Picker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/tui/Picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAEN,KAAK,gBAAgB,EAErB,KAAK,UAAU,EAGf,KAAK,sBAAsB,EAE3B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,KAAK,YAAY,EAA0B,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAaxF,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,GAAG,wBAAwB,CAAA;IACxE,
|
|
1
|
+
{"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../src/tui/Picker.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EAEN,KAAK,gBAAgB,EAErB,KAAK,UAAU,EAGf,KAAK,sBAAsB,EAE3B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,KAAK,YAAY,EAA0B,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAaxF,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC9C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,GAAG,wBAAwB,CAAA;IACxE,iFAAiF;IACjF,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,eAAe,GAAG,QAAQ,CAAA;IAC/D,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,MAAM,EAAE,WAAW,KAAK,IAAI,CAAA;IACjG,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAA;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CACzB,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,gBAAgB,EACrB,MAAM,CAAC,EAAE,WAAW,KAChB,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,CACvB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,KACf,IAAI,CAAA;IACT;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAClB,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,WAAW,KACf,OAAO,CAAC,gBAAgB,GAAG,UAAU,GAAG,QAAQ,CAAC,CAAA;IACtD,6EAA6E;IAC7E,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC,CAAA;IAChG;;;;;;;OAOG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,gBAAgB,CAAA;IACzC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACxC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B;AAyDD,wBAAgB,MAAM,CAAC,EACtB,QAAQ,EACR,eAAe,EACf,aAAoC,EACpC,YAAY,EACZ,WAAyB,EACzB,QAAQ,EACR,QAAQ,EACR,cAAuC,EACvC,YAAY,EACZ,OAAO,EACP,eAAe,EACf,MAAyB,EACzB,WAAW,EACX,MAAM,GACN,EAAE,WAAW,2CA+wBb"}
|