@toddzheng024/dscode-bundle 0.7.12 → 0.7.14

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.
Files changed (167) hide show
  1. package/THIRD_PARTY_NOTICES.md +3 -3
  2. package/cordis.patch.yml +6 -2
  3. package/package.json +7 -5
  4. package/plugins/code-review/index.mjs +5 -2
  5. package/plugins/compaction/threshold.mjs +12 -0
  6. package/plugins/credentials/index.mjs +13 -0
  7. package/plugins/grok/adapter.mjs +114 -0
  8. package/plugins/grok/auth.mjs +76 -0
  9. package/plugins/grok/billing.mjs +146 -0
  10. package/plugins/grok/index.mjs +118 -0
  11. package/plugins/grok/models.mjs +129 -0
  12. package/plugins/grok/status.mjs +28 -0
  13. package/plugins/grok/wire.mjs +268 -0
  14. package/plugins/i18n/messages.mjs +6 -6
  15. package/plugins/providers/catalog.mjs +2 -0
  16. package/plugins/session-metrics/view.mjs +34 -3
  17. package/vendor/compaction-basic/index.js +91 -1
  18. package/vendor/persistent/index.js +10 -9
  19. package/vendor/terminal/index.js +5 -0
  20. package/vendor/tui/lib/app.mjs +6711 -0
  21. package/vendor/tui/lib/approval.mjs +122 -0
  22. package/vendor/tui/lib/attachments.mjs +218 -0
  23. package/vendor/tui/lib/authorization-panel.mjs +242 -0
  24. package/vendor/tui/lib/authorization.mjs +111 -0
  25. package/vendor/tui/lib/commands.mjs +123 -0
  26. package/vendor/tui/lib/dscode/chat.mjs +84 -0
  27. package/vendor/tui/lib/dscode/flags.mjs +32 -0
  28. package/vendor/tui/lib/dscode/model-search.mjs +68 -0
  29. package/vendor/tui/lib/dscode/paste.mjs +87 -0
  30. package/vendor/tui/lib/dscode/telemetry.mjs +82 -0
  31. package/vendor/tui/lib/dscode/welcome.mjs +100 -0
  32. package/vendor/tui/lib/editor-keys.mjs +346 -0
  33. package/vendor/tui/lib/editor.mjs +50 -0
  34. package/vendor/tui/lib/fork.mjs +24 -0
  35. package/vendor/tui/lib/git-workflow.mjs +278 -0
  36. package/vendor/tui/{types/history.d.ts → lib/history.mjs} +69 -26
  37. package/vendor/tui/{types/i18n.d.ts → lib/i18n.mjs} +23 -15
  38. package/vendor/tui/lib/index.mjs +2200 -0
  39. package/vendor/tui/lib/input-split.mjs +170 -0
  40. package/vendor/tui/lib/internals.mjs +90 -0
  41. package/vendor/tui/lib/invariant.mjs +22 -0
  42. package/vendor/tui/lib/kernel-panels.mjs +1265 -0
  43. package/vendor/tui/lib/keyboard.mjs +283 -0
  44. package/vendor/tui/lib/language-panel.mjs +41 -0
  45. package/vendor/tui/lib/locales/en.mjs +495 -0
  46. package/vendor/tui/lib/locales/zh.mjs +495 -0
  47. package/vendor/tui/lib/mentions.mjs +150 -0
  48. package/vendor/tui/lib/model-capabilities.mjs +245 -0
  49. package/vendor/tui/lib/models.mjs +215 -0
  50. package/vendor/tui/{types/panel-accent.d.ts → lib/panel-accent.mjs} +11 -7
  51. package/vendor/tui/lib/permissions.mjs +45 -0
  52. package/vendor/tui/lib/plugin-inventory.mjs +27 -0
  53. package/vendor/tui/lib/presets.mjs +46 -0
  54. package/vendor/tui/lib/provider-settings.mjs +600 -0
  55. package/vendor/tui/lib/questions.mjs +116 -0
  56. package/vendor/tui/lib/rainbow.mjs +181 -0
  57. package/vendor/tui/lib/render/animations.mjs +665 -0
  58. package/vendor/tui/lib/render/editor.mjs +437 -0
  59. package/vendor/tui/lib/render/export.mjs +119 -0
  60. package/vendor/tui/lib/render/fuzzy.mjs +79 -0
  61. package/vendor/tui/lib/render/ime-cursor.mjs +135 -0
  62. package/vendor/tui/lib/render/inspector.mjs +93 -0
  63. package/vendor/tui/lib/render/lines.mjs +538 -0
  64. package/vendor/tui/lib/render/markdown.mjs +592 -0
  65. package/vendor/tui/lib/render/projection.mjs +1864 -0
  66. package/vendor/tui/lib/render/status.mjs +591 -0
  67. package/vendor/tui/lib/render/text.mjs +157 -0
  68. package/vendor/tui/lib/render/tool-detail.mjs +187 -0
  69. package/vendor/tui/lib/render/tool-preview.mjs +79 -0
  70. package/vendor/tui/lib/render/usage.mjs +336 -0
  71. package/vendor/tui/lib/render/width.mjs +191 -0
  72. package/vendor/tui/lib/session-directory.mjs +329 -0
  73. package/vendor/tui/lib/session-query.mjs +184 -0
  74. package/vendor/tui/lib/session-switch.mjs +51 -0
  75. package/vendor/tui/lib/settings-file.mjs +75 -0
  76. package/vendor/tui/lib/skills.mjs +119 -0
  77. package/vendor/tui/lib/startup.mjs +111 -0
  78. package/vendor/tui/lib/store.mjs +129 -0
  79. package/vendor/tui/lib/subagents.mjs +200 -0
  80. package/vendor/tui/lib/terminal-title.mjs +186 -0
  81. package/vendor/tui/lib/theme-panel.mjs +60 -0
  82. package/vendor/tui/lib/theme.mjs +379 -0
  83. package/vendor/tui/lib/update-panel.mjs +239 -0
  84. package/vendor/tui/lib/update.mjs +101 -0
  85. package/vendor/tui/lib/version.mjs +105 -0
  86. package/vendor/tui/lib/whale-glyph.mjs +20 -0
  87. package/vendor/tui/LICENSE +0 -21
  88. package/vendor/tui/devtools-CdTl3MNy.mjs +0 -3643
  89. package/vendor/tui/dscode-email/cli.mjs +0 -32
  90. package/vendor/tui/dscode-email/contacts.mjs +0 -36
  91. package/vendor/tui/dscode-email/gmail-oauth.mjs +0 -69
  92. package/vendor/tui/dscode-email/gmail-store.mjs +0 -2
  93. package/vendor/tui/dscode-email/gmail.mjs +0 -194
  94. package/vendor/tui/dscode-email/imap.mjs +0 -136
  95. package/vendor/tui/dscode-email/inbox.d.mts +0 -25
  96. package/vendor/tui/dscode-email/inbox.mjs +0 -76
  97. package/vendor/tui/dscode-email/smtp.mjs +0 -69
  98. package/vendor/tui/dscode-email/store.mjs +0 -32
  99. package/vendor/tui/dscode-providers/catalog.mjs +0 -136
  100. package/vendor/tui/dscode-providers/effort.mjs +0 -35
  101. package/vendor/tui/dscode-providers/openrouter-account.mjs +0 -171
  102. package/vendor/tui/index.mjs +0 -44441
  103. package/vendor/tui/invariant.mjs +0 -21
  104. package/vendor/tui/rolldown-runtime-CMFfr-1z.mjs +0 -26
  105. package/vendor/tui/session-query.mjs +0 -150
  106. package/vendor/tui/startup.mjs +0 -109
  107. package/vendor/tui/theme-7u5Qo3dF.mjs +0 -1265
  108. package/vendor/tui/types/app.d.ts +0 -348
  109. package/vendor/tui/types/approval.d.ts +0 -59
  110. package/vendor/tui/types/attachments.d.ts +0 -52
  111. package/vendor/tui/types/authorization-panel.d.ts +0 -22
  112. package/vendor/tui/types/authorization.d.ts +0 -36
  113. package/vendor/tui/types/commands.d.ts +0 -52
  114. package/vendor/tui/types/editor-keys.d.ts +0 -105
  115. package/vendor/tui/types/editor.d.ts +0 -6
  116. package/vendor/tui/types/fork.d.ts +0 -8
  117. package/vendor/tui/types/git-workflow.d.ts +0 -121
  118. package/vendor/tui/types/index.d.ts +0 -223
  119. package/vendor/tui/types/input-split.d.ts +0 -54
  120. package/vendor/tui/types/internals.d.ts +0 -26
  121. package/vendor/tui/types/invariant.d.ts +0 -15
  122. package/vendor/tui/types/kernel-panels.d.ts +0 -245
  123. package/vendor/tui/types/keyboard.d.ts +0 -80
  124. package/vendor/tui/types/language-panel.d.ts +0 -12
  125. package/vendor/tui/types/locales/en.d.ts +0 -450
  126. package/vendor/tui/types/locales/zh.d.ts +0 -9
  127. package/vendor/tui/types/mentions.d.ts +0 -85
  128. package/vendor/tui/types/model-capabilities.d.ts +0 -82
  129. package/vendor/tui/types/models.d.ts +0 -133
  130. package/vendor/tui/types/permissions.d.ts +0 -27
  131. package/vendor/tui/types/plugin-inventory.d.ts +0 -11
  132. package/vendor/tui/types/presets.d.ts +0 -22
  133. package/vendor/tui/types/provider-settings.d.ts +0 -239
  134. package/vendor/tui/types/questions.d.ts +0 -54
  135. package/vendor/tui/types/rainbow.d.ts +0 -69
  136. package/vendor/tui/types/render/animations.d.ts +0 -307
  137. package/vendor/tui/types/render/editor.d.ts +0 -163
  138. package/vendor/tui/types/render/export.d.ts +0 -9
  139. package/vendor/tui/types/render/fuzzy.d.ts +0 -21
  140. package/vendor/tui/types/render/ime-cursor.d.ts +0 -60
  141. package/vendor/tui/types/render/inspector.d.ts +0 -62
  142. package/vendor/tui/types/render/lines.d.ts +0 -86
  143. package/vendor/tui/types/render/markdown.d.ts +0 -29
  144. package/vendor/tui/types/render/projection.d.ts +0 -587
  145. package/vendor/tui/types/render/status.d.ts +0 -196
  146. package/vendor/tui/types/render/text.d.ts +0 -64
  147. package/vendor/tui/types/render/tool-detail.d.ts +0 -94
  148. package/vendor/tui/types/render/tool-preview.d.ts +0 -28
  149. package/vendor/tui/types/render/usage.d.ts +0 -113
  150. package/vendor/tui/types/render/width.d.ts +0 -29
  151. package/vendor/tui/types/session-directory.d.ts +0 -190
  152. package/vendor/tui/types/session-query.d.ts +0 -92
  153. package/vendor/tui/types/session-switch.d.ts +0 -17
  154. package/vendor/tui/types/settings-file.d.ts +0 -41
  155. package/vendor/tui/types/skills.d.ts +0 -47
  156. package/vendor/tui/types/startup.d.ts +0 -65
  157. package/vendor/tui/types/store.d.ts +0 -58
  158. package/vendor/tui/types/subagents.d.ts +0 -70
  159. package/vendor/tui/types/terminal-title.d.ts +0 -66
  160. package/vendor/tui/types/theme-panel.d.ts +0 -24
  161. package/vendor/tui/types/theme.d.ts +0 -434
  162. package/vendor/tui/types/update-panel.d.ts +0 -49
  163. package/vendor/tui/types/update.d.ts +0 -75
  164. package/vendor/tui/types/version.d.ts +0 -19
  165. package/vendor/tui/types/whale-glyph.d.ts +0 -6
  166. /package/vendor/tui/{dscode-clipboard-image → lib/dscode/clipboard-image}/clipboard-image.swift +0 -0
  167. /package/vendor/tui/{dscode-clipboard-image → lib/dscode/clipboard-image}/index.mjs +0 -0
