@sagmans/dsh-tui 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +407 -53
- package/cordis.patch.yml +14 -0
- package/lib/agent/present.js +1 -1
- package/lib/agent/present.js.map +1 -1
- package/lib/agent/projections.d.ts +22 -6
- package/lib/agent/projections.d.ts.map +1 -1
- package/lib/agent/projections.js +21 -10
- package/lib/agent/projections.js.map +1 -1
- package/lib/agent/prompt-history.d.ts +89 -0
- package/lib/agent/prompt-history.d.ts.map +1 -0
- package/lib/agent/prompt-history.js +382 -0
- package/lib/agent/prompt-history.js.map +1 -0
- package/lib/agent/status.d.ts +6 -0
- package/lib/agent/status.d.ts.map +1 -1
- package/lib/agent/status.js +1 -0
- package/lib/agent/status.js.map +1 -1
- package/lib/cards.d.ts +83 -13
- package/lib/cards.d.ts.map +1 -1
- package/lib/cards.js +96 -28
- package/lib/cards.js.map +1 -1
- package/lib/export.d.ts +3 -3
- package/lib/export.d.ts.map +1 -1
- package/lib/export.js +23 -13
- package/lib/export.js.map +1 -1
- package/lib/fold-cursor.d.ts +12 -5
- package/lib/fold-cursor.d.ts.map +1 -1
- package/lib/fold-cursor.js +16 -5
- package/lib/fold-cursor.js.map +1 -1
- package/lib/gates.d.ts.map +1 -1
- package/lib/gates.js +42 -9
- package/lib/gates.js.map +1 -1
- package/lib/herdr/client.d.ts +57 -0
- package/lib/herdr/client.d.ts.map +1 -0
- package/lib/herdr/client.js +218 -0
- package/lib/herdr/client.js.map +1 -0
- package/lib/herdr/constants.d.ts +93 -0
- package/lib/herdr/constants.d.ts.map +1 -0
- package/lib/herdr/constants.js +79 -0
- package/lib/herdr/constants.js.map +1 -0
- package/lib/herdr/reporter.d.ts +60 -0
- package/lib/herdr/reporter.d.ts.map +1 -0
- package/lib/herdr/reporter.js +217 -0
- package/lib/herdr/reporter.js.map +1 -0
- package/lib/herdr/state.d.ts +57 -0
- package/lib/herdr/state.d.ts.map +1 -0
- package/lib/herdr/state.js +62 -0
- package/lib/herdr/state.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +700 -81
- package/lib/index.js.map +1 -1
- package/lib/injection.d.ts +9 -0
- package/lib/injection.d.ts.map +1 -0
- package/lib/injection.js +128 -0
- package/lib/injection.js.map +1 -0
- package/lib/input/actions.d.ts +19 -2
- package/lib/input/actions.d.ts.map +1 -1
- package/lib/input/actions.js +60 -11
- package/lib/input/actions.js.map +1 -1
- package/lib/input/cancel.d.ts +55 -0
- package/lib/input/cancel.d.ts.map +1 -0
- package/lib/input/cancel.js +47 -0
- package/lib/input/cancel.js.map +1 -0
- package/lib/input/completion.d.ts +5 -2
- package/lib/input/completion.d.ts.map +1 -1
- package/lib/input/completion.js +79 -4
- package/lib/input/completion.js.map +1 -1
- package/lib/input/file-search.d.ts +105 -0
- package/lib/input/file-search.d.ts.map +1 -0
- package/lib/input/file-search.js +665 -0
- package/lib/input/file-search.js.map +1 -0
- package/lib/input/fuzzy.d.ts +42 -0
- package/lib/input/fuzzy.d.ts.map +1 -0
- package/lib/input/fuzzy.js +289 -0
- package/lib/input/fuzzy.js.map +1 -0
- package/lib/input/ghost.d.ts +46 -0
- package/lib/input/ghost.d.ts.map +1 -0
- package/lib/input/ghost.js +58 -0
- package/lib/input/ghost.js.map +1 -0
- package/lib/input/keymap.d.ts +3 -1
- package/lib/input/keymap.d.ts.map +1 -1
- package/lib/input/keymap.js +16 -3
- package/lib/input/keymap.js.map +1 -1
- package/lib/input/match.d.ts +12 -4
- package/lib/input/match.d.ts.map +1 -1
- package/lib/input/match.js +50 -51
- package/lib/input/match.js.map +1 -1
- package/lib/input/submission.d.ts +34 -1
- package/lib/input/submission.d.ts.map +1 -1
- package/lib/input/submission.js +33 -5
- package/lib/input/submission.js.map +1 -1
- package/lib/keys-command.d.ts +19 -3
- package/lib/keys-command.d.ts.map +1 -1
- package/lib/keys-command.js +34 -31
- package/lib/keys-command.js.map +1 -1
- package/lib/settings-notice.d.ts +5 -0
- package/lib/settings-notice.d.ts.map +1 -1
- package/lib/settings-notice.js +9 -7
- package/lib/settings-notice.js.map +1 -1
- package/lib/stash/lock.d.ts +72 -0
- package/lib/stash/lock.d.ts.map +1 -0
- package/lib/stash/lock.js +374 -0
- package/lib/stash/lock.js.map +1 -0
- package/lib/stash/paths.d.ts +22 -0
- package/lib/stash/paths.d.ts.map +1 -0
- package/lib/stash/paths.js +84 -0
- package/lib/stash/paths.js.map +1 -0
- package/lib/stash/private-fs.d.ts +61 -0
- package/lib/stash/private-fs.d.ts.map +1 -0
- package/lib/stash/private-fs.js +379 -0
- package/lib/stash/private-fs.js.map +1 -0
- package/lib/stash/schema.d.ts +56 -0
- package/lib/stash/schema.d.ts.map +1 -0
- package/lib/stash/schema.js +108 -0
- package/lib/stash/schema.js.map +1 -0
- package/lib/stash/store.d.ts +92 -0
- package/lib/stash/store.d.ts.map +1 -0
- package/lib/stash/store.js +262 -0
- package/lib/stash/store.js.map +1 -0
- package/lib/stash.d.ts +122 -0
- package/lib/stash.d.ts.map +1 -0
- package/lib/stash.js +353 -0
- package/lib/stash.js.map +1 -0
- package/lib/terminal/external-editor.d.ts +93 -0
- package/lib/terminal/external-editor.d.ts.map +1 -0
- package/lib/terminal/external-editor.js +263 -0
- package/lib/terminal/external-editor.js.map +1 -0
- package/lib/terminal/host-writes.d.ts +39 -0
- package/lib/terminal/host-writes.d.ts.map +1 -0
- package/lib/terminal/host-writes.js +136 -0
- package/lib/terminal/host-writes.js.map +1 -0
- package/lib/terminal/signals.d.ts +25 -0
- package/lib/terminal/signals.d.ts.map +1 -0
- package/lib/terminal/signals.js +39 -0
- package/lib/terminal/signals.js.map +1 -0
- package/lib/terminal/warning-screen.d.ts +19 -1
- package/lib/terminal/warning-screen.d.ts.map +1 -1
- package/lib/terminal/warning-screen.js +37 -1
- package/lib/terminal/warning-screen.js.map +1 -1
- package/lib/terminal-text.d.ts +72 -0
- package/lib/terminal-text.d.ts.map +1 -0
- package/lib/terminal-text.js +603 -0
- package/lib/terminal-text.js.map +1 -0
- package/lib/text.d.ts +45 -6
- package/lib/text.d.ts.map +1 -1
- package/lib/text.js +106 -46
- package/lib/text.js.map +1 -1
- package/lib/theme-command.d.ts +7 -4
- package/lib/theme-command.d.ts.map +1 -1
- package/lib/theme-command.js +32 -12
- package/lib/theme-command.js.map +1 -1
- package/lib/theme-files.d.ts +110 -0
- package/lib/theme-files.d.ts.map +1 -0
- package/lib/theme-files.js +352 -0
- package/lib/theme-files.js.map +1 -0
- package/lib/theme-schema.d.ts +121 -0
- package/lib/theme-schema.d.ts.map +1 -0
- package/lib/theme-schema.js +87 -0
- package/lib/theme-schema.js.map +1 -0
- package/lib/theme-settings.d.ts +72 -10
- package/lib/theme-settings.d.ts.map +1 -1
- package/lib/theme-settings.js +162 -45
- package/lib/theme-settings.js.map +1 -1
- package/lib/theme-tokens.d.ts +39 -7
- package/lib/theme-tokens.d.ts.map +1 -1
- package/lib/theme-tokens.js +104 -13
- package/lib/theme-tokens.js.map +1 -1
- package/lib/theme.d.ts +24 -2
- package/lib/theme.d.ts.map +1 -1
- package/lib/theme.js +49 -6
- package/lib/theme.js.map +1 -1
- package/lib/todo-guard.d.ts +116 -0
- package/lib/todo-guard.d.ts.map +1 -0
- package/lib/todo-guard.js +259 -0
- package/lib/todo-guard.js.map +1 -0
- package/lib/tool-display.d.ts +57 -0
- package/lib/tool-display.d.ts.map +1 -0
- package/lib/tool-display.js +51 -0
- package/lib/tool-display.js.map +1 -0
- package/lib/transcript.d.ts +28 -0
- package/lib/transcript.d.ts.map +1 -1
- package/lib/transcript.js +126 -37
- package/lib/transcript.js.map +1 -1
- package/lib/ui/diff.d.ts +49 -0
- package/lib/ui/diff.d.ts.map +1 -0
- package/lib/ui/diff.js +208 -0
- package/lib/ui/diff.js.map +1 -0
- package/lib/ui/dock.d.ts.map +1 -1
- package/lib/ui/dock.js +9 -6
- package/lib/ui/dock.js.map +1 -1
- package/lib/ui/editor.d.ts +41 -1
- package/lib/ui/editor.d.ts.map +1 -1
- package/lib/ui/editor.js +100 -4
- package/lib/ui/editor.js.map +1 -1
- package/lib/ui/frame.d.ts +16 -5
- package/lib/ui/frame.d.ts.map +1 -1
- package/lib/ui/frame.js +32 -13
- package/lib/ui/frame.js.map +1 -1
- package/lib/ui/history-picker.d.ts +15 -0
- package/lib/ui/history-picker.d.ts.map +1 -0
- package/lib/ui/history-picker.js +26 -0
- package/lib/ui/history-picker.js.map +1 -0
- package/lib/ui/keymap-picker.d.ts +16 -0
- package/lib/ui/keymap-picker.d.ts.map +1 -0
- package/lib/ui/keymap-picker.js +41 -0
- package/lib/ui/keymap-picker.js.map +1 -0
- package/lib/ui/layout.d.ts +33 -0
- package/lib/ui/layout.d.ts.map +1 -0
- package/lib/ui/layout.js +33 -0
- package/lib/ui/layout.js.map +1 -0
- package/lib/ui/markdown.d.ts +25 -3
- package/lib/ui/markdown.d.ts.map +1 -1
- package/lib/ui/markdown.js +12 -8
- package/lib/ui/markdown.js.map +1 -1
- package/lib/ui/picker-card.d.ts +42 -0
- package/lib/ui/picker-card.d.ts.map +1 -0
- package/lib/ui/picker-card.js +148 -0
- package/lib/ui/picker-card.js.map +1 -0
- package/lib/ui/picker.d.ts +50 -2
- package/lib/ui/picker.d.ts.map +1 -1
- package/lib/ui/picker.js +66 -7
- package/lib/ui/picker.js.map +1 -1
- package/lib/ui/prompt.d.ts +12 -2
- package/lib/ui/prompt.d.ts.map +1 -1
- package/lib/ui/prompt.js +25 -2
- package/lib/ui/prompt.js.map +1 -1
- package/lib/ui/rows.d.ts +8 -6
- package/lib/ui/rows.d.ts.map +1 -1
- package/lib/ui/rows.js +10 -18
- package/lib/ui/rows.js.map +1 -1
- package/lib/ui/stash-picker.d.ts +43 -0
- package/lib/ui/stash-picker.d.ts.map +1 -0
- package/lib/ui/stash-picker.js +78 -0
- package/lib/ui/stash-picker.js.map +1 -0
- package/lib/ui/status.d.ts +2 -0
- package/lib/ui/status.d.ts.map +1 -1
- package/lib/ui/status.js +25 -16
- package/lib/ui/status.js.map +1 -1
- package/lib/ui/theme-picker.d.ts +18 -0
- package/lib/ui/theme-picker.d.ts.map +1 -0
- package/lib/ui/theme-picker.js +68 -0
- package/lib/ui/theme-picker.js.map +1 -0
- package/lib/ui/view.d.ts +146 -22
- package/lib/ui/view.d.ts.map +1 -1
- package/lib/ui/view.js +461 -154
- package/lib/ui/view.js.map +1 -1
- package/lib/work.d.ts +3 -1
- package/lib/work.d.ts.map +1 -1
- package/lib/work.js +9 -1
- package/lib/work.js.map +1 -1
- package/package.json +7 -1
- package/themes/deepseek-blue.yaml +183 -0
- package/themes/violet-orbit.yaml +178 -0
package/lib/theme-settings.js
CHANGED
|
@@ -1,44 +1,14 @@
|
|
|
1
1
|
import z from '@deepseek-ai/schemastery';
|
|
2
|
+
import { DEFAULT_MAX_ENTRIES, MAX_ENTRIES_LIMIT } from "./agent/prompt-history.js";
|
|
2
3
|
import { defaultKeymap, keysFor, resolveKeymap } from "./input/actions.js";
|
|
3
4
|
import { KeymapSectionSchema, isActionId } from "./input/keymap-settings.js";
|
|
4
5
|
import { DEFAULT_PREFIX_KEYS, DEFAULT_PREFIX_WINDOW_S } from "./input/keymap.js";
|
|
5
|
-
import {
|
|
6
|
+
import { TOOL_DISPLAY_LIMITS, TOOL_OUTPUT_DISPLAYS, toolDisplayTable, } from "./tool-display.js";
|
|
7
|
+
import { DEFAULT_THEME } from "./theme-files.js";
|
|
8
|
+
import { asRecord, PALETTE_NAME_SET, PaletteSchema, TOKEN_NAME_SET, TokensSchema, } from "./theme-schema.js";
|
|
9
|
+
import { DEFAULT_PALETTE } from "./theme-tokens.js";
|
|
6
10
|
/** Settings namespace owned by the terminal surface. */
|
|
7
11
|
export const TUI_SETTINGS_NAMESPACE = 'dsh-tui';
|
|
8
|
-
/**
|
|
9
|
-
* A colour the reader may write.
|
|
10
|
-
*
|
|
11
|
-
* Enumerated rather than a free string: a misspelled colour must fail at load
|
|
12
|
-
* with the offending token named, not silently paint nothing for the rest of
|
|
13
|
-
* the session.
|
|
14
|
-
*/
|
|
15
|
-
const ColourSchema = z.union([
|
|
16
|
-
z.string().pattern(/^#[0-9a-fA-F]{6}$/u),
|
|
17
|
-
z.union([...PALETTE_NAMES]),
|
|
18
|
-
z.number().min(0).max(255),
|
|
19
|
-
]);
|
|
20
|
-
/** One element's override; every field optional so a reader sets only what they mean. */
|
|
21
|
-
const StyleSpecSchema = z.object({
|
|
22
|
-
fg: ColourSchema,
|
|
23
|
-
bg: ColourSchema,
|
|
24
|
-
bold: z.boolean(),
|
|
25
|
-
dim: z.boolean(),
|
|
26
|
-
italic: z.boolean(),
|
|
27
|
-
underline: z.boolean(),
|
|
28
|
-
strike: z.boolean(),
|
|
29
|
-
glyph: z.string(),
|
|
30
|
-
hidden: z.boolean(),
|
|
31
|
-
inherit: z.union([...TUI_TOKENS]),
|
|
32
|
-
});
|
|
33
|
-
/** The palette half: every entry optional, each defaulting to the shipped shade. */
|
|
34
|
-
const PaletteSchema = z.object(Object.fromEntries(PALETTE_NAMES.map(name => [name, ColourSchema.default(DEFAULT_PALETTE[name])])));
|
|
35
|
-
/**
|
|
36
|
-
* The token half: every token optional, but an unknown name rejected.
|
|
37
|
-
*
|
|
38
|
-
* Spelled out rather than `z.dict` because `dict` would accept any key, which
|
|
39
|
-
* is exactly the silent-typo failure this section has to prevent.
|
|
40
|
-
*/
|
|
41
|
-
const TokensSchema = z.object(Object.fromEntries(TUI_TOKENS.map(token => [token, StyleSpecSchema])));
|
|
42
12
|
/** The values the `subcalls` key accepts, declared once for the schema and the refusal message. */
|
|
43
13
|
const SUBCALL_DISPLAYS = ['collapsed', 'inline'];
|
|
44
14
|
/** How a reply's mermaid fences draw: never, once settled, or as the reply streams. */
|
|
@@ -47,7 +17,33 @@ export const MERMAID_MODES = ['off', 'final', 'streaming'];
|
|
|
47
17
|
const DEFAULT_MERMAID_MODE = 'streaming';
|
|
48
18
|
/** Longest chord window a reader may ask for, so a typo cannot arm one for an hour. */
|
|
49
19
|
const MAX_PREFIX_WINDOW_S = 60;
|
|
20
|
+
/** Prompt history is on, and offers the dimmed completion, until the reader says otherwise. */
|
|
21
|
+
const DEFAULT_HISTORY_ENABLED = true;
|
|
22
|
+
const DEFAULT_HISTORY_GHOST = true;
|
|
23
|
+
/** The history keys, declared once so a typo is refused by name. */
|
|
24
|
+
const HISTORY_KEYS = new Set(['enabled', 'ghost', 'maxEntries']);
|
|
25
|
+
/**
|
|
26
|
+
* The prompt-history affordances.
|
|
27
|
+
*
|
|
28
|
+
* Grouped under one key because they are tuned together: a reader who wants no
|
|
29
|
+
* ghost still keeps reverse search, and one who wants neither stops the store.
|
|
30
|
+
*/
|
|
31
|
+
const HistorySchema = z.object({
|
|
32
|
+
enabled: z.boolean().default(DEFAULT_HISTORY_ENABLED),
|
|
33
|
+
ghost: z.boolean().default(DEFAULT_HISTORY_GHOST),
|
|
34
|
+
maxEntries: z.number().min(1).max(MAX_ENTRIES_LIMIT).default(DEFAULT_MAX_ENTRIES),
|
|
35
|
+
});
|
|
50
36
|
const SECTION = z.object({
|
|
37
|
+
// No default even though the surface draws one, for the same reason `prefix`
|
|
38
|
+
// has none: a registration fills every declared field, and a fill-in here would
|
|
39
|
+
// hand back a choice the reader never made, which the next save would then write
|
|
40
|
+
// into their document as if they had. Which theme answers an unnamed section is
|
|
41
|
+
// the library's question, asked where the name is looked up. A free string
|
|
42
|
+
// rather than an enumerated union, also for the same reason as `prefix`: the
|
|
43
|
+
// names are files the reader owns, and one appears the moment they save it —
|
|
44
|
+
// which no schema compiled into this build can enumerate. A name nothing answers
|
|
45
|
+
// to is refused where the names that do answer can actually be listed.
|
|
46
|
+
theme: z.string(),
|
|
51
47
|
palette: PaletteSchema.default({}),
|
|
52
48
|
tokens: TokensSchema.default({}),
|
|
53
49
|
subcalls: z.union([...SUBCALL_DISPLAYS]).default('inline'),
|
|
@@ -61,6 +57,11 @@ const SECTION = z.object({
|
|
|
61
57
|
prefix: z.string(),
|
|
62
58
|
prefixWindow: z.number().min(0).max(MAX_PREFIX_WINDOW_S).default(DEFAULT_PREFIX_WINDOW_S),
|
|
63
59
|
keys: KeymapSectionSchema.default({}),
|
|
60
|
+
history: HistorySchema.default({ enabled: DEFAULT_HISTORY_ENABLED, ghost: DEFAULT_HISTORY_GHOST, maxEntries: DEFAULT_MAX_ENTRIES }),
|
|
61
|
+
// Declared so a registered scope keeps the block when the document is saved,
|
|
62
|
+
// but validated by hand below: its keys are tool names, which no closed shape
|
|
63
|
+
// can enumerate, and schemastery's `dict` accepts every one of them.
|
|
64
|
+
tools: z.any(),
|
|
64
65
|
});
|
|
65
66
|
/**
|
|
66
67
|
* The schema the harness registers.
|
|
@@ -70,10 +71,10 @@ const SECTION = z.object({
|
|
|
70
71
|
* cannot express.
|
|
71
72
|
*/
|
|
72
73
|
export const TuiSettingsSchema = SECTION;
|
|
73
|
-
const TOKEN_NAMES = new Set(TUI_TOKENS);
|
|
74
|
-
const PALETTE_NAME_SET = new Set(PALETTE_NAMES);
|
|
75
74
|
/** The section's own keys: schemastery keeps what it does not declare, so a misspelling has to be refused here. */
|
|
76
|
-
const SECTION_KEYS = new Set(['palette', 'tokens', 'subcalls', 'mermaid', 'prefix', 'prefixWindow', 'keys']);
|
|
75
|
+
const SECTION_KEYS = new Set(['theme', 'palette', 'tokens', 'subcalls', 'mermaid', 'prefix', 'prefixWindow', 'keys', 'history', 'tools']);
|
|
76
|
+
/** The fields one tool's row may carry, for the same reason the section's own keys are spelled out. */
|
|
77
|
+
const TOOL_FIELDS = new Set(['collapsed', 'output', 'tail']);
|
|
77
78
|
/**
|
|
78
79
|
* Validate the raw section, refusing a name the surface does not have.
|
|
79
80
|
*
|
|
@@ -90,7 +91,7 @@ function rejectUnknownKeys(raw) {
|
|
|
90
91
|
if (unknownKeys.length > 0) {
|
|
91
92
|
throw new Error(`unknown ${TUI_SETTINGS_NAMESPACE} key${unknownKeys.length === 1 ? '' : 's'}: ${unknownKeys.join(', ')}`);
|
|
92
93
|
}
|
|
93
|
-
const unknownTokens = Object.keys(asRecord(section.tokens) ?? {}).filter(name => !
|
|
94
|
+
const unknownTokens = Object.keys(asRecord(section.tokens) ?? {}).filter(name => !TOKEN_NAME_SET.has(name));
|
|
94
95
|
if (unknownTokens.length > 0) {
|
|
95
96
|
throw new Error(`unknown ${TUI_SETTINGS_NAMESPACE} token${unknownTokens.length === 1 ? '' : 's'}: ${unknownTokens.join(', ')}`);
|
|
96
97
|
}
|
|
@@ -102,9 +103,62 @@ function rejectUnknownKeys(raw) {
|
|
|
102
103
|
if (unknownActions.length > 0) {
|
|
103
104
|
throw new Error(`unknown ${TUI_SETTINGS_NAMESPACE} key action${unknownActions.length === 1 ? '' : 's'}: ${unknownActions.join(', ')}`);
|
|
104
105
|
}
|
|
106
|
+
const unknownHistory = Object.keys(asRecord(section.history) ?? {}).filter(name => !HISTORY_KEYS.has(name));
|
|
107
|
+
if (unknownHistory.length > 0) {
|
|
108
|
+
throw new Error('unknown ' + TUI_SETTINGS_NAMESPACE + ' history key' + (unknownHistory.length === 1 ? '' : 's') + ': ' + unknownHistory.join(', '));
|
|
109
|
+
}
|
|
110
|
+
const unknownToolFields = Object.entries(asRecord(section.tools) ?? {})
|
|
111
|
+
.flatMap(([tool, spec]) => Object.keys(asRecord(spec) ?? {})
|
|
112
|
+
.filter(field => !TOOL_FIELDS.has(field))
|
|
113
|
+
.map(field => `${tool}.${field}`));
|
|
114
|
+
if (unknownToolFields.length > 0) {
|
|
115
|
+
throw new Error('unknown ' + TUI_SETTINGS_NAMESPACE + ' tool field' + (unknownToolFields.length === 1 ? '' : 's') + ': ' + unknownToolFields.join(', '));
|
|
116
|
+
}
|
|
105
117
|
}
|
|
106
|
-
|
|
107
|
-
|
|
118
|
+
/** One display flag as the reader wrote it. */
|
|
119
|
+
function toolFlag(value, field) {
|
|
120
|
+
if (typeof value !== 'boolean')
|
|
121
|
+
throw new Error(`${field} must be a boolean`);
|
|
122
|
+
return value;
|
|
123
|
+
}
|
|
124
|
+
/** One bounded count as the reader wrote it. */
|
|
125
|
+
function toolInteger(value, field, bounds) {
|
|
126
|
+
if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < bounds.min || value > bounds.max) {
|
|
127
|
+
throw new Error(`${field} must be an integer between ${bounds.min} and ${bounds.max}`);
|
|
128
|
+
}
|
|
129
|
+
return value;
|
|
130
|
+
}
|
|
131
|
+
/** One `output` value as the reader wrote it. */
|
|
132
|
+
function toolOutput(value, field) {
|
|
133
|
+
if (typeof value !== 'string' || !TOOL_OUTPUT_DISPLAYS.includes(value)) {
|
|
134
|
+
throw new Error(`${field} must be one of: ${TOOL_OUTPUT_DISPLAYS.join(', ')}`);
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The `tools:` block as the reader wrote it.
|
|
140
|
+
*
|
|
141
|
+
* The reserved `default` row and every tool name are the same shape, so they
|
|
142
|
+
* are validated the same way; a name nothing declares is inert rather than an
|
|
143
|
+
* error, because the surface cannot know which tools a profile mounts.
|
|
144
|
+
*/
|
|
145
|
+
function parseTools(raw) {
|
|
146
|
+
const block = asRecord(raw) ?? {};
|
|
147
|
+
const specs = {};
|
|
148
|
+
for (const [tool, value] of Object.entries(block)) {
|
|
149
|
+
const spec = asRecord(value);
|
|
150
|
+
if (spec === undefined)
|
|
151
|
+
throw new Error(`tools.${tool} must be a mapping of display fields`);
|
|
152
|
+
const written = {};
|
|
153
|
+
if (spec.collapsed !== undefined)
|
|
154
|
+
written.collapsed = toolFlag(spec.collapsed, `tools.${tool}.collapsed`);
|
|
155
|
+
if (spec.output !== undefined)
|
|
156
|
+
written.output = toolOutput(spec.output, `tools.${tool}.output`);
|
|
157
|
+
if (spec.tail !== undefined)
|
|
158
|
+
written.tail = toolInteger(spec.tail, `tools.${tool}.tail`, TOOL_DISPLAY_LIMITS.tail);
|
|
159
|
+
specs[tool] = written;
|
|
160
|
+
}
|
|
161
|
+
return specs;
|
|
108
162
|
}
|
|
109
163
|
/** The reader-facing shape of the `dsh-tui:` section. */
|
|
110
164
|
export function parseSettings(raw) {
|
|
@@ -154,13 +208,16 @@ export function parseSettings(raw) {
|
|
|
154
208
|
// the catalog and on the layers the map already claims, which a schema cannot see.
|
|
155
209
|
const keymap = resolveKeymap(overrides);
|
|
156
210
|
return {
|
|
211
|
+
theme: parsed.theme,
|
|
157
212
|
palette: palette,
|
|
158
213
|
tokens: tokens,
|
|
159
214
|
subcalls: parsed.subcalls,
|
|
215
|
+
tools: toolDisplayTable(parseTools(section.tools)),
|
|
160
216
|
mermaid: parsed.mermaid,
|
|
161
217
|
prefixes: keysFor(keymap, 'chord.prefix'),
|
|
162
218
|
prefixWindow: parsed.prefixWindow,
|
|
163
219
|
keymap,
|
|
220
|
+
history: parsed.history,
|
|
164
221
|
};
|
|
165
222
|
}
|
|
166
223
|
/** Whether a resolved spec actually asks for anything. */
|
|
@@ -172,15 +229,28 @@ function hasAnyField(spec) {
|
|
|
172
229
|
/** The section as it reads when the reader has written nothing. */
|
|
173
230
|
export function defaultSettings() {
|
|
174
231
|
return {
|
|
232
|
+
theme: undefined,
|
|
175
233
|
palette: {},
|
|
176
234
|
tokens: {},
|
|
177
235
|
subcalls: 'inline',
|
|
236
|
+
tools: toolDisplayTable(),
|
|
178
237
|
mermaid: DEFAULT_MERMAID_MODE,
|
|
179
238
|
prefixes: [...DEFAULT_PREFIX_KEYS],
|
|
180
239
|
prefixWindow: DEFAULT_PREFIX_WINDOW_S,
|
|
181
240
|
keymap: defaultKeymap(),
|
|
241
|
+
history: { enabled: DEFAULT_HISTORY_ENABLED, ghost: DEFAULT_HISTORY_GHOST, maxEntries: DEFAULT_MAX_ENTRIES },
|
|
182
242
|
};
|
|
183
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* The layer the theme in force contributes, or nothing when no file answered.
|
|
246
|
+
*
|
|
247
|
+
* The table every theme is written against is the compiled one, so a theme is
|
|
248
|
+
* always a layer over it and never a replacement: an element no theme names keeps
|
|
249
|
+
* the shade the surface ships with.
|
|
250
|
+
*/
|
|
251
|
+
export function themeLayer(overrides) {
|
|
252
|
+
return overrides.theme?.tokens;
|
|
253
|
+
}
|
|
184
254
|
/**
|
|
185
255
|
* One sentence for a section the surface refused.
|
|
186
256
|
*
|
|
@@ -200,8 +270,10 @@ export function settingsProblemMessage(error) {
|
|
|
200
270
|
* stderr alone is invisible under the alternate screen.
|
|
201
271
|
*/
|
|
202
272
|
export function readScope(scope, onProblem) {
|
|
273
|
+
let raw = undefined;
|
|
203
274
|
try {
|
|
204
|
-
|
|
275
|
+
raw = scope.get() ?? {};
|
|
276
|
+
return parseSettings(raw);
|
|
205
277
|
}
|
|
206
278
|
catch (error) {
|
|
207
279
|
const message = settingsProblemMessage(error);
|
|
@@ -209,21 +281,66 @@ export function readScope(scope, onProblem) {
|
|
|
209
281
|
process.stderr.write(`dsh-tui: ${message}\n`);
|
|
210
282
|
else
|
|
211
283
|
onProblem(message);
|
|
212
|
-
|
|
284
|
+
// The rest of the refused section falls back to the shipped table, but
|
|
285
|
+
// recording is a privacy choice: an explicit switch survives a typo
|
|
286
|
+
// somewhere else, and a switch that could not be read stays off rather than
|
|
287
|
+
// quietly turning the store back on.
|
|
288
|
+
const fallback = defaultSettings();
|
|
289
|
+
if (raw === undefined)
|
|
290
|
+
return { ...fallback, history: { ...fallback.history, enabled: false } };
|
|
291
|
+
return { ...fallback, history: salvageHistory(raw) };
|
|
213
292
|
}
|
|
214
293
|
}
|
|
294
|
+
/**
|
|
295
|
+
* The history block as far as it can be read from a refused section.
|
|
296
|
+
*
|
|
297
|
+
* Only the primitive shapes the schema would have accepted are taken; missing
|
|
298
|
+
* and malformed fields fall back to the shipped value, except an unreadable
|
|
299
|
+
* `enabled`, which refuses.
|
|
300
|
+
*/
|
|
301
|
+
function salvageHistory(raw) {
|
|
302
|
+
const fallback = defaultSettings().history;
|
|
303
|
+
const history = asRecord(asRecord(raw)?.history);
|
|
304
|
+
if (history === undefined)
|
|
305
|
+
return fallback;
|
|
306
|
+
const enabled = history.enabled === undefined
|
|
307
|
+
? fallback.enabled
|
|
308
|
+
: typeof history.enabled === 'boolean' ? history.enabled : false;
|
|
309
|
+
const ghost = typeof history.ghost === 'boolean' ? history.ghost : fallback.ghost;
|
|
310
|
+
const maxEntries = typeof history.maxEntries === 'number'
|
|
311
|
+
&& Number.isSafeInteger(history.maxEntries)
|
|
312
|
+
&& history.maxEntries >= 1
|
|
313
|
+
&& history.maxEntries <= MAX_ENTRIES_LIMIT
|
|
314
|
+
? history.maxEntries
|
|
315
|
+
: fallback.maxEntries;
|
|
316
|
+
return { enabled, ghost, maxEntries };
|
|
317
|
+
}
|
|
215
318
|
/**
|
|
216
319
|
* Turn a parsed section into the inputs the resolver takes.
|
|
217
320
|
*
|
|
218
321
|
* Shipped defaults fill anything the reader left out, so a partial section is
|
|
219
322
|
* the normal case rather than something the resolver has to guard against.
|
|
323
|
+
*
|
|
324
|
+
* The name is looked up rather than trusted: a reader can rename or rewrite the
|
|
325
|
+
* file behind it between two reads, and a theme that is gone leaves the package's
|
|
326
|
+
* own in force rather than leaving the surface with nothing to draw.
|
|
220
327
|
*/
|
|
221
|
-
export function toOverrides(settings) {
|
|
328
|
+
export function toOverrides(settings, library) {
|
|
329
|
+
// An unnamed section and an unknown name land on the same answer: the theme the
|
|
330
|
+
// package draws by default. The unknown name is reported beside this read, so
|
|
331
|
+
// the reader hears which name stopped answering rather than guessing from shades.
|
|
332
|
+
const theme = library.get(settings.theme) ?? library.get(DEFAULT_THEME);
|
|
222
333
|
const tokens = new Map();
|
|
223
334
|
for (const [token, spec] of Object.entries(settings.tokens)) {
|
|
224
335
|
if (spec !== undefined)
|
|
225
336
|
tokens.set(token, spec);
|
|
226
337
|
}
|
|
227
|
-
|
|
338
|
+
// The theme travels as its own layer rather than folded in here, so a reader's
|
|
339
|
+
// field merges over it one element at a time instead of replacing it.
|
|
340
|
+
return {
|
|
341
|
+
palette: { ...DEFAULT_PALETTE, ...theme?.palette, ...settings.palette },
|
|
342
|
+
tokens,
|
|
343
|
+
theme,
|
|
344
|
+
};
|
|
228
345
|
}
|
|
229
346
|
//# sourceMappingURL=theme-settings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-settings.js","sourceRoot":"","sources":["../src/theme-settings.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,0BAA0B,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAkC,MAAM,oBAAoB,CAAA;AAC1G,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAChF,OAAO,EACL,eAAe,EACf,aAAa,EACb,UAAU,GAIX,MAAM,mBAAmB,CAAA;AAE1B,wDAAwD;AACxD,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAA;AAE/C;;;;;;GAMG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACxC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;IAC3B,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CAC3B,CAAC,CAAA;AAEF,yFAAyF;AACzF,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,EAAE,EAAE,YAAY;IAChB,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;CAClC,CAAC,CAAA;AAEF,oFAAoF;AACpF,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC/C,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC,CAAA;AAEF;;;;;GAKG;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAC9C,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAClD,CAAC,CAAA;AAKF,mGAAmG;AACnG,MAAM,gBAAgB,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAU,CAAA;AAEzD,uFAAuF;AACvF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW,CAAU,CAAA;AAGnE,sGAAsG;AACtG,MAAM,oBAAoB,GAAgB,WAAW,CAAA;AAErD,uFAAuF;AACvF,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAE9B,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC;IACvB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;IAClC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC1D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAClE,8EAA8E;IAC9E,kEAAkE;IAClE,EAAE;IACF,+EAA+E;IAC/E,+EAA+E;IAC/E,wEAAwE;IACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IACzF,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAA;AAExC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,UAAU,CAAC,CAAA;AAC/C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAA;AAEvD,mHAAmH;AACnH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;AAE5G;;;;;;;GAOG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC7B,IAAI,OAAO,KAAK,SAAS;QAAE,OAAM;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAChF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,OAAO,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC3H,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACxG,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACjI,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IAC/G,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,gBAAgB,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7I,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAClG,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,WAAW,sBAAsB,cAAc,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxI,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrG,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAQ7B,CAAA;IACD,6EAA6E;IAC7E,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACtD,MAAM,OAAO,GAA2B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QAC3D,wEAAwE;QACxE,gEAAgE;QAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,eAAe,CAAC,IAAmB,CAAC;YAAE,SAAQ;QACnF,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAmB,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACpD,MAAM,MAAM,GAA8B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC1D,uEAAuE;QACvE,uEAAuE;QACvE,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAAE,SAAQ;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC1C,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAChD,2EAA2E;IAC3E,wCAAwC;IACxC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,cAAc,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9E,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACjG,CAAC;IACD,+EAA+E;IAC/E,8EAA8E;IAC9E,iBAAiB;IACjB,MAAM,SAAS,GAAiC,EAAE,CAAA;IAClD,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,SAAS,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;IAC1E,4EAA4E;IAC5E,mFAAmF;IACnF,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;IACvC,OAAO;QACL,OAAO,EAAE,OAAyD;QAClE,MAAM,EAAE,MAAwD;QAChE,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;QACzC,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM;KACP,CAAA;AACH,CAAC;AAED,0DAA0D;AAC1D,SAAS,WAAW,CAAC,IAA2B;IAC9C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;AAC/D,CAAC;AAgBD,mEAAmE;AACnE,MAAM,UAAU,eAAe;IAC7B,OAAO;QACL,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,CAAC,GAAG,mBAAmB,CAAC;QAClC,YAAY,EAAE,uBAAuB;QACrC,MAAM,EAAE,aAAa,EAAE;KACxB,CAAA;AACH,CAAC;AAQD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,OAAO,YAAY,sBAAsB,cAAc,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AACjH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,KAAyB,EAAE,SAAqC;IACxF,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,CAAC,CAAA;;YACrE,SAAS,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,eAAe,EAAE,CAAA;IAC1B,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAqB;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,KAAiB,EAAE,IAAI,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAA;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"theme-settings.js","sourceRoot":"","sources":["../src/theme-settings.ts"],"names":[],"mappings":"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"}
|
package/lib/theme-tokens.d.ts
CHANGED
|
@@ -15,6 +15,13 @@ export declare function resetSequence(): string;
|
|
|
15
15
|
* ordinary text that dimming looked like it had not been applied at all.
|
|
16
16
|
*/
|
|
17
17
|
export declare const MUTED_GREY = "#8a8a8a";
|
|
18
|
+
/**
|
|
19
|
+
* The shade the reasoning signpost recedes to.
|
|
20
|
+
*
|
|
21
|
+
* The row naming a thought is a signpost, not the thought: it sits below the
|
|
22
|
+
* muted family so the body it introduces stays the thing being read.
|
|
23
|
+
*/
|
|
24
|
+
export declare const FAINT_GREY = "#666666";
|
|
18
25
|
/**
|
|
19
26
|
* The shade a tool's argument takes.
|
|
20
27
|
*
|
|
@@ -30,9 +37,30 @@ export declare const ARGUMENT_BLUE = "#8db3d9";
|
|
|
30
37
|
* foreground, so telling the two apart meant reading them; a mint keeps them
|
|
31
38
|
* apart at a glance without the pink cast a rose gave every prompt.
|
|
32
39
|
*/
|
|
33
|
-
export declare const USER_PROMPT_MINT = "#
|
|
40
|
+
export declare const USER_PROMPT_MINT = "#27f5c8";
|
|
41
|
+
/**
|
|
42
|
+
* The band a changed run sits on inside an added line.
|
|
43
|
+
*
|
|
44
|
+
* The characters that changed are why a paired line is on screen at all, and
|
|
45
|
+
* they must stand out without leaving the row's own hue: a reader scanning a
|
|
46
|
+
* green row should not have to compare it against a second, unrelated colour to
|
|
47
|
+
* find what moved. An explicit dark shade rather than a palette slot, for the
|
|
48
|
+
* same reason the muted grey is one.
|
|
49
|
+
*/
|
|
50
|
+
export declare const DIFF_ADDED_BAND = "#1e3d24";
|
|
51
|
+
/** The band a changed run sits on inside a removed line; the pair of {@link DIFF_ADDED_BAND}. */
|
|
52
|
+
export declare const DIFF_REMOVED_BAND = "#472424";
|
|
53
|
+
/**
|
|
54
|
+
* The shade the frame around an assistant reply is drawn in.
|
|
55
|
+
*
|
|
56
|
+
* A reply is boxed so one exchange reads as two objects rather than as a box and
|
|
57
|
+
* then a stream, and its frame must not be mistaken for the bar the reader types
|
|
58
|
+
* into: a warm gold sits apart from the prompt's mint and the brand-blue editor,
|
|
59
|
+
* without borrowing the warning amber that means a state.
|
|
60
|
+
*/
|
|
61
|
+
export declare const ASSISTANT_FRAME_GOLD = "#d6c29a";
|
|
34
62
|
/** Palette entries a token may name instead of a literal colour. */
|
|
35
|
-
export declare const PALETTE_NAMES: readonly ["default", "muted", "accent", "arg", "warn", "added", "removed", "user", "assistant"];
|
|
63
|
+
export declare const PALETTE_NAMES: readonly ["default", "muted", "faint", "accent", "arg", "warn", "added", "removed", "user", "assistant"];
|
|
36
64
|
/** A named palette entry. */
|
|
37
65
|
export type PaletteName = (typeof PALETTE_NAMES)[number];
|
|
38
66
|
/** A colour: an explicit hex value, or a palette entry. */
|
|
@@ -71,7 +99,7 @@ export type CardRowClass = (typeof CARD_ROW_CLASSES)[number];
|
|
|
71
99
|
* fails if a token loses its default, so "every element" cannot quietly drift
|
|
72
100
|
* as the surface grows.
|
|
73
101
|
*/
|
|
74
|
-
export declare const TUI_TOKENS: readonly ["transcript.user", "transcript.notice", "transcript.marker", "transcript.reasoning.summary", "transcript.reasoning.body", "transcript.reasoning.hint", "tool.title", "tool.glyph", "tool.args", "tool.stat.added", "tool.stat.changed", "tool.stat.removed", "tool.stat.size", "tool.stat.separator", "tool.detail", "tool.hint", "tool.failed.title", "tool.failed.glyph", "tool.subcall.title", "tool.subcall.args", "tool.diff.header", "tool.diff.hunk", "tool.diff.added", "tool.diff.removed", "tool.read.header", "tool.read.lineNumber", "tool.read.line", "tool.search.path", "tool.search.lineNumber", "tool.search.match", "tool.search.truncated", "tool.terminal.cwd", "tool.terminal.status", "tool.terminal.output", "tool.web.url", "tool.web.source", "tool.web.truncated", "tool.generic.detail", "markdown.heading", "markdown.link", "markdown.linkUrl", "markdown.code", "markdown.codeBlock", "markdown.codeBlockBorder", "markdown.quote", "markdown.quoteBorder", "markdown.hr", "markdown.listBullet", "markdown.bold", "markdown.italic", "markdown.strikethrough", "markdown.underline", "markdown.diagram.border", "markdown.diagram.text", "markdown.diagram.edge", "markdown.diagram.edgeLabel", "markdown.diagram.title", "markdown.diagram.warning", "picker.title", "picker.glyph", "picker.note", "picker.filter", "picker.row", "picker.rowCurrent", "picker.scrollNewer", "picker.scrollOlder", "picker.hint", "picker.cursor", "gate.title", "gate.glyphApproval", "gate.glyphQuestion", "gate.detail", "gate.option", "gate.optionCurrent", "gate.cursor", "gate.hint", "dock.goal", "dock.planMode", "dock.todos.heading", "dock.todos.pending", "dock.todos.inProgress", "dock.todos.overflow", "dock.subagents.heading", "dock.subagents.running", "dock.subagents.overflow", "dock.jobs.heading", "dock.jobs.running", "dock.jobs.overflow", "status.prefix", "status.back", "status.activity.working", "status.activity.ready", "status.elapsed", "status.agentPreset", "status.model", "status.effort", "status.permission", "status.context", "status.cache", "status.cwd", "status.separator", "editor.border", "editor.queued", "editor.queued.more", "editor.selectList.selectedPrefix", "editor.selectList.selectedText", "editor.selectList.description", "editor.selectList.scrollInfo", "editor.selectList.noMatch"];
|
|
102
|
+
export declare const TUI_TOKENS: readonly ["transcript.user", "transcript.assistant.border", "transcript.notice", "transcript.marker", "transcript.reasoning.summary", "transcript.reasoning.body", "transcript.reasoning.hint", "tool.title", "tool.glyph", "tool.args", "tool.stat.added", "tool.stat.changed", "tool.stat.removed", "tool.stat.size", "tool.stat.separator", "tool.detail", "tool.hint", "tool.failed.title", "tool.failed.glyph", "tool.subcall.title", "tool.subcall.args", "tool.diff.header", "tool.diff.hunk", "tool.diff.added", "tool.diff.removed", "tool.read.header", "tool.read.lineNumber", "tool.read.line", "tool.search.path", "tool.search.lineNumber", "tool.search.match", "tool.search.truncated", "tool.terminal.cwd", "tool.terminal.status", "tool.terminal.output", "tool.web.url", "tool.web.source", "tool.web.truncated", "tool.generic.detail", "markdown.heading", "markdown.link", "markdown.linkUrl", "markdown.code", "markdown.codeBlock", "markdown.codeBlockBorder", "markdown.quote", "markdown.quoteBorder", "markdown.hr", "markdown.listBullet", "markdown.bold", "markdown.italic", "markdown.strikethrough", "markdown.underline", "markdown.diff.header", "markdown.diff.hunk", "markdown.diff.context", "markdown.diff.added", "markdown.diff.removed", "markdown.diff.addedEmphasis", "markdown.diff.removedEmphasis", "markdown.diagram.border", "markdown.diagram.text", "markdown.diagram.edge", "markdown.diagram.edgeLabel", "markdown.diagram.title", "markdown.diagram.warning", "picker.title", "picker.glyph", "picker.note", "picker.filter", "picker.row", "picker.rowCurrent", "picker.scrollNewer", "picker.scrollOlder", "picker.hint", "picker.cursor", "picker.border", "gate.title", "gate.glyphApproval", "gate.glyphQuestion", "gate.detail", "gate.option", "gate.optionCurrent", "gate.cursor", "gate.hint", "dock.goal", "dock.planMode", "dock.todos.heading", "dock.todos.pending", "dock.todos.inProgress", "dock.todos.overflow", "dock.subagents.heading", "dock.subagents.running", "dock.subagents.overflow", "dock.jobs.heading", "dock.jobs.running", "dock.jobs.overflow", "status.prefix", "status.back", "status.activity.working", "status.activity.ready", "status.elapsed", "status.agentPreset", "status.model", "status.effort", "status.permission", "status.context", "status.cache", "status.stash", "status.cwd", "status.separator", "editor.border", "editor.queued", "editor.queued.more", "editor.ghost", "editor.selectList.selectedPrefix", "editor.selectList.selectedText", "editor.selectList.description", "editor.selectList.scrollInfo", "editor.selectList.noMatch"];
|
|
75
103
|
/** A name for one styled element on the surface. */
|
|
76
104
|
export type TuiToken = (typeof TUI_TOKENS)[number];
|
|
77
105
|
/**
|
|
@@ -91,20 +119,24 @@ export declare const DEFAULT_PALETTE: Readonly<Record<PaletteName, string>>;
|
|
|
91
119
|
* A test asserts every token in {@link TUI_TOKENS} appears here.
|
|
92
120
|
*/
|
|
93
121
|
export declare const DEFAULT_TOKENS: Readonly<Record<TuiToken, StyleSpec>>;
|
|
122
|
+
/** The elements a named theme draws its own way, as the layer a resolver takes. */
|
|
123
|
+
export type ThemedSpecs = Readonly<Partial<Record<TuiToken, StyleSpec>>>;
|
|
94
124
|
/**
|
|
95
|
-
* Merge one token's default, its `inherit` target, and the reader
|
|
125
|
+
* Merge one token's default, its `inherit` target, a theme, and the reader.
|
|
96
126
|
*
|
|
97
127
|
* The inherited token's fields replace this token's defaults, because that is
|
|
98
|
-
* what "start from another token" means
|
|
128
|
+
* what "start from another token" means. A theme sits between the two because
|
|
129
|
+
* it is a layer the reader chose rather than one they wrote: it moves every
|
|
130
|
+
* element it names, and their own fields still have the last word.
|
|
99
131
|
* A path-scoped set turns a cycle into a stop, and still lets two branches
|
|
100
132
|
* inherit one token rather than sharing a single visit.
|
|
101
133
|
*/
|
|
102
|
-
export declare function mergeTokenSpec(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec
|
|
134
|
+
export declare function mergeTokenSpec(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, themed?: ThemedSpecs): StyleSpec;
|
|
103
135
|
/**
|
|
104
136
|
* Resolve one token into the escapes a renderer needs.
|
|
105
137
|
*
|
|
106
138
|
* Faint is dropped once a colour is chosen: stacking it on a deliberate grey is
|
|
107
139
|
* what made the old output differ per terminal.
|
|
108
140
|
*/
|
|
109
|
-
export declare function resolveToken(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, palette: Readonly<Record<PaletteName, string>>, mode: ColourMode): ResolvedStyle;
|
|
141
|
+
export declare function resolveToken(token: TuiToken, overrides: ReadonlyMap<TuiToken, StyleSpec>, palette: Readonly<Record<PaletteName, string>>, mode: ColourMode, themed?: ThemedSpecs): ResolvedStyle;
|
|
110
142
|
//# sourceMappingURL=theme-tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-tokens.d.ts","sourceRoot":"","sources":["../src/theme-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAkC,MAAM,uBAAuB,CAAA;AAIvF;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,YAAY,CAAA;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,YAAY,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAA;AAEzC,oEAAoE;AACpE,eAAO,MAAM,aAAa,
|
|
1
|
+
{"version":3,"file":"theme-tokens.d.ts","sourceRoot":"","sources":["../src/theme-tokens.ts"],"names":[],"mappings":"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"}
|