compact-agent 1.33.0 → 1.33.2

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.
@@ -5,10 +5,25 @@ export interface SuggestItem {
5
5
  /** One-line description shown in the second column. */
6
6
  description: string;
7
7
  }
8
+ export interface InlineSuggestOptions {
9
+ /**
10
+ * The styled prompt prefix to repaint at the start of every render
11
+ * (includes any chalk codes). Defaults to " ❯ " (no decorative).
12
+ */
13
+ promptPrefix?: string;
14
+ /**
15
+ * Visible character width of `promptPrefix` (i.e. its length minus
16
+ * any ANSI escape sequences). Used to position the cursor at the
17
+ * end of the filter after a render. Defaults to counting the
18
+ * stripped prefix when omitted.
19
+ */
20
+ promptVisibleLen?: number;
21
+ }
8
22
  export interface InlineSuggestResult {
9
23
  /** True if the user picked an item (Enter); false on Esc / Ctrl+C / Backspace-to-empty. */
10
24
  accepted: boolean;
11
- /** The chosen command, only set when accepted=true. */
25
+ /** The chosen command, only set when accepted=true. Trailing space
26
+ * means "fill but don't submit" (Tab pathway). */
12
27
  command?: string;
13
28
  /** The filter string at exit. Caller restores rl.line to this on
14
29
  * cancel so the user can keep typing the partial command. */
@@ -18,8 +33,8 @@ export interface InlineSuggestResult {
18
33
  * Show the inline suggest dropdown and resolve when the user picks
19
34
  * or cancels.
20
35
  *
21
- * The caller must have already cleared rl.line and refreshed the
22
- * prompt — the cursor should be sitting at the typing position when
23
- * this is called (so DECSC captures the right anchor).
36
+ * The caller should have cleared rl.line and refreshed the prompt
37
+ * before calling we repaint the prompt line ourselves but the
38
+ * cursor needs to be on a stable row (not mid-scroll).
24
39
  */
25
- export declare function inlineSuggest(_rl: RLInterface, items: SuggestItem[], initialFilter?: string): Promise<InlineSuggestResult>;
40
+ export declare function inlineSuggest(_rl: RLInterface, items: SuggestItem[], initialFilter?: string, opts?: InlineSuggestOptions): Promise<InlineSuggestResult>;
@@ -10,57 +10,54 @@
10
10
  * and only paints a few rows of dropdown below the cursor — the
11
11
  * surrounding chat output stays visible.
12
12
  *
13
- * Render strategy
14
- * ───────────────
15
- * On entry we save the current cursor position with DECSC (`\x1b7`).
16
- * That position is the anchor: right after the prompt glyph, before
17
- * the filter chars. Every render:
13
+ * Render strategy — RELATIVE cursor positioning only
14
+ * ──────────────────────────────────────────────────
15
+ * The first cut of this module used DECSC/DECRC (`\x1b7`/`\x1b8`) to
16
+ * pin an anchor at the start of the filter, then restored to it on
17
+ * every render. That fails on Windows PowerShell legacy ConHost as
18
+ * soon as the dropdown content scrolls the terminal — the saved
19
+ * position is stored in *visible* coordinates, so after a scroll it
20
+ * lands on the wrong row and renders pile up below the previous one.
18
21
  *
19
- * 1. Restore to anchor (DECRC `\x1b8`)
20
- * 2. Clear from cursor to end of screen (`\x1b[J`)
21
- * 3. Write the filter text (cursor advances along the prompt row)
22
- * 4. `\r\n` + rows of dropdown content below
23
- * 5. Restore to anchor again, then move right by filter.length so
24
- * the cursor sits at the end of the filter (where the user
25
- * expects to be typing)
22
+ * The fix: track our own row count and use relative cursor moves
23
+ * (`\x1b[<N>A` go up, `\r` col 0, `\x1b[<N>C` advance N cols). Every
24
+ * render writes the FULL prompt line prompt prefix + filter — so
25
+ * we don't need to "skip over" the prefix to reach the filter cell.
26
+ * The caller hands us the prompt prefix (ANSI-styled string + the
27
+ * visible char count) so we can repaint it each frame.
26
28
  *
27
- * The single DECSC/DECRC pair is enough because the anchor never
28
- * moves during the lifetime of the widget. We compute the final
29
- * cursor position from filter.length rather than re-saving.
29
+ * Per-frame sequence:
30
+ * 1. Up `_dropdownRows` lines → back to the filter row
31
+ * 2. `\r` → col 0 of that row
32
+ * 3. `\x1b[J` → clear from cursor to end of screen
33
+ * 4. promptPrefix + filter → repaint the prompt line
34
+ * 5. `\r\n` + each dropdown row → fill the rows below
35
+ * 6. Up `rowsDrawn` + `\r` + right (promptVisLen + filter.length)
36
+ * → cursor settles at end of filter
30
37
  *
31
- * Caveats:
32
- * - Long filter that wraps to a new line breaks the column math.
33
- * Filters are typically < 30 chars so this is acceptable.
34
- * - If the dropdown would extend past the bottom of the terminal,
35
- * the screen scrolls and the saved cursor position becomes
36
- * stale. We cap visible rows to MAX_ROWS to keep this rare.
38
+ * Steps 1–3 only refer to rows we previously printed (which are still
39
+ * on screen, because they came AFTER the prompt). Even if the screen
40
+ * scrolled between renders, relative up-moves still target our own
41
+ * rows correctly because they're contiguous with the cursor.
37
42
  *
38
43
  * Key handling
39
44
  * ────────────
40
45
  * While suggest is active, we detach all non-hotkey `keypress`
41
- * listeners so readline's line editor stops processing input (which
42
- * would otherwise echo chars into rl.line, navigate history on Up,
43
- * and emit 'line' on Enter — fighting our dropdown). We add a raw
44
- * `data` listener that parses bytes directly:
46
+ * listeners so readline's line editor stops processing input. A raw
47
+ * `data` listener parses bytes directly:
45
48
  *
46
49
  * Ctrl+C / Esc cancel
47
50
  * Enter (CR or LF) accept current selection
48
51
  * Up / Down move selection
49
52
  * Backspace delete last filter char; dismiss if empty
53
+ * Tab accept without submitting (sentinel:
54
+ * trailing space on command)
50
55
  * Printable ASCII append to filter, reset selection to 0
51
- *
52
- * Returns `{ accepted, command?, filter }`. The caller is
53
- * responsible for:
54
- * - On accept: stashing the chosen command in
55
- * __crowcoderQueuedInput and emitting 'line' to submit
56
- * - On cancel: restoring rl.line to `filter` so the user can keep
57
- * typing the partial command they had
58
56
  */
59
57
  import { stdin, stdout } from 'node:process';
60
58
  const ANSI = {
61
- cursorSave: '\x1b7',
62
- cursorRestore: '\x1b8',
63
59
  clearToEnd: '\x1b[J',
60
+ clearLine: '\x1b[K',
64
61
  reverse: '\x1b[7m',
65
62
  dim: '\x1b[2m',
66
63
  reset: '\x1b[0m',
@@ -68,25 +65,29 @@ const ANSI = {
68
65
  /** Cap visible dropdown rows. Trades discoverability for keeping the
69
66
  * surrounding chat output visible. Matches Claude Code's behavior. */
70
67
  const MAX_ROWS = 8;
68
+ /** Strip ANSI SGR escape sequences for visible-width math. */
69
+ function ansiVisibleLen(s) {
70
+ return s.replace(/\x1b\[[0-9;]*m/g, '').length;
71
+ }
71
72
  /**
72
73
  * Show the inline suggest dropdown and resolve when the user picks
73
74
  * or cancels.
74
75
  *
75
- * The caller must have already cleared rl.line and refreshed the
76
- * prompt — the cursor should be sitting at the typing position when
77
- * this is called (so DECSC captures the right anchor).
76
+ * The caller should have cleared rl.line and refreshed the prompt
77
+ * before calling we repaint the prompt line ourselves but the
78
+ * cursor needs to be on a stable row (not mid-scroll).
78
79
  */
79
- export async function inlineSuggest(_rl, items, initialFilter = '/') {
80
+ export async function inlineSuggest(_rl, items, initialFilter = '/', opts = {}) {
80
81
  return new Promise((resolve) => {
81
82
  let filter = initialFilter;
82
83
  let selected = 0;
83
- // Save the anchor current cursor position is right after the
84
- // prompt glyph, before the filter text we're about to render.
85
- stdout.write(ANSI.cursorSave);
84
+ // Rows of dropdown printed on the previous frame (NOT including
85
+ // the filter row). The next frame goes up by this many to land
86
+ // back on the filter row.
87
+ let dropdownRows = 0;
88
+ const promptPrefix = opts.promptPrefix ?? ' ❯ ';
89
+ const promptVisLen = opts.promptVisibleLen ?? ansiVisibleLen(promptPrefix);
86
90
  // Defensive: ensure raw mode is on and the stream is flowing.
87
- // readline normally has these set already, but if the parent ever
88
- // pauses stdin or flips raw mode off, our data listener wouldn't
89
- // see typed bytes and the per-char update would silently break.
90
91
  const wasRaw = stdin.isRaw;
91
92
  try {
92
93
  stdin.setRawMode(true);
@@ -96,8 +97,7 @@ export async function inlineSuggest(_rl, items, initialFilter = '/') {
96
97
  // Detach readline's keypress listeners so the line editor doesn't
97
98
  // also process input. The hotkey listener (tagged
98
99
  // __crowcoderHotkey__) stays attached because it has its own
99
- // bail for `pickerActive`; the others (readline's own internal
100
- // emitter, history nav) get pulled.
100
+ // bail for `pickerActive`; the others get pulled.
101
101
  const allKeypress = stdin.listeners('keypress').slice();
102
102
  const togglable = allKeypress.filter((l) => !l.__crowcoderHotkey__);
103
103
  for (const l of togglable)
@@ -125,13 +125,28 @@ export async function inlineSuggest(_rl, items, initialFilter = '/') {
125
125
  // enough space on narrow terminals.
126
126
  const cmdCol = Math.min(20, Math.max(10, shown.reduce((m, it) => Math.max(m, it.command.length), 0)));
127
127
  const termCols = stdout.columns || 80;
128
- // Reserve: 2 (indent) + cmdCol + 2 (gutter) + descMax + safety
129
128
  const descMax = Math.max(20, termCols - cmdCol - 6);
130
- stdout.write(ANSI.cursorRestore); // back to anchor
131
- stdout.write(ANSI.clearToEnd); // wipe filter + dropdown from prev frame
132
- stdout.write(filter); // redraw filter on prompt row
129
+ // ── Reposition to the filter row ──
130
+ // Up by however many dropdown rows we left on screen last
131
+ // frame. Then \r to col 0. Then clear from cursor to end of
132
+ // screen — that erases the rest of the filter row AND every
133
+ // dropdown row below.
134
+ if (dropdownRows > 0) {
135
+ stdout.write(`\x1b[${dropdownRows}A`);
136
+ }
137
+ stdout.write('\r');
138
+ stdout.write(ANSI.clearToEnd);
139
+ // Repaint the prompt line: styled prefix + filter chars. We
140
+ // own this line now (the clear above wiped whatever was here).
141
+ stdout.write(promptPrefix + filter);
142
+ // Draw dropdown rows beneath. Each row gets a "\r\n" prefix
143
+ // so it lands on a fresh line at col 0 regardless of where the
144
+ // previous write left the cursor. (Bare "\n" in raw mode only
145
+ // moves down, not back to col 0.)
146
+ let rowsDrawn = 0;
133
147
  if (shown.length === 0) {
134
148
  stdout.write(`\r\n ${ANSI.dim}(no matches — Backspace to clear, Esc to dismiss)${ANSI.reset}`);
149
+ rowsDrawn = 1;
135
150
  }
136
151
  else {
137
152
  for (let i = 0; i < shown.length; i++) {
@@ -145,129 +160,185 @@ export async function inlineSuggest(_rl, items, initialFilter = '/') {
145
160
  let desc = it.description;
146
161
  if (desc.length > descMax)
147
162
  desc = desc.slice(0, descMax - 1) + '…';
148
- // Selected row: reverse-video the whole row for clear
149
- // contrast (matches Claude Code's highlight). Unselected:
150
- // command in default color, description dim — keeps the
151
- // dropdown visually quiet.
152
163
  const line = isSel
153
164
  ? `${ANSI.reverse} ${cmd} ${desc}${ANSI.reset}`
154
165
  : ` ${cmd} ${ANSI.dim}${desc}${ANSI.reset}`;
155
166
  stdout.write(`\r\n${line}`);
167
+ rowsDrawn++;
156
168
  }
157
169
  if (visible.length > shown.length) {
158
170
  stdout.write(`\r\n ${ANSI.dim}… ${visible.length - shown.length} more · type to narrow${ANSI.reset}`);
171
+ rowsDrawn++;
159
172
  }
160
173
  }
161
- // Cursor back to anchor + advance to end of filter, so the
162
- // user sees the caret where they expect to be typing.
163
- stdout.write(ANSI.cursorRestore);
164
- if (filter.length > 0) {
165
- stdout.write(`\x1b[${filter.length}C`);
174
+ // Cursor back to the end of the filter on the prompt row.
175
+ // After the last write we're at end-of-last-dropdown-row;
176
+ // go up `rowsDrawn` lines, \r to col 0, then advance to the
177
+ // visible column of end-of-filter.
178
+ stdout.write(`\x1b[${rowsDrawn}A\r`);
179
+ const endCol = promptVisLen + filter.length;
180
+ if (endCol > 0) {
181
+ stdout.write(`\x1b[${endCol}C`);
166
182
  }
183
+ dropdownRows = rowsDrawn;
167
184
  }
168
185
  function teardown() {
169
186
  stdin.removeListener('data', onData);
170
187
  for (const l of togglable)
171
188
  stdin.on('keypress', l);
172
- // Restore raw-mode state. (Leaving stdin paused or in cooked
173
- // mode would break readline's next prompt.)
174
189
  try {
175
190
  stdin.setRawMode(wasRaw);
176
191
  }
177
192
  catch { /* noop */ }
178
- // Wipe the dropdown + filter from the screen. The caller
179
- // restores rl.line + redraws the prompt as needed.
180
- stdout.write(ANSI.cursorRestore);
181
- stdout.write(ANSI.clearToEnd);
182
- }
183
- function onData(buf) {
184
- // Ctrl+C — cancel (treated same as Esc; the parent loop sees
185
- // Ctrl+C separately if pressed mid-stream).
186
- if (buf.length === 1 && buf[0] === 0x03) {
187
- teardown();
188
- resolve({ accepted: false, filter });
189
- return;
193
+ // Wipe the dropdown area. We're at end-of-filter; go down +
194
+ // \r + clear-to-end clears everything we drew below the
195
+ // prompt row. Leave the filter on screen — the caller decides
196
+ // whether to overwrite (on accept) or restore rl.line + redraw
197
+ // (on cancel).
198
+ if (dropdownRows > 0) {
199
+ stdout.write('\r\n');
200
+ stdout.write(ANSI.clearToEnd);
201
+ // Cursor is now at col 0 of the row after the filter.
202
+ // Move back up + to end of filter so caller sees a clean
203
+ // single-row state.
204
+ stdout.write(`\x1b[1A\r`);
205
+ const endCol = promptVisLen + filter.length;
206
+ if (endCol > 0) {
207
+ stdout.write(`\x1b[${endCol}C`);
208
+ }
190
209
  }
191
- // Esc (bare) — cancel. Multi-byte chunks starting with 0x1B
192
- // are arrow keys / function keys (handled below).
193
- if (buf.length === 1 && buf[0] === 0x1B) {
194
- teardown();
195
- resolve({ accepted: false, filter });
210
+ dropdownRows = 0;
211
+ }
212
+ function moveSelection(delta) {
213
+ const visible = visibleItems();
214
+ if (visible.length === 0)
196
215
  return;
197
- }
198
- // Enter — accept current selection (if any).
199
- if (buf.length === 1 && (buf[0] === 0x0D || buf[0] === 0x0A)) {
200
- const visible = visibleItems();
201
- if (visible.length === 0)
216
+ selected = (selected + delta + visible.length) % visible.length;
217
+ render();
218
+ }
219
+ function onData(buf) {
220
+ // Defensive wrapper — if any branch throws we don't want the
221
+ // dropdown to silently freeze. Restore listeners so the user
222
+ // can keep typing.
223
+ try {
224
+ // Ctrl+C — cancel.
225
+ if (buf.length === 1 && buf[0] === 0x03) {
226
+ teardown();
227
+ resolve({ accepted: false, filter });
202
228
  return;
203
- const chosen = visible[selected];
204
- teardown();
205
- resolve({ accepted: true, command: chosen.command, filter });
206
- return;
207
- }
208
- // Backspace (DEL 0x7F on POSIX, BS 0x08 on Windows).
209
- if (buf.length === 1 && (buf[0] === 0x7F || buf[0] === 0x08)) {
210
- if (filter.length <= 1) {
211
- // Deleting the only char (typically the leading '/') —
212
- // dismiss the dropdown and let the user have a blank line.
213
- filter = '';
229
+ }
230
+ // Esc (bare) — cancel. Multi-byte chunks starting with 0x1B
231
+ // are arrow keys / function keys (handled below).
232
+ if (buf.length === 1 && buf[0] === 0x1B) {
214
233
  teardown();
215
234
  resolve({ accepted: false, filter });
216
235
  return;
217
236
  }
218
- filter = filter.slice(0, -1);
219
- selected = 0;
220
- render();
221
- return;
222
- }
223
- // Arrow keys: `Esc [ <code>` (3 bytes).
224
- if (buf.length >= 3 && buf[0] === 0x1B && buf[1] === 0x5B) {
225
- const code = buf[2];
226
- if (code === 0x41) { // Up
237
+ // Enter — accept current selection. CR (0x0D) and LF (0x0A)
238
+ // both count; some terminals deliver one, some the other.
239
+ if (buf.length === 1 && (buf[0] === 0x0D || buf[0] === 0x0A)) {
227
240
  const visible = visibleItems();
228
- if (visible.length > 0) {
229
- selected = (selected - 1 + visible.length) % visible.length;
241
+ if (visible.length === 0)
242
+ return;
243
+ const chosen = visible[selected];
244
+ teardown();
245
+ resolve({ accepted: true, command: chosen.command, filter });
246
+ return;
247
+ }
248
+ // Backspace (DEL 0x7F on POSIX, BS 0x08 on Windows).
249
+ //
250
+ // Behavior: shrink the filter by one char. If the filter is
251
+ // already empty we dismiss; otherwise we KEEP THE DROPDOWN
252
+ // OPEN even when the filter shrinks to "" (so the user can
253
+ // see the full list when they backspace past the trigger '/'
254
+ // — previous behavior dismissed on filter='/' which felt
255
+ // jumpy when the user just wanted to clear their typing).
256
+ if (buf.length === 1 && (buf[0] === 0x7F || buf[0] === 0x08)) {
257
+ if (filter.length === 0) {
258
+ teardown();
259
+ resolve({ accepted: false, filter });
260
+ return;
230
261
  }
262
+ filter = filter.slice(0, -1);
263
+ selected = 0;
231
264
  render();
232
265
  return;
233
266
  }
234
- if (code === 0x42) { // Down
235
- const visible = visibleItems();
236
- if (visible.length > 0) {
237
- selected = (selected + 1) % visible.length;
267
+ // Tab navigate to the next item (alias for Down arrow).
268
+ // The previous "Tab = fill but don't submit" sentinel was
269
+ // confusing and never matched user muscle memory; treating
270
+ // Tab as navigation matches what most CLI completers do and
271
+ // pairs naturally with Shift+Tab below.
272
+ if (buf.length === 1 && buf[0] === 0x09) {
273
+ moveSelection(1);
274
+ return;
275
+ }
276
+ // Shift+Tab — navigate to the previous item. Delivered as
277
+ // the CSI back-tab sequence `\x1b[Z` (3 bytes) on most
278
+ // modern terminals including Windows Terminal + ConHost
279
+ // with VT100 enabled.
280
+ if (buf.length === 3 && buf[0] === 0x1B && buf[1] === 0x5B && buf[2] === 0x5A) {
281
+ moveSelection(-1);
282
+ return;
283
+ }
284
+ // Arrow keys: `Esc [ <code>` (3 bytes). Up/Down navigate;
285
+ // Page Up / Page Down skip by 5 (also reachable via the 4-
286
+ // byte forms `\x1b[5~` and `\x1b[6~`).
287
+ if (buf.length >= 3 && buf[0] === 0x1B && buf[1] === 0x5B) {
288
+ const code = buf[2];
289
+ if (code === 0x41) {
290
+ moveSelection(-1);
291
+ return;
292
+ } // Up
293
+ if (code === 0x42) {
294
+ moveSelection(1);
295
+ return;
296
+ } // Down
297
+ if (buf.length >= 4 && (code === 0x35 || code === 0x36) && buf[3] === 0x7E) {
298
+ moveSelection(code === 0x35 ? -5 : 5); // Page Up/Down
299
+ return;
238
300
  }
239
- render();
301
+ // Left/Right/Home/End and other unhandled CSI escapes:
302
+ // swallow them silently rather than letting their bytes
303
+ // fall through to the printable-char branch (which would
304
+ // see e.g. "[D" and start appending '[' + 'D' to the
305
+ // filter). Anything starting with ESC [ is some terminal
306
+ // sequence — definitely not user-intended filter text.
240
307
  return;
241
308
  }
242
- // Left/Right/Home/End/PgUp/PgDn ignore in inline mode.
243
- return;
244
- }
245
- // Tab accept selection but DON'T submit. Useful when the
246
- // command takes args (e.g. /model <name>) and the user wants
247
- // to fill the command then add the arg.
248
- if (buf.length === 1 && buf[0] === 0x09) {
249
- const visible = visibleItems();
250
- if (visible.length === 0)
309
+ // Any other bare control byte (Ctrl+A..Ctrl+Z minus the ones
310
+ // we explicitly handled above): silently ignore. The user
311
+ // expects Ctrl+letter to do SOMETHING, but we don't have a
312
+ // mapping for most of them in this context better to do
313
+ // nothing than to dump a 0x01 into the filter.
314
+ if (buf.length === 1 && buf[0] < 0x20)
251
315
  return;
252
- const chosen = visible[selected];
253
- teardown();
254
- // We signal "accepted, but don't submit" by returning the
255
- // command with a trailing space the caller checks for that.
256
- resolve({ accepted: true, command: chosen.command + ' ', filter });
257
- return;
316
+ // Printable input — extend filter and re-render. Robust
317
+ // against mixed chunks: instead of all-or-nothing, strip
318
+ // ANY non-printable bytes from the chunk and append only
319
+ // the printable subset. This means a chunk like `[h, 0x01]`
320
+ // (an 'h' followed by a stray Ctrl+A) still appends the 'h'
321
+ // instead of dropping the whole chunk.
322
+ //
323
+ // This is the per-char update path: every printable byte
324
+ // lands here and triggers render() with the new filter.
325
+ const s = buf.toString('utf-8');
326
+ const printable = s.replace(/[\x00-\x1F\x7F]/g, '');
327
+ if (printable.length > 0) {
328
+ filter += printable;
329
+ selected = 0;
330
+ render();
331
+ }
258
332
  }
259
- // Printable input — extend filter and re-render. This is the
260
- // per-char update path: every byte the user types lands here
261
- // and immediately triggers render(), which recomputes visible
262
- // items from the current filter and repaints the dropdown.
263
- // Fast typing can deliver a multi-byte chunk in a single data
264
- // event; we treat that as one render rather than one per byte
265
- // (no visible difference, fewer paints).
266
- const s = buf.toString('utf-8');
267
- if (/^[\x20-\x7E]+$/.test(s)) {
268
- filter += s;
269
- selected = 0;
270
- render();
333
+ catch {
334
+ // Don't let a render error wedge the user in the dropdown
335
+ // with a dead handler. Tear down, resolve as cancelled with
336
+ // the current filter, and let the parent restore the prompt.
337
+ try {
338
+ teardown();
339
+ }
340
+ catch { /* noop */ }
341
+ resolve({ accepted: false, filter });
271
342
  }
272
343
  }
273
344
  stdin.on('data', onData);
@@ -1 +1 @@
1
- {"version":3,"file":"inline-suggest.js","sourceRoot":"","sources":["../src/inline-suggest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline-suggest.js","sourceRoot":"","sources":["../src/inline-suggest.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "compact-agent",
3
- "version": "1.33.0",
3
+ "version": "1.33.2",
4
4
  "description": "Terminal AI coding CLI. Speaks any OpenAI-compatible API (OpenRouter, OpenAI, NVIDIA, Ollama, LM Studio, DeepSeek). Modes, slash commands, multi-agent swarming, key-rotation pool, optional voice + screen-reader, sandbox + permission gates, persistent input box, bundled everything-claude-code skills.",
5
5
  "type": "module",
6
6
  "license": "MIT",