@agi-fans/dsh-tui 0.19.0 → 0.20.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/lib/CHANGELOG.md +84 -1
- package/lib/chrome/box.js +2 -12
- package/lib/chrome/box.js.map +1 -1
- package/lib/chrome/code-highlight.d.ts +26 -18
- package/lib/chrome/code-highlight.js +114 -39
- package/lib/chrome/code-highlight.js.map +1 -1
- package/lib/chrome/diff-render.d.ts +1 -2
- package/lib/chrome/diff-render.js +41 -90
- package/lib/chrome/diff-render.js.map +1 -1
- package/lib/chrome/main-screen-renderer.d.ts +4 -32
- package/lib/chrome/main-screen-renderer.js +63 -15
- package/lib/chrome/main-screen-renderer.js.map +1 -1
- package/lib/chrome/markdown.js +128 -93
- package/lib/chrome/markdown.js.map +1 -1
- package/lib/chrome/math.d.ts +4 -0
- package/lib/chrome/math.js +340 -0
- package/lib/chrome/math.js.map +1 -0
- package/lib/chrome/md-style.d.ts +3 -0
- package/lib/chrome/md-style.js.map +1 -1
- package/lib/chrome/mermaid.d.ts +6 -0
- package/lib/chrome/mermaid.js +56 -0
- package/lib/chrome/mermaid.js.map +1 -0
- package/lib/chrome/renderer.d.ts +3 -0
- package/lib/chrome/renderer.js.map +1 -1
- package/lib/chrome/status-config.d.ts +5 -0
- package/lib/chrome/status-config.js +3 -0
- package/lib/chrome/status-config.js.map +1 -1
- package/lib/chrome/status-line.d.ts +0 -21
- package/lib/chrome/status-line.js +8 -65
- package/lib/chrome/status-line.js.map +1 -1
- package/lib/chrome/terminal-images.d.ts +31 -0
- package/lib/chrome/terminal-images.js +34 -0
- package/lib/chrome/terminal-images.js.map +1 -0
- package/lib/chrome/theme.d.ts +5 -6
- package/lib/chrome/theme.js +199 -109
- package/lib/chrome/theme.js.map +1 -1
- package/lib/chrome/welcome-tips.js +1 -1
- package/lib/chrome/width.d.ts +7 -3
- package/lib/chrome/width.js +78 -14
- package/lib/chrome/width.js.map +1 -1
- package/lib/commands/diff.js +49 -3
- package/lib/commands/diff.js.map +1 -1
- package/lib/commands/export.js +28 -5
- package/lib/commands/export.js.map +1 -1
- package/lib/commands/files.d.ts +8 -0
- package/lib/commands/files.js +137 -0
- package/lib/commands/files.js.map +1 -0
- package/lib/commands/plugins.d.ts +8 -0
- package/lib/commands/plugins.js +158 -0
- package/lib/commands/plugins.js.map +1 -0
- package/lib/commands/session-configuration.d.ts +4 -0
- package/lib/commands/session-configuration.js +39 -8
- package/lib/commands/session-configuration.js.map +1 -1
- package/lib/commands/session.js +47 -15
- package/lib/commands/session.js.map +1 -1
- package/lib/commands/steer.js +2 -2
- package/lib/commands/steer.js.map +1 -1
- package/lib/commands/terminal.d.ts +7 -0
- package/lib/commands/terminal.js +99 -0
- package/lib/commands/terminal.js.map +1 -0
- package/lib/definition.d.ts +121 -7
- package/lib/input/clipboard.d.ts +12 -7
- package/lib/input/clipboard.js +79 -20
- package/lib/input/clipboard.js.map +1 -1
- package/lib/input/composer-files.d.ts +26 -0
- package/lib/input/composer-files.js +50 -0
- package/lib/input/composer-files.js.map +1 -0
- package/lib/input/editor-discovery.d.ts +21 -0
- package/lib/input/editor-discovery.js +99 -0
- package/lib/input/editor-discovery.js.map +1 -0
- package/lib/input/editor.d.ts +26 -1
- package/lib/input/editor.js +126 -12
- package/lib/input/editor.js.map +1 -1
- package/lib/input/external-editor.d.ts +5 -2
- package/lib/input/external-editor.js +14 -12
- package/lib/input/external-editor.js.map +1 -1
- package/lib/input/fuzzy-search.d.ts +9 -0
- package/lib/input/fuzzy-search.js +113 -0
- package/lib/input/fuzzy-search.js.map +1 -0
- package/lib/input/keybindings-config.d.ts +1 -1
- package/lib/input/keybindings-config.js +6 -1
- package/lib/input/keybindings-config.js.map +1 -1
- package/lib/input/keys.d.ts +11 -1
- package/lib/input/keys.js +17 -8
- package/lib/input/keys.js.map +1 -1
- package/lib/input/mouse-policy.d.ts +3 -0
- package/lib/input/mouse-policy.js +14 -0
- package/lib/input/mouse-policy.js.map +1 -0
- package/lib/input/paste-burst.d.ts +16 -0
- package/lib/input/paste-burst.js +61 -0
- package/lib/input/paste-burst.js.map +1 -0
- package/lib/input/text-selection.d.ts +20 -0
- package/lib/input/text-selection.js +195 -0
- package/lib/input/text-selection.js.map +1 -0
- package/lib/runtime/composer-images.d.ts +1 -0
- package/lib/runtime/composer-images.js +11 -3
- package/lib/runtime/composer-images.js.map +1 -1
- package/lib/runtime/file-open.d.ts +2 -0
- package/lib/runtime/file-open.js +12 -0
- package/lib/runtime/file-open.js.map +1 -0
- package/lib/runtime/file-review.d.ts +24 -0
- package/lib/runtime/file-review.js +188 -0
- package/lib/runtime/file-review.js.map +1 -0
- package/lib/runtime/herdr-agent.d.ts +7 -15
- package/lib/runtime/herdr-agent.js +151 -79
- package/lib/runtime/herdr-agent.js.map +1 -1
- package/lib/runtime/hook-settings.d.ts +17 -0
- package/lib/runtime/hook-settings.js +57 -0
- package/lib/runtime/hook-settings.js.map +1 -0
- package/lib/runtime/human-interaction.js +1 -1
- package/lib/runtime/human-interaction.js.map +1 -1
- package/lib/runtime/image-preview.d.ts +8 -0
- package/lib/runtime/image-preview.js +119 -0
- package/lib/runtime/image-preview.js.map +1 -0
- package/lib/runtime/plain-tui.d.ts +2 -0
- package/lib/runtime/plain-tui.js +2 -2
- package/lib/runtime/plain-tui.js.map +1 -1
- package/lib/runtime/plugin-settings.d.ts +17 -0
- package/lib/runtime/plugin-settings.js +154 -0
- package/lib/runtime/plugin-settings.js.map +1 -0
- package/lib/runtime/provider-local.d.ts +39 -4
- package/lib/runtime/provider-local.js +977 -92
- package/lib/runtime/provider-local.js.map +1 -1
- package/lib/runtime/runner.js +3 -3
- package/lib/runtime/runner.js.map +1 -1
- package/lib/runtime/session-archive.d.ts +5 -0
- package/lib/runtime/session-archive.js +114 -0
- package/lib/runtime/session-archive.js.map +1 -0
- package/lib/runtime/subagent-model-selection.d.ts +5 -0
- package/lib/runtime/subagent-model-selection.js +15 -0
- package/lib/runtime/subagent-model-selection.js.map +1 -0
- package/lib/runtime/terminal-notifications.d.ts +8 -0
- package/lib/runtime/terminal-notifications.js +16 -0
- package/lib/runtime/terminal-notifications.js.map +1 -1
- package/lib/runtime/terminal-reader.d.ts +11 -0
- package/lib/runtime/terminal-reader.js +87 -0
- package/lib/runtime/terminal-reader.js.map +1 -0
- package/lib/session/composer-drafts.d.ts +20 -0
- package/lib/session/composer-drafts.js +103 -0
- package/lib/session/composer-drafts.js.map +1 -0
- package/lib/session/conversation-turns.d.ts +16 -0
- package/lib/session/conversation-turns.js +33 -0
- package/lib/session/conversation-turns.js.map +1 -0
- package/lib/session/feature-toggles.d.ts +7 -28
- package/lib/session/feature-toggles.js +14 -45
- package/lib/session/feature-toggles.js.map +1 -1
- package/lib/session/fold-policy.d.ts +0 -17
- package/lib/session/fold-policy.js +0 -11
- package/lib/session/fold-policy.js.map +1 -1
- package/lib/session/interaction-adapter.d.ts +2 -2
- package/lib/session/interaction-adapter.js +156 -25
- package/lib/session/interaction-adapter.js.map +1 -1
- package/lib/session/message-queue.d.ts +22 -0
- package/lib/session/message-queue.js +157 -0
- package/lib/session/message-queue.js.map +1 -0
- package/lib/session/project-file-search.js +3 -21
- package/lib/session/project-file-search.js.map +1 -1
- package/lib/session/session-controller.d.ts +11 -18
- package/lib/session/session-controller.js +195 -87
- package/lib/session/session-controller.js.map +1 -1
- package/lib/session/session-library.d.ts +11 -3
- package/lib/session/session-library.js +48 -8
- package/lib/session/session-library.js.map +1 -1
- package/lib/session/session-tree.d.ts +26 -0
- package/lib/session/session-tree.js +112 -0
- package/lib/session/session-tree.js.map +1 -0
- package/lib/session/steering.d.ts +3 -0
- package/lib/session/steering.js +9 -0
- package/lib/session/steering.js.map +1 -0
- package/lib/session/tui-settings.d.ts +17 -0
- package/lib/session/tui-settings.js +12 -1
- package/lib/session/tui-settings.js.map +1 -1
- package/lib/session/workflow-projection.d.ts +9 -0
- package/lib/session/workflow-projection.js +44 -0
- package/lib/session/workflow-projection.js.map +1 -0
- package/lib/views/agent-hub.js +9 -4
- package/lib/views/agent-hub.js.map +1 -1
- package/lib/views/autocomplete.js +5 -25
- package/lib/views/autocomplete.js.map +1 -1
- package/lib/views/document-reader.d.ts +34 -0
- package/lib/views/document-reader.js +145 -0
- package/lib/views/document-reader.js.map +1 -0
- package/lib/views/event-views.js +39 -2
- package/lib/views/event-views.js.map +1 -1
- package/lib/views/hotkeys.js +13 -5
- package/lib/views/hotkeys.js.map +1 -1
- package/lib/views/prompt-selector.d.ts +33 -3
- package/lib/views/prompt-selector.js +287 -43
- package/lib/views/prompt-selector.js.map +1 -1
- package/lib/views/prompt-tree.d.ts +11 -0
- package/lib/views/prompt-tree.js +74 -0
- package/lib/views/prompt-tree.js.map +1 -0
- package/lib/views/session-files.d.ts +7 -0
- package/lib/views/session-files.js +62 -0
- package/lib/views/session-files.js.map +1 -0
- package/lib/views/settings-list.d.ts +24 -2
- package/lib/views/settings-list.js +115 -27
- package/lib/views/settings-list.js.map +1 -1
- package/lib/views/transcript-render.d.ts +23 -39
- package/lib/views/transcript-render.js +101 -210
- package/lib/views/transcript-render.js.map +1 -1
- package/lib/views/transcript-types.d.ts +1 -1
- package/package.json +77 -42
- package/lib/chrome/style.d.ts +0 -22
- package/lib/chrome/style.js +0 -23
- package/lib/chrome/style.js.map +0 -1
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
/** Bounded terminal math layouts. Unsupported syntax rejects the whole expression. */
|
|
3
|
+
import { visibleWidth } from "./width.js";
|
|
4
|
+
export const MATH_MODES = ['auto', 'source'];
|
|
5
|
+
const MAX_WIDTH = 256;
|
|
6
|
+
const MAX_HEIGHT = 24;
|
|
7
|
+
const SYMBOLS = {
|
|
8
|
+
alpha: 'α', beta: 'β', gamma: 'γ', delta: 'δ', epsilon: 'ϵ', varepsilon: 'ε', zeta: 'ζ', eta: 'η',
|
|
9
|
+
theta: 'θ', iota: 'ι', kappa: 'κ', lambda: 'λ', mu: 'μ', nu: 'ν', xi: 'ξ', pi: 'π', rho: 'ρ',
|
|
10
|
+
sigma: 'σ', tau: 'τ', upsilon: 'υ', phi: 'ϕ', varphi: 'φ', chi: 'χ', psi: 'ψ', omega: 'ω',
|
|
11
|
+
Gamma: 'Γ', Delta: 'Δ', Theta: 'Θ', Lambda: 'Λ', Xi: 'Ξ', Pi: 'Π', Sigma: 'Σ', Phi: 'Φ', Psi: 'Ψ', Omega: 'Ω',
|
|
12
|
+
times: '×', cdot: '·', div: '÷', pm: '±', mp: '∓', le: '≤', leq: '≤', ge: '≥', geq: '≥',
|
|
13
|
+
ne: '≠', neq: '≠', approx: '≈', equiv: '≡', sim: '∼', propto: '∝', infty: '∞',
|
|
14
|
+
sum: '∑', prod: '∏', int: '∫', iint: '∬', oint: '∮', partial: '∂', nabla: '∇',
|
|
15
|
+
to: '→', rightarrow: '→', leftarrow: '←', leftrightarrow: '↔', Rightarrow: '⇒', Leftrightarrow: '⇔', mapsto: '↦',
|
|
16
|
+
in: '∈', notin: '∉', subset: '⊂', subseteq: '⊆', supset: '⊃', supseteq: '⊇', cup: '∪', cap: '∩',
|
|
17
|
+
forall: '∀', exists: '∃', neg: '¬', land: '∧', lor: '∨', emptyset: '∅',
|
|
18
|
+
ldots: '…', cdots: '⋯', vdots: '⋮', ddots: '⋱', dots: '…',
|
|
19
|
+
sin: 'sin', cos: 'cos', tan: 'tan', log: 'log', ln: 'ln', exp: 'exp', lim: 'lim', min: 'min', max: 'max',
|
|
20
|
+
};
|
|
21
|
+
const SUPER = {
|
|
22
|
+
'0': '⁰', '1': '¹', '2': '²', '3': '³', '4': '⁴', '5': '⁵', '6': '⁶', '7': '⁷', '8': '⁸', '9': '⁹',
|
|
23
|
+
'+': '⁺', '-': '⁻', '=': '⁼', '(': '⁽', ')': '⁾', i: 'ⁱ', n: 'ⁿ', k: 'ᵏ', x: 'ˣ',
|
|
24
|
+
};
|
|
25
|
+
const SUB = {
|
|
26
|
+
'0': '₀', '1': '₁', '2': '₂', '3': '₃', '4': '₄', '5': '₅', '6': '₆', '7': '₇', '8': '₈', '9': '₉',
|
|
27
|
+
'+': '₊', '-': '₋', '=': '₌', '(': '₍', ')': '₎', a: 'ₐ', e: 'ₑ', h: 'ₕ', i: 'ᵢ', j: 'ⱼ', k: 'ₖ', l: 'ₗ',
|
|
28
|
+
m: 'ₘ', n: 'ₙ', o: 'ₒ', p: 'ₚ', r: 'ᵣ', s: 'ₛ', t: 'ₜ', u: 'ᵤ', v: 'ᵥ', x: 'ₓ',
|
|
29
|
+
};
|
|
30
|
+
function box(rows, baseline = 0) {
|
|
31
|
+
const width = Math.max(0, ...rows.map(visibleWidth));
|
|
32
|
+
if (width > MAX_WIDTH || rows.length > MAX_HEIGHT)
|
|
33
|
+
throw new Error('Math layout limit');
|
|
34
|
+
return { rows, width, baseline };
|
|
35
|
+
}
|
|
36
|
+
function text(value) { return box([value]); }
|
|
37
|
+
function pad(value, width, center = false) {
|
|
38
|
+
const gap = Math.max(0, width - visibleWidth(value));
|
|
39
|
+
return ' '.repeat(center ? Math.floor(gap / 2) : 0) + value + ' '.repeat(center ? Math.ceil(gap / 2) : gap);
|
|
40
|
+
}
|
|
41
|
+
function join(left, right) {
|
|
42
|
+
const baseline = Math.max(left.baseline, right.baseline);
|
|
43
|
+
const height = Math.max(baseline - left.baseline + left.rows.length, baseline - right.baseline + right.rows.length);
|
|
44
|
+
const gap = left.rows.length > 1 && right.rows.length > 1 ? ' ' : '';
|
|
45
|
+
return box(Array.from({ length: height }, (_, at) => pad(left.rows[at - baseline + left.baseline] ?? '', left.width) + gap + (right.rows[at - baseline + right.baseline] ?? '')), baseline);
|
|
46
|
+
}
|
|
47
|
+
function flat(value) {
|
|
48
|
+
if (value.rows.length !== 1)
|
|
49
|
+
throw new Error('Multiline inline operand');
|
|
50
|
+
return value.rows[0]?.trim() ?? '';
|
|
51
|
+
}
|
|
52
|
+
function grouped(value) {
|
|
53
|
+
const body = flat(value);
|
|
54
|
+
return /^(?:[\p{L}\p{N}]|\d+)$/u.test(body) ? body : `(${body})`;
|
|
55
|
+
}
|
|
56
|
+
function delimit(value, left, right) {
|
|
57
|
+
if (value.rows.length === 1)
|
|
58
|
+
return text(left + flat(value) + right);
|
|
59
|
+
const brackets = {
|
|
60
|
+
'(': ['⎛', '⎜', '⎝'], ')': ['⎞', '⎟', '⎠'], '[': ['⎡', '⎢', '⎣'], ']': ['⎤', '⎥', '⎦'],
|
|
61
|
+
'{': ['⎧', '⎨', '⎩'], '}': ['⎫', '⎬', '⎭'],
|
|
62
|
+
};
|
|
63
|
+
const glyph = (side, at) => brackets[side]?.[at === 0 ? 0 : at === value.rows.length - 1 ? 2 : 1] ?? side;
|
|
64
|
+
return box(value.rows.map((row, at) => glyph(left, at) + ' ' + pad(row, value.width) + (right === '' ? '' : ' ' + glyph(right, at))), value.baseline);
|
|
65
|
+
}
|
|
66
|
+
class Parser {
|
|
67
|
+
source;
|
|
68
|
+
display;
|
|
69
|
+
budget;
|
|
70
|
+
#at = 0;
|
|
71
|
+
constructor(source, display, budget) {
|
|
72
|
+
this.source = source;
|
|
73
|
+
this.display = display;
|
|
74
|
+
this.budget = budget;
|
|
75
|
+
}
|
|
76
|
+
parse(stop) {
|
|
77
|
+
if (++this.budget.depth > 20)
|
|
78
|
+
throw new Error('Math nesting limit');
|
|
79
|
+
try {
|
|
80
|
+
let result = text('');
|
|
81
|
+
while (this.#at < this.source.length && this.source[this.#at] !== stop) {
|
|
82
|
+
if (--this.budget.left < 0)
|
|
83
|
+
throw new Error('Math work limit');
|
|
84
|
+
if (/\s/u.test(this.source[this.#at])) {
|
|
85
|
+
this.#space();
|
|
86
|
+
result = join(result, text(' '));
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
let atom = this.#atom();
|
|
90
|
+
let sup, sub;
|
|
91
|
+
// TeX permits spaces between an atom and its scripts.
|
|
92
|
+
const beforeSpace = this.#at;
|
|
93
|
+
this.#space();
|
|
94
|
+
if (!['_', '^'].includes(this.source[this.#at] ?? ''))
|
|
95
|
+
this.#at = beforeSpace;
|
|
96
|
+
while (this.source[this.#at] === '^' || this.source[this.#at] === '_') {
|
|
97
|
+
const kind = this.source[this.#at++];
|
|
98
|
+
const operand = this.#argument();
|
|
99
|
+
if (kind === '^') {
|
|
100
|
+
if (sup !== undefined)
|
|
101
|
+
throw new Error('Duplicate superscript');
|
|
102
|
+
sup = operand;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
if (sub !== undefined)
|
|
106
|
+
throw new Error('Duplicate subscript');
|
|
107
|
+
sub = operand;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (this.display && atom.limits === true && (sup !== undefined || sub !== undefined)) {
|
|
111
|
+
const width = Math.max(atom.width, sup?.width ?? 0, sub?.width ?? 0);
|
|
112
|
+
const above = sup?.rows ?? [];
|
|
113
|
+
atom = box([...above, ...atom.rows, ...(sub?.rows ?? [])].map(row => pad(row, width, true)), above.length + atom.baseline);
|
|
114
|
+
}
|
|
115
|
+
else if (sup !== undefined || sub !== undefined) {
|
|
116
|
+
if (atom.rows.length > 1)
|
|
117
|
+
atom = delimit(atom, '(', ')');
|
|
118
|
+
if (sub !== undefined)
|
|
119
|
+
atom = join(atom, this.#script(sub, false));
|
|
120
|
+
if (sup !== undefined)
|
|
121
|
+
atom = join(atom, this.#script(sup, true));
|
|
122
|
+
}
|
|
123
|
+
result = join(result, atom);
|
|
124
|
+
}
|
|
125
|
+
if (stop !== undefined) {
|
|
126
|
+
if (this.source[this.#at] !== stop)
|
|
127
|
+
throw new Error('Unclosed math group');
|
|
128
|
+
this.#at++;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
this.budget.depth--;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
#space() { while (/\s/u.test(this.source[this.#at] ?? '') && this.#at < this.source.length)
|
|
137
|
+
this.#at++; }
|
|
138
|
+
#argument() {
|
|
139
|
+
this.#space();
|
|
140
|
+
if (this.source[this.#at] === '{') {
|
|
141
|
+
this.#at++;
|
|
142
|
+
const result = this.parse('}');
|
|
143
|
+
if (result.rows.every(row => row.trim() === ''))
|
|
144
|
+
throw new Error('Empty math argument');
|
|
145
|
+
return result;
|
|
146
|
+
}
|
|
147
|
+
return this.#atom();
|
|
148
|
+
}
|
|
149
|
+
#rawGroup() {
|
|
150
|
+
this.#space();
|
|
151
|
+
if (this.source[this.#at++] !== '{')
|
|
152
|
+
throw new Error('Expected group');
|
|
153
|
+
const begin = this.#at;
|
|
154
|
+
let depth = 1;
|
|
155
|
+
while (this.#at < this.source.length && depth > 0) {
|
|
156
|
+
const char = this.source[this.#at++];
|
|
157
|
+
if (char === '\\') {
|
|
158
|
+
this.#at++;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (char === '{')
|
|
162
|
+
depth++;
|
|
163
|
+
if (char === '}')
|
|
164
|
+
depth--;
|
|
165
|
+
}
|
|
166
|
+
if (depth !== 0)
|
|
167
|
+
throw new Error('Unclosed group');
|
|
168
|
+
return this.source.slice(begin, this.#at - 1);
|
|
169
|
+
}
|
|
170
|
+
#script(value, sup) {
|
|
171
|
+
const raw = flat(value);
|
|
172
|
+
if (raw === '')
|
|
173
|
+
throw new Error('Empty script');
|
|
174
|
+
const alphabet = sup ? SUPER : SUB;
|
|
175
|
+
const mapped = [...raw].map(char => alphabet[char]);
|
|
176
|
+
return text(mapped.length > 0 && mapped.every(char => char !== undefined)
|
|
177
|
+
? mapped.join('') : `${sup ? '^' : '_'}(${raw})`);
|
|
178
|
+
}
|
|
179
|
+
#atom() {
|
|
180
|
+
const char = this.source[this.#at++];
|
|
181
|
+
if (char === undefined || /[}_^&$]/u.test(char))
|
|
182
|
+
throw new Error('Unexpected math token');
|
|
183
|
+
if (char === '{')
|
|
184
|
+
return delimit(this.parse('}'), '(', ')');
|
|
185
|
+
if (char !== '\\')
|
|
186
|
+
return text(char);
|
|
187
|
+
const command = /^[A-Za-z]+/u.exec(this.source.slice(this.#at))?.[0];
|
|
188
|
+
if (command === undefined) {
|
|
189
|
+
const escaped = this.source[this.#at++];
|
|
190
|
+
if (escaped === undefined || !'{},;:!%#_| '.includes(escaped))
|
|
191
|
+
throw new Error('Unknown math escape');
|
|
192
|
+
return text(',;:! '.includes(escaped) ? escaped === '!' ? '' : ' ' : escaped);
|
|
193
|
+
}
|
|
194
|
+
this.#at += command.length;
|
|
195
|
+
if (Object.hasOwn(SYMBOLS, command)) {
|
|
196
|
+
const result = text(SYMBOLS[command]);
|
|
197
|
+
result.limits = ['sum', 'prod', 'lim', 'min', 'max'].includes(command);
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
if (['frac', 'dfrac', 'tfrac'].includes(command)) {
|
|
201
|
+
const numerator = this.#argument(), denominator = this.#argument();
|
|
202
|
+
if (!this.display || command === 'tfrac')
|
|
203
|
+
return text(`${grouped(numerator)}/${grouped(denominator)}`);
|
|
204
|
+
const width = Math.max(1, numerator.width, denominator.width) + (numerator.rows.length > 1 || denominator.rows.length > 1 ? 2 : 0);
|
|
205
|
+
return box([...numerator.rows.map(row => pad(row, width, true)), '─'.repeat(width),
|
|
206
|
+
...denominator.rows.map(row => pad(row, width, true))], numerator.rows.length);
|
|
207
|
+
}
|
|
208
|
+
if (command === 'sqrt') {
|
|
209
|
+
this.#space();
|
|
210
|
+
let root = '';
|
|
211
|
+
if (this.source[this.#at] === '[') {
|
|
212
|
+
this.#at++;
|
|
213
|
+
root = flat(this.parse(']'));
|
|
214
|
+
}
|
|
215
|
+
const operand = this.#argument();
|
|
216
|
+
if ([...root].some(char => SUPER[char] === undefined))
|
|
217
|
+
throw new Error('Unsupported root index');
|
|
218
|
+
const prefix = [...root].map(char => SUPER[char]).join('');
|
|
219
|
+
if (!this.display)
|
|
220
|
+
return text(prefix + '√(' + flat(operand) + ')');
|
|
221
|
+
return box([' '.repeat(visibleWidth(prefix) + 1) + '─'.repeat(operand.width + 1),
|
|
222
|
+
...operand.rows.map((row, at) => (at === operand.baseline ? prefix + '√' : ' '.repeat(visibleWidth(prefix)) + '│') + pad(row, operand.width))], operand.baseline + 1);
|
|
223
|
+
}
|
|
224
|
+
if (['text', 'mathrm', 'mathbf', 'mathit', 'mathsf', 'mathtt', 'operatorname', 'mathbb', 'mathcal', 'boldsymbol'].includes(command)) {
|
|
225
|
+
if (command === 'text') {
|
|
226
|
+
const raw = this.#rawGroup();
|
|
227
|
+
if (/\\(?![{}%#_])/u.test(raw))
|
|
228
|
+
throw new Error('Unsupported text escape');
|
|
229
|
+
return text(raw.replace(/\\([{}%#_])/gu, '$1').replace(/\s+/gu, ' '));
|
|
230
|
+
}
|
|
231
|
+
const operand = this.#argument();
|
|
232
|
+
if (command === 'mathbb')
|
|
233
|
+
return text({ R: 'ℝ', N: 'ℕ', Z: 'ℤ', Q: 'ℚ', C: 'ℂ' }[flat(operand)] ?? flat(operand));
|
|
234
|
+
return operand;
|
|
235
|
+
}
|
|
236
|
+
if (command === 'left' || command === 'right') {
|
|
237
|
+
this.#space();
|
|
238
|
+
const next = this.source[this.#at++];
|
|
239
|
+
if (next === '.')
|
|
240
|
+
return text('');
|
|
241
|
+
if (next === undefined || !'()[]|'.includes(next))
|
|
242
|
+
throw new Error('Unsupported delimiter');
|
|
243
|
+
return text(next);
|
|
244
|
+
}
|
|
245
|
+
if (command === 'begin')
|
|
246
|
+
return this.#environment(this.#rawGroup());
|
|
247
|
+
throw new Error('Unsupported math command');
|
|
248
|
+
}
|
|
249
|
+
#environment(name) {
|
|
250
|
+
const supported = ['matrix', 'pmatrix', 'bmatrix', 'Bmatrix', 'vmatrix', 'Vmatrix', 'cases', 'aligned', 'align', 'align*', 'gathered', 'equation', 'equation*'];
|
|
251
|
+
if (!supported.includes(name))
|
|
252
|
+
throw new Error('Unsupported math environment');
|
|
253
|
+
const end = `\\end{${name}}`;
|
|
254
|
+
const start = this.#at;
|
|
255
|
+
let nested = 0, finish = -1;
|
|
256
|
+
for (let at = start; at < this.source.length; at++) {
|
|
257
|
+
if (this.source.startsWith(`\\begin{${name}}`, at))
|
|
258
|
+
nested++;
|
|
259
|
+
if (this.source.startsWith(end, at)) {
|
|
260
|
+
if (nested-- === 0) {
|
|
261
|
+
finish = at;
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
if (finish < 0)
|
|
267
|
+
throw new Error('Unclosed environment');
|
|
268
|
+
this.#at = finish + end.length;
|
|
269
|
+
const body = this.source.slice(start, finish);
|
|
270
|
+
if (name.startsWith('equation'))
|
|
271
|
+
return new _a(body, this.display, this.budget).parse();
|
|
272
|
+
const cells = [[]];
|
|
273
|
+
let chunk = '', braces = 0, environments = 0;
|
|
274
|
+
for (let at = 0; at < body.length; at++) {
|
|
275
|
+
if (body.startsWith('\\begin{', at))
|
|
276
|
+
environments++;
|
|
277
|
+
if (body.startsWith('\\end{', at))
|
|
278
|
+
environments--;
|
|
279
|
+
const char = body[at];
|
|
280
|
+
if (char === '\\' && body[at + 1] !== '\\') {
|
|
281
|
+
chunk += char + (body[++at] ?? '');
|
|
282
|
+
continue;
|
|
283
|
+
}
|
|
284
|
+
if (char === '{')
|
|
285
|
+
braces++;
|
|
286
|
+
if (char === '}')
|
|
287
|
+
braces--;
|
|
288
|
+
if (braces === 0 && environments === 0 && (char === '&' || body.startsWith('\\\\', at))) {
|
|
289
|
+
cells.at(-1).push(chunk);
|
|
290
|
+
chunk = '';
|
|
291
|
+
if (char !== '&') {
|
|
292
|
+
cells.push([]);
|
|
293
|
+
at++;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
else
|
|
297
|
+
chunk += char;
|
|
298
|
+
}
|
|
299
|
+
cells.at(-1).push(chunk);
|
|
300
|
+
if (cells.at(-1)?.every(cell => cell.trim() === ''))
|
|
301
|
+
cells.pop();
|
|
302
|
+
if (cells.length === 0 || cells.length > 8 || cells.some(row => row.length > 8))
|
|
303
|
+
throw new Error('Matrix size limit');
|
|
304
|
+
const grid = cells.map(row => row.map(cell => new _a(cell.trim(), this.display, this.budget).parse()));
|
|
305
|
+
const count = Math.max(...grid.map(row => row.length));
|
|
306
|
+
const widths = Array.from({ length: count }, (_, col) => Math.max(...grid.map(row => row[col]?.width ?? 0)));
|
|
307
|
+
const rows = [];
|
|
308
|
+
for (const row of grid) {
|
|
309
|
+
const baseline = Math.max(...row.map(cell => cell.baseline));
|
|
310
|
+
const height = Math.max(...row.map(cell => baseline - cell.baseline + cell.rows.length));
|
|
311
|
+
for (let at = 0; at < height; at++)
|
|
312
|
+
rows.push(widths.map((width, col) => {
|
|
313
|
+
const cell = row[col];
|
|
314
|
+
return pad(cell?.rows[at - baseline + (cell?.baseline ?? 0)] ?? '', width);
|
|
315
|
+
}).join(' '));
|
|
316
|
+
}
|
|
317
|
+
const result = box(rows, Math.floor((rows.length - 1) / 2));
|
|
318
|
+
if (!this.display && rows.length > 1)
|
|
319
|
+
throw new Error('Multiline inline matrix');
|
|
320
|
+
const delimiters = {
|
|
321
|
+
pmatrix: ['(', ')'], bmatrix: ['[', ']'], Bmatrix: ['{', '}'], vmatrix: ['│', '│'], Vmatrix: ['║', '║'], cases: ['{', ''],
|
|
322
|
+
};
|
|
323
|
+
return delimiters[name] === undefined ? result : delimit(result, ...delimiters[name]);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
_a = Parser;
|
|
327
|
+
/** Never return a partially converted formula or wrap a two-dimensional layout. */
|
|
328
|
+
export function mathLayout(source, display = false, width = MAX_WIDTH) {
|
|
329
|
+
if (source.length === 0 || source.length > 4096 || /[\x00-\x08\x0b-\x1f\x7f]/u.test(source))
|
|
330
|
+
return undefined;
|
|
331
|
+
try {
|
|
332
|
+
const result = new Parser(source.trim(), display, { left: 2048, depth: 0 }).parse();
|
|
333
|
+
const rows = result.rows.map(row => row.trimEnd());
|
|
334
|
+
return result.width <= width ? rows : undefined;
|
|
335
|
+
}
|
|
336
|
+
catch {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/chrome/math.ts"],"names":[],"mappings":"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"}
|
package/lib/chrome/md-style.d.ts
CHANGED
|
@@ -14,6 +14,9 @@ import type { Theme, ThemeColor } from './theme.ts';
|
|
|
14
14
|
export interface MarkdownStyle {
|
|
15
15
|
color?: ThemeColor;
|
|
16
16
|
italic?: boolean;
|
|
17
|
+
/** Source mode preserves formula delimiters and commands. */
|
|
18
|
+
mathMode?: import('./math.ts').MathMode;
|
|
19
|
+
mermaidMode?: import('./mermaid.ts').MermaidMode;
|
|
17
20
|
}
|
|
18
21
|
/** Reopen the surrounding style after a nested span closes foreground or italic. */
|
|
19
22
|
export declare function openBase(theme: Theme, style: MarkdownStyle | undefined): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md-style.js","sourceRoot":"","sources":["../../src/chrome/md-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"md-style.js","sourceRoot":"","sources":["../../src/chrome/md-style.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,KAAY,EAAE,KAAgC;IACrE,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IACnD,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;UAC3C,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,GAAG,CAAC,KAAgC,EAAE,KAAiB;IACrE,OAAO,KAAK,EAAE,KAAK,KAAK,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAA;AACjE,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,IAAY,EAAE,KAAqB;IACzE,IAAI,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACpE,IAAI,GAAG,GAAG,IAAI,CAAA;IACd,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC/D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAClD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,OAAO,CAAC,KAAY,EAAE,KAAiB,EAAE,IAAY,EAAE,KAAqB;IAC1F,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,KAAY,EAAE,IAAY,EAAE,KAAqB;IACzE,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,UAAU,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,IAAY,EAAE,KAAqB;IAC3E,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,UAAU,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,IAAY,EAAE,KAAqB;IAC3E,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,UAAU,IAAI,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC1D,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type MarkdownStyle } from './md-style.ts';
|
|
2
|
+
import type { Theme } from './theme.ts';
|
|
3
|
+
export declare const MERMAID_MODES: readonly ["auto", "source"];
|
|
4
|
+
export type MermaidMode = typeof MERMAID_MODES[number];
|
|
5
|
+
/** Whole diagrams only: never wrap or clip connections to fit a viewport. */
|
|
6
|
+
export declare function mermaidLines(source: string, theme: Theme, width: number, style?: MarkdownStyle): string[] | undefined;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { render } from 'lovely-mermaid';
|
|
2
|
+
import { ink, paintFg } from "./md-style.js";
|
|
3
|
+
import { visibleWidth } from "./width.js";
|
|
4
|
+
export const MERMAID_MODES = ['auto', 'source'];
|
|
5
|
+
const cache = new Map();
|
|
6
|
+
const CACHE_BYTES = 1_048_576;
|
|
7
|
+
let cacheBytes = 0;
|
|
8
|
+
/** Cache geometry independently of terminal width and theme, including failed parses. */
|
|
9
|
+
function diagram(source) {
|
|
10
|
+
if (source.length > 16_384 || source.split('\n').length > 200
|
|
11
|
+
|| /[\x00-\x08\x0b-\x1f\x7f]/u.test(source))
|
|
12
|
+
return undefined;
|
|
13
|
+
const hit = cache.get(source);
|
|
14
|
+
if (hit !== undefined) {
|
|
15
|
+
cache.delete(source);
|
|
16
|
+
cache.set(source, hit);
|
|
17
|
+
return hit.art;
|
|
18
|
+
}
|
|
19
|
+
let art;
|
|
20
|
+
try {
|
|
21
|
+
const rendered = render(source);
|
|
22
|
+
// Best-effort parsing and size caps can drop meaningful statements.
|
|
23
|
+
if (rendered !== null && rendered.warnings.length === 0
|
|
24
|
+
&& rendered.plain.length > 0 && rendered.plain.length <= 256
|
|
25
|
+
&& rendered.width <= 512)
|
|
26
|
+
art = rendered;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// Model output is untrusted; a parser failure must leave readable source.
|
|
30
|
+
}
|
|
31
|
+
const bytes = source.length * 2 + (art === undefined ? 0 : JSON.stringify(art).length * 2);
|
|
32
|
+
if (bytes <= CACHE_BYTES) {
|
|
33
|
+
while (cache.size >= 64 || cacheBytes + bytes > CACHE_BYTES) {
|
|
34
|
+
const oldest = cache.keys().next().value;
|
|
35
|
+
cacheBytes -= cache.get(oldest).bytes;
|
|
36
|
+
cache.delete(oldest);
|
|
37
|
+
}
|
|
38
|
+
cache.set(source, { art, bytes });
|
|
39
|
+
cacheBytes += bytes;
|
|
40
|
+
}
|
|
41
|
+
return art;
|
|
42
|
+
}
|
|
43
|
+
const ROLE_COLORS = {
|
|
44
|
+
border: 'mdCodeBlockBorder', text: 'text', edge: 'accent',
|
|
45
|
+
edgeLabel: 'muted', title: 'accent', none: 'text',
|
|
46
|
+
};
|
|
47
|
+
/** Whole diagrams only: never wrap or clip connections to fit a viewport. */
|
|
48
|
+
export function mermaidLines(source, theme, width, style) {
|
|
49
|
+
const art = diagram(source);
|
|
50
|
+
if (art === undefined || art.width > width || art.plain.some(row => visibleWidth(row) > width))
|
|
51
|
+
return undefined;
|
|
52
|
+
// Own theme tokens control contrast; source class colors and links are not terminal escapes.
|
|
53
|
+
return art.styled.map(row => row.map(span => span.role === 'none' ? span.text
|
|
54
|
+
: paintFg(theme, ink(style, ROLE_COLORS[span.role]), span.text, style)).join(''));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=mermaid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaid.js","sourceRoot":"","sources":["../../src/chrome/mermaid.ts"],"names":[],"mappings":"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"}
|
package/lib/chrome/renderer.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export interface DocumentRows {
|
|
|
73
73
|
}
|
|
74
74
|
/** One display frame: exact lines plus an optional final cursor position. */
|
|
75
75
|
export interface Frame {
|
|
76
|
+
/** Trusted graphics resource placed separately from text. */
|
|
77
|
+
image?: import('./terminal-images.ts').ImagePlacement;
|
|
76
78
|
/** Viewport-only prompt labels, active within half-open document row ranges. */
|
|
77
79
|
stickyHeaders?: readonly {
|
|
78
80
|
start: number;
|
|
@@ -112,6 +114,7 @@ export interface Frame {
|
|
|
112
114
|
start: number;
|
|
113
115
|
maxStart: number;
|
|
114
116
|
pageSize: number;
|
|
117
|
+
position?: import('../definition.ts').TuiDocumentPosition;
|
|
115
118
|
};
|
|
116
119
|
/** First line that is still live/mutable for main-screen scrollback; rows before this are committed. */
|
|
117
120
|
liveStart?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/chrome/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/chrome/renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsHH,MAAM,cAAc,GAAG,+DAA+D,CAAA;AACtF,MAAM,cAAc,GAAG,oCAAoC,CAAA;AAE3D,wEAAwE;AACxE,wEAAwE;AACxE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;AAC/C,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEnC,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACvC,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI;SACzC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAA;IAC9B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;QACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/F,MAAM,IAAI,QAAQ,CAAA;QACpB,CAAC;QACD,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAA;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAClD,IAAI,aAAa,CAAC,IAAI,IAAI,oBAAoB;QAAE,aAAa,CAAC,KAAK,EAAE,CAAA;IACrE,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAChC,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -14,6 +14,8 @@ export declare const STATUS_ITEM_IDS: readonly ["model", "effort", "path", "git"
|
|
|
14
14
|
export type StatusItemId = (typeof STATUS_ITEM_IDS)[number];
|
|
15
15
|
export declare const STATUS_LABEL_STYLES: readonly ["compact", "full"];
|
|
16
16
|
export type StatusLabelStyle = (typeof STATUS_LABEL_STYLES)[number];
|
|
17
|
+
export declare const STATUS_CONTEXT_STYLES: readonly ["percent", "bar", "tokens", "detailed"];
|
|
18
|
+
export type StatusContextStyle = (typeof STATUS_CONTEXT_STYLES)[number];
|
|
17
19
|
/**
|
|
18
20
|
* Color slots: one per preview item, plus legacy `metrics` as a fallback for
|
|
19
21
|
* telemetry groups that do not have their own color yet.
|
|
@@ -33,6 +35,8 @@ export type StatusBarColors = Partial<Record<StatusColorSlot, StatusColorToken>>
|
|
|
33
35
|
export interface StatusBarConfig {
|
|
34
36
|
enabled: boolean;
|
|
35
37
|
labels: StatusLabelStyle;
|
|
38
|
+
/** Context occupancy representation; omitted preferences default to percent. */
|
|
39
|
+
contextStyle?: StatusContextStyle;
|
|
36
40
|
groups: StatusGroupId[];
|
|
37
41
|
/** Complete visual order, including hidden groups. Absent in legacy settings. */
|
|
38
42
|
order?: StatusGroupId[];
|
|
@@ -49,6 +53,7 @@ export interface StatusBarConfig {
|
|
|
49
53
|
export type StatusBarInput = Partial<VolatileSnapshot<StatusBarConfig>>;
|
|
50
54
|
/** Normalized layout always carries complete orders, colors, and columns. */
|
|
51
55
|
export interface ResolvedStatusBarConfig extends StatusBarConfig {
|
|
56
|
+
contextStyle: StatusContextStyle;
|
|
52
57
|
order: StatusGroupId[];
|
|
53
58
|
meta: StatusMetaId[];
|
|
54
59
|
metaOrder: StatusMetaId[];
|
|
@@ -9,6 +9,7 @@ export const STATUS_META_IDS = ['model', 'effort', 'path', 'git', 'session'];
|
|
|
9
9
|
/** Every independently placed footer item. */
|
|
10
10
|
export const STATUS_ITEM_IDS = [...STATUS_META_IDS, ...STATUS_GROUP_IDS];
|
|
11
11
|
export const STATUS_LABEL_STYLES = ['compact', 'full'];
|
|
12
|
+
export const STATUS_CONTEXT_STYLES = ['percent', 'bar', 'tokens', 'detailed'];
|
|
12
13
|
/**
|
|
13
14
|
* Color slots: one per preview item, plus legacy `metrics` as a fallback for
|
|
14
15
|
* telemetry groups that do not have their own color yet.
|
|
@@ -59,6 +60,7 @@ export function defaultStatusBarConfig() {
|
|
|
59
60
|
return {
|
|
60
61
|
enabled: true,
|
|
61
62
|
labels: 'compact',
|
|
63
|
+
contextStyle: 'percent',
|
|
62
64
|
groups: [...DEFAULT_STATUS_GROUPS],
|
|
63
65
|
order: [...DEFAULT_STATUS_GROUPS],
|
|
64
66
|
meta: [...DEFAULT_STATUS_META],
|
|
@@ -145,6 +147,7 @@ export function resolveStatusBarConfig(config, legacyPreset) {
|
|
|
145
147
|
return {
|
|
146
148
|
enabled: config.enabled ?? true,
|
|
147
149
|
labels: isStatusLabelStyle(config.labels) ? config.labels : 'compact',
|
|
150
|
+
contextStyle: STATUS_CONTEXT_STYLES.includes(config.contextStyle) ? config.contextStyle : 'percent',
|
|
148
151
|
groups,
|
|
149
152
|
order: completeOrder(STATUS_GROUP_IDS, config.order === undefined ? groups : config.order),
|
|
150
153
|
meta,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status-config.js","sourceRoot":"","sources":["../../src/chrome/status-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAA;AAGvG,iGAAiG;AACjG,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAU,CAAA;AAGrF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,eAAe,EAAE,GAAG,gBAAgB,CAAU,CAAA;AAGjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAA;AAG/D;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,eAAe,EAAE,SAAS,CAAU,CAAA;AAG1E,sFAAsF;AACtF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAA;AAG3H,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,OAAO,CAAU,CAAA;AAGtD,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;IACb,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,OAAO;CAChB,CAAA;
|
|
1
|
+
{"version":3,"file":"status-config.js","sourceRoot":"","sources":["../../src/chrome/status-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,8 +32,6 @@ export declare function formatTokens(value: number): string;
|
|
|
32
32
|
export declare function formatDuration(ms: number): string;
|
|
33
33
|
/** Human-readable model throughput with the same precision as dsh web. */
|
|
34
34
|
export declare function formatTokensPerSecond(value: number): string;
|
|
35
|
-
/** Build the unpainted English groups for diagnostics and tests. */
|
|
36
|
-
export declare function sessionStatusGroups(stats: TuiSessionStats, config?: StatusBarConfig): string[];
|
|
37
35
|
/** Human-facing permission preset used consistently across terminal surfaces. */
|
|
38
36
|
export declare function formatPermission(permission: string): string;
|
|
39
37
|
/** Painted permission mode for the composer top-right cap. */
|
|
@@ -43,22 +41,3 @@ export declare function renderPermissionBadge(permission: string | undefined, th
|
|
|
43
41
|
* session telemetry second. Both rows use left/right columns and exact width.
|
|
44
42
|
*/
|
|
45
43
|
export declare function renderStatusFooter(options: StatusFooterOptions, theme: Theme): string[];
|
|
46
|
-
/**
|
|
47
|
-
* Status sample for `/settings`. Uses the same left/right footer layout as
|
|
48
|
-
* the live two-line status bar.
|
|
49
|
-
*/
|
|
50
|
-
export declare function renderStatusPreviewLines(options: {
|
|
51
|
-
model: string;
|
|
52
|
-
reasoningEffort?: string;
|
|
53
|
-
pwd?: string;
|
|
54
|
-
branch?: string;
|
|
55
|
-
stats?: TuiSessionStats;
|
|
56
|
-
config: StatusBarConfig;
|
|
57
|
-
width: number;
|
|
58
|
-
focus?: StatusItemId;
|
|
59
|
-
}, theme: Theme): string[];
|
|
60
|
-
/**
|
|
61
|
-
* Render the telemetry row without footer metadata. Used by the settings
|
|
62
|
-
* preview and retained as a compatibility seam for direct render callers.
|
|
63
|
-
*/
|
|
64
|
-
export declare function renderSessionStatusLabel(stats: TuiSessionStats | undefined, config: StatusBarConfig, theme: Theme, width: number): string;
|