@@ -1,24 +0,0 @@
1
- /**
2
- * The `/theme` picker (the Codex `/theme` contract): one bounded list over
3
- * the three color themes — dark, light, and auto (terminal-sensed; auto
4
- * falls back to dark until OSC-11 detection lands). Enter applies the row
5
- * and the runner persists it; Esc closes without changing the theme.
6
- *
7
- * @module @deepseek-ai/dsh-tui/theme-panel
8
- */
9
- import { type ReactElement } from 'react';
10
- import { type ThemeName } from './theme.ts';
11
- /**
12
- * The /theme list: one row per theme, the current one marked with ●, the
13
- * focused one with ›. Enter applies the focused theme (the runner persists
14
- * it), Esc/q closes without changing anything. Colors read the ACTIVE
15
- * palette, so the panel itself adapts to a light theme once applied.
16
- */
17
- export declare function ThemePanel({ current, select, close }: {
18
- /** Theme name in force (the requested name; 'auto' included). */
19
- current: ThemeName;
20
- /** Accept one theme name: applied immediately and persisted by the runner. */
21
- select: (name: ThemeName) => void;
22
- /** Close without changing the theme. */
23
- close: () => void;
24
- }): ReactElement;
@@ -1,434 +0,0 @@
1
- /**
2
- * Terminal color tokens for the dsh TUI, mapped from the product design
3
- * platform's DeepSeek palette
4
- * (`packages/client/ui-theme/src/styles/design-platform.css`). Truecolor RGB
5
- * rides chalk, which degrades automatically on terminals without truecolor.
6
- *
7
- * Three palettes — `dark` (the default), `light`, and `prismatic` (the
8
- * neon synthwave skin) — share the same token keys with different values.
9
- * Painters and the palette accessor read the ACTIVE
10
- * palette selected through {@link setTheme}, so a theme switch recolors every
11
- * painted surface on the next render without touching call sites; consumers
12
- * read colors through {@link getPalette} or the painters below only.
13
- *
14
- * @module @deepseek-ai/dsh-tui/theme
15
- */
16
- /** One RGB triple for a palette token. */
17
- export type RgbTriple = readonly [number, number, number];
18
- /** Palette token keys shared by every theme. */
19
- export type ThemeToken = 'brand' | 'brandBright' | 'brandMid' | 'brandDeep' | 'dim' | 'success' | 'error' | 'warn' | 'text' | 'code' | 'composerBand' | 'diffAdd' | 'diffDel' | 'diffAddFg' | 'diffDelFg' | 'surface' | 'prompt' | 'queued' | 'steered';
20
- /** One full color palette: every token key mapped to an RGB triple. */
21
- export type ThemePalette = Readonly<Record<ThemeToken, RgbTriple>>;
22
- /** Selectable theme names: dark, light, prismatic, rainbow, or auto (terminal-sensed). */
23
- export type ThemeName = 'dark' | 'light' | 'prismatic' | 'rainbow' | 'auto';
24
- /** Valid theme names in canonical picker order. */
25
- export declare const THEME_NAMES: readonly ThemeName[];
26
- /** One /theme picker row: the theme id plus its display copy. */
27
- export interface ThemeDescriptor {
28
- /** The selectable theme name. */
29
- readonly id: ThemeName;
30
- /** Short row label shown in the picker. */
31
- readonly label: string;
32
- /** One-line description shown after the label. */
33
- readonly description: string;
34
- }
35
- /**
36
- * Every theme's picker metadata in canonical order — the single source the
37
- * /theme panel rows derive from; {@link THEME_NAMES} stays the validation
38
- * list. Adding a theme means adding its palette plus one row here.
39
- */
40
- export declare const THEMES: readonly ThemeDescriptor[];
41
- /**
42
- * DeepSeek dark palette: the original TUI colors, one entry per
43
- * design-platform token in use. Keep names and values in sync with the CSS
44
- * custom properties cited inline.
45
- */
46
- export declare const DARK_PALETTE: {
47
- /** Primary brand blue — `--dsw-static-deepseek-500`. */
48
- readonly brand: readonly [65, 118, 230];
49
- /** Brighter brand blue for live/streaming emphasis — `--dsw-static-deepseek-400`. */
50
- readonly brandBright: readonly [103, 158, 254];
51
- /** Intermediate brand blue between brand and brandBright — `--dsw-static-deepseek-450`. */
52
- readonly brandMid: readonly [86, 134, 254];
53
- /** Deep brand blue for secondary chrome — `--dsw-static-deepseek-600`. */
54
- readonly brandDeep: readonly [72, 104, 178];
55
- /** Muted caption gray — `--dsw-static-neutral-bluish-600`. */
56
- readonly dim: readonly [129, 133, 140];
57
- /** Success green — `--dsw-static-green-500`. */
58
- readonly success: readonly [34, 197, 94];
59
- /** Error red — `--dsw-static-red-500`. */
60
- readonly error: readonly [239, 68, 68];
61
- /** Warning amber — `--dsw-static-amber-500`. */
62
- readonly warn: readonly [245, 158, 11];
63
- /** Default foreground text — `--dsw-static-neutral-50`. */
64
- readonly text: readonly [236, 240, 246];
65
- /** Inline/fenced code — soft sky blue, distinct from brand accents. */
66
- readonly code: readonly [125, 211, 252];
67
- /** Composer three-row band base — neutral light gray, hue-free so wave tints read on it. */
68
- readonly composerBand: readonly [46, 48, 52];
69
- /** Diff added-line background — Codex's muted dark green tint (#213A2B). */
70
- readonly diffAdd: readonly [33, 58, 43];
71
- /** Diff removed-line background — Codex's muted dark red tint (#4A221D). */
72
- readonly diffDel: readonly [74, 34, 29];
73
- /** Diff added-line foreground — green-500, 5.4:1 on the diffAdd tint. */
74
- readonly diffAddFg: readonly [34, 197, 94];
75
- /** Diff removed-line foreground — red-400, 4.9:1 on the diffDel tint (error's red-500 sinks to 3.6:1 on it). */
76
- readonly diffDelFg: readonly [248, 113, 113];
77
- /** Terminal background this palette is designed against; row tints blend toward it. */
78
- readonly surface: readonly [0, 0, 0];
79
- /**
80
- * The three prompt-row colors, one per delivery kind. They are the palette's
81
- * own accents (bright brand, warning amber, violet) rather than fixed RGBs,
82
- * and every row's bar is these colors laid over {@link surface}.
83
- */
84
- readonly prompt: readonly [103, 158, 254];
85
- readonly queued: readonly [245, 158, 11];
86
- readonly steered: readonly [167, 139, 250];
87
- };
88
- /**
89
- * Light palette tuned for white terminals: the same token keys as dark with
90
- * contrast-driven values (AA on a white background). Brand keeps its dark
91
- * value (≈4.2:1 on white — reserved for bold/accent spans; body-size brand
92
- * text uses brandBright at ≈5.4:1); the bright/mid/deep blues, muted grays,
93
- * and status colors deepen so they stay legible on bright backgrounds.
94
- */
95
- export declare const LIGHT_PALETTE: {
96
- /** Primary brand blue — unchanged design-platform value; ≈4.2:1 on white, so bold/accent spans only (body-size brand text uses brandBright). */
97
- readonly brand: readonly [65, 118, 230];
98
- /** Brighter brand blue deepened for white backgrounds (was 2.7:1). */
99
- readonly brandBright: readonly [72, 104, 178];
100
- /** Intermediate brand blue — Tailwind blue-500. */
101
- readonly brandMid: readonly [59, 130, 246];
102
- /** Deep brand blue for secondary chrome — `--dsw-static-deepseek-700`. */
103
- readonly brandDeep: readonly [47, 76, 143];
104
- /** Muted caption gray deepened for white backgrounds. */
105
- readonly dim: readonly [101, 103, 107];
106
- /** Success green — Tailwind green-700. */
107
- readonly success: readonly [21, 128, 61];
108
- /** Error red — Tailwind red-600. */
109
- readonly error: readonly [236, 19, 19];
110
- /** Warning amber — Tailwind amber-700. */
111
- readonly warn: readonly [180, 83, 9];
112
- /** Default foreground text — near-black. */
113
- readonly text: readonly [21, 21, 23];
114
- /** Inline/fenced code — Tailwind cyan-700, distinct from brand accents. */
115
- readonly code: readonly [14, 116, 144];
116
- /** Composer three-row band base — neutral light gray, hue-free so wave tints read on it. */
117
- readonly composerBand: readonly [229, 231, 235];
118
- /** Diff added-line background — GitHub's pastel green (#dafbe1), Codex's light pick. */
119
- readonly diffAdd: readonly [218, 251, 225];
120
- /** Diff removed-line background — GitHub's pastel red (#ffebe9), Codex's light pick. */
121
- readonly diffDel: readonly [255, 235, 233];
122
- /** Diff added-line foreground — green-800, 6.4:1 on the pastel tint (green-700 clears 4.5:1 by a hair). */
123
- readonly diffAddFg: readonly [22, 101, 52];
124
- /** Diff removed-line foreground — red-700, 5.6:1 on the pastel tint (error's red-600 is 3.9:1). */
125
- readonly diffDelFg: readonly [185, 28, 28];
126
- /** Terminal background this palette is designed against; row tints blend toward it. */
127
- readonly surface: readonly [255, 255, 255];
128
- /**
129
- * Prompt-row colors deepened for white: the amber and violet the dark theme
130
- * uses sit at the AA edge on their own pastel bars, so each kind carries a
131
- * value that clears 4.5:1 both on the bar and on plain white.
132
- */
133
- readonly prompt: readonly [47, 76, 143];
134
- readonly queued: readonly [124, 53, 10];
135
- readonly steered: readonly [109, 40, 217];
136
- };
137
- /**
138
- * Prismatic palette — the neon synthwave skin (docs/prismatic-theme-design.md):
139
- * electric violet replaces the brand blues, neon fuchsia carries live
140
- * emphasis, neon cyan paints code, and a lavender gray dims captions. Paints
141
- * on a black terminal; every value meets the same WCAG thresholds as the
142
- * other palettes (body tokens ≥4.5:1, accents ≥3:1 on pure black). Semantic
143
- * colors — success/error/warn and the four diff tokens — reuse the dark
144
- * values verbatim so green still means added and red still means removed.
145
- */
146
- export declare const PRISMATIC_PALETTE: {
147
- /** Primary electric purple — violet-500 (#8B5CF6), 5.0:1 on black. */
148
- readonly brand: readonly [139, 92, 246];
149
- /** Live/streaming emphasis — neon fuchsia-300 (#F0ABFC), 11.9:1 on black. */
150
- readonly brandBright: readonly [240, 171, 252];
151
- /** Intermediate violet — violet-400 (#A78BFA), 7.7:1 on black. */
152
- readonly brandMid: readonly [167, 139, 250];
153
- /** Deep secondary chrome — violet-600 (#7C3AED), 3.7:1 on black (violet-700 misses 3:1). */
154
- readonly brandDeep: readonly [124, 58, 237];
155
- /** Muted captions — lavender gray (#A6A3B8), 8.6:1 on black. */
156
- readonly dim: readonly [166, 163, 184];
157
- /** Success green — unchanged from dark. */
158
- readonly success: readonly [34, 197, 94];
159
- /** Error red — unchanged from dark. */
160
- readonly error: readonly [239, 68, 68];
161
- /** Warning amber — unchanged from dark. */
162
- readonly warn: readonly [245, 158, 11];
163
- /** Default foreground text — white with a lavender cast (#F0EEF9). */
164
- readonly text: readonly [240, 238, 249];
165
- /** Inline/fenced code — neon cyan-300 (#67E8F9), 14.5:1 on black. */
166
- readonly code: readonly [103, 232, 249];
167
- /** Composer three-row band base — neutral dark gray, hue-free so wave tints read on it. */
168
- readonly composerBand: readonly [46, 46, 52];
169
- /** Diff added-line background — unchanged from dark. */
170
- readonly diffAdd: readonly [33, 58, 43];
171
- /** Diff removed-line background — unchanged from dark. */
172
- readonly diffDel: readonly [74, 34, 29];
173
- /** Diff added-line foreground — unchanged from dark. */
174
- readonly diffAddFg: readonly [34, 197, 94];
175
- /** Diff removed-line foreground — unchanged from dark. */
176
- readonly diffDelFg: readonly [248, 113, 113];
177
- /** Terminal background this palette is designed against; row tints blend toward it. */
178
- readonly surface: readonly [0, 0, 0];
179
- /** Prompt rows in the skin's own neon: fuchsia, amber, cyan. */
180
- readonly prompt: readonly [240, 171, 252];
181
- readonly queued: readonly [245, 158, 11];
182
- readonly steered: readonly [103, 232, 249];
183
- };
184
- /**
185
- * Every STATIC palette by theme name; auto resolves through {@link resolveTheme}
186
- * and rainbow is rolled per launch ({@link rainbowRoll}), so neither lives
187
- * here — {@link setTheme} resolves both through the same key space.
188
- */
189
- export declare const PALETTES: {
190
- readonly dark: {
191
- /** Primary brand blue — `--dsw-static-deepseek-500`. */
192
- readonly brand: readonly [65, 118, 230];
193
- /** Brighter brand blue for live/streaming emphasis — `--dsw-static-deepseek-400`. */
194
- readonly brandBright: readonly [103, 158, 254];
195
- /** Intermediate brand blue between brand and brandBright — `--dsw-static-deepseek-450`. */
196
- readonly brandMid: readonly [86, 134, 254];
197
- /** Deep brand blue for secondary chrome — `--dsw-static-deepseek-600`. */
198
- readonly brandDeep: readonly [72, 104, 178];
199
- /** Muted caption gray — `--dsw-static-neutral-bluish-600`. */
200
- readonly dim: readonly [129, 133, 140];
201
- /** Success green — `--dsw-static-green-500`. */
202
- readonly success: readonly [34, 197, 94];
203
- /** Error red — `--dsw-static-red-500`. */
204
- readonly error: readonly [239, 68, 68];
205
- /** Warning amber — `--dsw-static-amber-500`. */
206
- readonly warn: readonly [245, 158, 11];
207
- /** Default foreground text — `--dsw-static-neutral-50`. */
208
- readonly text: readonly [236, 240, 246];
209
- /** Inline/fenced code — soft sky blue, distinct from brand accents. */
210
- readonly code: readonly [125, 211, 252];
211
- /** Composer three-row band base — neutral light gray, hue-free so wave tints read on it. */
212
- readonly composerBand: readonly [46, 48, 52];
213
- /** Diff added-line background — Codex's muted dark green tint (#213A2B). */
214
- readonly diffAdd: readonly [33, 58, 43];
215
- /** Diff removed-line background — Codex's muted dark red tint (#4A221D). */
216
- readonly diffDel: readonly [74, 34, 29];
217
- /** Diff added-line foreground — green-500, 5.4:1 on the diffAdd tint. */
218
- readonly diffAddFg: readonly [34, 197, 94];
219
- /** Diff removed-line foreground — red-400, 4.9:1 on the diffDel tint (error's red-500 sinks to 3.6:1 on it). */
220
- readonly diffDelFg: readonly [248, 113, 113];
221
- /** Terminal background this palette is designed against; row tints blend toward it. */
222
- readonly surface: readonly [0, 0, 0];
223
- /**
224
- * The three prompt-row colors, one per delivery kind. They are the palette's
225
- * own accents (bright brand, warning amber, violet) rather than fixed RGBs,
226
- * and every row's bar is these colors laid over {@link surface}.
227
- */
228
- readonly prompt: readonly [103, 158, 254];
229
- readonly queued: readonly [245, 158, 11];
230
- readonly steered: readonly [167, 139, 250];
231
- };
232
- readonly light: {
233
- /** Primary brand blue — unchanged design-platform value; ≈4.2:1 on white, so bold/accent spans only (body-size brand text uses brandBright). */
234
- readonly brand: readonly [65, 118, 230];
235
- /** Brighter brand blue deepened for white backgrounds (was 2.7:1). */
236
- readonly brandBright: readonly [72, 104, 178];
237
- /** Intermediate brand blue — Tailwind blue-500. */
238
- readonly brandMid: readonly [59, 130, 246];
239
- /** Deep brand blue for secondary chrome — `--dsw-static-deepseek-700`. */
240
- readonly brandDeep: readonly [47, 76, 143];
241
- /** Muted caption gray deepened for white backgrounds. */
242
- readonly dim: readonly [101, 103, 107];
243
- /** Success green — Tailwind green-700. */
244
- readonly success: readonly [21, 128, 61];
245
- /** Error red — Tailwind red-600. */
246
- readonly error: readonly [236, 19, 19];
247
- /** Warning amber — Tailwind amber-700. */
248
- readonly warn: readonly [180, 83, 9];
249
- /** Default foreground text — near-black. */
250
- readonly text: readonly [21, 21, 23];
251
- /** Inline/fenced code — Tailwind cyan-700, distinct from brand accents. */
252
- readonly code: readonly [14, 116, 144];
253
- /** Composer three-row band base — neutral light gray, hue-free so wave tints read on it. */
254
- readonly composerBand: readonly [229, 231, 235];
255
- /** Diff added-line background — GitHub's pastel green (#dafbe1), Codex's light pick. */
256
- readonly diffAdd: readonly [218, 251, 225];
257
- /** Diff removed-line background — GitHub's pastel red (#ffebe9), Codex's light pick. */
258
- readonly diffDel: readonly [255, 235, 233];
259
- /** Diff added-line foreground — green-800, 6.4:1 on the pastel tint (green-700 clears 4.5:1 by a hair). */
260
- readonly diffAddFg: readonly [22, 101, 52];
261
- /** Diff removed-line foreground — red-700, 5.6:1 on the pastel tint (error's red-600 is 3.9:1). */
262
- readonly diffDelFg: readonly [185, 28, 28];
263
- /** Terminal background this palette is designed against; row tints blend toward it. */
264
- readonly surface: readonly [255, 255, 255];
265
- /**
266
- * Prompt-row colors deepened for white: the amber and violet the dark theme
267
- * uses sit at the AA edge on their own pastel bars, so each kind carries a
268
- * value that clears 4.5:1 both on the bar and on plain white.
269
- */
270
- readonly prompt: readonly [47, 76, 143];
271
- readonly queued: readonly [124, 53, 10];
272
- readonly steered: readonly [109, 40, 217];
273
- };
274
- readonly prismatic: {
275
- /** Primary electric purple — violet-500 (#8B5CF6), 5.0:1 on black. */
276
- readonly brand: readonly [139, 92, 246];
277
- /** Live/streaming emphasis — neon fuchsia-300 (#F0ABFC), 11.9:1 on black. */
278
- readonly brandBright: readonly [240, 171, 252];
279
- /** Intermediate violet — violet-400 (#A78BFA), 7.7:1 on black. */
280
- readonly brandMid: readonly [167, 139, 250];
281
- /** Deep secondary chrome — violet-600 (#7C3AED), 3.7:1 on black (violet-700 misses 3:1). */
282
- readonly brandDeep: readonly [124, 58, 237];
283
- /** Muted captions — lavender gray (#A6A3B8), 8.6:1 on black. */
284
- readonly dim: readonly [166, 163, 184];
285
- /** Success green — unchanged from dark. */
286
- readonly success: readonly [34, 197, 94];
287
- /** Error red — unchanged from dark. */
288
- readonly error: readonly [239, 68, 68];
289
- /** Warning amber — unchanged from dark. */
290
- readonly warn: readonly [245, 158, 11];
291
- /** Default foreground text — white with a lavender cast (#F0EEF9). */
292
- readonly text: readonly [240, 238, 249];
293
- /** Inline/fenced code — neon cyan-300 (#67E8F9), 14.5:1 on black. */
294
- readonly code: readonly [103, 232, 249];
295
- /** Composer three-row band base — neutral dark gray, hue-free so wave tints read on it. */
296
- readonly composerBand: readonly [46, 46, 52];
297
- /** Diff added-line background — unchanged from dark. */
298
- readonly diffAdd: readonly [33, 58, 43];
299
- /** Diff removed-line background — unchanged from dark. */
300
- readonly diffDel: readonly [74, 34, 29];
301
- /** Diff added-line foreground — unchanged from dark. */
302
- readonly diffAddFg: readonly [34, 197, 94];
303
- /** Diff removed-line foreground — unchanged from dark. */
304
- readonly diffDelFg: readonly [248, 113, 113];
305
- /** Terminal background this palette is designed against; row tints blend toward it. */
306
- readonly surface: readonly [0, 0, 0];
307
- /** Prompt rows in the skin's own neon: fuchsia, amber, cyan. */
308
- readonly prompt: readonly [240, 171, 252];
309
- readonly queued: readonly [245, 158, 11];
310
- readonly steered: readonly [103, 232, 249];
311
- };
312
- };
313
- /**
314
- * Resolve a theme name to the palette actually in use. `auto` detection
315
- * (OSC 11 terminal background query) is a later enhancement; until it lands,
316
- * auto falls back to the dark palette (prismatic and rainbow are always
317
- * explicit choices, never auto-resolved).
318
- * @param name - the requested theme name.
319
- * @returns 'dark', 'light', 'prismatic', or 'rainbow' — the palette key.
320
- */
321
- export declare function resolveTheme(name: ThemeName): 'dark' | 'light' | 'prismatic' | 'rainbow';
322
- /**
323
- * Switch the active theme: painters and {@link getPalette} reflect the new
324
- * palette from the next render onward. The default is dark, so a process
325
- * that never calls this paints exactly as before.
326
- * @param name - the theme to activate ('auto' resolves to dark for now).
327
- */
328
- export declare function setTheme(name: ThemeName): void;
329
- /**
330
- * The theme name in force. Returns the requested name ('auto' included) so
331
- * the /theme picker and persistence can round-trip the user's choice; the
332
- * palette actually used is {@link getPalette}.
333
- */
334
- export declare function getTheme(): ThemeName;
335
- /** The palette in force; theme-aware call sites read colors through it. */
336
- export declare function getPalette(): ThemePalette;
337
- /**
338
- * Parse a persisted theme name: only names in {@link THEME_NAMES} survive;
339
- * anything else (missing, corrupt, or unknown) falls back to the dark default.
340
- * @param value - the raw parsed JSON value (expected string).
341
- * @returns a valid theme name.
342
- */
343
- export declare function parseThemeName(value: unknown): ThemeName;
344
- /** Ink `color` string for one RGB triple. */
345
- export declare function inkColor(triple: RgbTriple): string;
346
- /**
347
- * Diff-line background as an Ink `backgroundColor` string, theme-aware and
348
- * depth-gated (the Codex diff renderer's rule): 16-color terminals paint
349
- * backgrounds from the saturated system palette, which drowns the text, so
350
- * they keep the foreground-only look; 256-color and truecolor terminals get
351
- * the palette's tint (chalk quantizes the RGB form down automatically).
352
- * @param token - which diff background, added or removed lines.
353
- * @returns the Ink background color, or undefined to paint foreground-only.
354
- */
355
- export declare function diffBackground(token: 'diffAdd' | 'diffDel'): string | undefined;
356
- /** One prompt-row color: the palette token whose color paints the row. */
357
- export interface PromptRowTokens {
358
- readonly fg: 'prompt' | 'queued' | 'steered';
359
- }
360
- /**
361
- * The color family one prompt row wears, chosen by how it was delivered: the
362
- * ordinary brand accent, the warning amber for a queued prompt, and the
363
- * palette's own third accent for a steered one. The bar behind it is derived
364
- * from that same color, so every theme — including a freshly rolled rainbow —
365
- * carries its own look instead of a fixed triple.
366
- * @param delivery - how the prompt was delivered; undefined is an ordinary one.
367
- * @returns the palette token whose color paints the row.
368
- */
369
- export declare function promptRowTokens(delivery: 'queued' | 'steered' | undefined): PromptRowTokens;
370
- /**
371
- * Blended prompt-row background for one row color: the palette color laid
372
- * over the surface the palette is designed for (dark themes over black, light
373
- * over white), depth-gated exactly like {@link diffBackground} — a 16-color
374
- * terminal keeps the foreground-only look rather than painting a saturated
375
- * system background behind the text.
376
- * @param color - the row's palette token.
377
- * @returns the Ink background color, or undefined to paint foreground-only.
378
- */
379
- export declare function rowBackground(color: PromptRowTokens['fg']): string | undefined;
380
- /**
381
- * The prismatic surface ring: four neon accents panels cycle through by
382
- * mount order (cyan → fuchsia → violet → lime), all ≥3:1 on black. Dark and
383
- * light ignore the ring — {@link surfaceAccent} falls back to the passed-in
384
- * base color so those themes stay pixel-identical.
385
- */
386
- export declare const ACCENT_RING: readonly RgbTriple[];
387
- /**
388
- * The prismatic flow anchors: brand violet → neon fuchsia → neon cyan. All
389
- * three clear 4.5:1 on black, so a flowing foreground stays AA throughout
390
- * the oscillation (render/animations.ts walks the triangle).
391
- */
392
- export declare const FLOW_ANCHORS: readonly RgbTriple[];
393
- /**
394
- * Whether the active theme is prismatic (the neon skin with surface rings
395
- * and flowing accents).
396
- */
397
- export declare function isPrismatic(): boolean;
398
- /** Whether the active theme is rainbow (the per-launch carnival roll). */
399
- export declare function isRainbow(): boolean;
400
- /** The active theme's flow walk, if it has one (anchors plus phase offset). */
401
- export interface ThemeFlow {
402
- /** Anchor colors walked in order over one 2.4s lap. */
403
- readonly anchors: readonly RgbTriple[];
404
- /** Phase offset into the lap, milliseconds (0 for prismatic). */
405
- readonly phaseMs: number;
406
- }
407
- /**
408
- * The flowing theme's anchor walk: prismatic rides the fixed violet→fuchsia→
409
- * cyan triangle; rainbow rides its rolled full-spectrum anchors with a random
410
- * phase; dark and light have no flow (undefined) and keep static accents.
411
- */
412
- export declare function themeFlow(): ThemeFlow | undefined;
413
- /**
414
- * The accent for one surface slot: prismatic rotates the {@link ACCENT_RING}
415
- * by slot index; every other theme gets the caller's base color back.
416
- * @param index - the slot's position in the mount-order sequence.
417
- * @param base - the color to use outside prismatic (the surface's usual one).
418
- * @returns the accent to paint the surface's border/title with.
419
- */
420
- export declare function surfaceAccent(index: number, base: RgbTriple): RgbTriple;
421
- /** Paint with the primary brand blue: whale, wordmark, tool names, accents. */
422
- export declare function brand(text: string): string;
423
- /** Paint with the bright brand blue: streaming output and active spinners. */
424
- export declare function brandBright(text: string): string;
425
- /** Paint with the deep brand blue: borders and secondary chrome. */
426
- export declare function brandDeep(text: string): string;
427
- /** Paint muted captions, hints, and meta lines. */
428
- export declare function dim(text: string): string;
429
- /** Paint completed tool results and confirmations. */
430
- export declare function success(text: string): string;
431
- /** Paint failures and error entries. */
432
- export declare function error(text: string): string;
433
- /** Paint warnings. */
434
- export declare function warn(text: string): string;
@@ -1,49 +0,0 @@
1
- /**
2
- * The /update panel: one bounded surface over the launcher update
3
- * pipeline. The panel never decides versions itself — it renders the
4
- * launcher `update --json` probe (plan plus refusals), takes one
5
- * confirmation, then streams `update --apply` progress and reports the
6
- * result with a restart hint. Every alignment guarantee (host pinned to
7
- * the release peers line, companion plugins carried, downgrade and
8
- * local-checkout refusals) lives in the launcher and is only displayed
9
- * here.
10
- */
11
- import { type ReactElement } from 'react';
12
- import type { LauncherUpdateStatus } from './update.ts';
13
- /** Retained apply-progress lines (ring tail; npm output is ephemeral). */
14
- export declare const UPDATE_OUTPUT_CAP = 800;
15
- /** Keep the newest UPDATE_OUTPUT_CAP lines of streamed update output. */
16
- export declare function clipUpdateLines(lines: readonly string[]): readonly string[];
17
- /** One display row of the update surface. */
18
- export interface UpdateRow {
19
- readonly key: string;
20
- readonly text: string;
21
- readonly tone?: 'ok' | 'warn' | 'error' | 'dim';
22
- }
23
- /** The plan view derived from one probe: facts to show and whether apply may run. */
24
- export interface UpdatePlanView {
25
- readonly rows: readonly UpdateRow[];
26
- readonly runnable: boolean;
27
- }
28
- /** Rendered facts of one probe: current/target versions, actions, refusals. */
29
- export declare function updatePlanView(status: LauncherUpdateStatus): UpdatePlanView;
30
- /** Panel lifecycle phases; the footer names the keys each phase accepts. */
31
- export type UpdatePhase = 'probe' | 'error' | 'plan' | 'apply' | 'done';
32
- /** Footer hint line per phase; the plan phase names the confirm key only when runnable. */
33
- export declare function updateFooter(phase: UpdatePhase, runnable: boolean, upToDate: boolean, aheadOfRegistry?: boolean): string;
34
- /**
35
- * The /update surface: probe on open (and on r), confirm with enter/y,
36
- * stream the aligned apply, and land on a bounded result view. Escape is
37
- * locked while the apply child runs — killing npm mid-install is exactly
38
- * the half-updated state this command exists to prevent.
39
- */
40
- export declare function UpdatePanel({ probe, apply, close, notify }: {
41
- /** Read-only probe of the launcher update status (never installs). */
42
- probe: () => Promise<LauncherUpdateStatus>;
43
- /** Run the aligned update; streams sanitized progress lines. */
44
- apply: (onLine: (line: string) => void, plan: LauncherUpdateStatus['plan']) => Promise<number>;
45
- /** Close the panel (App keeps ownership of the flag). */
46
- close: () => void;
47
- /** One bounded cross-surface notice (phase completions). */
48
- notify: (text: string, tone?: 'info' | 'warning' | 'error') => void;
49
- }): ReactElement;
@@ -1,75 +0,0 @@
1
- /**
2
- * Child-process adapter for the launcher update pipeline. The launcher
3
- * (bin/deepseek.mjs) stays the single owner of update semantics — plan,
4
- * guards, and the aligned install sequence — so the TUI only spawns
5
- * `update --json` (read-only probe) and `update --apply` (streamed run)
6
- * and never re-implements version-line decisions.
7
- */
8
- import { type ChildProcess } from 'node:child_process';
9
- /** Spawn double acceptable to the adapter (tests inject an EventEmitter). */
10
- export type SpawnLike = (command: string, args: readonly string[], options: {
11
- readonly stdio: readonly string[];
12
- readonly windowsHide: boolean;
13
- }) => ChildProcess;
14
- /** Structured `update --json` payload; mirrors the launcher buildUpdateStatus. */
15
- export interface LauncherUpdateStatus {
16
- readonly code: {
17
- readonly running: string;
18
- readonly latest: string | null;
19
- };
20
- readonly host: {
21
- readonly installed: string | null;
22
- readonly targetLine: string | null;
23
- };
24
- readonly profile: {
25
- readonly spec: string | null;
26
- readonly mounted: string | null;
27
- readonly localCheckout: boolean;
28
- };
29
- readonly plan: {
30
- readonly dshSpec: string;
31
- readonly codeSpec: string;
32
- readonly pluginSpecs: readonly string[];
33
- };
34
- readonly blockers: {
35
- readonly registry: string | null;
36
- readonly downgrade: boolean;
37
- readonly localCheckout: readonly string[] | null;
38
- };
39
- readonly upToDate: boolean;
40
- /** True when this install is newer than npm latest (apply would downgrade). */
41
- readonly aheadOfRegistry?: boolean;
42
- }
43
- /** Exact specs the TUI confirmed; apply must install these, not re-query latest. */
44
- export interface LauncherUpdatePlan {
45
- readonly dshSpec: string;
46
- readonly codeSpec: string;
47
- readonly pluginSpecs: readonly string[];
48
- }
49
- /** The launcher entrypoint that ships beside this bundle (lib/../bin). */
50
- export declare function launcherUpdateCommand(args: readonly string[], moduleUrl?: string): {
51
- readonly command: string;
52
- readonly args: string[];
53
- };
54
- /**
55
- * Split a streamed chunk sequence into complete display lines: CR is
56
- * stripped, a chunk boundary may split a line, and the trailing partial
57
- * stays pending until its newline arrives (npm writes whole lines, but a
58
- * pipe may cut anywhere). Blank lines carry no progress information and
59
- * are dropped so the panel budget is not spent on gaps.
60
- */
61
- export declare function createLineSplitter(onLine: (line: string) => void): (chunk: string) => void;
62
- /**
63
- * Probe the aligned update status. Read-only: `update --json` never
64
- * installs anything. The probe is bounded (npm view may hang on a broken
65
- * network) and resolves with the parsed status.
66
- */
67
- export declare function probeLauncherUpdate(spawnProcess?: SpawnLike): Promise<LauncherUpdateStatus>;
68
- /**
69
- * Run the aligned update (`update --apply`) as a child process and stream
70
- * its sanitized progress lines to the caller. Resolves with the child
71
- * exit code (0 success); rejects only when the process could not start.
72
- * No timeout: an npm install may legitimately take minutes.
73
- */
74
- export declare function applyPlanArgs(plan: LauncherUpdatePlan): string[];
75
- export declare function applyLauncherUpdate(onLine: (line: string) => void, spawnProcess?: SpawnLike, plan?: LauncherUpdatePlan): Promise<number>;
@@ -1,19 +0,0 @@
1
- /** Installed dsh-code version exposed by the terminal header. */
2
- /** Version of the installed dsh-code package. */
3
- export declare const DSH_CODE_VERSION: string;
4
- /**
5
- * Resolve the running dsh CLI host's version from its entry file
6
- * (`process.argv[1]`, e.g. `.../@deepseek-ai/dsh/lib/bin.js` or a PATH
7
- * symlink `.../bin/dsh` → that file). Only a manifest literally named
8
- * `@deepseek-ai/dsh` counts, so an unrelated entry (vitest, a plain node
9
- * script) resolves to undefined instead of faking a kernel version.
10
- */
11
- export declare function resolveDshHostVersion(entry?: string | undefined): string | undefined;
12
- /**
13
- * The dsh kernel version the TUI runs on, memoized after the first probe: the
14
- * host process never changes within a run, and the header reads this on every
15
- * Static replay.
16
- */
17
- export declare function dshKernelVersion(): string | undefined;
18
- /** Test-only: forget the memoized kernel version so a new argv can be probed. */
19
- export declare function _resetDshKernelVersionForTests(): void;
@@ -1,6 +0,0 @@
1
- /** Half-block whale glyph rows; render with the brand color. */
2
- export declare const WHALE_GLYPH: readonly string[];
3
- /** Fixed glyph width in terminal columns. */
4
- export declare const WHALE_GLYPH_COLUMNS = 26;
5
- /** Fixed glyph height in half-block rows. */
6
- export declare const WHALE_GLYPH_ROWS = 8;