@prestyj/cli 4.2.77 → 4.3.34
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/README.md +2 -2
- package/dist/cli.js +335 -85
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +33 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +42 -26
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +17 -2
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/auto-update.d.ts +16 -3
- package/dist/core/auto-update.d.ts.map +1 -1
- package/dist/core/auto-update.js +126 -56
- package/dist/core/auto-update.js.map +1 -1
- package/dist/core/auto-update.test.d.ts +2 -0
- package/dist/core/auto-update.test.d.ts.map +1 -0
- package/dist/core/auto-update.test.js +205 -0
- package/dist/core/auto-update.test.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +18 -1
- package/dist/core/compaction/compactor.d.ts.map +1 -1
- package/dist/core/compaction/compactor.js +48 -7
- package/dist/core/compaction/compactor.js.map +1 -1
- package/dist/core/compaction/compactor.test.js +39 -6
- package/dist/core/compaction/compactor.test.js.map +1 -1
- package/dist/core/compaction/token-estimator.d.ts.map +1 -1
- package/dist/core/compaction/token-estimator.js +4 -0
- package/dist/core/compaction/token-estimator.js.map +1 -1
- package/dist/core/compaction/token-estimator.test.js +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/mcp/client.d.ts.map +1 -1
- package/dist/core/mcp/client.js +15 -2
- package/dist/core/mcp/client.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +74 -5
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/oauth/types.d.ts +1 -0
- package/dist/core/oauth/types.d.ts.map +1 -1
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +134 -0
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/core/settings-manager.d.ts +5 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +14 -2
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/modes/agent-home-mode.d.ts +21 -0
- package/dist/modes/agent-home-mode.d.ts.map +1 -0
- package/dist/modes/agent-home-mode.js +553 -0
- package/dist/modes/agent-home-mode.js.map +1 -0
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +30 -14
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +9 -2
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +4 -2
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +48 -33
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +80 -20
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +12 -0
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/overflow.js +1 -1
- package/dist/tools/overflow.js.map +1 -1
- package/dist/tools/plan-mode.test.js +2 -2
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +14 -1
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +20 -3
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/web-search.d.ts +9 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +241 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tools/write.js +2 -2
- package/dist/tools/write.js.map +1 -1
- package/dist/tools/write.test.js +7 -9
- package/dist/tools/write.test.js.map +1 -1
- package/dist/ui/App.d.ts +4 -0
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +324 -161
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/activity-phrases.d.ts.map +1 -1
- package/dist/ui/activity-phrases.js +74 -129
- package/dist/ui/activity-phrases.js.map +1 -1
- package/dist/ui/components/ActivityIndicator.d.ts +3 -1
- package/dist/ui/components/ActivityIndicator.d.ts.map +1 -1
- package/dist/ui/components/ActivityIndicator.js +5 -2
- package/dist/ui/components/ActivityIndicator.js.map +1 -1
- package/dist/ui/components/AssistantMessage.d.ts +1 -0
- package/dist/ui/components/AssistantMessage.d.ts.map +1 -1
- package/dist/ui/components/AssistantMessage.js +2 -2
- package/dist/ui/components/AssistantMessage.js.map +1 -1
- package/dist/ui/components/DiffFrame.d.ts +10 -0
- package/dist/ui/components/DiffFrame.d.ts.map +1 -0
- package/dist/ui/components/DiffFrame.js +13 -0
- package/dist/ui/components/DiffFrame.js.map +1 -0
- package/dist/ui/components/Footer.d.ts +2 -3
- package/dist/ui/components/Footer.d.ts.map +1 -1
- package/dist/ui/components/Footer.js +6 -5
- package/dist/ui/components/Footer.js.map +1 -1
- package/dist/ui/components/InputArea.d.ts.map +1 -1
- package/dist/ui/components/InputArea.js +297 -8
- package/dist/ui/components/InputArea.js.map +1 -1
- package/dist/ui/components/Markdown.d.ts +1 -1
- package/dist/ui/components/Markdown.d.ts.map +1 -1
- package/dist/ui/components/Markdown.js +25 -213
- package/dist/ui/components/Markdown.js.map +1 -1
- package/dist/ui/components/ModelSelector.d.ts.map +1 -1
- package/dist/ui/components/ModelSelector.js +10 -2
- package/dist/ui/components/ModelSelector.js.map +1 -1
- package/dist/ui/components/Ratchet.d.ts.map +1 -1
- package/dist/ui/components/Ratchet.js +10 -3
- package/dist/ui/components/Ratchet.js.map +1 -1
- package/dist/ui/components/StreamingArea.d.ts.map +1 -1
- package/dist/ui/components/StreamingArea.js +2 -2
- package/dist/ui/components/StreamingArea.js.map +1 -1
- package/dist/ui/components/SubAgentPanel.d.ts.map +1 -1
- package/dist/ui/components/SubAgentPanel.js +5 -1
- package/dist/ui/components/SubAgentPanel.js.map +1 -1
- package/dist/ui/components/ThemeSelector.d.ts +9 -0
- package/dist/ui/components/ThemeSelector.d.ts.map +1 -0
- package/dist/ui/components/ThemeSelector.js +25 -0
- package/dist/ui/components/ThemeSelector.js.map +1 -0
- package/dist/ui/components/ToolExecution.d.ts +2 -0
- package/dist/ui/components/ToolExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolExecution.js +95 -30
- package/dist/ui/components/ToolExecution.js.map +1 -1
- package/dist/ui/components/ToolGroupExecution.d.ts +3 -2
- package/dist/ui/components/ToolGroupExecution.d.ts.map +1 -1
- package/dist/ui/components/ToolGroupExecution.js +68 -51
- package/dist/ui/components/ToolGroupExecution.js.map +1 -1
- package/dist/ui/hooks/stall-retry-duplicate.test.d.ts +2 -0
- package/dist/ui/hooks/stall-retry-duplicate.test.d.ts.map +1 -0
- package/dist/ui/hooks/stall-retry-duplicate.test.js +94 -0
- package/dist/ui/hooks/stall-retry-duplicate.test.js.map +1 -0
- package/dist/ui/hooks/useAgentLoop.d.ts +10 -3
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +131 -16
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useDoublePress.d.ts +8 -0
- package/dist/ui/hooks/useDoublePress.d.ts.map +1 -0
- package/dist/ui/hooks/useDoublePress.js +44 -0
- package/dist/ui/hooks/useDoublePress.js.map +1 -0
- package/dist/ui/hooks/useTerminalProgress.d.ts +1 -1
- package/dist/ui/hooks/useTerminalProgress.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalProgress.js +18 -15
- package/dist/ui/hooks/useTerminalProgress.js.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.d.ts +3 -6
- package/dist/ui/hooks/useTerminalTitle.d.ts.map +1 -1
- package/dist/ui/hooks/useTerminalTitle.js +10 -19
- package/dist/ui/hooks/useTerminalTitle.js.map +1 -1
- package/dist/ui/live-item-flush.d.ts +4 -0
- package/dist/ui/live-item-flush.d.ts.map +1 -1
- package/dist/ui/live-item-flush.js +36 -0
- package/dist/ui/live-item-flush.js.map +1 -1
- package/dist/ui/login.d.ts.map +1 -1
- package/dist/ui/login.js +3 -0
- package/dist/ui/login.js.map +1 -1
- package/dist/ui/render.d.ts +3 -1
- package/dist/ui/render.d.ts.map +1 -1
- package/dist/ui/render.js +9 -3
- package/dist/ui/render.js.map +1 -1
- package/dist/ui/stores/create-store.d.ts +15 -0
- package/dist/ui/stores/create-store.d.ts.map +1 -0
- package/dist/ui/stores/create-store.js +30 -0
- package/dist/ui/stores/create-store.js.map +1 -0
- package/dist/ui/stores/index.d.ts +3 -0
- package/dist/ui/stores/index.d.ts.map +1 -0
- package/dist/ui/stores/index.js +3 -0
- package/dist/ui/stores/index.js.map +1 -0
- package/dist/ui/stores/taskbar-store.d.ts +19 -0
- package/dist/ui/stores/taskbar-store.d.ts.map +1 -0
- package/dist/ui/stores/taskbar-store.js +59 -0
- package/dist/ui/stores/taskbar-store.js.map +1 -0
- package/dist/ui/theme/dark-ansi.json +48 -0
- package/dist/ui/theme/dark-daltonized.json +48 -0
- package/dist/ui/theme/dark.json +22 -1
- package/dist/ui/theme/detect-theme.d.ts +12 -8
- package/dist/ui/theme/detect-theme.d.ts.map +1 -1
- package/dist/ui/theme/detect-theme.js +58 -39
- package/dist/ui/theme/detect-theme.js.map +1 -1
- package/dist/ui/theme/light-ansi.json +48 -0
- package/dist/ui/theme/light-daltonized.json +48 -0
- package/dist/ui/theme/light.json +44 -23
- package/dist/ui/theme/theme.d.ts +27 -1
- package/dist/ui/theme/theme.d.ts.map +1 -1
- package/dist/ui/theme/theme.js +24 -1
- package/dist/ui/theme/theme.js.map +1 -1
- package/dist/ui/utils/highlight.d.ts +1 -1
- package/dist/ui/utils/highlight.d.ts.map +1 -1
- package/dist/ui/utils/highlight.js +24 -4
- package/dist/ui/utils/highlight.js.map +1 -1
- package/dist/ui/utils/hyperlink.d.ts +11 -0
- package/dist/ui/utils/hyperlink.d.ts.map +1 -0
- package/dist/ui/utils/hyperlink.js +27 -0
- package/dist/ui/utils/hyperlink.js.map +1 -0
- package/dist/ui/utils/markdown-cache.d.ts +5 -6
- package/dist/ui/utils/markdown-cache.d.ts.map +1 -1
- package/dist/ui/utils/markdown-cache.js +5 -5
- package/dist/ui/utils/markdown-cache.js.map +1 -1
- package/dist/ui/utils/signal.d.ts +21 -0
- package/dist/ui/utils/signal.d.ts.map +1 -0
- package/dist/ui/utils/signal.js +30 -0
- package/dist/ui/utils/signal.js.map +1 -0
- package/dist/ui/utils/supports-hyperlinks.d.ts +6 -0
- package/dist/ui/utils/supports-hyperlinks.d.ts.map +1 -0
- package/dist/ui/utils/supports-hyperlinks.js +52 -0
- package/dist/ui/utils/supports-hyperlinks.js.map +1 -0
- package/dist/ui/utils/token-to-ansi.d.ts +9 -0
- package/dist/ui/utils/token-to-ansi.d.ts.map +1 -0
- package/dist/ui/utils/token-to-ansi.js +305 -0
- package/dist/ui/utils/token-to-ansi.js.map +1 -0
- package/dist/utils/session-title.d.ts +19 -0
- package/dist/utils/session-title.d.ts.map +1 -0
- package/dist/utils/session-title.js +82 -0
- package/dist/utils/session-title.js.map +1 -0
- package/package.json +7 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-theme.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/detect-theme.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"detect-theme.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/detect-theme.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC,CAmDtD"}
|
|
@@ -1,35 +1,30 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
|
+
import chalk from "chalk";
|
|
2
3
|
/**
|
|
3
|
-
* Detect
|
|
4
|
+
* Detect the best theme for the current terminal.
|
|
4
5
|
*
|
|
5
|
-
* Detection chain (first match wins):
|
|
6
|
-
* 1.
|
|
7
|
-
* 2.
|
|
8
|
-
* 3.
|
|
9
|
-
* 4.
|
|
10
|
-
* 5.
|
|
6
|
+
* Detection chain for base theme (first match wins):
|
|
7
|
+
* 1. FORCE_THEME env var (explicit override with any ThemeName)
|
|
8
|
+
* 2. VSCODE_THEME_KIND env var (VS Code integrated terminal)
|
|
9
|
+
* 3. macOS system dark mode (defaults read -g AppleInterfaceStyle)
|
|
10
|
+
* 4. OSC 11 escape sequence query (most modern terminals)
|
|
11
|
+
* 5. COLORFGBG env var (rxvt, some other terminals)
|
|
12
|
+
* 6. Default to "dark"
|
|
13
|
+
*
|
|
14
|
+
* Auto-selects ANSI fallback variant when truecolor is not supported.
|
|
11
15
|
*/
|
|
12
16
|
export async function detectTheme() {
|
|
17
|
+
// 0. Explicit override
|
|
18
|
+
const forceTheme = process.env["FORCE_THEME"];
|
|
19
|
+
if (forceTheme && isValidThemeName(forceTheme)) {
|
|
20
|
+
return forceTheme;
|
|
21
|
+
}
|
|
13
22
|
// 1. VS Code sets this reliably
|
|
14
23
|
const vscodeTheme = process.env["VSCODE_THEME_KIND"];
|
|
15
24
|
if (vscodeTheme) {
|
|
16
25
|
return vscodeTheme.includes("light") ? "light" : "dark";
|
|
17
26
|
}
|
|
18
|
-
// 2.
|
|
19
|
-
const osc = await queryOSC11();
|
|
20
|
-
if (osc !== null)
|
|
21
|
-
return osc;
|
|
22
|
-
// 3. COLORFGBG — "fg;bg" ANSI color indices
|
|
23
|
-
const colorfgbg = process.env["COLORFGBG"];
|
|
24
|
-
if (colorfgbg) {
|
|
25
|
-
const parts = colorfgbg.split(";");
|
|
26
|
-
const bg = parseInt(parts[parts.length - 1], 10);
|
|
27
|
-
if (!isNaN(bg)) {
|
|
28
|
-
// ANSI colors: 0-6 and 8 are dark, 7 and 9-15 are light
|
|
29
|
-
return bg === 7 || (bg >= 9 && bg <= 15) ? "light" : "dark";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
// 4. macOS system dark mode
|
|
27
|
+
// 2. macOS system dark mode — fast, no escape-sequence side effects
|
|
33
28
|
if (process.platform === "darwin") {
|
|
34
29
|
try {
|
|
35
30
|
const result = execFileSync("defaults", ["read", "-g", "AppleInterfaceStyle"], {
|
|
@@ -44,17 +39,51 @@ export async function detectTheme() {
|
|
|
44
39
|
return "light";
|
|
45
40
|
}
|
|
46
41
|
}
|
|
42
|
+
// 3. OSC 11 — query actual terminal background color
|
|
43
|
+
let base = await queryOSC11();
|
|
44
|
+
// 4. COLORFGBG — "fg;bg" ANSI color indices
|
|
45
|
+
if (base === null) {
|
|
46
|
+
const colorfgbg = process.env["COLORFGBG"];
|
|
47
|
+
if (colorfgbg) {
|
|
48
|
+
const parts = colorfgbg.split(";");
|
|
49
|
+
const bg = parseInt(parts[parts.length - 1], 10);
|
|
50
|
+
if (!isNaN(bg)) {
|
|
51
|
+
base = bg === 7 || (bg >= 9 && bg <= 15) ? "light" : "dark";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
47
55
|
// 5. Default
|
|
48
|
-
|
|
56
|
+
if (base === null)
|
|
57
|
+
base = "dark";
|
|
58
|
+
// Auto-select ANSI variant for terminals without truecolor support
|
|
59
|
+
if (chalk.level < 3) {
|
|
60
|
+
return `${base}-ansi`;
|
|
61
|
+
}
|
|
62
|
+
return base;
|
|
63
|
+
}
|
|
64
|
+
const VALID_THEMES = new Set([
|
|
65
|
+
"dark",
|
|
66
|
+
"light",
|
|
67
|
+
"dark-ansi",
|
|
68
|
+
"light-ansi",
|
|
69
|
+
"dark-daltonized",
|
|
70
|
+
"light-daltonized",
|
|
71
|
+
]);
|
|
72
|
+
function isValidThemeName(name) {
|
|
73
|
+
return VALID_THEMES.has(name);
|
|
49
74
|
}
|
|
50
75
|
/**
|
|
51
76
|
* Send OSC 11 query to the terminal and parse the background color response.
|
|
52
77
|
* Returns "dark" | "light" based on luminance, or null if unsupported.
|
|
78
|
+
*
|
|
79
|
+
* Note: does NOT send the ESC[6n cursor position sentinel — that response
|
|
80
|
+
* (ESC[row;colR) can leak into stdin if not drained before Ink takes over,
|
|
81
|
+
* causing "[2;1R" to appear in the chat input. Instead we rely on a simple
|
|
82
|
+
* timeout to detect unsupported terminals.
|
|
53
83
|
*/
|
|
54
84
|
// ESC character built without a literal escape so ESLint's no-control-regex is satisfied
|
|
55
85
|
const ESC = String.fromCharCode(27);
|
|
56
86
|
const oscResponsePattern = new RegExp(ESC + "\\]11;rgb:([0-9a-fA-F]+)/([0-9a-fA-F]+)/([0-9a-fA-F]+)");
|
|
57
|
-
const cursorPositionPattern = new RegExp(ESC + "\\[\\d+;\\d+R");
|
|
58
87
|
function queryOSC11() {
|
|
59
88
|
return new Promise((resolve) => {
|
|
60
89
|
// Skip for multiplexers — they don't forward OSC queries
|
|
@@ -70,7 +99,6 @@ function queryOSC11() {
|
|
|
70
99
|
}
|
|
71
100
|
const wasRaw = process.stdin.isRaw;
|
|
72
101
|
let settled = false;
|
|
73
|
-
let buffer = "";
|
|
74
102
|
const cleanup = () => {
|
|
75
103
|
if (settled)
|
|
76
104
|
return;
|
|
@@ -82,8 +110,6 @@ function queryOSC11() {
|
|
|
82
110
|
catch {
|
|
83
111
|
// ignore
|
|
84
112
|
}
|
|
85
|
-
// When we pause stdin after raw mode, Node's readline may lose
|
|
86
|
-
// the stream. Only pause if we turned raw mode on ourselves.
|
|
87
113
|
if (!wasRaw) {
|
|
88
114
|
try {
|
|
89
115
|
process.stdin.pause();
|
|
@@ -98,9 +124,9 @@ function queryOSC11() {
|
|
|
98
124
|
resolve(null);
|
|
99
125
|
}, 200);
|
|
100
126
|
const onData = (data) => {
|
|
101
|
-
|
|
127
|
+
const str = data.toString();
|
|
102
128
|
// Look for OSC 11 response: ESC]11;rgb:RRRR/GGGG/BBBB followed by BEL or ST
|
|
103
|
-
const match =
|
|
129
|
+
const match = str.match(oscResponsePattern);
|
|
104
130
|
if (match) {
|
|
105
131
|
clearTimeout(timeout);
|
|
106
132
|
cleanup();
|
|
@@ -111,22 +137,15 @@ function queryOSC11() {
|
|
|
111
137
|
// Relative luminance (ITU-R BT.709)
|
|
112
138
|
const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
113
139
|
resolve(luminance < 0.5 ? "dark" : "light");
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
// If we get a cursor position response (ESC[row;colR) without
|
|
117
|
-
// an OSC response, the terminal doesn't support OSC 11
|
|
118
|
-
if (buffer.match(cursorPositionPattern)) {
|
|
119
|
-
clearTimeout(timeout);
|
|
120
|
-
cleanup();
|
|
121
|
-
resolve(null);
|
|
122
140
|
}
|
|
123
141
|
};
|
|
124
142
|
try {
|
|
125
143
|
process.stdin.setRawMode(true);
|
|
126
144
|
process.stdin.resume();
|
|
127
145
|
process.stdin.on("data", onData);
|
|
128
|
-
// Send OSC 11 query
|
|
129
|
-
|
|
146
|
+
// Send only the OSC 11 query — no ESC[6n sentinel to avoid
|
|
147
|
+
// cursor position responses leaking into Ink's input
|
|
148
|
+
process.stdout.write("\x1b]11;?\x1b\\");
|
|
130
149
|
}
|
|
131
150
|
catch {
|
|
132
151
|
clearTimeout(timeout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect-theme.js","sourceRoot":"","sources":["../../../src/ui/theme/detect-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect-theme.js","sourceRoot":"","sources":["../../../src/ui/theme/detect-theme.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "light-ansi",
|
|
3
|
+
"primary": "#55ffff",
|
|
4
|
+
"secondary": "#ff55ff",
|
|
5
|
+
"success": "#55ff55",
|
|
6
|
+
"error": "#ff5555",
|
|
7
|
+
"warning": "#ffff55",
|
|
8
|
+
"text": "#ffffff",
|
|
9
|
+
"textDim": "#aaaaaa",
|
|
10
|
+
"textMuted": "#aaaaaa",
|
|
11
|
+
"secondaryText": "#aaaaaa",
|
|
12
|
+
"border": "#555555",
|
|
13
|
+
"background": "",
|
|
14
|
+
"accent": "#55ffff",
|
|
15
|
+
"toolName": "#55ffff",
|
|
16
|
+
"toolSuccess": "#55ff55",
|
|
17
|
+
"toolError": "#ff5555",
|
|
18
|
+
"diffAdded": "#55ff55",
|
|
19
|
+
"diffRemoved": "#ff5555",
|
|
20
|
+
"diffContext": "#aaaaaa",
|
|
21
|
+
"diffAddedDimmed": "#55ff55",
|
|
22
|
+
"diffRemovedDimmed": "#ff5555",
|
|
23
|
+
"diffAddedWord": "#55ff55",
|
|
24
|
+
"diffRemovedWord": "#ff5555",
|
|
25
|
+
"diffAddedWordDimmed": "#55ff55",
|
|
26
|
+
"diffRemovedWordDimmed": "#ff5555",
|
|
27
|
+
"spinnerColor": "#55ffff",
|
|
28
|
+
"claude": "#ff5555",
|
|
29
|
+
"claudeShimmer": "#ff5555",
|
|
30
|
+
"permission": "#55ffff",
|
|
31
|
+
"permissionShimmer": "#55ffff",
|
|
32
|
+
"inputPrompt": "#55ffff",
|
|
33
|
+
"footerText": "#aaaaaa",
|
|
34
|
+
"commandColor": "#ff55ff",
|
|
35
|
+
"planPrimary": "#ffff55",
|
|
36
|
+
"planBorder": "#ffff55",
|
|
37
|
+
"subtle": "#555555",
|
|
38
|
+
"link": "#55ffff",
|
|
39
|
+
"code": "#ffff55",
|
|
40
|
+
"subagent1": "#ff5555",
|
|
41
|
+
"subagent2": "#55ffff",
|
|
42
|
+
"subagent3": "#55ff55",
|
|
43
|
+
"subagent4": "#ffff55",
|
|
44
|
+
"subagent5": "#ff55ff",
|
|
45
|
+
"subagent6": "#ff5555",
|
|
46
|
+
"subagent7": "#ff55ff",
|
|
47
|
+
"subagent8": "#55ffff"
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "light-daltonized",
|
|
3
|
+
"primary": "#93c5fd",
|
|
4
|
+
"secondary": "#c4b5fd",
|
|
5
|
+
"success": "#93c5fd",
|
|
6
|
+
"error": "#fbbf24",
|
|
7
|
+
"warning": "#fbbf24",
|
|
8
|
+
"text": "#e5e7eb",
|
|
9
|
+
"textDim": "#6b7280",
|
|
10
|
+
"textMuted": "#9ca3af",
|
|
11
|
+
"secondaryText": "#999999",
|
|
12
|
+
"border": "#374151",
|
|
13
|
+
"background": "",
|
|
14
|
+
"accent": "#a5b4fc",
|
|
15
|
+
"toolName": "#93c5fd",
|
|
16
|
+
"toolSuccess": "#93c5fd",
|
|
17
|
+
"toolError": "#fbbf24",
|
|
18
|
+
"diffAdded": "#93c5fd",
|
|
19
|
+
"diffRemoved": "#fbbf24",
|
|
20
|
+
"diffContext": "#6b7280",
|
|
21
|
+
"diffAddedDimmed": "#bfdbfe",
|
|
22
|
+
"diffRemovedDimmed": "#fde68a",
|
|
23
|
+
"diffAddedWord": "#60a5fa",
|
|
24
|
+
"diffRemovedWord": "#f59e0b",
|
|
25
|
+
"diffAddedWordDimmed": "#93c5fd",
|
|
26
|
+
"diffRemovedWordDimmed": "#fbbf24",
|
|
27
|
+
"spinnerColor": "#93c5fd",
|
|
28
|
+
"claude": "#fb923c",
|
|
29
|
+
"claudeShimmer": "#fdba74",
|
|
30
|
+
"permission": "#a5b4fc",
|
|
31
|
+
"permissionShimmer": "#c7d2fe",
|
|
32
|
+
"inputPrompt": "#93c5fd",
|
|
33
|
+
"footerText": "#6b7280",
|
|
34
|
+
"commandColor": "#a5b4fc",
|
|
35
|
+
"planPrimary": "#fbbf24",
|
|
36
|
+
"planBorder": "#f59e0b",
|
|
37
|
+
"subtle": "#4b5563",
|
|
38
|
+
"link": "#93c5fd",
|
|
39
|
+
"code": "#fbbf24",
|
|
40
|
+
"subagent1": "#fbbf24",
|
|
41
|
+
"subagent2": "#93c5fd",
|
|
42
|
+
"subagent3": "#a5b4fc",
|
|
43
|
+
"subagent4": "#c4b5fd",
|
|
44
|
+
"subagent5": "#c084fc",
|
|
45
|
+
"subagent6": "#fb923c",
|
|
46
|
+
"subagent7": "#a5b4fc",
|
|
47
|
+
"subagent8": "#22d3ee"
|
|
48
|
+
}
|
package/dist/ui/theme/light.json
CHANGED
|
@@ -1,27 +1,48 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "light",
|
|
3
|
-
"primary": "#
|
|
4
|
-
"secondary": "#
|
|
5
|
-
"success": "#
|
|
6
|
-
"error": "#
|
|
7
|
-
"warning": "#
|
|
8
|
-
"text": "#
|
|
9
|
-
"textDim": "#
|
|
10
|
-
"textMuted": "#
|
|
11
|
-
"
|
|
3
|
+
"primary": "#93c5fd",
|
|
4
|
+
"secondary": "#c4b5fd",
|
|
5
|
+
"success": "#4ade80",
|
|
6
|
+
"error": "#f87171",
|
|
7
|
+
"warning": "#fbbf24",
|
|
8
|
+
"text": "#e5e7eb",
|
|
9
|
+
"textDim": "#6b7280",
|
|
10
|
+
"textMuted": "#9ca3af",
|
|
11
|
+
"secondaryText": "#999999",
|
|
12
|
+
"border": "#374151",
|
|
12
13
|
"background": "",
|
|
13
|
-
"accent": "#
|
|
14
|
-
"toolName": "#
|
|
15
|
-
"toolSuccess": "#
|
|
16
|
-
"toolError": "#
|
|
17
|
-
"diffAdded": "#
|
|
18
|
-
"diffRemoved": "#
|
|
19
|
-
"diffContext": "#
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
14
|
+
"accent": "#a5b4fc",
|
|
15
|
+
"toolName": "#93c5fd",
|
|
16
|
+
"toolSuccess": "#4ade80",
|
|
17
|
+
"toolError": "#f87171",
|
|
18
|
+
"diffAdded": "#4ade80",
|
|
19
|
+
"diffRemoved": "#f87171",
|
|
20
|
+
"diffContext": "#6b7280",
|
|
21
|
+
"diffAddedDimmed": "#69db7c",
|
|
22
|
+
"diffRemovedDimmed": "#ffa8b4",
|
|
23
|
+
"diffAddedWord": "#86efac",
|
|
24
|
+
"diffRemovedWord": "#fca5a5",
|
|
25
|
+
"diffAddedWordDimmed": "#6ee7b7",
|
|
26
|
+
"diffRemovedWordDimmed": "#fda4af",
|
|
27
|
+
"spinnerColor": "#93c5fd",
|
|
28
|
+
"claude": "#fb923c",
|
|
29
|
+
"claudeShimmer": "#fdba74",
|
|
30
|
+
"permission": "#a5b4fc",
|
|
31
|
+
"permissionShimmer": "#c7d2fe",
|
|
32
|
+
"inputPrompt": "#93c5fd",
|
|
33
|
+
"footerText": "#6b7280",
|
|
34
|
+
"commandColor": "#a5b4fc",
|
|
35
|
+
"planPrimary": "#fbbf24",
|
|
36
|
+
"planBorder": "#f59e0b",
|
|
37
|
+
"subtle": "#4b5563",
|
|
38
|
+
"link": "#93c5fd",
|
|
39
|
+
"code": "#fbbf24",
|
|
40
|
+
"subagent1": "#f87171",
|
|
41
|
+
"subagent2": "#93c5fd",
|
|
42
|
+
"subagent3": "#4ade80",
|
|
43
|
+
"subagent4": "#fbbf24",
|
|
44
|
+
"subagent5": "#c4b5fd",
|
|
45
|
+
"subagent6": "#fb923c",
|
|
46
|
+
"subagent7": "#f472b6",
|
|
47
|
+
"subagent8": "#22d3ee"
|
|
27
48
|
}
|
package/dist/ui/theme/theme.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import darkTheme from "./dark.json";
|
|
2
2
|
export type Theme = typeof darkTheme;
|
|
3
|
-
export
|
|
3
|
+
export type ThemeName = "dark" | "light" | "dark-ansi" | "light-ansi" | "dark-daltonized" | "light-daltonized";
|
|
4
|
+
export declare function loadTheme(name: ThemeName): Theme;
|
|
4
5
|
export declare const ThemeContext: import("react").Context<{
|
|
5
6
|
name: string;
|
|
6
7
|
primary: string;
|
|
@@ -11,6 +12,7 @@ export declare const ThemeContext: import("react").Context<{
|
|
|
11
12
|
text: string;
|
|
12
13
|
textDim: string;
|
|
13
14
|
textMuted: string;
|
|
15
|
+
secondaryText: string;
|
|
14
16
|
border: string;
|
|
15
17
|
background: string;
|
|
16
18
|
accent: string;
|
|
@@ -20,13 +22,37 @@ export declare const ThemeContext: import("react").Context<{
|
|
|
20
22
|
diffAdded: string;
|
|
21
23
|
diffRemoved: string;
|
|
22
24
|
diffContext: string;
|
|
25
|
+
diffAddedDimmed: string;
|
|
26
|
+
diffRemovedDimmed: string;
|
|
27
|
+
diffAddedWord: string;
|
|
28
|
+
diffRemovedWord: string;
|
|
29
|
+
diffAddedWordDimmed: string;
|
|
30
|
+
diffRemovedWordDimmed: string;
|
|
23
31
|
spinnerColor: string;
|
|
32
|
+
claude: string;
|
|
33
|
+
claudeShimmer: string;
|
|
34
|
+
permission: string;
|
|
35
|
+
permissionShimmer: string;
|
|
24
36
|
inputPrompt: string;
|
|
25
37
|
footerText: string;
|
|
26
38
|
commandColor: string;
|
|
27
39
|
planPrimary: string;
|
|
28
40
|
planBorder: string;
|
|
29
41
|
subtle: string;
|
|
42
|
+
link: string;
|
|
43
|
+
code: string;
|
|
44
|
+
subagent1: string;
|
|
45
|
+
subagent2: string;
|
|
46
|
+
subagent3: string;
|
|
47
|
+
subagent4: string;
|
|
48
|
+
subagent5: string;
|
|
49
|
+
subagent6: string;
|
|
50
|
+
subagent7: string;
|
|
51
|
+
subagent8: string;
|
|
30
52
|
}>;
|
|
53
|
+
/** Callback to switch theme at runtime. Null when not inside ThemeProvider. */
|
|
54
|
+
export declare const SetThemeContext: import("react").Context<((name: ThemeName) => void) | null>;
|
|
31
55
|
export declare function useTheme(): Theme;
|
|
56
|
+
/** Returns a function to switch themes at runtime. Returns null if not available. */
|
|
57
|
+
export declare function useSetTheme(): ((name: ThemeName) => void) | null;
|
|
32
58
|
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,aAAa,CAAuB;
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,aAAa,CAAuB;AAO1D,MAAM,MAAM,KAAK,GAAG,OAAO,SAAS,CAAC;AAErC,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,OAAO,GACP,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,CAehD;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkC,CAAC;AAE5D,+EAA+E;AAC/E,eAAO,MAAM,eAAe,kCAAyB,SAAS,KAAK,IAAI,SAAe,CAAC;AAEvF,wBAAgB,QAAQ,IAAI,KAAK,CAEhC;AAED,qFAAqF;AACrF,wBAAgB,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,IAAI,CAEhE"}
|
package/dist/ui/theme/theme.js
CHANGED
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
import { createContext, useContext } from "react";
|
|
2
2
|
import darkTheme from "./dark.json" with { type: "json" };
|
|
3
3
|
import lightTheme from "./light.json" with { type: "json" };
|
|
4
|
+
import darkAnsiTheme from "./dark-ansi.json" with { type: "json" };
|
|
5
|
+
import lightAnsiTheme from "./light-ansi.json" with { type: "json" };
|
|
6
|
+
import darkDaltonizedTheme from "./dark-daltonized.json" with { type: "json" };
|
|
7
|
+
import lightDaltonizedTheme from "./light-daltonized.json" with { type: "json" };
|
|
4
8
|
export function loadTheme(name) {
|
|
5
|
-
|
|
9
|
+
switch (name) {
|
|
10
|
+
case "light":
|
|
11
|
+
return lightTheme;
|
|
12
|
+
case "dark-ansi":
|
|
13
|
+
return darkAnsiTheme;
|
|
14
|
+
case "light-ansi":
|
|
15
|
+
return lightAnsiTheme;
|
|
16
|
+
case "dark-daltonized":
|
|
17
|
+
return darkDaltonizedTheme;
|
|
18
|
+
case "light-daltonized":
|
|
19
|
+
return lightDaltonizedTheme;
|
|
20
|
+
default:
|
|
21
|
+
return darkTheme;
|
|
22
|
+
}
|
|
6
23
|
}
|
|
7
24
|
export const ThemeContext = createContext(darkTheme);
|
|
25
|
+
/** Callback to switch theme at runtime. Null when not inside ThemeProvider. */
|
|
26
|
+
export const SetThemeContext = createContext(null);
|
|
8
27
|
export function useTheme() {
|
|
9
28
|
return useContext(ThemeContext);
|
|
10
29
|
}
|
|
30
|
+
/** Returns a function to switch themes at runtime. Returns null if not available. */
|
|
31
|
+
export function useSetTheme() {
|
|
32
|
+
return useContext(SetThemeContext);
|
|
33
|
+
}
|
|
11
34
|
//# sourceMappingURL=theme.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,SAAS,MAAM,aAAa,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1D,OAAO,UAAU,MAAM,cAAc,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/theme/theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,SAAS,MAAM,aAAa,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1D,OAAO,UAAU,MAAM,cAAc,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5D,OAAO,aAAa,MAAM,kBAAkB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnE,OAAO,cAAc,MAAM,mBAAmB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrE,OAAO,mBAAmB,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,oBAAoB,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAYjF,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,OAAO;YACV,OAAO,UAAU,CAAC;QACpB,KAAK,WAAW;YACd,OAAO,aAAa,CAAC;QACvB,KAAK,YAAY;YACf,OAAO,cAAc,CAAC;QACxB,KAAK,iBAAiB;YACpB,OAAO,mBAAmB,CAAC;QAC7B,KAAK,kBAAkB;YACrB,OAAO,oBAAoB,CAAC;QAC9B;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAQ,SAAS,CAAC,CAAC;AAE5D,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAqC,IAAI,CAAC,CAAC;AAEvF,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export declare function langFromPath(filePath: string): string | undefined;
|
|
3
3
|
/**
|
|
4
4
|
* Syntax-highlight code. Returns ANSI string.
|
|
5
|
-
* Falls back to raw code if language unknown.
|
|
5
|
+
* Falls back to raw code if the highlighter hasn't loaded yet or language is unknown.
|
|
6
6
|
*/
|
|
7
7
|
export declare function highlightCode(code: string, language?: string): string;
|
|
8
8
|
//# sourceMappingURL=highlight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"highlight.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AA8BA,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGjE;AA4BD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CASrE"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { highlight, supportsLanguage } from "cli-highlight";
|
|
2
1
|
import path from "node:path";
|
|
3
2
|
/** Map file extension to cli-highlight language name */
|
|
4
3
|
const EXT_TO_LANG = {
|
|
@@ -32,15 +31,36 @@ export function langFromPath(filePath) {
|
|
|
32
31
|
const ext = path.extname(filePath).replace(/^\./, "").toLowerCase();
|
|
33
32
|
return EXT_TO_LANG[ext];
|
|
34
33
|
}
|
|
34
|
+
// Lazy-load cli-highlight so it doesn't block initial render.
|
|
35
|
+
// First call returns plain text; subsequent calls use the loaded highlighter.
|
|
36
|
+
let hlModule;
|
|
37
|
+
let loadAttempted = false;
|
|
38
|
+
function ensureLoaded() {
|
|
39
|
+
if (hlModule)
|
|
40
|
+
return hlModule;
|
|
41
|
+
if (loadAttempted)
|
|
42
|
+
return undefined;
|
|
43
|
+
loadAttempted = true;
|
|
44
|
+
// Kick off async load for next call
|
|
45
|
+
import("cli-highlight").then((m) => {
|
|
46
|
+
hlModule = m;
|
|
47
|
+
}, () => {
|
|
48
|
+
// Failed to load — will fall back to plain text permanently
|
|
49
|
+
});
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
35
52
|
/**
|
|
36
53
|
* Syntax-highlight code. Returns ANSI string.
|
|
37
|
-
* Falls back to raw code if language unknown.
|
|
54
|
+
* Falls back to raw code if the highlighter hasn't loaded yet or language is unknown.
|
|
38
55
|
*/
|
|
39
56
|
export function highlightCode(code, language) {
|
|
40
|
-
if (!language
|
|
57
|
+
if (!language)
|
|
58
|
+
return code;
|
|
59
|
+
const hl = ensureLoaded();
|
|
60
|
+
if (!hl || !hl.supportsLanguage(language))
|
|
41
61
|
return code;
|
|
42
62
|
try {
|
|
43
|
-
return highlight(code, { language, ignoreIllegals: true });
|
|
63
|
+
return hl.highlight(code, { language, ignoreIllegals: true });
|
|
44
64
|
}
|
|
45
65
|
catch {
|
|
46
66
|
return code;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../../src/ui/utils/highlight.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,wDAAwD;AACxD,MAAM,WAAW,GAA2B;IAC1C,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,YAAY;IAChB,GAAG,EAAE,YAAY;IACjB,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,MAAM;IACV,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,MAAM;IACV,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,KAAK;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,KAAK;IACX,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACpE,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAOD,8DAA8D;AAC9D,8EAA8E;AAC9E,IAAI,QAAqC,CAAC;AAC1C,IAAI,aAAa,GAAG,KAAK,CAAC;AAE1B,SAAS,YAAY;IACnB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,aAAa;QAAE,OAAO,SAAS,CAAC;IACpC,aAAa,GAAG,IAAI,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE;QACJ,QAAQ,GAAG,CAAC,CAAC;IACf,CAAC,EACD,GAAG,EAAE;QACH,4DAA4D;IAC9D,CAAC,CACF,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,QAAiB;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a clickable hyperlink using OSC 8 escape sequences.
|
|
3
|
+
* Falls back to plain URL if the terminal doesn't support hyperlinks.
|
|
4
|
+
*
|
|
5
|
+
* @param url - The URL to link to
|
|
6
|
+
* @param content - Optional content to display as the link text.
|
|
7
|
+
* If provided and hyperlinks are supported, this text is shown as a clickable link.
|
|
8
|
+
* If hyperlinks are not supported, content is ignored and only the URL is shown.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createHyperlink(url: string, content?: string): string;
|
|
11
|
+
//# sourceMappingURL=hyperlink.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperlink.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/hyperlink.ts"],"names":[],"mappings":"AASA;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAUrE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { supportsHyperlinks } from "./supports-hyperlinks.js";
|
|
3
|
+
// OSC 8 hyperlink escape sequences
|
|
4
|
+
// Format: \e]8;;URL\e\\TEXT\e]8;;\e\\
|
|
5
|
+
// Using \x07 (BEL) as terminator which is more widely supported
|
|
6
|
+
const OSC8_START = "\x1b]8;;";
|
|
7
|
+
const OSC8_END = "\x07";
|
|
8
|
+
/**
|
|
9
|
+
* Create a clickable hyperlink using OSC 8 escape sequences.
|
|
10
|
+
* Falls back to plain URL if the terminal doesn't support hyperlinks.
|
|
11
|
+
*
|
|
12
|
+
* @param url - The URL to link to
|
|
13
|
+
* @param content - Optional content to display as the link text.
|
|
14
|
+
* If provided and hyperlinks are supported, this text is shown as a clickable link.
|
|
15
|
+
* If hyperlinks are not supported, content is ignored and only the URL is shown.
|
|
16
|
+
*/
|
|
17
|
+
export function createHyperlink(url, content) {
|
|
18
|
+
if (!supportsHyperlinks()) {
|
|
19
|
+
return url;
|
|
20
|
+
}
|
|
21
|
+
// Apply basic ANSI blue color — wrap-ansi preserves this across line breaks.
|
|
22
|
+
// RGB colors (like theme colors) are NOT preserved by wrap-ansi with OSC 8.
|
|
23
|
+
const displayText = content ?? url;
|
|
24
|
+
const coloredText = chalk.blue(displayText);
|
|
25
|
+
return `${OSC8_START}${url}${OSC8_END}${coloredText}${OSC8_START}${OSC8_END}`;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=hyperlink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hyperlink.js","sourceRoot":"","sources":["../../../src/ui/utils/hyperlink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,mCAAmC;AACnC,sCAAsC;AACtC,gEAAgE;AAChE,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,OAAgB;IAC3D,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,MAAM,WAAW,GAAG,OAAO,IAAI,GAAG,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,GAAG,UAAU,GAAG,GAAG,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,EAAE,CAAC;AAChF,CAAC"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
declare class MarkdownLRUCache {
|
|
1
|
+
/** Simple LRU cache for rendered markdown ANSI strings. */
|
|
2
|
+
declare class MarkdownAnsiCache {
|
|
4
3
|
private cache;
|
|
5
|
-
get(body: string):
|
|
6
|
-
set(body: string,
|
|
4
|
+
get(body: string): string | undefined;
|
|
5
|
+
set(body: string, ansi: string): void;
|
|
7
6
|
private hash;
|
|
8
7
|
}
|
|
9
|
-
export declare const
|
|
8
|
+
export declare const markdownAnsiCache: MarkdownAnsiCache;
|
|
10
9
|
export declare function containsMarkdownSyntax(text: string): boolean;
|
|
11
10
|
export {};
|
|
12
11
|
//# sourceMappingURL=markdown-cache.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-cache.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/markdown-cache.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"markdown-cache.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/markdown-cache.ts"],"names":[],"mappings":"AAIA,2DAA2D;AAC3D,cAAM,iBAAiB;IACrB,OAAO,CAAC,KAAK,CAA6B;IAE1C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAUrC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAYrC,OAAO,CAAC,IAAI;CAGb;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AASzD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAI5D"}
|