omniharness-cli 0.1.30 → 0.1.32

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.
@@ -17,8 +17,16 @@ export declare function deleteAt(value: string, cursor: number): {
17
17
  };
18
18
  /** Move the cursor left/right by `delta` (-1 or +1), clamped to bounds. */
19
19
  export declare function moveHorizontal(value: string, cursor: number, delta: number): number;
20
- /** Move the cursor to the same visual column on an adjacent line. Returns clamped index. */
21
- export declare function moveVertical(value: string, cursor: number, delta: number): number;
20
+ /** Index of the start of the logical line containing `cursor`. */
21
+ export declare function lineStartAt(value: string, cursor: number): number;
22
+ /** Index just past the last char of the logical line containing `cursor`. */
23
+ export declare function lineEndAt(value: string, cursor: number): number;
24
+ /**
25
+ * Move the cursor to the same column on the adjacent rendered row (matching the
26
+ * char-wrapped layout the box renders with). Clamped to the text bounds and to
27
+ * the target row's length.
28
+ */
29
+ export declare function moveVerticalWrapped(value: string, cursor: number, delta: number, width: number): number;
22
30
  /** True when a key-value carries a terminal paste (multi-line or multi-char run). */
23
31
  export declare function isPaste(value: string): boolean;
24
32
  export interface SlashCommand {
@@ -43,7 +51,7 @@ export interface EditorLayout {
43
51
  }
44
52
  /**
45
53
  * Lay a multi-line string out across `width` characters per row (char-wrapping
46
- * exactly so the caret lands on the correct column) and place a `cursorChar`
47
- * caret at the given cursor offset.
54
+ * exactly like `charRows`, so the caret lands on the correct column) and place
55
+ * a caret marker at the given cursor offset.
48
56
  */
49
57
  export declare function layoutEditor(text: string, cursor: number, width: number): EditorLayout;
package/dist/ui/editor.js CHANGED
@@ -12,8 +12,6 @@ export function deleteBefore(value, cursor) {
12
12
  const at = clampIndex(cursor, value);
13
13
  if (at === 0)
14
14
  return { value, cursor: at };
15
- if (value.charCodeAt(at - 1) === 0x0a)
16
- return { value: value.slice(0, at - 1) + value.slice(at), cursor: at - 1 };
17
15
  return { value: value.slice(0, at - 1) + value.slice(at), cursor: at - 1 };
18
16
  }
19
17
  /** Delete the character at `cursor` (delete/forward). */
@@ -27,31 +25,60 @@ export function deleteAt(value, cursor) {
27
25
  export function moveHorizontal(value, cursor, delta) {
28
26
  return clamp(cursor + delta, 0, value.length);
29
27
  }
30
- /** Visual index of the caret on the current line (0-based). */
31
- function columnAt(value, cursor) {
28
+ /** Index of the start of the logical line containing `cursor`. */
29
+ export function lineStartAt(value, cursor) {
32
30
  const at = clampIndex(cursor, value);
33
- const lineStart = value.lastIndexOf('\n', at - 1) + 1;
34
- return at - lineStart;
31
+ return value.lastIndexOf('\n', at - 1) + 1;
35
32
  }
36
- /** Move the cursor to the same visual column on an adjacent line. Returns clamped index. */
37
- export function moveVertical(value, cursor, delta) {
33
+ /** Index just past the last char of the logical line containing `cursor`. */
34
+ export function lineEndAt(value, cursor) {
38
35
  const at = clampIndex(cursor, value);
39
- const target = columnAt(value, at);
40
- if (delta < 0) {
41
- const lineStart = value.lastIndexOf('\n', at - 1);
42
- if (lineStart === -1)
43
- return 0;
44
- const prevStart = value.lastIndexOf('\n', lineStart - 1) + 1;
45
- const upTo = lineStart + 1;
46
- return prevStart + Math.min(target, upTo - prevStart - 1);
36
+ const nl = value.indexOf('\n', at);
37
+ return nl === -1 ? value.length : nl;
38
+ }
39
+ /** Char-wrap `value` into rendered rows at `width`, matching `layoutEditor`. */
40
+ function charRows(value, width) {
41
+ const rows = [];
42
+ const w = Math.max(1, width);
43
+ let offset = 0;
44
+ for (const para of value.split('\n')) {
45
+ for (let s = 0; s < para.length; s += w) {
46
+ rows.push({ start: offset + s, end: offset + Math.min(s + w, para.length) });
47
+ }
48
+ if (para.length === 0)
49
+ rows.push({ start: offset, end: offset });
50
+ offset += para.length + 1; // + newline
51
+ }
52
+ if (rows.length === 0)
53
+ rows.push({ start: 0, end: 0 });
54
+ return rows;
55
+ }
56
+ /**
57
+ * Move the cursor to the same column on the adjacent rendered row (matching the
58
+ * char-wrapped layout the box renders with). Clamped to the text bounds and to
59
+ * the target row's length.
60
+ */
61
+ export function moveVerticalWrapped(value, cursor, delta, width) {
62
+ const at = clampIndex(cursor, value);
63
+ const rows = charRows(value, width);
64
+ let row = rows.length - 1;
65
+ let col = 0;
66
+ for (let r = 0; r < rows.length; r += 1) {
67
+ const span = rows[r];
68
+ if (at >= span.start && at <= span.end) {
69
+ row = r;
70
+ col = at - span.start;
71
+ break;
72
+ }
73
+ if (at < span.start) {
74
+ row = r;
75
+ col = 0;
76
+ break;
77
+ }
47
78
  }
48
- const nextNl = value.indexOf('\n', at);
49
- if (nextNl === -1)
50
- return value.length;
51
- const nextStart = nextNl + 1;
52
- const nextEnd = value.indexOf('\n', nextStart);
53
- const lineEnd = nextEnd === -1 ? value.length : nextEnd;
54
- return nextStart + Math.min(target, lineEnd - nextStart);
79
+ const target = clamp(row + delta, 0, rows.length - 1);
80
+ const span = rows[target];
81
+ return span.start + Math.min(col, span.end - span.start);
55
82
  }
56
83
  function clampIndex(cursor, value) {
57
84
  return clamp(cursor, 0, value.length);
@@ -89,52 +116,30 @@ export function attachmentBlock(attachments) {
89
116
  }
90
117
  /**
91
118
  * Lay a multi-line string out across `width` characters per row (char-wrapping
92
- * exactly so the caret lands on the correct column) and place a `cursorChar`
93
- * caret at the given cursor offset.
119
+ * exactly like `charRows`, so the caret lands on the correct column) and place
120
+ * a caret marker at the given cursor offset.
94
121
  */
95
122
  export function layoutEditor(text, cursor, width) {
96
- const w = Math.max(1, width);
123
+ const rows = charRows(text, width);
97
124
  const at = clamp(cursor, 0, text.length);
98
- const lines = [];
99
- let cursorLine = 0;
100
- let cursorCol = 0;
101
- let placed = false;
102
- const paragraphs = text.split('\n');
103
- let offset = 0;
104
- for (let p = 0; p < paragraphs.length; p += 1) {
105
- const para = paragraphs[p];
106
- for (let start = 0; start <= para.length; start += w) {
107
- const chunk = para.slice(start, start + w);
108
- const chunkStart = offset + start;
109
- const chunkEnd = chunkStart + chunk.length;
110
- if (!placed && at >= chunkStart && at <= chunkEnd && !(at === chunkEnd && para.length > chunkEnd)) {
111
- lines.push(chunk.slice(0, at - chunkStart) + CURSOR + chunk.slice(at - chunkStart));
112
- placed = true;
113
- cursorLine = lines.length - 1;
114
- cursorCol = at - chunkStart;
115
- continue;
116
- }
117
- lines.push(chunk);
125
+ let line = rows.length - 1;
126
+ let col = rows[line].end - rows[line].start;
127
+ for (let r = 0; r < rows.length; r += 1) {
128
+ const span = rows[r];
129
+ if (at >= span.start && at <= span.end && !(at === span.end && r + 1 < rows.length && rows[r + 1].start === at)) {
130
+ line = r;
131
+ col = at - span.start;
132
+ break;
118
133
  }
119
- offset += para.length + 1; // + newline
120
- if (p < paragraphs.length - 1) {
121
- // place caret on an empty trailing row when it sits exactly at a newline
122
- if (!placed && at === offset - 1) {
123
- if (cursorLine < lines.length)
124
- lines[cursorLine] = lines[cursorLine] + (para.length === 0 || para.length % w === 0 ? CURSOR : '');
125
- placed = true;
126
- }
127
- else {
128
- lines.push('');
129
- }
134
+ if (at < span.start) {
135
+ line = r;
136
+ col = 0;
137
+ break;
130
138
  }
131
139
  }
132
- if (!placed) {
133
- lines.push(CURSOR);
134
- cursorLine = lines.length - 1;
135
- cursorCol = 0;
136
- }
137
- return { lines, cursorLine, cursorCol };
140
+ const lines = rows.map((span) => text.slice(span.start, span.end));
141
+ lines[line] = lines[line].slice(0, col) + CURSOR + lines[line].slice(col);
142
+ return { lines, cursorLine: line, cursorCol: col };
138
143
  }
139
144
  const CURSOR = '▍';
140
145
  //# sourceMappingURL=editor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/ui/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/ui/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Keyboard input normalization for the chat.
3
+ *
4
+ * Two problems make raw byte handling necessary instead of Ink's `useInput`:
5
+ *
6
+ * 1. Windows ConPTY sends DEL (0x7f) for the Backspace key. Ink labels 0x7f
7
+ * as `delete`, so an app that trusts `key.delete` deletes forward — a no-op
8
+ * at the end of the line. We intercept 0x7f on raw stdin and treat it as
9
+ * backspace, while the real Delete key (`ESC[3~` / kitty `ESC[3u`) keeps
10
+ * deleting forward.
11
+ *
12
+ * 2. The kitty keyboard protocol (pushed via `CSI > 1 u`) re-encodes Enter,
13
+ * Tab, Backspace, Escape, arrows, Home/End, Delete and ctrl+letters as
14
+ * `CSI keycode ; modifier u` sequences. Ink 5.x misparses most of them:
15
+ * some arrive as empty input with bogus ctrl/meta flags, others as raw text
16
+ * like `[13;2u`. `parseRawKey` recovers their meaning from the raw chunk.
17
+ *
18
+ * Plain text, paste and legacy (non-kitty) keys like `\r`, `\n`, `\x08`,
19
+ * `ESC[A` arrows and ctrl+letters are left to Ink's `useInput`.
20
+ */
21
+ export type KeyAction = {
22
+ kind: 'submit';
23
+ } | {
24
+ kind: 'newline';
25
+ } | {
26
+ kind: 'backspace';
27
+ } | {
28
+ kind: 'delete';
29
+ } | {
30
+ kind: 'left';
31
+ } | {
32
+ kind: 'right';
33
+ } | {
34
+ kind: 'up';
35
+ } | {
36
+ kind: 'down';
37
+ } | {
38
+ kind: 'home';
39
+ } | {
40
+ kind: 'end';
41
+ } | {
42
+ kind: 'escape';
43
+ } | {
44
+ kind: 'tab';
45
+ } | {
46
+ kind: 'ctrlC';
47
+ } | {
48
+ kind: 'ctrlM';
49
+ } | {
50
+ kind: 'ctrlO';
51
+ };
52
+ /** Enable the kitty keyboard protocol (disambiguate escape codes). */
53
+ export declare const KITTY_PUSH = "\u001B[>1u";
54
+ /** Restore the previous keyboard state. */
55
+ export declare const KITTY_POP = "\u001B[<1u";
56
+ /** Query the terminal for its current progressive-enhancement flags. */
57
+ export declare const KITTY_QUERY = "\u001B[?u";
58
+ /**
59
+ * True when `chunk` is the terminal's answer to the kitty-protocol query
60
+ * (`ESC[? flags u`), confirming the protocol is actually active. Terminals
61
+ * without kitty support ignore the query and answer nothing.
62
+ */
63
+ export declare function isKittyQueryResponse(chunk: string): boolean;
64
+ /**
65
+ * Map a raw stdin chunk to a semantic key action, or null when it is plain
66
+ * text or a key `useInput` already handles correctly (legacy arrows, `\r`,
67
+ * `\n`, `\x08`, ctrl+letters, …).
68
+ */
69
+ export declare function parseRawKey(chunk: string): KeyAction | null;
70
+ /**
71
+ * True when `value` is a CSI-u encoded key or protocol response (kitty key
72
+ * events, push/pop echoes, query answers), never plain text to insert.
73
+ */
74
+ export declare function isEncodedKey(value: string): boolean;
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Keyboard input normalization for the chat.
3
+ *
4
+ * Two problems make raw byte handling necessary instead of Ink's `useInput`:
5
+ *
6
+ * 1. Windows ConPTY sends DEL (0x7f) for the Backspace key. Ink labels 0x7f
7
+ * as `delete`, so an app that trusts `key.delete` deletes forward — a no-op
8
+ * at the end of the line. We intercept 0x7f on raw stdin and treat it as
9
+ * backspace, while the real Delete key (`ESC[3~` / kitty `ESC[3u`) keeps
10
+ * deleting forward.
11
+ *
12
+ * 2. The kitty keyboard protocol (pushed via `CSI > 1 u`) re-encodes Enter,
13
+ * Tab, Backspace, Escape, arrows, Home/End, Delete and ctrl+letters as
14
+ * `CSI keycode ; modifier u` sequences. Ink 5.x misparses most of them:
15
+ * some arrive as empty input with bogus ctrl/meta flags, others as raw text
16
+ * like `[13;2u`. `parseRawKey` recovers their meaning from the raw chunk.
17
+ *
18
+ * Plain text, paste and legacy (non-kitty) keys like `\r`, `\n`, `\x08`,
19
+ * `ESC[A` arrows and ctrl+letters are left to Ink's `useInput`.
20
+ */
21
+ /** Enable the kitty keyboard protocol (disambiguate escape codes). */
22
+ export const KITTY_PUSH = '\x1b[>1u';
23
+ /** Restore the previous keyboard state. */
24
+ export const KITTY_POP = '\x1b[<1u';
25
+ /** Query the terminal for its current progressive-enhancement flags. */
26
+ export const KITTY_QUERY = '\x1b[?u';
27
+ /**
28
+ * True when `chunk` is the terminal's answer to the kitty-protocol query
29
+ * (`ESC[? flags u`), confirming the protocol is actually active. Terminals
30
+ * without kitty support ignore the query and answer nothing.
31
+ */
32
+ export function isKittyQueryResponse(chunk) {
33
+ return /^\x1b\[\?\d+(?:;\d+)*u$/.test(chunk);
34
+ }
35
+ /**
36
+ * Map a raw stdin chunk to a semantic key action, or null when it is plain
37
+ * text or a key `useInput` already handles correctly (legacy arrows, `\r`,
38
+ * `\n`, `\x08`, ctrl+letters, …).
39
+ */
40
+ export function parseRawKey(chunk) {
41
+ if (chunk === '\x7f')
42
+ return { kind: 'backspace' }; // Windows ConPTY Backspace
43
+ if (!chunk.startsWith('\x1b'))
44
+ return null;
45
+ const body = chunk.slice(1);
46
+ // Legacy sequences Ink drops from its Key object or mislabels.
47
+ switch (body) {
48
+ case 'H':
49
+ case '[H':
50
+ case 'OH':
51
+ case '[1~':
52
+ case '[7~': return { kind: 'home' };
53
+ case 'F':
54
+ case '[F':
55
+ case 'OF':
56
+ case '[4~':
57
+ case '[8~': return { kind: 'end' };
58
+ case '[3~': return { kind: 'delete' };
59
+ case '[27u': return { kind: 'escape' };
60
+ case '[9u':
61
+ case '[9;2u':
62
+ case '[9;5u': return { kind: 'tab' };
63
+ }
64
+ // Kitty protocol: CSI keycode ; modifier u.
65
+ const kitty = /^\[(\d+)(?:;(\d+))?u$/.exec(body);
66
+ if (kitty) {
67
+ const code = Number(kitty[1]);
68
+ const modifier = kitty[2] === undefined ? 1 : Number(kitty[2]);
69
+ if (code === 13)
70
+ return modifier === 1 ? { kind: 'submit' } : { kind: 'newline' }; // Enter / Shift+Ctrl+Alt+Enter
71
+ if (code === 27)
72
+ return { kind: 'escape' };
73
+ if (code === 9)
74
+ return { kind: 'tab' };
75
+ if (code === 127)
76
+ return { kind: 'backspace' };
77
+ if (code === 3)
78
+ return { kind: 'delete' };
79
+ if (code === 11)
80
+ return { kind: 'left' };
81
+ if (code === 12)
82
+ return { kind: 'right' };
83
+ if (code === 7)
84
+ return { kind: 'up' };
85
+ if (code === 8)
86
+ return { kind: 'down' };
87
+ if (code === 1)
88
+ return { kind: 'home' };
89
+ if (code === 4)
90
+ return { kind: 'end' };
91
+ if (code === 99 && modifier === 5)
92
+ return { kind: 'ctrlC' }; // ctrl+c
93
+ if (code === 109 && modifier === 5)
94
+ return { kind: 'ctrlM' }; // ctrl+m
95
+ if (code === 111 && modifier === 5)
96
+ return { kind: 'ctrlO' }; // ctrl+o
97
+ return null; // other kitty-encoded keys (letters, F-keys, …) — not bound
98
+ }
99
+ return null;
100
+ }
101
+ /**
102
+ * True when `value` is a CSI-u encoded key or protocol response (kitty key
103
+ * events, push/pop echoes, query answers), never plain text to insert.
104
+ */
105
+ export function isEncodedKey(value) {
106
+ return /^\[\d+(?:;\d+)*u$|^\[[><?]\d+(?:;\d+)*u$/.test(value);
107
+ }
108
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/ui/keys.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,10 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useMemo, useRef, useState } from 'react';
3
- import { Box, Text, useApp, useInput, useStdout } from 'ink';
3
+ import { Box, Text, useApp, useInput, useStdin, useStdout } from 'ink';
4
4
  import Spinner from 'ink-spinner';
5
+ import { deleteAt, deleteBefore, insertAt, layoutEditor, lineEndAt, lineStartAt, moveHorizontal, moveVerticalWrapped, normalizePaste } from './editor.js';
5
6
  import { renderMarkdown } from './markdown.js';
7
+ import { KITTY_POP, KITTY_PUSH, KITTY_QUERY, isEncodedKey, isKittyQueryResponse, parseRawKey } from './keys.js';
6
8
  const MODE_SEQ = ['plan', 'build', 'research'];
7
9
  const clamp = (value, min, max) => Math.min(max, Math.max(min, value));
8
10
  const widthOf = (stdout) => Math.max(48, stdout.columns ?? 80);
@@ -63,8 +65,10 @@ function SegmentText({ segments, role }) {
63
65
  export function TerminalInterface({ engine }) {
64
66
  const { exit } = useApp();
65
67
  const { stdout } = useStdout();
68
+ const { stdin } = useStdin();
66
69
  const [width, setWidth] = useState(() => widthOf(stdout));
67
- const [input, setInput] = useState('');
70
+ const [edit, setEdit] = useState({ value: '', cursor: 0 });
71
+ const inputWidth = Math.max(16, width - 12);
68
72
  const [lines, setLines] = useState([]);
69
73
  const [busy, setBusy] = useState(false);
70
74
  const [error, setError] = useState();
@@ -78,9 +82,29 @@ export function TerminalInterface({ engine }) {
78
82
  const approvalResolve = useRef(null);
79
83
  const [liveThink, setLiveThink] = useState('');
80
84
  const [liveAnswer, setLiveAnswer] = useState('');
85
+ const [kitty, setKitty] = useState(null);
81
86
  useEffect(() => {
82
87
  const onResize = () => setWidth(widthOf(stdout));
83
88
  stdout.on('resize', onResize);
89
+ stdout.write(KITTY_PUSH);
90
+ let kittyTimer;
91
+ // Terminals with kitty support answer the query (ESC[? flags u); others ignore it.
92
+ const onKitty = (chunk) => {
93
+ if (!isKittyQueryResponse(chunk.toString()))
94
+ return;
95
+ if (kittyTimer)
96
+ clearTimeout(kittyTimer);
97
+ stdin?.off('data', onKitty);
98
+ setKitty(true);
99
+ };
100
+ if (stdin) {
101
+ stdin.on('data', onKitty);
102
+ kittyTimer = setTimeout(() => { setKitty(false); stdin.off('data', onKitty); }, 300);
103
+ stdout.write(KITTY_QUERY);
104
+ }
105
+ else {
106
+ setKitty(false);
107
+ }
84
108
  const unsubscribe = engine.subscribe((event) => {
85
109
  switch (event.type) {
86
110
  case 'thinking_delta':
@@ -113,10 +137,18 @@ export function TerminalInterface({ engine }) {
113
137
  approvalResolve.current = resolve;
114
138
  setApproval(action);
115
139
  }));
116
- const onUnload = () => engine.stop();
140
+ const onUnload = () => { engine.stop(); stdout.write(KITTY_POP); };
117
141
  process.on('exit', onUnload);
118
- return () => { stdout.off('resize', onResize); unsubscribe(); process.off('exit', onUnload); };
119
- }, [engine, stdout]);
142
+ return () => {
143
+ if (kittyTimer)
144
+ clearTimeout(kittyTimer);
145
+ stdin?.off('data', onKitty);
146
+ stdout.off('resize', onResize);
147
+ unsubscribe();
148
+ process.off('exit', onUnload);
149
+ stdout.write(KITTY_POP);
150
+ };
151
+ }, [engine, stdout, stdin]);
120
152
  const loadCombos = async () => {
121
153
  setComboError(undefined);
122
154
  try {
@@ -136,79 +168,206 @@ export function TerminalInterface({ engine }) {
136
168
  engine.state.mode = next;
137
169
  setLines((current) => [...current, { role: 'tool', text: `mode → ${next}`, toolName: 'mode' }]);
138
170
  };
171
+ const approve = (ok) => {
172
+ const resolve = approvalResolve.current;
173
+ setApproval(null);
174
+ approvalResolve.current = null;
175
+ resolve?.(ok);
176
+ };
177
+ /** Apply a semantic key action, honoring the active overlay (approval, picker). */
178
+ const applyAction = (action) => {
179
+ if (approval && action.kind !== 'submit' && action.kind !== 'escape')
180
+ return;
181
+ if (pickerOpen && action.kind !== 'submit' && action.kind !== 'escape' && action.kind !== 'up' && action.kind !== 'down')
182
+ return;
183
+ switch (action.kind) {
184
+ case 'submit':
185
+ if (approval) {
186
+ approve(true);
187
+ return;
188
+ }
189
+ if (pickerOpen) {
190
+ const selected = combos[comboIndex];
191
+ if (selected) {
192
+ engine.selectModel(selected);
193
+ setPickerOpen(false);
194
+ setLines((current) => [...current, { role: 'assistant', text: `combo selected: ${selected} (saved as default)` }]);
195
+ }
196
+ return;
197
+ }
198
+ {
199
+ const prompt = edit.value.trim();
200
+ if (!prompt || busy)
201
+ return;
202
+ setEdit({ value: '', cursor: 0 });
203
+ setBusy(true);
204
+ setError(undefined);
205
+ setLines((current) => [...current, { role: 'user', text: prompt }]);
206
+ void engine.run(prompt).then(() => {
207
+ /* answer is streamed live via text_delta / text events */
208
+ }).catch((reason) => {
209
+ const message = reason instanceof Error ? reason.message : String(reason);
210
+ setError(message);
211
+ setLines((current) => [...current, { role: 'error', text: message }]);
212
+ }).finally(() => setBusy(false));
213
+ }
214
+ return;
215
+ case 'escape':
216
+ if (approval) {
217
+ approve(false);
218
+ return;
219
+ }
220
+ if (pickerOpen) {
221
+ setPickerOpen(false);
222
+ return;
223
+ }
224
+ return;
225
+ case 'ctrlC':
226
+ exit();
227
+ return;
228
+ case 'ctrlM':
229
+ cycleMode();
230
+ return;
231
+ case 'ctrlO':
232
+ setPickerOpen(true);
233
+ void loadCombos();
234
+ return;
235
+ case 'up':
236
+ if (pickerOpen) {
237
+ setComboIndex((current) => clamp(current - 1, 0, Math.max(0, combos.length - 1)));
238
+ return;
239
+ }
240
+ setEdit((current) => ({ ...current, cursor: moveVerticalWrapped(current.value, current.cursor, -1, inputWidth) }));
241
+ return;
242
+ case 'down':
243
+ if (pickerOpen) {
244
+ setComboIndex((current) => clamp(current + 1, 0, Math.max(0, combos.length - 1)));
245
+ return;
246
+ }
247
+ setEdit((current) => ({ ...current, cursor: moveVerticalWrapped(current.value, current.cursor, +1, inputWidth) }));
248
+ return;
249
+ case 'left':
250
+ setEdit((current) => ({ ...current, cursor: moveHorizontal(current.value, current.cursor, -1) }));
251
+ return;
252
+ case 'right':
253
+ setEdit((current) => ({ ...current, cursor: moveHorizontal(current.value, current.cursor, +1) }));
254
+ return;
255
+ case 'home':
256
+ setEdit((current) => ({ ...current, cursor: lineStartAt(current.value, current.cursor) }));
257
+ return;
258
+ case 'end':
259
+ setEdit((current) => ({ ...current, cursor: lineEndAt(current.value, current.cursor) }));
260
+ return;
261
+ case 'newline':
262
+ setEdit((current) => insertAt(current.value, current.cursor, '\n'));
263
+ return;
264
+ case 'backspace':
265
+ setEdit((current) => deleteBefore(current.value, current.cursor));
266
+ return;
267
+ case 'delete':
268
+ setEdit((current) => deleteAt(current.value, current.cursor));
269
+ return;
270
+ case 'tab':
271
+ setEdit((current) => insertAt(current.value, current.cursor, '\t'));
272
+ return;
273
+ }
274
+ };
275
+ // Legacy keys Ink parses correctly (\r, \n, \x08, ESC[A arrows, ctrl+letters) plus text and paste.
139
276
  useInput((value, key) => {
140
277
  if (approval) {
141
- const resolve = approvalResolve.current;
142
- if (value === 'y' || value === 'Y' || key.return) {
143
- setApproval(null);
144
- approvalResolve.current = null;
145
- resolve?.(true);
146
- }
147
- else if (value === 'n' || value === 'N' || key.escape) {
148
- setApproval(null);
149
- approvalResolve.current = null;
150
- resolve?.(false);
151
- }
278
+ if (value === 'y' || value === 'Y' || key.return)
279
+ applyAction({ kind: 'submit' });
280
+ else if (value === 'n' || value === 'N' || key.escape)
281
+ applyAction({ kind: 'escape' });
152
282
  return;
153
283
  }
154
284
  if (key.ctrl && value === 'c') {
155
- exit();
285
+ applyAction({ kind: 'ctrlC' });
156
286
  return;
157
287
  }
158
288
  if (key.ctrl && value.toLowerCase() === 'm') {
159
- cycleMode();
289
+ applyAction({ kind: 'ctrlM' });
160
290
  return;
161
291
  }
162
292
  if (key.ctrl && value.toLowerCase() === 'o') {
163
- setPickerOpen(true);
164
- void loadCombos();
293
+ applyAction({ kind: 'ctrlO' });
165
294
  return;
166
295
  }
167
296
  if (pickerOpen) {
168
297
  if (key.escape) {
169
- setPickerOpen(false);
298
+ applyAction({ kind: 'escape' });
170
299
  return;
171
300
  }
172
301
  if (key.upArrow || value === 'k') {
173
- setComboIndex((current) => clamp(current - 1, 0, Math.max(0, combos.length - 1)));
302
+ applyAction({ kind: 'up' });
174
303
  return;
175
304
  }
176
305
  if (key.downArrow || value === 'j') {
177
- setComboIndex((current) => clamp(current + 1, 0, Math.max(0, combos.length - 1)));
306
+ applyAction({ kind: 'down' });
178
307
  return;
179
308
  }
180
- if (key.return && combos.length > 0) {
181
- const selected = combos[comboIndex];
182
- engine.selectModel(selected);
183
- setPickerOpen(false);
184
- setLines((current) => [...current, { role: 'assistant', text: `combo selected: ${selected} (saved as default)` }]);
309
+ if (key.return) {
310
+ applyAction({ kind: 'submit' });
311
+ return;
185
312
  }
186
313
  return;
187
314
  }
315
+ if (key.tab) {
316
+ applyAction({ kind: 'tab' });
317
+ return;
318
+ }
188
319
  if (key.return) {
189
- const prompt = input.trim();
190
- if (!prompt || busy)
191
- return;
192
- setInput('');
193
- setBusy(true);
194
- setError(undefined);
195
- setLines((current) => [...current, { role: 'user', text: prompt }]);
196
- void engine.run(prompt).then(() => {
197
- /* answer is streamed live via text_delta / text events */
198
- }).catch((reason) => {
199
- const message = reason instanceof Error ? reason.message : String(reason);
200
- setError(message);
201
- setLines((current) => [...current, { role: 'error', text: message }]);
202
- }).finally(() => setBusy(false));
320
+ applyAction({ kind: 'submit' });
321
+ return;
322
+ }
323
+ if (value === '\n') {
324
+ applyAction({ kind: 'newline' });
325
+ return;
326
+ }
327
+ if (key.backspace) {
328
+ applyAction({ kind: 'backspace' });
329
+ return;
330
+ }
331
+ if (key.escape) {
332
+ applyAction({ kind: 'escape' });
333
+ return;
334
+ }
335
+ if (key.upArrow) {
336
+ applyAction({ kind: 'up' });
203
337
  return;
204
338
  }
205
- if (key.backspace || key.delete) {
206
- setInput((current) => current.slice(0, -1));
339
+ if (key.downArrow) {
340
+ applyAction({ kind: 'down' });
207
341
  return;
208
342
  }
209
- if (!key.ctrl && !key.meta && value)
210
- setInput((current) => current + value);
343
+ if (key.leftArrow) {
344
+ applyAction({ kind: 'left' });
345
+ return;
346
+ }
347
+ if (key.rightArrow) {
348
+ applyAction({ kind: 'right' });
349
+ return;
350
+ }
351
+ // 0x7f is Backspace on Windows ConPTY and the kitty-encoded keys are owned by the raw stdin listener.
352
+ if (value.length > 1 && !isEncodedKey(value)) {
353
+ setEdit((current) => insertAt(current.value, current.cursor, normalizePaste(value)));
354
+ return;
355
+ }
356
+ if (!key.ctrl && !key.meta && value && !isEncodedKey(value))
357
+ setEdit((current) => insertAt(current.value, current.cursor, value));
211
358
  });
359
+ // Raw stdin: disambiguate Windows Backspace (0x7f), the real Delete key, and kitty-protocol keys.
360
+ useEffect(() => {
361
+ if (!stdin)
362
+ return;
363
+ const onData = (chunk) => {
364
+ const action = parseRawKey(chunk.toString());
365
+ if (action)
366
+ applyAction(action);
367
+ };
368
+ stdin.on('data', onData);
369
+ return () => { stdin.off('data', onData); };
370
+ }, [stdin, applyAction]);
212
371
  const metrics = engine.client.snapshotMetrics();
213
372
  const compression = metrics.compression.inputTokens > 0 ? `${Math.round((1 - metrics.compression.ratio) * 100)}% ${metrics.compression.strategy.toUpperCase()}` : '—';
214
373
  const contentWidth = Math.max(20, width - 8);
@@ -228,6 +387,8 @@ export function TerminalInterface({ engine }) {
228
387
  const liveThinkLines = useMemo(() => renderMarkdown(liveThink, contentWidth), [liveThink, contentWidth]);
229
388
  const liveAnswerLines = useMemo(() => renderMarkdown(liveAnswer, contentWidth), [liveAnswer, contentWidth]);
230
389
  return _jsxs(Box, { flexDirection: "column", width: width, height: stdout.rows ?? 24, paddingX: 2, children: [_jsxs(Box, { justifyContent: "space-between", paddingY: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["OMNIHARNESS ", _jsxs(Text, { dimColor: true, children: ["\u00B7 ", mode, " mode"] })] }), _jsx(Text, { dimColor: true, children: "OMNIROUTE :20128" })] }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [lines.length === 0 && _jsxs(Box, { flexDirection: "column", marginTop: 2, children: [_jsx(Text, { color: "cyan", bold: true, children: "Ready when you are." }), _jsx(Text, { dimColor: true, children: "Describe the work. OmniHarness routes it through your OmniRoute account. Ctrl+M cycles plan \u00B7 build \u00B7 research." })] }), rows.map((row, index) => row.first
231
- ? _jsxs(Box, { flexDirection: "column", marginTop: index === 0 ? 0 : 1, children: [_jsx(Text, { color: colorFor(row.role), bold: true, children: row.label }), _jsx(SegmentText, { segments: row.segments, role: row.role })] }, index) : _jsx(SegmentText, { segments: row.segments, role: row.role }, index)), liveThink !== '' && _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "think" }), liveThinkLines.map((segments, index) => _jsx(SegmentText, { segments: segments, role: "thinking" }, index))] }), liveAnswer !== '' && _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "harness" }), liveAnswerLines.map((segments, index) => _jsx(SegmentText, { segments: segments, role: "assistant" }, index))] }), engine.state.preview && _jsxs(Text, { color: "green", dimColor: true, children: ["preview live \u00B7 ", engine.state.preview.url] }), busy && _jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " working in ", mode, " mode on ", engine.state.activeModel] })] }), pickerOpen && _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, children: [_jsx(Text, { bold: true, color: "magenta", children: "Choose an OmniRoute combo" }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 / j k navigate \u00B7 enter select \u00B7 esc close" }), comboError && _jsx(Text, { color: "red", children: clip(comboError, contentWidth) }), combos.length === 0 && !comboError && _jsx(Text, { dimColor: true, children: "No account combos returned by OmniRoute." }), combos.map((combo, index) => _jsxs(Text, { color: index === comboIndex ? 'cyan' : undefined, children: [index === comboIndex ? '› ' : ' ', combo, combo === engine.state.activeModel ? ' ✓' : ''] }, combo))] }), approval && _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Approve ", approval.tool, "?"] }), _jsxs(Text, { dimColor: true, children: ["args: ", clip(typeof approval.input === 'string' ? approval.input : JSON.stringify(approval.input), contentWidth)] }), _jsx(Text, { dimColor: true, children: "y approve \u00B7 n deny" })] }), _jsxs(Box, { borderStyle: "round", borderColor: error ? 'red' : 'cyan', paddingX: 1, marginTop: 1, children: [_jsx(Text, { color: "cyan", children: "\u203A " }), _jsx(Text, { children: clip(input || 'type a task and press enter', contentWidth) })] }), _jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { dimColor: true, children: "Ctrl+O combos \u00B7 Ctrl+M mode \u00B7 Ctrl+C quit" }), _jsxs(Text, { dimColor: true, children: [mode, " \u00B7 ", engine.state.activeModel, " \u00B7 compression ", compression] })] })] });
390
+ ? _jsxs(Box, { flexDirection: "column", marginTop: index === 0 ? 0 : 1, children: [_jsx(Text, { color: colorFor(row.role), bold: true, children: row.label }), _jsx(SegmentText, { segments: row.segments, role: row.role })] }, index) : _jsx(SegmentText, { segments: row.segments, role: row.role }, index)), liveThink !== '' && _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: "think" }), liveThinkLines.map((segments, index) => _jsx(SegmentText, { segments: segments, role: "thinking" }, index))] }), liveAnswer !== '' && _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "harness" }), liveAnswerLines.map((segments, index) => _jsx(SegmentText, { segments: segments, role: "assistant" }, index))] }), engine.state.preview && _jsxs(Text, { color: "green", dimColor: true, children: ["preview live \u00B7 ", engine.state.preview.url] }), busy && _jsxs(Text, { color: "cyan", children: [_jsx(Spinner, { type: "dots" }), " working in ", mode, " mode on ", engine.state.activeModel] })] }), pickerOpen && _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 2, paddingY: 1, children: [_jsx(Text, { bold: true, color: "magenta", children: "Choose an OmniRoute combo" }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 / j k navigate \u00B7 enter select \u00B7 esc close" }), comboError && _jsx(Text, { color: "red", children: clip(comboError, contentWidth) }), combos.length === 0 && !comboError && _jsx(Text, { dimColor: true, children: "No account combos returned by OmniRoute." }), combos.map((combo, index) => _jsxs(Text, { color: index === comboIndex ? 'cyan' : undefined, children: [index === comboIndex ? '› ' : ' ', combo, combo === engine.state.activeModel ? ' ✓' : ''] }, combo))] }), approval && _jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Approve ", approval.tool, "?"] }), _jsxs(Text, { dimColor: true, children: ["args: ", clip(typeof approval.input === 'string' ? approval.input : JSON.stringify(approval.input), contentWidth)] }), _jsx(Text, { dimColor: true, children: "y approve \u00B7 n deny" })] }), _jsx(Box, { borderStyle: "round", borderColor: error ? 'red' : 'cyan', paddingX: 1, marginTop: 1, flexDirection: "column", children: edit.value === ''
391
+ ? _jsxs(Text, { color: "cyan", children: ["\u203A ", _jsx(Text, { dimColor: true, children: "type a task and press enter" })] })
392
+ : layoutEditor(edit.value, edit.cursor, inputWidth).lines.map((text, index) => _jsxs(Text, { color: "cyan", children: [index === 0 ? '› ' : ' ', text] }, index)) }), kitty !== null && _jsx(Text, { dimColor: true, children: kitty ? 'kitty protocol active — Shift+Enter makes a new line' : 'this terminal can\'t distinguish Shift+Enter from Enter — use Ctrl+J for a new line' }), _jsxs(Box, { justifyContent: "space-between", children: [_jsx(Text, { dimColor: true, children: "Enter send \u00B7 Shift+Enter / Ctrl+J new line \u00B7 \u2190\u2192\u2191\u2193 move \u00B7 Ctrl+O combos \u00B7 Ctrl+M mode \u00B7 Ctrl+C quit" }), _jsxs(Text, { dimColor: true, children: [mode, " \u00B7 ", engine.state.activeModel, " \u00B7 compression ", compression] })] })] });
232
393
  }
233
394
  //# sourceMappingURL=terminalInterface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"terminalInterface.js","sourceRoot":"","sources":["../../src/ui/terminalInterface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminalInterface.js","sourceRoot":"","sources":["../../src/ui/terminalInterface.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniharness-cli",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "OmniHarness — local-first agent orchestration harness for OmniRoute.",
5
5
  "license": "MIT",
6
6
  "type": "module",