omniharness-cli 0.1.37 → 0.1.38
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/dist/agent/mastraEngine.d.ts +22 -1
- package/dist/agent/mastraEngine.js +43 -6
- package/dist/agent/mastraEngine.js.map +1 -1
- package/dist/cli.js +33 -1
- package/dist/cli.js.map +1 -1
- package/dist/sessionList.d.ts +20 -0
- package/dist/sessionList.js +67 -0
- package/dist/sessionList.js.map +1 -0
- package/dist/ui/groups.d.ts +34 -0
- package/dist/ui/groups.js +50 -0
- package/dist/ui/groups.js.map +1 -0
- package/dist/ui/highlight.d.ts +22 -0
- package/dist/ui/highlight.js +148 -0
- package/dist/ui/highlight.js.map +1 -0
- package/dist/ui/markdown.js +4 -5
- package/dist/ui/markdown.js.map +1 -1
- package/dist/ui/modelWindows.d.ts +29 -0
- package/dist/ui/modelWindows.js +68 -0
- package/dist/ui/modelWindows.js.map +1 -0
- package/dist/ui/palette.d.ts +10 -5
- package/dist/ui/palette.js +28 -9
- package/dist/ui/palette.js.map +1 -1
- package/dist/ui/termcaps.d.ts +56 -0
- package/dist/ui/termcaps.js +76 -0
- package/dist/ui/termcaps.js.map +1 -0
- package/dist/ui/terminalInterface.js +392 -73
- package/dist/ui/terminalInterface.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiny syntax highlighter for code fences in the TUI.
|
|
3
|
+
*
|
|
4
|
+
* Pure module: no dependencies, no regex state, degrade-to-plain semantics.
|
|
5
|
+
* Covers the small set of languages real agent output uses most
|
|
6
|
+
* (js/ts/tsx/jsx, python, json, bash/sh); unknown languages fall back to
|
|
7
|
+
* plain text so nothing renders worse than before.
|
|
8
|
+
*/
|
|
9
|
+
/** Languages we can highlight; anything else renders plain. */
|
|
10
|
+
export function highlightable(lang) {
|
|
11
|
+
return lang !== undefined && HIGHLIGHTERS.has(normalize(lang));
|
|
12
|
+
}
|
|
13
|
+
function normalize(lang) {
|
|
14
|
+
const l = lang.toLowerCase();
|
|
15
|
+
if (l === 'javascript' || l === 'node' || l === 'jsx')
|
|
16
|
+
return 'js';
|
|
17
|
+
if (l === 'typescript' || l === 'tsx')
|
|
18
|
+
return 'ts';
|
|
19
|
+
if (l === 'py')
|
|
20
|
+
return 'python';
|
|
21
|
+
if (l === 'sh' || l === 'shell' || l === 'zsh')
|
|
22
|
+
return 'bash';
|
|
23
|
+
return l;
|
|
24
|
+
}
|
|
25
|
+
const HIGHLIGHTERS = new Set(['js', 'ts', 'python', 'json', 'bash']);
|
|
26
|
+
/** Comment-to-end-of-line marker per language family. */
|
|
27
|
+
function commentMarker(lang) {
|
|
28
|
+
return lang === 'python' || lang === 'bash' ? '#' : '//';
|
|
29
|
+
}
|
|
30
|
+
const KEYWORDS = {
|
|
31
|
+
js: ['const', 'let', 'var', 'function', 'return', 'if', 'else', 'for', 'while', 'import', 'export', 'from', 'class', 'extends', 'new', 'await', 'async', 'try', 'catch', 'finally', 'throw', 'switch', 'case', 'break', 'continue', 'default', 'typeof', 'instanceof', 'in', 'of', 'yield', 'delete', 'void', 'static', 'get', 'set'],
|
|
32
|
+
ts: ['const', 'let', 'var', 'function', 'return', 'if', 'else', 'for', 'while', 'import', 'export', 'from', 'class', 'extends', 'implements', 'interface', 'type', 'enum', 'new', 'await', 'async', 'try', 'catch', 'finally', 'throw', 'switch', 'case', 'break', 'continue', 'default', 'typeof', 'instanceof', 'in', 'of', 'yield', 'delete', 'void', 'static', 'public', 'private', 'protected', 'readonly', 'as', 'satisfies', 'keyof', 'namespace', 'declare', 'abstract'],
|
|
33
|
+
python: ['def', 'class', 'return', 'if', 'elif', 'else', 'for', 'while', 'import', 'from', 'as', 'try', 'except', 'finally', 'raise', 'with', 'lambda', 'yield', 'pass', 'break', 'continue', 'and', 'or', 'not', 'in', 'is', 'global', 'nonlocal', 'assert', 'del', 'async', 'await'],
|
|
34
|
+
json: [],
|
|
35
|
+
bash: ['if', 'then', 'else', 'elif', 'fi', 'for', 'while', 'do', 'done', 'case', 'esac', 'function', 'return', 'export', 'local', 'echo', 'exit', 'set', 'source', 'cd', 'rm', 'mkdir', 'cp', 'mv', 'npm', 'npx', 'git', 'node', 'python', 'pip'],
|
|
36
|
+
};
|
|
37
|
+
const TRUE_FALSE_NULL = new Set(['true', 'false', 'null', 'undefined', 'None', 'True', 'False', 'nil']);
|
|
38
|
+
/** Ink color names used for token classes. */
|
|
39
|
+
const COLORS = { keyword: 'magenta', string: 'green', number: 'yellow', comment: 'gray', literal: 'cyan' };
|
|
40
|
+
/**
|
|
41
|
+
* Highlight one line of code into styled segments.
|
|
42
|
+
* The line's characters are preserved exactly (segment text concatenates to
|
|
43
|
+
* the input), so callers can still hard-slice long lines by character.
|
|
44
|
+
*/
|
|
45
|
+
export function highlightLine(line, lang) {
|
|
46
|
+
const l = normalize(lang);
|
|
47
|
+
const plain = [{ text: line, color: 'cyan' }];
|
|
48
|
+
if (!HIGHLIGHTERS.has(l))
|
|
49
|
+
return plain;
|
|
50
|
+
if (l === 'json')
|
|
51
|
+
return highlightJson(line);
|
|
52
|
+
return highlightGeneric(line, l);
|
|
53
|
+
}
|
|
54
|
+
function highlightJson(line) {
|
|
55
|
+
const out = [];
|
|
56
|
+
const re = /("(?:[^"\\]|\\.)*")(\s*:)?|(\b-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b)|(\btrue\b|\bfalse\b|\bnull\b)/g;
|
|
57
|
+
let last = 0;
|
|
58
|
+
for (const m of line.matchAll(re)) {
|
|
59
|
+
const index = m.index ?? 0;
|
|
60
|
+
if (index > last)
|
|
61
|
+
out.push({ text: line.slice(last, index), color: 'cyan' });
|
|
62
|
+
if (m[1] !== undefined)
|
|
63
|
+
out.push({ text: m[1], color: COLORS.string });
|
|
64
|
+
if (m[2] !== undefined)
|
|
65
|
+
out.push({ text: m[2], color: 'cyan' });
|
|
66
|
+
if (m[3] !== undefined)
|
|
67
|
+
out.push({ text: m[3], color: COLORS.number });
|
|
68
|
+
if (m[4] !== undefined)
|
|
69
|
+
out.push({ text: m[4], color: COLORS.literal });
|
|
70
|
+
last = index + m[0].length;
|
|
71
|
+
}
|
|
72
|
+
if (last < line.length)
|
|
73
|
+
out.push({ text: line.slice(last), color: 'cyan' });
|
|
74
|
+
return out;
|
|
75
|
+
}
|
|
76
|
+
/** Word/punct tokenization with strings, comments, and numbers. */
|
|
77
|
+
function highlightGeneric(line, lang) {
|
|
78
|
+
const out = [];
|
|
79
|
+
const comment = commentMarker(lang);
|
|
80
|
+
const keywords = new Set(KEYWORDS[lang] ?? []);
|
|
81
|
+
const re = /("(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|`(?:[^`\\]|\\.)*`)|(#.*$|\/\/.*$)|(\b\d+(?:\.\d+)?\b)|([A-Za-z_$][A-Za-z0-9_$]*)|(\s+)|(.)/g;
|
|
82
|
+
let last = 0;
|
|
83
|
+
const push = (text, color) => { if (text !== '')
|
|
84
|
+
out.push({ text, color }); };
|
|
85
|
+
for (const m of line.matchAll(re)) {
|
|
86
|
+
const index = m.index ?? 0;
|
|
87
|
+
if (index > last)
|
|
88
|
+
push(line.slice(last, index), 'cyan');
|
|
89
|
+
if (m[1] !== undefined)
|
|
90
|
+
push(m[0], COLORS.string);
|
|
91
|
+
else if (m[2] !== undefined)
|
|
92
|
+
push(m[0], COLORS.comment);
|
|
93
|
+
else if (m[3] !== undefined)
|
|
94
|
+
push(m[0], COLORS.number);
|
|
95
|
+
else if (m[4] !== undefined) {
|
|
96
|
+
if (keywords.has(m[0]))
|
|
97
|
+
push(m[0], COLORS.keyword);
|
|
98
|
+
else if (TRUE_FALSE_NULL.has(m[0]))
|
|
99
|
+
push(m[0], COLORS.literal);
|
|
100
|
+
else
|
|
101
|
+
push(m[0], 'cyan');
|
|
102
|
+
}
|
|
103
|
+
else if (m[5] !== undefined)
|
|
104
|
+
push(m[0]);
|
|
105
|
+
else
|
|
106
|
+
push(m[0], 'cyan');
|
|
107
|
+
last = index + m[0].length;
|
|
108
|
+
}
|
|
109
|
+
if (last < line.length)
|
|
110
|
+
push(line.slice(last), 'cyan');
|
|
111
|
+
return out;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Highlight a whole code fence body into per-line segment arrays,
|
|
115
|
+
* hard-slicing lines wider than `width` (segments split by character).
|
|
116
|
+
*/
|
|
117
|
+
export function highlightCode(code, lang, width) {
|
|
118
|
+
const l = lang !== undefined ? normalize(lang) : undefined;
|
|
119
|
+
const can = l !== undefined && HIGHLIGHTERS.has(l);
|
|
120
|
+
const out = [];
|
|
121
|
+
for (const line of code) {
|
|
122
|
+
let segments = can ? highlightGeneric(line, l) : [{ text: line, color: 'cyan' }];
|
|
123
|
+
// Hard-slice overlong lines, splitting segment text by character.
|
|
124
|
+
while (segments.reduce((n, s) => n + s.text.length, 0) > width && segments.length > 0) {
|
|
125
|
+
const row = [];
|
|
126
|
+
let remaining = width;
|
|
127
|
+
let i = 0;
|
|
128
|
+
while (i < segments.length && remaining > 0) {
|
|
129
|
+
const seg = segments[i];
|
|
130
|
+
if (seg.text.length <= remaining) {
|
|
131
|
+
row.push(seg);
|
|
132
|
+
remaining -= seg.text.length;
|
|
133
|
+
i += 1;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
row.push({ ...seg, text: seg.text.slice(0, remaining) });
|
|
137
|
+
segments[i] = { ...seg, text: seg.text.slice(remaining) };
|
|
138
|
+
remaining = 0;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
segments = segments.slice(i);
|
|
142
|
+
out.push(row);
|
|
143
|
+
}
|
|
144
|
+
out.push(segments.length > 0 ? segments : [{ text: '', color: 'cyan' }]);
|
|
145
|
+
}
|
|
146
|
+
return out;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=highlight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"highlight.js","sourceRoot":"","sources":["../../src/ui/highlight.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,IAAwB;IACpD,OAAO,IAAI,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,QAAQ,CAAC;IAChC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAErE,yDAAyD;AACzD,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED,MAAM,QAAQ,GAAsC;IAClD,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;IACrU,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;IAChd,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;IACtR,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;CAClP,CAAC;AAEF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAExG,8CAA8C;AAC9C,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAW,CAAC;AAEpH;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,MAAM,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,GAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,kGAAkG,CAAC;IAC9G,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,OAAO,GAAG,CAAC;AACb,CAAC;AAOD,mEAAmE;AACnE,SAAS,gBAAgB,CAAC,IAAY,EAAE,IAAY;IAClD,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,kIAAkI,CAAC;IAC9I,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,KAAc,EAAQ,EAAE,GAAG,IAAI,IAAI,KAAK,EAAE;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aAC7C,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;aACnD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9C,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;;gBAC1D,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YACrC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACxB,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IACvD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAuB,EAAE,IAAwB,EAAE,KAAa;IAC5F,MAAM,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,GAAG,GAAG,CAAC,KAAK,SAAS,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,QAAQ,GAAsB,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACpG,kEAAkE;QAClE,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtF,MAAM,GAAG,GAAsB,EAAE,CAAC;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACxB,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAAC,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,CAAC;qBACrF,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;oBAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAAC,SAAS,GAAG,CAAC,CAAC;gBAAC,CAAC;YAC9I,CAAC;YACD,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/ui/markdown.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* fences, GFM tables, rules) into lines of styled segments, word-wrapped
|
|
7
7
|
* to a column width. Unclosed constructs degrade to plain text.
|
|
8
8
|
*/
|
|
9
|
+
import { highlightCode } from './highlight.js';
|
|
9
10
|
const TOKEN_RE = /(\~\~[^~]+\~\~|\*\*[^*]+\*\*|`[^`\n]+`|\*[^*\n]+\*|\[[^\]]+\]\([^)\s]+\))/g;
|
|
10
11
|
const DELIM_RE = /^\s*:?-+:?\s*$/;
|
|
11
12
|
const BULLETS = ['•', '◦', '▪'];
|
|
@@ -190,7 +191,8 @@ export function renderMarkdown(text, width) {
|
|
|
190
191
|
let i = 0;
|
|
191
192
|
while (i < src.length) {
|
|
192
193
|
const line = src[i];
|
|
193
|
-
|
|
194
|
+
const fence = /^```\s*([A-Za-z0-9_+-]*)\s*$/.exec(line);
|
|
195
|
+
if (fence) {
|
|
194
196
|
const code = [];
|
|
195
197
|
i += 1;
|
|
196
198
|
while (i < src.length && !/^```/.test(src[i])) {
|
|
@@ -198,10 +200,7 @@ export function renderMarkdown(text, width) {
|
|
|
198
200
|
i += 1;
|
|
199
201
|
}
|
|
200
202
|
i += 1; // skip closing fence
|
|
201
|
-
|
|
202
|
-
for (const sliced of hardSlice(codeLine, width))
|
|
203
|
-
out.push([{ text: sliced, color: 'cyan' }]);
|
|
204
|
-
}
|
|
203
|
+
out.push(...highlightCode(code, fence[1] === '' ? undefined : fence[1], width));
|
|
205
204
|
continue;
|
|
206
205
|
}
|
|
207
206
|
if (/^\s*$/.test(line)) {
|
package/dist/ui/markdown.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAqBH,MAAM,QAAQ,GAAG,4EAA4E,CAAC;AAC9F,MAAM,QAAQ,GAAG,gBAAgB,CAAC;AAClC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AACzC,MAAM,MAAM,GAAG,sBAAsB,CAAC;AAEtC,oDAAoD;AACpD,SAAS,MAAM,CAAC,IAAY;IAC1B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aACnF,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aAC/E,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;aACjF,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC9B,CAAC;IACD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM;QAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,OAAO,CAAC,QAAoC;IACnD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;QAC3C,IAAI,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,IAAI,IAAI,KAAK,EAAE;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6EAA6E;AAC7E,SAAS,SAAS,CAAC,KAA4B,EAAE,KAAa;IAC5D,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,IAAI,IAAI,GAAsB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,IAAI,GAAG,EAAE,CAAC;YAAC,OAAO,GAAG,CAAC,CAAC;QAAC,CAAC;IACpE,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3B,IAAI,OAAO,GAAG,CAAC;gBAAE,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,IAAI,KAAK,EAAE;YAAE,SAAS;QAC1B,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YACzC,IAAI,GAAG,GAAG,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,OAAO,IAAI,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IACzF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,QAAoC,EAAU,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAErH,mGAAmG;AACnG,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAAC,OAAO,IAAI,GAAG,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;aAC9D,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;QAAC,CAAC;;YACtD,OAAO,IAAI,EAAE,CAAC;IACrB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,IAAI,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC;IACnC,IAAI,KAAK;QAAE,OAAO,OAAO,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wEAAwE;AACxE,SAAS,WAAW,CAAC,MAAgB,EAAE,MAAwB,EAAE,IAAoC,EAAE,KAAa;IAClH,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3B,MAAM,IAAI,GAAgD,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACtF,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAC7D,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACtD,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAC5D,CAAC;IACF,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAChE,OAAO,KAAK,GAAG,KAAK,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACzD,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM;QAClC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAsB,EAAE,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;gBACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;qBACxE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;oBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;;oBACxI,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzG,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,GAAG,GAAwB,EAAE,CAAC;IACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,GAAa,EAAE,CAAC;YAC1B,CAAC,IAAI,CAAC,CAAC;YACP,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,IAAI,CAAC,CAAC;YAAC,CAAC;YAC7E,CAAC,IAAI,CAAC,CAAC,CAAC,qBAAqB;YAC7B,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/F,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;YACjG,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACjD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACnD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,QAAQ,GAAsB,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/F,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAClH,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YACjD,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAC9G,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtC,MAAM,IAAI,GAAe,EAAE,CAAC;gBAC5B,CAAC,IAAI,CAAC,CAAC;gBACP,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5B,CAAC,IAAI,CAAC,CAAC;gBACT,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACtD,SAAS;YACX,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAa,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC,IAAI,CAAC,CAAC;QACP,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM;eAChB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eACrB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eACpB,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eAC3B,CAAC,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eACnD,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;eACxB,CAAC,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/ui/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-model context windows and the context meter.
|
|
3
|
+
*
|
|
4
|
+
* Pure module. OmniRoute's `auto/*` combos route to different underlying
|
|
5
|
+
* models, so the usable context window changes per turn. `windowFor` resolves
|
|
6
|
+
* a model id (or the provider name OmniRoute reports) to a token budget;
|
|
7
|
+
* `contextMeter` turns "tokens in" into a fill fraction and a zone the UI
|
|
8
|
+
* colours (ok / warn / danger) using the playbook's 70 / 90 thresholds.
|
|
9
|
+
*/
|
|
10
|
+
export type ContextZone = 'ok' | 'warn' | 'danger';
|
|
11
|
+
export interface ContextMeter {
|
|
12
|
+
/** 0–1 fraction of the resolved window consumed. */
|
|
13
|
+
fraction: number;
|
|
14
|
+
zone: ContextZone;
|
|
15
|
+
window: number;
|
|
16
|
+
used: number;
|
|
17
|
+
}
|
|
18
|
+
/** Fallback window when nothing matches — conservative so the meter warns early rather than late. */
|
|
19
|
+
export declare const DEFAULT_WINDOW = 128000;
|
|
20
|
+
/**
|
|
21
|
+
* Resolve a context window for a model id and/or the provider OmniRoute
|
|
22
|
+
* reported for the turn. Matching is case-insensitive substring; the longest
|
|
23
|
+
* matching pattern wins so `gpt-4o-mini` beats `gpt-4o`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function windowFor(modelId: string | undefined, provider?: string): number;
|
|
26
|
+
/** Build the meter. `used` below 0 clamps to 0; the fraction is capped at 1. */
|
|
27
|
+
export declare function contextMeter(used: number, modelId: string | undefined, provider?: string): ContextMeter;
|
|
28
|
+
/** A compact `[████░░░░░░] 41%` style bar, `cells` wide. */
|
|
29
|
+
export declare function meterBar(fraction: number, cells?: number): string;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-model context windows and the context meter.
|
|
3
|
+
*
|
|
4
|
+
* Pure module. OmniRoute's `auto/*` combos route to different underlying
|
|
5
|
+
* models, so the usable context window changes per turn. `windowFor` resolves
|
|
6
|
+
* a model id (or the provider name OmniRoute reports) to a token budget;
|
|
7
|
+
* `contextMeter` turns "tokens in" into a fill fraction and a zone the UI
|
|
8
|
+
* colours (ok / warn / danger) using the playbook's 70 / 90 thresholds.
|
|
9
|
+
*/
|
|
10
|
+
/** Known windows keyed by a substring of the model / provider id (longest match wins). */
|
|
11
|
+
const WINDOWS = [
|
|
12
|
+
['claude-3-5-haiku', 200_000],
|
|
13
|
+
['claude-3-5-sonnet', 200_000],
|
|
14
|
+
['claude-3-7', 200_000],
|
|
15
|
+
['claude-sonnet-4', 200_000],
|
|
16
|
+
['claude-opus-4', 200_000],
|
|
17
|
+
['claude', 200_000],
|
|
18
|
+
['gpt-4o-mini', 128_000],
|
|
19
|
+
['gpt-4o', 128_000],
|
|
20
|
+
['gpt-4.1', 1_047_576],
|
|
21
|
+
['gpt-5', 400_000],
|
|
22
|
+
['o3', 200_000],
|
|
23
|
+
['o4-mini', 200_000],
|
|
24
|
+
['gemini-1.5-flash', 1_048_576],
|
|
25
|
+
['gemini-1.5-pro', 2_097_152],
|
|
26
|
+
['gemini-2.0', 1_048_576],
|
|
27
|
+
['gemini-2.5-pro', 1_048_576],
|
|
28
|
+
['gemini', 1_048_576],
|
|
29
|
+
['grok', 131_072],
|
|
30
|
+
['deepseek', 128_000],
|
|
31
|
+
['llama-3.1', 131_072],
|
|
32
|
+
['llama', 131_072],
|
|
33
|
+
['mistral', 131_072],
|
|
34
|
+
['qwen', 131_072],
|
|
35
|
+
];
|
|
36
|
+
/** Fallback window when nothing matches — conservative so the meter warns early rather than late. */
|
|
37
|
+
export const DEFAULT_WINDOW = 128_000;
|
|
38
|
+
/**
|
|
39
|
+
* Resolve a context window for a model id and/or the provider OmniRoute
|
|
40
|
+
* reported for the turn. Matching is case-insensitive substring; the longest
|
|
41
|
+
* matching pattern wins so `gpt-4o-mini` beats `gpt-4o`.
|
|
42
|
+
*/
|
|
43
|
+
export function windowFor(modelId, provider) {
|
|
44
|
+
const haystack = `${modelId ?? ''} ${provider ?? ''}`.toLowerCase();
|
|
45
|
+
let best;
|
|
46
|
+
let bestLen = 0;
|
|
47
|
+
for (const [pattern, tokens] of WINDOWS) {
|
|
48
|
+
if (pattern.length > bestLen && haystack.includes(pattern)) {
|
|
49
|
+
best = tokens;
|
|
50
|
+
bestLen = pattern.length;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return best ?? DEFAULT_WINDOW;
|
|
54
|
+
}
|
|
55
|
+
/** Build the meter. `used` below 0 clamps to 0; the fraction is capped at 1. */
|
|
56
|
+
export function contextMeter(used, modelId, provider) {
|
|
57
|
+
const window = windowFor(modelId, provider);
|
|
58
|
+
const safeUsed = Math.max(0, used);
|
|
59
|
+
const fraction = Math.min(1, safeUsed / window);
|
|
60
|
+
const zone = fraction >= 0.9 ? 'danger' : fraction >= 0.7 ? 'warn' : 'ok';
|
|
61
|
+
return { fraction, zone, window, used: safeUsed };
|
|
62
|
+
}
|
|
63
|
+
/** A compact `[████░░░░░░] 41%` style bar, `cells` wide. */
|
|
64
|
+
export function meterBar(fraction, cells = 10) {
|
|
65
|
+
const filled = Math.round(Math.min(1, Math.max(0, fraction)) * cells);
|
|
66
|
+
return `${'█'.repeat(filled)}${'░'.repeat(Math.max(0, cells - filled))}`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=modelWindows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelWindows.js","sourceRoot":"","sources":["../../src/ui/modelWindows.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/palette.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Semantic color palette for the TUI.
|
|
2
|
+
* Semantic color palette + theme resolution for the TUI.
|
|
3
3
|
*
|
|
4
4
|
* Pure module: exposes one set of named roles (accent, muted, success, warn,
|
|
5
|
-
* error, info) as Ink color values.
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
8
|
-
* truecolor
|
|
5
|
+
* error, info) as Ink color values. Theme selection:
|
|
6
|
+
* - NO_COLOR (any value) → ANSI-16 named colors, no truecolor
|
|
7
|
+
* - OMNIHARNESS_THEME → 'light' | 'dark' (default 'dark')
|
|
8
|
+
* - COLORTERM → truecolor (24-bit hex) when 'truecolor'|'24bit'
|
|
9
|
+
* Light themes swap the hex set only; ANSI-16 fallbacks are shared so the UI
|
|
10
|
+
* never depends on truecolor support and never renders unreadable text.
|
|
9
11
|
*/
|
|
10
12
|
export interface Palette {
|
|
11
13
|
accent: string;
|
|
@@ -15,7 +17,10 @@ export interface Palette {
|
|
|
15
17
|
error: string;
|
|
16
18
|
info: string;
|
|
17
19
|
}
|
|
20
|
+
export type ThemeName = 'dark' | 'light';
|
|
18
21
|
/** Whether the terminal supports 24-bit color per the COLORTERM convention. */
|
|
19
22
|
export declare function supportsTrueColor(env?: Record<string, string | undefined>): boolean;
|
|
23
|
+
/** Resolve the theme name: explicit setting wins, then dark default. */
|
|
24
|
+
export declare function themeName(env?: Record<string, string | undefined>): ThemeName;
|
|
20
25
|
/** Resolve the semantic palette for the current terminal environment. */
|
|
21
26
|
export declare function palette(env?: Record<string, string | undefined>): Palette;
|
package/dist/ui/palette.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Semantic color palette for the TUI.
|
|
2
|
+
* Semantic color palette + theme resolution for the TUI.
|
|
3
3
|
*
|
|
4
4
|
* Pure module: exposes one set of named roles (accent, muted, success, warn,
|
|
5
|
-
* error, info) as Ink color values.
|
|
6
|
-
* (
|
|
7
|
-
*
|
|
8
|
-
* truecolor
|
|
5
|
+
* error, info) as Ink color values. Theme selection:
|
|
6
|
+
* - NO_COLOR (any value) → ANSI-16 named colors, no truecolor
|
|
7
|
+
* - OMNIHARNESS_THEME → 'light' | 'dark' (default 'dark')
|
|
8
|
+
* - COLORTERM → truecolor (24-bit hex) when 'truecolor'|'24bit'
|
|
9
|
+
* Light themes swap the hex set only; ANSI-16 fallbacks are shared so the UI
|
|
10
|
+
* never depends on truecolor support and never renders unreadable text.
|
|
9
11
|
*/
|
|
10
|
-
/**
|
|
11
|
-
const
|
|
12
|
+
/** Dark truecolor palette (Tokyo-Night-inspired). */
|
|
13
|
+
const DARK_TRUE = {
|
|
12
14
|
accent: '#7aa2f7',
|
|
13
15
|
muted: '#8b93a7',
|
|
14
16
|
success: '#9ece6a',
|
|
@@ -16,7 +18,16 @@ const TRUE_COLORS = {
|
|
|
16
18
|
error: '#f7768e',
|
|
17
19
|
info: '#2ac3de',
|
|
18
20
|
};
|
|
19
|
-
/**
|
|
21
|
+
/** Light truecolor palette — darker text on light backgrounds, same hue roles. */
|
|
22
|
+
const LIGHT_TRUE = {
|
|
23
|
+
accent: '#2f5fd7',
|
|
24
|
+
muted: '#5d6470',
|
|
25
|
+
success: '#3f7d23',
|
|
26
|
+
warn: '#9a6a10',
|
|
27
|
+
error: '#c2344f',
|
|
28
|
+
info: '#0a7ea4',
|
|
29
|
+
};
|
|
30
|
+
/** ANSI-16 fallback shared by both themes (named colors adapt per terminal). */
|
|
20
31
|
const ANSI_16 = {
|
|
21
32
|
accent: 'blue',
|
|
22
33
|
muted: 'gray',
|
|
@@ -30,8 +41,16 @@ export function supportsTrueColor(env = process.env) {
|
|
|
30
41
|
const colorTerm = env.COLORTERM;
|
|
31
42
|
return colorTerm === 'truecolor' || colorTerm === '24bit';
|
|
32
43
|
}
|
|
44
|
+
/** Resolve the theme name: explicit setting wins, then dark default. */
|
|
45
|
+
export function themeName(env = process.env) {
|
|
46
|
+
return env.OMNIHARNESS_THEME === 'light' ? 'light' : 'dark';
|
|
47
|
+
}
|
|
33
48
|
/** Resolve the semantic palette for the current terminal environment. */
|
|
34
49
|
export function palette(env = process.env) {
|
|
35
|
-
|
|
50
|
+
if (env.NO_COLOR !== undefined && env.NO_COLOR !== '')
|
|
51
|
+
return { ...ANSI_16 };
|
|
52
|
+
if (!supportsTrueColor(env))
|
|
53
|
+
return { ...ANSI_16 };
|
|
54
|
+
return { ...(themeName(env) === 'light' ? LIGHT_TRUE : DARK_TRUE) };
|
|
36
55
|
}
|
|
37
56
|
//# sourceMappingURL=palette.js.map
|
package/dist/ui/palette.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/ui/palette.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"palette.js","sourceRoot":"","sources":["../../src/ui/palette.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,qDAAqD;AACrD,MAAM,SAAS,GAAY;IACzB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,kFAAkF;AAClF,MAAM,UAAU,GAAY;IAC1B,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,gFAAgF;AAChF,MAAM,OAAO,GAAY;IACvB,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,KAAK;IACZ,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAAC,MAA0C,OAAO,CAAC,GAAG;IACrF,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;IAChC,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,OAAO,CAAC;AAC5D,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,SAAS,CAAC,MAA0C,OAAO,CAAC,GAAG;IAC7E,OAAO,GAAG,CAAC,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9D,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,OAAO,CAAC,MAA0C,OAAO,CAAC,GAAG;IAC3E,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,KAAK,EAAE;QAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IAC7E,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACnD,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal capability primitives — zero-dependency escape sequences that
|
|
3
|
+
* degrade to nothing on terminals that don't support them.
|
|
4
|
+
*
|
|
5
|
+
* Pure helpers plus two small stateful wrappers (`wrapSynchronizedOutput`,
|
|
6
|
+
* `isSyncOutputReply`). Nothing here assumes a capability: callers probe
|
|
7
|
+
* first (like the kitty-protocol query in `keys.ts`) and only enable a
|
|
8
|
+
* feature once the terminal answers.
|
|
9
|
+
*
|
|
10
|
+
* - Synchronized Output (DECSET 2026): bracket each frame so the terminal
|
|
11
|
+
* composites the whole update at once instead of tearing mid-repaint.
|
|
12
|
+
* - OSC 52: write the system clipboard (works over SSH and tmux). Most
|
|
13
|
+
* terminals allow writes and refuse reads, so this is write-only.
|
|
14
|
+
* - OSC 9: fire a desktop notification when a long run finishes.
|
|
15
|
+
* - BEL: the terminal bell, gated by the caller to "long + unfocused".
|
|
16
|
+
*/
|
|
17
|
+
/** DECSET 2026 — begin a synchronized (tear-free) frame. */
|
|
18
|
+
export declare const SYNC_BEGIN = "\u001B[?2026h";
|
|
19
|
+
/** DECRST 2026 — end the synchronized frame; terminal flushes it atomically. */
|
|
20
|
+
export declare const SYNC_END = "\u001B[?2026l";
|
|
21
|
+
/** DECRQM 2026 — ask whether synchronized output is supported. */
|
|
22
|
+
export declare const SYNC_QUERY = "\u001B[?2026$p";
|
|
23
|
+
/**
|
|
24
|
+
* True when `chunk` is the terminal's answer to {@link SYNC_QUERY}
|
|
25
|
+
* (`ESC [ ? 2026 ; <state> $ y`). State 1 = set, 2 = reset, 3/4 = permanently
|
|
26
|
+
* set/reset — any of them means the mode is recognised, which is all we need.
|
|
27
|
+
*/
|
|
28
|
+
export declare function isSyncOutputReply(chunk: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Wrap a writable stream so every string write is bracketed by the
|
|
31
|
+
* synchronized-output markers. Ink emits one `write()` per rendered frame, so
|
|
32
|
+
* this makes each frame tear-free without hooking React's commit phase.
|
|
33
|
+
* Returns a restore function. Non-string chunks (rare from Ink) pass through
|
|
34
|
+
* untouched so binary writes are never corrupted.
|
|
35
|
+
*/
|
|
36
|
+
export declare function wrapSynchronizedOutput(stream: {
|
|
37
|
+
write: (chunk: unknown, ...rest: unknown[]) => boolean;
|
|
38
|
+
}): () => void;
|
|
39
|
+
/**
|
|
40
|
+
* OSC 52 clipboard-write sequence for `text`. Base64 is required by the
|
|
41
|
+
* protocol. Terminals cap the payload (commonly ~74–100 KB before the encode);
|
|
42
|
+
* we refuse anything that would obviously exceed that rather than emit a
|
|
43
|
+
* sequence the terminal will silently drop.
|
|
44
|
+
*/
|
|
45
|
+
export declare function osc52Copy(text: string): string | null;
|
|
46
|
+
/** OSC 9 desktop-notification sequence (iTerm2, WezTerm, Ghostty, Windows Terminal). */
|
|
47
|
+
export declare function osc9Notify(title: string): string;
|
|
48
|
+
/** The terminal bell. Caller decides when it's warranted. */
|
|
49
|
+
export declare const BEL = "\u0007";
|
|
50
|
+
/**
|
|
51
|
+
* Whether a "run finished" nudge (bell + notification) is warranted: the run
|
|
52
|
+
* took long enough to have caused a context switch, and the terminal isn't
|
|
53
|
+
* the focused window. Focus is unknowable without extra querying, so callers
|
|
54
|
+
* pass what they have; default is "assume unfocused after a long run".
|
|
55
|
+
*/
|
|
56
|
+
export declare function shouldNudgeOnFinish(elapsedMs: number, focused?: boolean, thresholdMs?: number): boolean;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal capability primitives — zero-dependency escape sequences that
|
|
3
|
+
* degrade to nothing on terminals that don't support them.
|
|
4
|
+
*
|
|
5
|
+
* Pure helpers plus two small stateful wrappers (`wrapSynchronizedOutput`,
|
|
6
|
+
* `isSyncOutputReply`). Nothing here assumes a capability: callers probe
|
|
7
|
+
* first (like the kitty-protocol query in `keys.ts`) and only enable a
|
|
8
|
+
* feature once the terminal answers.
|
|
9
|
+
*
|
|
10
|
+
* - Synchronized Output (DECSET 2026): bracket each frame so the terminal
|
|
11
|
+
* composites the whole update at once instead of tearing mid-repaint.
|
|
12
|
+
* - OSC 52: write the system clipboard (works over SSH and tmux). Most
|
|
13
|
+
* terminals allow writes and refuse reads, so this is write-only.
|
|
14
|
+
* - OSC 9: fire a desktop notification when a long run finishes.
|
|
15
|
+
* - BEL: the terminal bell, gated by the caller to "long + unfocused".
|
|
16
|
+
*/
|
|
17
|
+
/** DECSET 2026 — begin a synchronized (tear-free) frame. */
|
|
18
|
+
export const SYNC_BEGIN = '\x1b[?2026h';
|
|
19
|
+
/** DECRST 2026 — end the synchronized frame; terminal flushes it atomically. */
|
|
20
|
+
export const SYNC_END = '\x1b[?2026l';
|
|
21
|
+
/** DECRQM 2026 — ask whether synchronized output is supported. */
|
|
22
|
+
export const SYNC_QUERY = '\x1b[?2026$p';
|
|
23
|
+
/**
|
|
24
|
+
* True when `chunk` is the terminal's answer to {@link SYNC_QUERY}
|
|
25
|
+
* (`ESC [ ? 2026 ; <state> $ y`). State 1 = set, 2 = reset, 3/4 = permanently
|
|
26
|
+
* set/reset — any of them means the mode is recognised, which is all we need.
|
|
27
|
+
*/
|
|
28
|
+
export function isSyncOutputReply(chunk) {
|
|
29
|
+
return /\x1b\[\?2026;[0-4]\$y/.test(chunk);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Wrap a writable stream so every string write is bracketed by the
|
|
33
|
+
* synchronized-output markers. Ink emits one `write()` per rendered frame, so
|
|
34
|
+
* this makes each frame tear-free without hooking React's commit phase.
|
|
35
|
+
* Returns a restore function. Non-string chunks (rare from Ink) pass through
|
|
36
|
+
* untouched so binary writes are never corrupted.
|
|
37
|
+
*/
|
|
38
|
+
export function wrapSynchronizedOutput(stream) {
|
|
39
|
+
const original = stream.write.bind(stream);
|
|
40
|
+
stream.write = (chunk, ...rest) => {
|
|
41
|
+
if (typeof chunk === 'string' && chunk.length > 0) {
|
|
42
|
+
return original(`${SYNC_BEGIN}${chunk}${SYNC_END}`, ...rest);
|
|
43
|
+
}
|
|
44
|
+
return original(chunk, ...rest);
|
|
45
|
+
};
|
|
46
|
+
return () => { stream.write = original; };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* OSC 52 clipboard-write sequence for `text`. Base64 is required by the
|
|
50
|
+
* protocol. Terminals cap the payload (commonly ~74–100 KB before the encode);
|
|
51
|
+
* we refuse anything that would obviously exceed that rather than emit a
|
|
52
|
+
* sequence the terminal will silently drop.
|
|
53
|
+
*/
|
|
54
|
+
export function osc52Copy(text) {
|
|
55
|
+
const encoded = Buffer.from(text, 'utf8').toString('base64');
|
|
56
|
+
if (encoded.length > 96_000)
|
|
57
|
+
return null;
|
|
58
|
+
return `\x1b]52;c;${encoded}\x07`;
|
|
59
|
+
}
|
|
60
|
+
/** OSC 9 desktop-notification sequence (iTerm2, WezTerm, Ghostty, Windows Terminal). */
|
|
61
|
+
export function osc9Notify(title) {
|
|
62
|
+
// Strip control characters; the sequence is terminated by BEL.
|
|
63
|
+
return `\x1b]9;${title.replace(/[\x00-\x1f\x7f]/g, ' ').slice(0, 200)}\x07`;
|
|
64
|
+
}
|
|
65
|
+
/** The terminal bell. Caller decides when it's warranted. */
|
|
66
|
+
export const BEL = '\x07';
|
|
67
|
+
/**
|
|
68
|
+
* Whether a "run finished" nudge (bell + notification) is warranted: the run
|
|
69
|
+
* took long enough to have caused a context switch, and the terminal isn't
|
|
70
|
+
* the focused window. Focus is unknowable without extra querying, so callers
|
|
71
|
+
* pass what they have; default is "assume unfocused after a long run".
|
|
72
|
+
*/
|
|
73
|
+
export function shouldNudgeOnFinish(elapsedMs, focused = false, thresholdMs = 10_000) {
|
|
74
|
+
return elapsedMs >= thresholdMs && !focused;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=termcaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"termcaps.js","sourceRoot":"","sources":["../../src/ui/termcaps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;AACxC,gFAAgF;AAChF,MAAM,CAAC,MAAM,QAAQ,GAAG,aAAa,CAAC;AACtC,kEAAkE;AAClE,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAkE;IACvG,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,CAAC,KAAK,GAAG,CAAC,KAAc,EAAE,GAAG,IAAe,EAAW,EAAE;QAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,QAAQ,CAAC,GAAG,UAAU,GAAG,KAAK,GAAG,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;IACF,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,aAAa,OAAO,MAAM,CAAC;AACpC,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,+DAA+D;IAC/D,OAAO,UAAU,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC;AAC9E,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,GAAG,GAAG,MAAM,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAAiB,EAAE,OAAO,GAAG,KAAK,EAAE,WAAW,GAAG,MAAM;IAC1F,OAAO,SAAS,IAAI,WAAW,IAAI,CAAC,OAAO,CAAC;AAC9C,CAAC"}
|