omniharness-cli 0.1.37 → 0.1.39
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 +36 -1
- package/dist/agent/mastraEngine.js +144 -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 +36 -14
- 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 +406 -255
- package/dist/ui/terminalInterface.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collapsible message groups for the transcript.
|
|
3
|
+
*
|
|
4
|
+
* Pure module: folds runs of tool-role lines into a single synthetic summary
|
|
5
|
+
* line so a long tool trail reads as one line ("▸ 4 tool calls · Ctrl+G to
|
|
6
|
+
* expand") instead of a wall of output. Runs shorter than 3 lines stay
|
|
7
|
+
* unfolded (a lone tool note isn't noise). Expansion is controlled by the
|
|
8
|
+
* caller (Ctrl+G toggles globally); non-tool lines always pass through.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Fold runs of tool lines. With `expanded` false, runs of 3+ tool lines
|
|
12
|
+
* collapse to one synthetic summary line carrying `group` metadata.
|
|
13
|
+
*
|
|
14
|
+
* `protectFrom` is a line index (into `lines`) at or after which nothing
|
|
15
|
+
* folds: the "collapse by recency, not kind" rule — the active turn stays
|
|
16
|
+
* fully expanded so nothing about the current decision is hidden, while
|
|
17
|
+
* settled history behind it still compresses. Pass `lines.length` (default)
|
|
18
|
+
* to fold everything, or the index of the last user turn to shield it.
|
|
19
|
+
*/
|
|
20
|
+
export function foldToolGroups(lines, expanded, protectFrom = lines.length) {
|
|
21
|
+
const out = [];
|
|
22
|
+
let run = [];
|
|
23
|
+
const flush = () => {
|
|
24
|
+
if (run.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
const runProtected = run.some((entry) => entry.index >= protectFrom);
|
|
27
|
+
if (expanded || runProtected || run.length < 3) {
|
|
28
|
+
out.push(...run.map((entry) => entry.line));
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
out.push({
|
|
32
|
+
role: 'tool',
|
|
33
|
+
text: `▸ ${run.length} tool calls · Ctrl+G to expand`,
|
|
34
|
+
group: { count: run.length, hidden: run.map((entry) => entry.line.text) },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
run = [];
|
|
38
|
+
};
|
|
39
|
+
lines.forEach((line, index) => {
|
|
40
|
+
if (line.role === 'tool')
|
|
41
|
+
run.push({ line, index });
|
|
42
|
+
else {
|
|
43
|
+
flush();
|
|
44
|
+
out.push(line);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
flush();
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/ui/groups.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,KAA+B,EAAE,QAAiB,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM;IAC3G,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,IAAI,GAAG,GAA6C,EAAE,CAAC;IACvD,MAAM,KAAK,GAAG,GAAS,EAAE;QACvB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;QACrE,IAAI,QAAQ,IAAI,YAAY,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK,GAAG,CAAC,MAAM,gCAAgC;gBACrD,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;IACX,CAAC,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/C,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,KAAK,EAAE,CAAC;IACR,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
import type { MarkdownSegment } from './markdown.js';
|
|
10
|
+
/** Languages we can highlight; anything else renders plain. */
|
|
11
|
+
export declare function highlightable(lang: string | undefined): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Highlight one line of code into styled segments.
|
|
14
|
+
* The line's characters are preserved exactly (segment text concatenates to
|
|
15
|
+
* the input), so callers can still hard-slice long lines by character.
|
|
16
|
+
*/
|
|
17
|
+
export declare function highlightLine(line: string, lang: string): MarkdownSegment[];
|
|
18
|
+
/**
|
|
19
|
+
* Highlight a whole code fence body into per-line segment arrays,
|
|
20
|
+
* hard-slicing lines wider than `width` (segments split by character).
|
|
21
|
+
*/
|
|
22
|
+
export declare function highlightCode(code: readonly string[], lang: string | undefined, width: number): MarkdownSegment[][];
|
|
@@ -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":"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"}
|
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":"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"}
|
|
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,22 +1,36 @@
|
|
|
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
|
-
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Dark truecolor palette — OmniRoute "signal" identity: a teal accent (routing,
|
|
14
|
+
* throughput) over cool slate neutrals, with a distinct sky-blue for user input.
|
|
15
|
+
*/
|
|
16
|
+
const DARK_TRUE = {
|
|
17
|
+
accent: '#2dd4bf',
|
|
13
18
|
muted: '#8b93a7',
|
|
14
|
-
success: '#
|
|
15
|
-
warn: '#
|
|
16
|
-
error: '#
|
|
17
|
-
info: '#
|
|
19
|
+
success: '#8fd66f',
|
|
20
|
+
warn: '#e6b955',
|
|
21
|
+
error: '#f2637e',
|
|
22
|
+
info: '#56b6ff',
|
|
18
23
|
};
|
|
19
|
-
/**
|
|
24
|
+
/** Light truecolor palette — darker text on light backgrounds, same hue roles. */
|
|
25
|
+
const LIGHT_TRUE = {
|
|
26
|
+
accent: '#2f5fd7',
|
|
27
|
+
muted: '#5d6470',
|
|
28
|
+
success: '#3f7d23',
|
|
29
|
+
warn: '#9a6a10',
|
|
30
|
+
error: '#c2344f',
|
|
31
|
+
info: '#0a7ea4',
|
|
32
|
+
};
|
|
33
|
+
/** ANSI-16 fallback shared by both themes (named colors adapt per terminal). */
|
|
20
34
|
const ANSI_16 = {
|
|
21
35
|
accent: 'blue',
|
|
22
36
|
muted: 'gray',
|
|
@@ -30,8 +44,16 @@ export function supportsTrueColor(env = process.env) {
|
|
|
30
44
|
const colorTerm = env.COLORTERM;
|
|
31
45
|
return colorTerm === 'truecolor' || colorTerm === '24bit';
|
|
32
46
|
}
|
|
47
|
+
/** Resolve the theme name: explicit setting wins, then dark default. */
|
|
48
|
+
export function themeName(env = process.env) {
|
|
49
|
+
return env.OMNIHARNESS_THEME === 'light' ? 'light' : 'dark';
|
|
50
|
+
}
|
|
33
51
|
/** Resolve the semantic palette for the current terminal environment. */
|
|
34
52
|
export function palette(env = process.env) {
|
|
35
|
-
|
|
53
|
+
if (env.NO_COLOR !== undefined && env.NO_COLOR !== '')
|
|
54
|
+
return { ...ANSI_16 };
|
|
55
|
+
if (!supportsTrueColor(env))
|
|
56
|
+
return { ...ANSI_16 };
|
|
57
|
+
return { ...(themeName(env) === 'light' ? LIGHT_TRUE : DARK_TRUE) };
|
|
36
58
|
}
|
|
37
59
|
//# 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;;;GAGG;AACH,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;
|