chivgent 1.1.0 → 1.1.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.
Files changed (52) hide show
  1. package/README.md +34 -11
  2. package/README.zh-CN.md +34 -11
  3. package/dist/auth/oauth.js.map +1 -1
  4. package/dist/cli-options.d.ts +3 -1
  5. package/dist/cli-options.d.ts.map +1 -1
  6. package/dist/cli-options.js +10 -1
  7. package/dist/cli-options.js.map +1 -1
  8. package/dist/cli-runtime.js +1 -1
  9. package/dist/cli-runtime.js.map +1 -1
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +75 -27
  13. package/dist/cli.js.map +1 -1
  14. package/dist/permissions.d.ts +10 -0
  15. package/dist/permissions.d.ts.map +1 -1
  16. package/dist/permissions.js +8 -0
  17. package/dist/permissions.js.map +1 -1
  18. package/dist/repl.d.ts +1 -0
  19. package/dist/repl.d.ts.map +1 -1
  20. package/dist/repl.js +142 -12
  21. package/dist/repl.js.map +1 -1
  22. package/dist/runtime/desktop-runtime.d.ts +23 -0
  23. package/dist/runtime/desktop-runtime.d.ts.map +1 -0
  24. package/dist/runtime/desktop-runtime.js +63 -0
  25. package/dist/runtime/desktop-runtime.js.map +1 -0
  26. package/dist/session.d.ts +2 -0
  27. package/dist/session.d.ts.map +1 -1
  28. package/dist/session.js +4 -0
  29. package/dist/session.js.map +1 -1
  30. package/dist/tui/editor-input.d.ts +18 -0
  31. package/dist/tui/editor-input.d.ts.map +1 -1
  32. package/dist/tui/editor-input.js +226 -29
  33. package/dist/tui/editor-input.js.map +1 -1
  34. package/dist/tui/editor.d.ts +11 -1
  35. package/dist/tui/editor.d.ts.map +1 -1
  36. package/dist/tui/editor.js +102 -29
  37. package/dist/tui/editor.js.map +1 -1
  38. package/dist/tui/provider-picker.d.ts +28 -0
  39. package/dist/tui/provider-picker.d.ts.map +1 -0
  40. package/dist/tui/provider-picker.js +131 -0
  41. package/dist/tui/provider-picker.js.map +1 -0
  42. package/dist/tui/selection.d.ts +24 -0
  43. package/dist/tui/selection.d.ts.map +1 -0
  44. package/dist/tui/selection.js +19 -0
  45. package/dist/tui/selection.js.map +1 -0
  46. package/dist/tui/slash.js +1 -1
  47. package/dist/tui/slash.js.map +1 -1
  48. package/dist/tui/welcome.d.ts +5 -4
  49. package/dist/tui/welcome.d.ts.map +1 -1
  50. package/dist/tui/welcome.js +13 -23
  51. package/dist/tui/welcome.js.map +1 -1
  52. package/package.json +1 -1
@@ -199,22 +199,66 @@ export class EditorDocument {
199
199
  };
200
200
  }
201
201
  }
202
+ const PLACEHOLDER = "Ask chivgent to do anything";
203
+ function boxRule(left, right, width) {
204
+ return `${left}${"─".repeat(Math.max(0, width - displayWidth(left) - displayWidth(right)))}${right}`;
205
+ }
206
+ function closeBox(left, inner, innerWidth, right) {
207
+ return `${left}${inner}${" ".repeat(Math.max(0, innerWidth - displayWidth(inner)))}${right}`;
208
+ }
209
+ /**
210
+ * Provider and model sit on the left. When the line is tight, the mode hint
211
+ * stays whole and the model name is the side that shrinks.
212
+ */
213
+ function composeFooter(identity, status, columns) {
214
+ const width = Math.max(0, Math.floor(columns));
215
+ if (width === 0)
216
+ return "";
217
+ const cleanStatus = terminalText(status).replace(/\n/g, " ");
218
+ const cleanIdentity = identity === undefined ? "" : terminalText(identity).replace(/\n/g, " ");
219
+ if (cleanIdentity.length === 0)
220
+ return fitLine(cleanStatus, width);
221
+ const statusWidth = displayWidth(cleanStatus);
222
+ if (statusWidth >= width)
223
+ return fitLine(cleanStatus, width);
224
+ const identityWidth = displayWidth(cleanIdentity);
225
+ const gap = 2;
226
+ if (identityWidth + gap + statusWidth <= width)
227
+ return `${cleanIdentity}${" ".repeat(gap)}${cleanStatus}`;
228
+ const room = width - statusWidth - gap;
229
+ if (room < 2)
230
+ return cleanStatus;
231
+ return `${fitLine(cleanIdentity, room)}${" ".repeat(gap)}${cleanStatus}`;
232
+ }
202
233
  /** Fixed-height viewport; keep caret in frame even on small terminals. */
203
- export function editorFrame(document, width, height, submitOnEnter = false, suggestions = [], selectedSuggestion = 0) {
204
- const cellWidth = Math.max(8, width - 1);
205
- const displayedSuggestions = suggestions.slice(0, Math.max(0, height - 7));
206
- const rowLimit = Math.max(1, Math.min(8, height - 5 - displayedSuggestions.length));
234
+ export function editorFrame(document, width, height, submitOnEnter = false, suggestions = [], selectedSuggestion = 0, footerStatus, color = false, footerIdentity) {
235
+ const spare = Math.max(1, width - 1);
236
+ const cellWidth = Math.max(8, spare);
237
+ const boxed = submitOnEnter;
238
+ const boxWidth = Math.min(cellWidth, spare);
239
+ const extra = boxed ? 1 : 0;
240
+ const suggestionLimit = Math.max(0, height - 7);
241
+ const visibleSuggestionCount = Math.min(suggestions.length, suggestionLimit);
242
+ const suggestionStart = Math.max(0, Math.min(selectedSuggestion - visibleSuggestionCount + 1, suggestions.length - visibleSuggestionCount));
243
+ const displayedSuggestions = suggestions.slice(suggestionStart, suggestionStart + visibleSuggestionCount);
244
+ const rowLimit = Math.max(1, Math.min(8, height - 5 - extra - displayedSuggestions.length));
207
245
  const rows = document.text.split("\n");
208
246
  const position = document.position;
209
247
  const first = Math.max(0, Math.min(position.row - rowLimit + 1, rows.length - rowLimit));
210
248
  const visible = rows.slice(first, first + rowLimit);
211
- const inputWidth = Math.max(1, cellWidth - 3);
249
+ const left = boxed ? "│ " : "";
250
+ const right = boxed ? " │" : "";
251
+ const lineWidth = boxed ? boxWidth : cellWidth;
252
+ const innerWidth = Math.max(1, lineWidth - displayWidth(left) - displayWidth(right));
253
+ const inputWidth = boxed ? Math.max(1, innerWidth - 2) : Math.max(1, cellWidth - 3);
254
+ const showingPlaceholder = boxed && document.text.length === 0;
212
255
  const body = visible.map((line, index) => {
213
256
  const original = terminalText(line);
214
257
  const caret = index + first === position.row ? position.column : 0;
258
+ const placeholder = showingPlaceholder && index + first === 0;
215
259
  let display = original;
216
260
  let scrollCells = 0;
217
- if (displayWidth(display) > inputWidth) {
261
+ if (!placeholder && displayWidth(display) > inputWidth) {
218
262
  if (caret > inputWidth - 2) {
219
263
  const target = Math.max(0, caret - inputWidth + 3);
220
264
  const pieces = [...segmenter.segment(display)].map(seg => seg.segment);
@@ -230,38 +274,67 @@ export function editorFrame(document, width, height, submitOnEnter = false, sugg
230
274
  }
231
275
  display = fitLine(display, inputWidth);
232
276
  }
233
- return {
234
- row: (() => {
235
- const baseline = fitLine(`│ ${display}`, cellWidth);
236
- const selection = document.selectionRange();
237
- if (selection === undefined || display !== original)
238
- return baseline;
277
+ const marker = submitOnEnter
278
+ ? (index + first === position.row ? "› " : " ")
279
+ : "│ ";
280
+ const gutterCells = displayWidth(left) + displayWidth(marker);
281
+ const row = (() => {
282
+ if (placeholder) {
283
+ const ghost = fitLine(PLACEHOLDER, inputWidth);
284
+ const painted = color ? `\u001b[2m${ghost}\u001b[0m` : ghost;
285
+ return closeBox(left, `${marker}${painted}`, innerWidth, right);
286
+ }
287
+ const baseline = `${marker}${display}`;
288
+ const selection = document.selectionRange();
289
+ let inner = baseline;
290
+ if (selection !== undefined && display === original) {
239
291
  const rowIndex = first + index;
240
292
  const start = rows.slice(0, rowIndex).reduce((sum, row) => sum + row.length + 1, 0);
241
293
  const lo = Math.max(0, selection.start - start);
242
294
  const hi = Math.min(original.length, selection.end - start);
243
- if (hi <= lo)
244
- return baseline;
245
- // ANSI reverse video applies only after width clipping, so it does
246
- // not affect terminal columns or permit untrusted escape injection.
247
- return `│ ${original.slice(0, lo)}\u001b[7m${original.slice(lo, hi)}\u001b[0m${original.slice(hi)}`;
248
- })(),
249
- caret: Math.min(cellWidth - 1, 2 + Math.max(0, caret - scrollCells) + (scrollCells > 0 ? 1 : 0)),
295
+ if (hi > lo) {
296
+ // ANSI reverse video applies only after width clipping, so it does
297
+ // not affect terminal columns or permit untrusted escape injection.
298
+ inner = `${marker}${original.slice(0, lo)}\u001b[7m${original.slice(lo, hi)}\u001b[0m${original.slice(hi)}`;
299
+ }
300
+ }
301
+ return boxed ? closeBox(left, inner, innerWidth, right) : inner.includes("\u001b") ? inner : fitLine(inner, cellWidth);
302
+ })();
303
+ return {
304
+ row,
305
+ caret: Math.min(lineWidth - 1, gutterCells + Math.max(0, caret - scrollCells) + (scrollCells > 0 ? 1 : 0)),
250
306
  scrollCells,
307
+ gutterCells,
251
308
  };
252
309
  });
253
- const header = fitLine(submitOnEnter
254
- ? "┌─ Enter send · Ctrl+O newline · Ctrl+R history"
255
- : "┌─ Ctrl+S send · Esc cancel · Enter newline", cellWidth);
256
- const popup = displayedSuggestions.map((item, index) => fitLine(` ${index === selectedSuggestion ? "›" : " "} /${item}`, cellWidth));
257
- const footer = fitLine(document.warning || (document.selectionRange() === undefined
258
- ? `└─ ${rows.length} lines · ${Buffer.byteLength(document.text, "utf8")} bytes · ↑↓←→ move`
259
- : `└─ Selected ${document.selectionRange().end - document.selectionRange().start} code units · type to replace`), cellWidth);
310
+ const header = boxed
311
+ ? boxRule("┌", "┐", lineWidth)
312
+ : fitLine("┌─ Ctrl+S send · Esc cancel · Enter newline", cellWidth);
313
+ const bottom = boxed ? boxRule("└", "┘", lineWidth) : undefined;
314
+ const popup = displayedSuggestions.map((item, index) => fitLine(` ${suggestionStart + index === selectedSuggestion ? "›" : " "} ${item.label || `/${item.value}`}`, lineWidth));
315
+ const selection = document.selectionRange();
316
+ const idleStatus = footerStatus ?? (submitOnEnter
317
+ ? "/help for shortcuts"
318
+ : `└─ ${rows.length} lines · ${Buffer.byteLength(document.text, "utf8")} bytes · ↑↓←→ move`);
319
+ const footerText = document.warning || (suggestions.length > 0
320
+ ? "↑↓ choose · Tab/Enter complete · Esc close"
321
+ : selection !== undefined
322
+ ? `${submitOnEnter ? "" : "└─ "}Selected ${selection.end - selection.start} code units · type to replace`
323
+ : composeFooter(footerIdentity, idleStatus, lineWidth));
324
+ const footer = fitLine(footerText, lineWidth);
260
325
  return {
261
- lines: [header, ...body.map(item => item.row), ...popup, footer],
326
+ lines: [header, ...body.map(item => item.row), ...(bottom === undefined ? [] : [bottom]), ...popup, footer],
262
327
  cursorRow: 1 + (position.row - first),
263
328
  cursorColumn: body[position.row - first]?.caret ?? 2,
264
- inputRows: body.map((item, index) => ({ documentRow: first + index, scrollCells: item.scrollCells })),
329
+ inputRows: body.map((item, index) => ({
330
+ documentRow: first + index,
331
+ scrollCells: item.scrollCells,
332
+ gutterCells: item.gutterCells,
333
+ })),
334
+ suggestionRows: displayedSuggestions.map((_, index) => ({
335
+ commandIndex: suggestionStart + index,
336
+ row: 1 + body.length + (bottom === undefined ? 0 : 1) + index,
337
+ })),
265
338
  };
266
339
  }
267
340
  /**
@@ -277,7 +350,7 @@ export class EditorPainter {
277
350
  this.output = output;
278
351
  }
279
352
  render(frame) {
280
- const total = Math.max(this.previousRows, frame.lines.length);
353
+ const total = Math.min(this.output.rows ?? Number.POSITIVE_INFINITY, Math.max(this.previousRows, frame.lines.length));
281
354
  let escape = "";
282
355
  if (!this.started) {
283
356
  escape += "\r\n";
@@ -1 +1 @@
1
- {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tui/editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editor.js","sourceRoot":"","sources":["../../src/tui/editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type EditorFrame, type EditorOutput } from "./editor.js";
2
+ /**
3
+ * Provider chooser for `/login`. It lists the same ids as `/provider` and is
4
+ * painted inline, so it works in the readline TUI and in the inline composer.
5
+ */
6
+ export declare function providerPickerFrame(providerIds: readonly string[], selected: number, active: string, width: number, height: number): EditorFrame;
7
+ /** Keyboard-only picker; Esc and Ctrl+C cancel without selecting. */
8
+ export declare class ProviderPickerController {
9
+ private readonly output;
10
+ private readonly providerIds;
11
+ private readonly active;
12
+ private readonly done;
13
+ private selected;
14
+ private completed;
15
+ private pending;
16
+ private escapeTimer?;
17
+ private readonly painter;
18
+ constructor(output: EditorOutput, providerIds: readonly string[], active: string, done: (provider: string | undefined) => void);
19
+ get selection(): string | undefined;
20
+ begin(): void;
21
+ resized(): void;
22
+ receive(chunk: Buffer): void;
23
+ cancel(): void;
24
+ private move;
25
+ private draw;
26
+ private finish;
27
+ }
28
+ //# sourceMappingURL=provider-picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-picker.d.ts","sourceRoot":"","sources":["../../src/tui/provider-picker.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjF;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,WAAW,CAyBb;AAED,qEAAqE;AACrE,qBAAa,wBAAwB;IAQjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,WAAW,CAAC,CAAiB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC,YACmB,MAAM,EAAE,YAAY,EACpB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,EAK9D;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAA4C;IAE/E,KAAK,IAAI,IAAI,CAMZ;IAED,OAAO,IAAI,IAAI,CAAsC;IAErD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CA0C3B;IAED,MAAM,IAAI,IAAI,CAA4B;IAE1C,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,MAAM;CAQf"}
@@ -0,0 +1,131 @@
1
+ import { fitLine, terminalText } from "./text.js";
2
+ import { EditorPainter } from "./editor.js";
3
+ /**
4
+ * Provider chooser for `/login`. It lists the same ids as `/provider` and is
5
+ * painted inline, so it works in the readline TUI and in the inline composer.
6
+ */
7
+ export function providerPickerFrame(providerIds, selected, active, width, height) {
8
+ const cellWidth = Math.max(1, width - 1);
9
+ const limit = Math.max(1, Math.min(providerIds.length, height - 3));
10
+ const safeSelected = Math.max(0, Math.min(selected, providerIds.length - 1));
11
+ const start = Math.max(0, Math.min(safeSelected - limit + 1, Math.max(0, providerIds.length - limit)));
12
+ const visible = providerIds.slice(start, start + limit);
13
+ const lines = [fitLine("┌─ Select a Provider for /login", cellWidth)];
14
+ if (visible.length === 0) {
15
+ lines.push(fitLine("│ No Providers are available.", cellWidth));
16
+ }
17
+ visible.forEach((id, index) => {
18
+ const itemIndex = start + index;
19
+ const marker = itemIndex === safeSelected ? "❯" : " ";
20
+ const current = id === active ? "●" : "○";
21
+ lines.push(fitLine(`│ ${marker} ${current} ${terminalText(id)}`, cellWidth));
22
+ });
23
+ lines.push(fitLine("└─ ↑/↓ choose · Enter select · Esc cancel", cellWidth));
24
+ return {
25
+ lines,
26
+ cursorRow: 1 + Math.max(0, Math.min(safeSelected - start, visible.length - 1)),
27
+ cursorColumn: 2,
28
+ };
29
+ }
30
+ /** Keyboard-only picker; Esc and Ctrl+C cancel without selecting. */
31
+ export class ProviderPickerController {
32
+ output;
33
+ providerIds;
34
+ active;
35
+ done;
36
+ selected;
37
+ completed = false;
38
+ pending = "";
39
+ escapeTimer;
40
+ painter;
41
+ constructor(output, providerIds, active, done) {
42
+ this.output = output;
43
+ this.providerIds = providerIds;
44
+ this.active = active;
45
+ this.done = done;
46
+ this.painter = new EditorPainter(output);
47
+ const current = providerIds.indexOf(active);
48
+ this.selected = current < 0 ? 0 : current;
49
+ }
50
+ get selection() { return this.providerIds[this.selected]; }
51
+ begin() {
52
+ if (this.providerIds.length === 0) {
53
+ this.finish(undefined);
54
+ return;
55
+ }
56
+ this.draw();
57
+ }
58
+ resized() { if (!this.completed)
59
+ this.draw(); }
60
+ receive(chunk) {
61
+ if (this.completed)
62
+ return;
63
+ if (this.escapeTimer !== undefined)
64
+ clearTimeout(this.escapeTimer);
65
+ this.escapeTimer = undefined;
66
+ this.pending += chunk.toString("utf8");
67
+ while (this.pending.length > 0 && !this.completed) {
68
+ if (this.pending.startsWith("\u001b[A") || this.pending.startsWith("\u001bOA")) {
69
+ this.move(-1);
70
+ this.pending = this.pending.slice(3);
71
+ }
72
+ else if (this.pending.startsWith("\u001b[B") || this.pending.startsWith("\u001bOB")) {
73
+ this.move(1);
74
+ this.pending = this.pending.slice(3);
75
+ }
76
+ else if (this.pending[0] === "\u001b") {
77
+ if (this.pending === "\u001b" || this.pending === "\u001b[" || this.pending === "\u001bO") {
78
+ this.escapeTimer = setTimeout(() => {
79
+ if (this.pending === "\u001b")
80
+ this.finish(undefined);
81
+ else {
82
+ this.pending = "";
83
+ this.draw();
84
+ }
85
+ }, 40);
86
+ break;
87
+ }
88
+ this.pending = "";
89
+ this.finish(undefined);
90
+ }
91
+ else {
92
+ const key = this.pending[0] ?? "";
93
+ this.pending = this.pending.slice(1);
94
+ if (key === "\r" || key === "\n") {
95
+ this.finish(this.selection);
96
+ return;
97
+ }
98
+ if (key === "\u0003" || key === "q" || key === "Q") {
99
+ this.finish(undefined);
100
+ return;
101
+ }
102
+ if (key === "k")
103
+ this.move(-1);
104
+ if (key === "j")
105
+ this.move(1);
106
+ }
107
+ }
108
+ if (!this.completed)
109
+ this.draw();
110
+ }
111
+ cancel() { this.finish(undefined); }
112
+ move(delta) {
113
+ if (this.providerIds.length === 0)
114
+ return;
115
+ this.selected = (this.selected + delta + this.providerIds.length) % this.providerIds.length;
116
+ }
117
+ draw() {
118
+ this.painter.render(providerPickerFrame(this.providerIds, this.selected, this.active, Math.max(8, this.output.columns ?? 80), Math.max(6, this.output.rows ?? 24)));
119
+ }
120
+ finish(provider) {
121
+ if (this.completed)
122
+ return;
123
+ this.completed = true;
124
+ if (this.escapeTimer !== undefined)
125
+ clearTimeout(this.escapeTimer);
126
+ this.escapeTimer = undefined;
127
+ this.painter.finish();
128
+ this.done(provider);
129
+ }
130
+ }
131
+ //# sourceMappingURL=provider-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-picker.js","sourceRoot":"","sources":["../../src/tui/provider-picker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /** Inputs that determine whether a local invocation gets the rich interface. */
2
+ export interface TuiSelection {
3
+ readonly explicit: boolean;
4
+ readonly simple: boolean;
5
+ readonly interactive: boolean;
6
+ readonly stdinIsTTY: boolean;
7
+ readonly stdoutIsTTY: boolean;
8
+ readonly stderrIsTTY: boolean;
9
+ readonly json: boolean;
10
+ readonly serve: boolean;
11
+ readonly connect: boolean;
12
+ readonly term?: string;
13
+ }
14
+ /**
15
+ * Choose the rich UI only when all three terminal streams belong to a local
16
+ * interactive terminal. Explicit --tui keeps its historical stdout-pipe use.
17
+ */
18
+ export declare function useTui(selection: TuiSelection): boolean;
19
+ /** ANSI styling is unsafe when disabled by the user or unsupported by TERM. */
20
+ export declare function terminalColorEnabled(isTTY: boolean, environment: {
21
+ readonly NO_COLOR?: string;
22
+ readonly TERM?: string;
23
+ }): boolean;
24
+ //# sourceMappingURL=selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../src/tui/selection.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAOvD;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAClE,OAAO,CAET"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Choose the rich UI only when all three terminal streams belong to a local
3
+ * interactive terminal. Explicit --tui keeps its historical stdout-pipe use.
4
+ */
5
+ export function useTui(selection) {
6
+ if (selection.simple)
7
+ return false;
8
+ if (selection.explicit)
9
+ return true;
10
+ return selection.interactive && selection.stdinIsTTY &&
11
+ selection.stdoutIsTTY && selection.stderrIsTTY &&
12
+ !selection.json && !selection.serve && !selection.connect &&
13
+ selection.term !== "dumb";
14
+ }
15
+ /** ANSI styling is unsafe when disabled by the user or unsupported by TERM. */
16
+ export function terminalColorEnabled(isTTY, environment) {
17
+ return isTTY && environment.NO_COLOR === undefined && environment.TERM !== "dumb";
18
+ }
19
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../../src/tui/selection.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,SAAuB;IAC5C,IAAI,SAAS,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,UAAU;QAClD,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW;QAC9C,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO;QACzD,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC;AAC9B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,oBAAoB,CAClC,KAAc,EACd,WAAmE;IAEnE,OAAO,KAAK,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC;AACpF,CAAC"}
package/dist/tui/slash.js CHANGED
@@ -8,6 +8,6 @@ export function slashSuggestions(draft, cursor, commands) {
8
8
  return [];
9
9
  const typed = draft.slice(1).toLowerCase();
10
10
  return commands.filter(command => /^[a-z][a-z0-9_-]*$/i.test(command.value) &&
11
- command.value.toLowerCase().startsWith(typed)).slice(0, 5);
11
+ command.value.toLowerCase().startsWith(typed));
12
12
  }
13
13
  //# sourceMappingURL=slash.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slash.js","sourceRoot":"","sources":["../../src/tui/slash.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,MAAc,EACd,QAAoC;IAEpC,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC/B,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAC9C,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"slash.js","sourceRoot":"","sources":["../../src/tui/slash.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,MAAc,EACd,QAAoC;IAEpC,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAC/B,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAC9C,CAAC;AACJ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export interface WelcomeOptions {
2
2
  readonly version: string;
3
3
  readonly provider: string;
4
- readonly model: string;
4
+ readonly model?: string;
5
5
  readonly cwd: string;
6
6
  readonly resumed: boolean;
7
7
  readonly signedOut: boolean;
@@ -10,9 +10,10 @@ export interface WelcomeOptions {
10
10
  readonly color?: boolean;
11
11
  }
12
12
  /**
13
- * Calm first frame, inspired by the hierarchy of mature coding CLIs:
14
- * recognizable product, model and workspace, one next action, then shortcuts.
15
- * It never takes the alternate screen or steals scrollback.
13
+ * Compact first frame: brand, workspace path, and one setup hint when the
14
+ * user must set a provider, model, or endpoint. The active provider and model
15
+ * are drawn under the composer. This frame never takes the alternate screen
16
+ * or steals scrollback.
16
17
  */
17
18
  export declare function welcome(options: WelcomeOptions): string;
18
19
  //# sourceMappingURL=welcome.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAMD;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CA+BvD"}
1
+ {"version":3,"file":"welcome.d.ts","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAKD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAsBvD"}
@@ -1,35 +1,27 @@
1
1
  import { fitLine, fitLineTail } from "./text.js";
2
2
  const COLOR = "\u001b[1;36m";
3
- const DIM = "\u001b[2m";
4
3
  const RESET = "\u001b[0m";
5
4
  /**
6
- * Calm first frame, inspired by the hierarchy of mature coding CLIs:
7
- * recognizable product, model and workspace, one next action, then shortcuts.
8
- * It never takes the alternate screen or steals scrollback.
5
+ * Compact first frame: brand, workspace path, and one setup hint when the
6
+ * user must set a provider, model, or endpoint. The active provider and model
7
+ * are drawn under the composer. This frame never takes the alternate screen
8
+ * or steals scrollback.
9
9
  */
10
10
  export function welcome(options) {
11
11
  const width = Math.max(1, options.width - 1);
12
- const wide = width >= 42;
13
- const brand = wide
14
- ? " ◆ chivgent"
15
- : " ◆ chivgent";
16
- const start = options.setupIssue === "model"
12
+ const setup = options.setupIssue === "model"
17
13
  ? "Set a model with /model MODEL"
18
14
  : options.setupIssue === "base-url"
19
15
  ? "Set the API URL with /endpoint URL"
20
16
  : options.signedOut
21
- ? "Start with /provider → choose a Provider"
22
- : "Ready. Describe a task to begin.";
23
- const model = `${options.provider} · ${options.model}`;
17
+ ? "Set up a Provider with /provider"
18
+ : undefined;
19
+ // The path uses the whole line: the full path when it fits, the tail when
20
+ // it does not. It is not shortened to ~.
24
21
  const lines = [
25
- brand,
26
- ` v${options.version}${options.resumed ? " · resumed session" : ""}`,
27
- "",
28
- ` ${fitLine(model, Math.max(1, width - 2))}`,
29
- ` ${fitLineTail(options.cwd, Math.max(1, width - 2))}`,
30
- "",
31
- ` ${start}`,
32
- ` / commands · Tab complete · Ctrl+C stop/exit`,
22
+ `◆ chivgent v${options.version}${options.resumed ? " · resumed" : ""}`,
23
+ fitLineTail(options.cwd, width),
24
+ ...(setup === undefined ? [] : [setup]),
33
25
  ];
34
26
  return `\n${lines.map((line, index) => {
35
27
  const fitted = fitLine(line, width);
@@ -37,9 +29,7 @@ export function welcome(options) {
37
29
  return fitted;
38
30
  if (index === 0)
39
31
  return `${COLOR}${fitted}${RESET}`;
40
- if (index === 1 || index === 4 || index === 7)
41
- return `${DIM}${fitted}${RESET}`;
42
32
  return fitted;
43
- }).join("\n")}\n\n`;
33
+ }).join("\n")}\n`;
44
34
  }
45
35
  //# sourceMappingURL=welcome.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAcjD,MAAM,KAAK,GAAG,cAAc,CAAC;AAC7B,MAAM,GAAG,GAAG,WAAW,CAAC;AACxB,MAAM,KAAK,GAAG,WAAW,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAuB;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI;QAChB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,cAAc,CAAC;IACnB,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,KAAK,OAAO;QAC1C,CAAC,CAAC,+BAA+B;QACjC,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU;YACjC,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,OAAO,CAAC,SAAS;gBACjB,CAAC,CAAC,0CAA0C;gBAC5C,CAAC,CAAC,kCAAkC,CAAC;IAC3C,MAAM,KAAK,GAAG,GAAG,OAAO,CAAC,QAAQ,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;IACzD,MAAM,KAAK,GAAG;QACZ,KAAK;QACL,MAAM,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,EAAE;QACvE,EAAE;QACF,KAAK,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,KAAK,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE;QACvD,EAAE;QACF,KAAK,KAAK,EAAE;QACZ,oDAAoD;KACrD,CAAC;IACF,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACzD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;QACpD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;QAChF,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"welcome.js","sourceRoot":"","sources":["../../src/tui/welcome.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAcjD,MAAM,KAAK,GAAG,cAAc,CAAC;AAC7B,MAAM,KAAK,GAAG,WAAW,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,OAAuB;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,KAAK,OAAO;QAC1C,CAAC,CAAC,+BAA+B;QACjC,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,UAAU;YACjC,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,OAAO,CAAC,SAAS;gBACjB,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,SAAS,CAAC;IAClB,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,KAAK,GAAG;QACZ,eAAe,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE;QACtE,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAC/B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACxC,CAAC;IACF,OAAO,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QACzD,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;QACpD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chivgent",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "A terminal coding agent with a streaming TUI and configurable AI providers.",
5
5
  "license": "MIT",
6
6
  "repository": {