@glbgpt/cli 0.1.0-test.5 → 0.1.0

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 (140) hide show
  1. package/README.md +79 -6
  2. package/dist/src/auth/authClient.d.ts +21 -2
  3. package/dist/src/auth/authClient.js +62 -2
  4. package/dist/src/auth/authClient.js.map +1 -1
  5. package/dist/src/auth/loginFlow.js +5 -2
  6. package/dist/src/auth/loginFlow.js.map +1 -1
  7. package/dist/src/auth/loopbackServer.d.ts +2 -1
  8. package/dist/src/auth/loopbackServer.js +6 -3
  9. package/dist/src/auth/loopbackServer.js.map +1 -1
  10. package/dist/src/commands/accountCommand.js +10 -4
  11. package/dist/src/commands/accountCommand.js.map +1 -1
  12. package/dist/src/commands/configCommand.d.ts +5 -0
  13. package/dist/src/commands/configCommand.js +15 -2
  14. package/dist/src/commands/configCommand.js.map +1 -1
  15. package/dist/src/commands/execCommand.d.ts +6 -0
  16. package/dist/src/commands/execCommand.js +61 -9
  17. package/dist/src/commands/execCommand.js.map +1 -1
  18. package/dist/src/commands/loginCommand.js +9 -6
  19. package/dist/src/commands/loginCommand.js.map +1 -1
  20. package/dist/src/commands/mediaCommand.js +3 -2
  21. package/dist/src/commands/mediaCommand.js.map +1 -1
  22. package/dist/src/commands/skillCommand.d.ts +30 -0
  23. package/dist/src/commands/skillCommand.js +160 -0
  24. package/dist/src/commands/skillCommand.js.map +1 -0
  25. package/dist/src/config/configFile.d.ts +12 -0
  26. package/dist/src/config/configFile.js +12 -0
  27. package/dist/src/config/configFile.js.map +1 -1
  28. package/dist/src/config/env.d.ts +18 -0
  29. package/dist/src/config/env.js +57 -7
  30. package/dist/src/config/env.js.map +1 -1
  31. package/dist/src/core/catalog.d.ts +8 -1
  32. package/dist/src/core/catalog.js +13 -2
  33. package/dist/src/core/catalog.js.map +1 -1
  34. package/dist/src/core/contextPrune.d.ts +13 -0
  35. package/dist/src/core/contextPrune.js +61 -0
  36. package/dist/src/core/contextPrune.js.map +1 -0
  37. package/dist/src/core/httpChatBackend.js +22 -5
  38. package/dist/src/core/httpChatBackend.js.map +1 -1
  39. package/dist/src/core/runChat.d.ts +9 -5
  40. package/dist/src/core/runChat.js +10 -7
  41. package/dist/src/core/runChat.js.map +1 -1
  42. package/dist/src/core/session.d.ts +11 -0
  43. package/dist/src/core/session.js +20 -1
  44. package/dist/src/core/session.js.map +1 -1
  45. package/dist/src/core/toolRegistry.d.ts +14 -3
  46. package/dist/src/core/toolRegistry.js +24 -15
  47. package/dist/src/core/toolRegistry.js.map +1 -1
  48. package/dist/src/core/turnLoop.d.ts +4 -0
  49. package/dist/src/core/turnLoop.js +54 -13
  50. package/dist/src/core/turnLoop.js.map +1 -1
  51. package/dist/src/core/types.d.ts +6 -0
  52. package/dist/src/core/updateCheck.d.ts +46 -0
  53. package/dist/src/core/updateCheck.js +139 -0
  54. package/dist/src/core/updateCheck.js.map +1 -0
  55. package/dist/src/exec/media.d.ts +32 -0
  56. package/dist/src/exec/media.js +70 -0
  57. package/dist/src/exec/media.js.map +1 -0
  58. package/dist/src/exec/output.d.ts +16 -0
  59. package/dist/src/exec/output.js +41 -0
  60. package/dist/src/exec/output.js.map +1 -1
  61. package/dist/src/fs/globTool.d.ts +8 -0
  62. package/dist/src/fs/globTool.js +117 -0
  63. package/dist/src/fs/globTool.js.map +1 -0
  64. package/dist/src/fs/grepTool.d.ts +4 -0
  65. package/dist/src/fs/grepTool.js +146 -0
  66. package/dist/src/fs/grepTool.js.map +1 -0
  67. package/dist/src/fs/index.d.ts +8 -0
  68. package/dist/src/fs/index.js +13 -0
  69. package/dist/src/fs/index.js.map +1 -0
  70. package/dist/src/fs/limits.d.ts +34 -0
  71. package/dist/src/fs/limits.js +74 -0
  72. package/dist/src/fs/limits.js.map +1 -0
  73. package/dist/src/fs/listDirTool.d.ts +2 -0
  74. package/dist/src/fs/listDirTool.js +68 -0
  75. package/dist/src/fs/listDirTool.js.map +1 -0
  76. package/dist/src/fs/readFileTool.d.ts +2 -0
  77. package/dist/src/fs/readFileTool.js +102 -0
  78. package/dist/src/fs/readFileTool.js.map +1 -0
  79. package/dist/src/fs/walk.d.ts +11 -0
  80. package/dist/src/fs/walk.js +38 -0
  81. package/dist/src/fs/walk.js.map +1 -0
  82. package/dist/src/fs/workspaceGuard.d.ts +27 -0
  83. package/dist/src/fs/workspaceGuard.js +96 -0
  84. package/dist/src/fs/workspaceGuard.js.map +1 -0
  85. package/dist/src/index.js +47 -3
  86. package/dist/src/index.js.map +1 -1
  87. package/dist/src/mcp/mediaTools.d.ts +63 -0
  88. package/dist/src/mcp/mediaTools.js +385 -0
  89. package/dist/src/mcp/mediaTools.js.map +1 -0
  90. package/dist/src/mcp/server.d.ts +6 -2
  91. package/dist/src/mcp/server.js +19 -9
  92. package/dist/src/mcp/server.js.map +1 -1
  93. package/dist/src/media/aiApiClient.d.ts +5 -0
  94. package/dist/src/media/aiApiClient.js +12 -1
  95. package/dist/src/media/aiApiClient.js.map +1 -1
  96. package/dist/src/media/budget.d.ts +42 -0
  97. package/dist/src/media/budget.js +95 -0
  98. package/dist/src/media/budget.js.map +1 -0
  99. package/dist/src/media/executor.d.ts +9 -0
  100. package/dist/src/media/executor.js +1 -1
  101. package/dist/src/media/executor.js.map +1 -1
  102. package/dist/src/media/generateImageTool.d.ts +8 -2
  103. package/dist/src/media/generateImageTool.js +51 -3
  104. package/dist/src/media/generateImageTool.js.map +1 -1
  105. package/dist/src/media/promptSanitizer.d.ts +11 -0
  106. package/dist/src/media/promptSanitizer.js +33 -0
  107. package/dist/src/media/promptSanitizer.js.map +1 -0
  108. package/dist/src/media/taskManager.d.ts +8 -1
  109. package/dist/src/media/taskManager.js +1 -1
  110. package/dist/src/media/taskManager.js.map +1 -1
  111. package/dist/src/tui/App.js +30 -21
  112. package/dist/src/tui/App.js.map +1 -1
  113. package/dist/src/tui/ParamEditor.d.ts +11 -2
  114. package/dist/src/tui/ParamEditor.js +17 -6
  115. package/dist/src/tui/ParamEditor.js.map +1 -1
  116. package/dist/src/tui/atPopup.d.ts +8 -0
  117. package/dist/src/tui/atPopup.js +1 -1
  118. package/dist/src/tui/atPopup.js.map +1 -1
  119. package/dist/src/tui/chatController.d.ts +58 -2
  120. package/dist/src/tui/chatController.js +231 -40
  121. package/dist/src/tui/chatController.js.map +1 -1
  122. package/dist/src/tui/models.d.ts +6 -0
  123. package/dist/src/tui/models.js +14 -6
  124. package/dist/src/tui/models.js.map +1 -1
  125. package/dist/src/tui/run.js +50 -16
  126. package/dist/src/tui/run.js.map +1 -1
  127. package/dist/src/util/brokenPipe.d.ts +10 -0
  128. package/dist/src/util/brokenPipe.js +19 -0
  129. package/dist/src/util/brokenPipe.js.map +1 -0
  130. package/package.json +3 -2
  131. package/skills/globalgpt/SKILL.md +94 -0
  132. package/skills/globalgpt/references/troubleshooting.md +34 -0
  133. package/skills/globalgpt-coding/SKILL.md +65 -0
  134. package/skills/globalgpt-coding/references/troubleshooting.md +34 -0
  135. package/skills/globalgpt-image/SKILL.md +109 -0
  136. package/skills/globalgpt-image/references/recipes.md +52 -0
  137. package/skills/globalgpt-image/references/troubleshooting.md +49 -0
  138. package/skills/globalgpt-video/SKILL.md +109 -0
  139. package/skills/globalgpt-video/references/recipes.md +50 -0
  140. package/skills/globalgpt-video/references/troubleshooting.md +49 -0
@@ -1,10 +1,14 @@
1
1
  import { resolveAttachments } from './attachments.js';
2
2
  import { parseSlashMedia } from './slashMedia.js';
3
3
  import { availableModels } from '../media/manifest.js';
4
- import { getChatModels, modelDisplay } from './models.js';
4
+ import { getChatModels, modelDescription, modelSupportsTools } from './models.js';
5
5
  import { SLASH_COMMANDS } from './commands.js';
6
6
  import { Session } from '../core/session.js';
7
7
  import { newId } from '../core/id.js';
8
+ import { selectPrunable } from '../core/contextPrune.js';
9
+ import { MAX_TOOL_CALLS_PER_TURN } from '../fs/index.js';
10
+ import { PRUNE_TRIGGER_TOKENS } from '../fs/limits.js';
11
+ import { getConfigValueSync } from '../config/configFile.js';
8
12
  import path from 'node:path';
9
13
  import os from 'node:os';
10
14
  /** A saved media path is a video when its extension is a known video container. */
@@ -17,15 +21,17 @@ function resolveTokenPath(token) {
17
21
  return path.resolve(expanded);
18
22
  }
19
23
  // Generated from the single command source so /help can never drift from the popup.
20
- const HELP_TEXT = [
21
- 'Commands:',
24
+ const HELP_LINES = [
25
+ [{ text: 'Commands', style: 'header' }],
22
26
  ...SLASH_COMMANDS.map((c) => {
23
- const left = `/${c.name}${c.args ? ` ${c.args}` : ''}`;
24
- return ` ${left.padEnd(24)}${c.description}`;
27
+ const cmd = ` /${c.name}${c.args ? ` ${c.args}` : ''}`;
28
+ // Align descriptions; a command longer than the column still gets breathing room.
29
+ return [{ text: cmd.length >= 26 ? `${cmd} ` : cmd.padEnd(26), style: 'accent' }, { text: c.description }];
25
30
  }),
26
- 'Attach images: @image (last generated) · @clipboard or Ctrl+V (clipboard) · @<path>.',
27
- 'Type anything else to chat. The model replies in your language.',
28
- ].join('\n');
31
+ [],
32
+ [{ text: 'Attach images: @image (last generated) · @clipboard or Ctrl+V (clipboard) · @<path>.', style: 'dim' }],
33
+ [{ text: 'Type anything else to chat. The model replies in your language.', style: 'dim' }],
34
+ ];
29
35
  /**
30
36
  * Headless controller for the chat TUI: owns the view state and maps the engine's
31
37
  * EngineEvent stream into a renderable timeline. Contains no Ink/React so it can be
@@ -39,6 +45,8 @@ export class ChatController {
39
45
  subscribers = new Set();
40
46
  /** Index of the assistant item currently collecting deltas, or -1 if none is open. */
41
47
  openAssistant = -1;
48
+ /** The upstream-reported prompt size of the LATEST model call — the pruning trigger signal. */
49
+ lastPromptTokens = 0;
42
50
  /** Abort controller for the in-flight turn (null when idle). */
43
51
  turnAbort = null;
44
52
  /** Serializes busy-time enqueues so rapid submits keep keystroke order. */
@@ -62,6 +70,7 @@ export class ChatController {
62
70
  runningTasks: [],
63
71
  queued: [],
64
72
  sessionUsage: { promptTokens: 0, completionTokens: 0, turns: 0, mediaCreditsEstimated: 0, mediaSubmits: 0 },
73
+ toolCallsUsed: 0,
65
74
  };
66
75
  }
67
76
  getState() {
@@ -89,6 +98,32 @@ export class ChatController {
89
98
  return r;
90
99
  return this.generatedUrls.get(resolveTokenPath(r)) ?? r;
91
100
  }
101
+ /**
102
+ * Every media reference this session knows about (generated local paths + hosted URLs), for the
103
+ * generate tools' prompt sanitizer: a reference the model pasted into the prompt TEXT is moved
104
+ * back into the reference parameter. Exact-match source of truth — nothing else is ever touched.
105
+ */
106
+ getKnownMediaRefs() {
107
+ const refs = new Set();
108
+ for (const [p, url] of this.generatedUrls) {
109
+ refs.add(p);
110
+ refs.add(url);
111
+ }
112
+ if (this.lastMediaUrl)
113
+ refs.add(this.lastMediaUrl);
114
+ return [...refs];
115
+ }
116
+ /**
117
+ * Reverse-map a hosted output URL to the local file name the user already knows from the
118
+ * "image ready" line. Display-only: the internal storage hostname must never reach the user.
119
+ */
120
+ localNameForUrl(url) {
121
+ for (const [p, u] of this.generatedUrls) {
122
+ if (u === url)
123
+ return path.basename(p);
124
+ }
125
+ return undefined;
126
+ }
92
127
  /** The session currently being edited (swapped by `/new`); used for persistence. */
93
128
  getSession() {
94
129
  return this.session;
@@ -131,10 +166,11 @@ export class ChatController {
131
166
  // A new id so persistence writes a new file instead of overwriting the prior conversation.
132
167
  this.session = new Session({ id: newId(), model: this.session.model });
133
168
  this.openAssistant = -1;
169
+ this.lastPromptTokens = 0; // the pruning trigger must not carry across sessions
134
170
  this.setState({ items: [] });
135
171
  }
136
172
  showHelp() {
137
- this.addItem({ kind: 'note', text: HELP_TEXT });
173
+ this.rich(HELP_LINES);
138
174
  }
139
175
  /** Track background generation tasks: progress updates the summary bar; completion hits the timeline. */
140
176
  handleTaskEvent(e) {
@@ -160,7 +196,11 @@ export class ChatController {
160
196
  // so a follow-up question would truthfully get "I can't see it".
161
197
  this.session.addSystemNote(`[background task update] Generation task ${e.taskId} completed. ` +
162
198
  `Saved locally at ${e.localPath}. Output URL: ${e.outputUrl}.` +
163
- (isVideo ? '' : ' The user can attach it to a message with @image so you can view it.'));
199
+ (isVideo
200
+ ? ''
201
+ : ' The user can attach it to a message with @image so you can view it. To reuse it ' +
202
+ 'as a reference in a NEW generation, pass reference_images: ["last"] (image) or ' +
203
+ 'start_image: "last" (video) — never paste this URL or path into the prompt text.'));
164
204
  }
165
205
  else if (e.type === 'task_failed') {
166
206
  this.state = { ...this.state, runningTasks };
@@ -223,7 +263,11 @@ export class ChatController {
223
263
  async showTasks() {
224
264
  const lines = [];
225
265
  for (const t of this.state.runningTasks) {
226
- lines.push(`⏳ ${t.taskId} · ${t.status} · ${Math.round(t.elapsedMs / 1000)}s`);
266
+ lines.push([
267
+ { text: '⏳ ', style: 'warn' },
268
+ { text: t.taskId, style: 'accent' },
269
+ { text: ` · ${t.status} · ${Math.round(t.elapsedMs / 1000)}s`, style: 'dim' },
270
+ ]);
227
271
  }
228
272
  if (this.extras.listRecentTasks) {
229
273
  try {
@@ -231,27 +275,44 @@ export class ChatController {
231
275
  for (const r of recent.slice(0, 5)) {
232
276
  if (this.state.runningTasks.some((t) => t.taskId === r.taskId))
233
277
  continue;
234
- lines.push(` ${r.taskId} · ${r.model} · ${r.prompt.slice(0, 40)}`);
278
+ lines.push([
279
+ { text: ' ' },
280
+ { text: r.taskId, style: 'accent' },
281
+ { text: ` · ${r.model} · ${r.prompt.slice(0, 40)}`, style: 'dim' },
282
+ ]);
235
283
  }
236
284
  }
237
285
  catch {
238
286
  // Recent history is best-effort.
239
287
  }
240
288
  }
241
- this.note(lines.length ? lines.join('\n') : 'No tasks yet. Try /image or /video.');
289
+ if (lines.length) {
290
+ this.rich([[{ text: 'Tasks', style: 'header' }, { text: ' running and recent', style: 'dim' }], ...lines]);
291
+ }
292
+ else {
293
+ this.note('No tasks yet. Try /image or /video.');
294
+ }
242
295
  }
243
296
  /** `/status`: session/model basics immediately, account line when it arrives. */
244
297
  async showStatus() {
245
- this.note([
246
- `model: ${this.state.model}`,
247
- `conversation: ${this.session.id} (${this.session.messages.length} messages)`,
248
- `running tasks: ${this.state.runningTasks.length}`,
249
- ].join('\n'));
298
+ const lines = [
299
+ ChatController.kvRow('model', this.state.model, 'accent'),
300
+ ChatController.kvRow('conversation', `${this.session.id} (${this.session.messages.length} messages)`),
301
+ ChatController.kvRow('context', `~${this.lastPromptTokens} tokens, ${this.session.prunedToolCallIds.size} old tool results pruned`),
302
+ ChatController.kvRow('running tasks', String(this.state.runningTasks.length)),
303
+ ];
304
+ const override = this.extras.baseUrlOverride?.();
305
+ if (override)
306
+ lines.push(ChatController.kvRow('API base URL', `${override} (override — not the default)`, 'warn'));
307
+ const update = this.extras.updateNotice?.();
308
+ if (update)
309
+ lines.push(ChatController.kvRow('update', `${update.latest} available — ${update.command}`, 'accent'));
310
+ this.rich(lines);
250
311
  if (this.extras.fetchAccountLine) {
251
312
  try {
252
313
  const line = await this.extras.fetchAccountLine();
253
314
  if (line)
254
- this.note(line);
315
+ this.rich([ChatController.kvInline(line)]);
255
316
  }
256
317
  catch {
257
318
  // Account info is best-effort; the basics above are already shown.
@@ -260,17 +321,33 @@ export class ChatController {
260
321
  }
261
322
  /** `/models`: list chat + image/video models available (server-driven catalog applied). */
262
323
  showModels() {
263
- const chat = getChatModels().map((m) => ` ${modelDisplay(m)}`);
264
- const image = availableModels().filter((m) => m.type === 'image').map((m) => ` ${m.id} — ${m.displayName}`);
265
- const video = availableModels().filter((m) => m.type === 'video').map((m) => ` ${m.id} — ${m.displayName}`);
266
- this.note([
267
- `chat (${chat.length}) — /model to switch:`,
268
- ...chat,
269
- `image (${image.length}) — /image <prompt> -m <id>:`,
270
- ...image,
271
- `video (${video.length}) — /video <prompt> -m <id>:`,
272
- ...video,
273
- ].join('\n'));
324
+ const lines = [];
325
+ const section = (title, hint) => {
326
+ if (lines.length > 0)
327
+ lines.push([]);
328
+ lines.push([{ text: title, style: 'header' }, { text: ` ${hint}`, style: 'dim' }]);
329
+ };
330
+ const entry = (id, desc, current) => {
331
+ lines.push([
332
+ { text: current ? ' ▸ ' : ' ', style: 'accent' },
333
+ { text: id, style: 'accent' },
334
+ ...(desc ? [{ text: ` — ${desc}`, style: 'dim' }] : []),
335
+ ...(current ? [{ text: ' (current)', style: 'dim' }] : []),
336
+ ]);
337
+ };
338
+ const chat = getChatModels();
339
+ section(`Chat models (${chat.length})`, '/model to switch');
340
+ for (const m of chat)
341
+ entry(m.id, modelDescription(m), m.id === this.state.model);
342
+ const image = availableModels().filter((m) => m.type === 'image');
343
+ section(`Image models (${image.length})`, '/image <prompt> -m <id>');
344
+ for (const m of image)
345
+ entry(m.id, m.displayName, false);
346
+ const video = availableModels().filter((m) => m.type === 'video');
347
+ section(`Video models (${video.length})`, '/video <prompt> -m <id>');
348
+ for (const m of video)
349
+ entry(m.id, m.displayName, false);
350
+ this.addItem({ kind: 'rich', lines });
274
351
  }
275
352
  /** `/account`: full account summary (email · plan · balance). */
276
353
  async showAccount() {
@@ -279,7 +356,13 @@ export class ChatController {
279
356
  return;
280
357
  }
281
358
  try {
282
- this.note(await this.extras.fetchAccount());
359
+ const text = await this.extras.fetchAccount();
360
+ this.rich(text.split('\n').map((line) => {
361
+ const m = /^([^:]+): (.*)$/.exec(line);
362
+ return m
363
+ ? [{ text: `${m[1]}: `.padEnd(11), style: 'dim' }, ...ChatController.valueSpans(m[2])]
364
+ : [{ text: line }];
365
+ }));
283
366
  }
284
367
  catch (err) {
285
368
  this.note(err instanceof Error ? err.message : String(err));
@@ -292,7 +375,19 @@ export class ChatController {
292
375
  return;
293
376
  }
294
377
  try {
295
- this.note(await this.extras.fetchTransactions());
378
+ const rows = await this.extras.fetchTransactions();
379
+ if (rows.length === 0) {
380
+ this.note('No transactions yet.');
381
+ return;
382
+ }
383
+ this.rich([
384
+ [{ text: 'Recent transactions', style: 'header' }, { text: ' authoritative billing', style: 'dim' }],
385
+ ...rows.map((r) => [
386
+ { text: ` ${(r.createdAt || '').padEnd(20)}`, style: 'dim' },
387
+ { text: `${String(r.credits).padStart(6)} cr`, style: 'accent' },
388
+ { text: ` ${r.model}` },
389
+ ]),
390
+ ]);
296
391
  }
297
392
  catch (err) {
298
393
  this.note(err instanceof Error ? err.message : String(err));
@@ -328,6 +423,7 @@ export class ChatController {
328
423
  replaceSession(session, persistedTimeline) {
329
424
  this.session = session;
330
425
  this.openAssistant = -1;
426
+ this.lastPromptTokens = 0; // the pruning trigger must not carry across sessions
331
427
  this.setState({ model: session.model });
332
428
  this.hydrateFromSession(persistedTimeline);
333
429
  this.note(`Resumed conversation ${session.id}.`);
@@ -335,6 +431,39 @@ export class ChatController {
335
431
  note(text) {
336
432
  this.addItem({ kind: 'note', text });
337
433
  }
434
+ /** A loud one-line warning (yellow) — for things that must not blend into gray notes. */
435
+ warn(text) {
436
+ this.addItem({ kind: 'rich', lines: [[{ text, style: 'warn' }]] });
437
+ }
438
+ rich(lines) {
439
+ this.addItem({ kind: 'rich', lines });
440
+ }
441
+ /** One `label: value` row — dim label column, optionally styled value. */
442
+ static kvRow(label, value, valueStyle) {
443
+ return [
444
+ { text: `${label}: `.padEnd(16), style: 'dim' },
445
+ { text: value, ...(valueStyle ? { style: valueStyle } : {}) },
446
+ ];
447
+ }
448
+ /** Style a `label: value · label: value` summary line without changing its text. */
449
+ static kvInline(text) {
450
+ const spans = [];
451
+ text.split(' · ').forEach((part, i) => {
452
+ if (i > 0)
453
+ spans.push({ text: ' · ', style: 'dim' });
454
+ const m = /^([^:]+): (.*)$/.exec(part);
455
+ if (m)
456
+ spans.push({ text: `${m[1]}: `, style: 'dim' }, ...ChatController.valueSpans(m[2]));
457
+ else
458
+ spans.push({ text: part });
459
+ });
460
+ return spans;
461
+ }
462
+ /** A value with a trailing parenthetical (e.g. a balance breakdown) renders the detail dim. */
463
+ static valueSpans(value) {
464
+ const m = /^(.*?)( \(.+\))$/.exec(value);
465
+ return m ? [{ text: m[1] }, { text: m[2], style: 'dim' }] : [{ text: value }];
466
+ }
338
467
  /**
339
468
  * Submit a user message and run one turn to completion, updating the timeline as events
340
469
  * arrive. `displayText` (when given) is what the transcript shows — e.g. "[Image #1]"
@@ -394,15 +523,48 @@ export class ChatController {
394
523
  return { content, display, refs: attachments.kind === 'parts' ? attachments.refs : undefined };
395
524
  }
396
525
  /** Run one turn whose attachments are already resolved. Caller owns the busy flag. */
526
+ /**
527
+ * Trigger-based microcompact (spec 2026-07-19-context-pruning-design.md): runs
528
+ * only at turn boundaries, only when the last model call's prompt size crossed
529
+ * the threshold. Batch-clears in one event so the request prefix stays
530
+ * byte-stable between triggers (upstream prompt-cache friendliness).
531
+ */
532
+ maybePruneContext() {
533
+ // Cheapest checks first: the in-memory threshold gate skips the sync config
534
+ // read (a disk hit) on every under-threshold turn — the common case.
535
+ if (this.lastPromptTokens <= PRUNE_TRIGGER_TOKENS)
536
+ return;
537
+ if (process.env.GLBGPT_CONTEXT_PRUNING === 'false')
538
+ return;
539
+ if (getConfigValueSync('context-pruning') === 'false')
540
+ return;
541
+ const ids = selectPrunable(this.session.messages, this.session.prunedToolCallIds);
542
+ if (ids.length === 0)
543
+ return;
544
+ const idSet = new Set(ids);
545
+ const clearedBytes = this.session.messages
546
+ .filter((m) => m.role === 'tool' && m.tool_call_id && idSet.has(m.tool_call_id))
547
+ .reduce((sum, m) => sum + (typeof m.content === 'string' ? Buffer.byteLength(m.content, 'utf8') : 0), 0);
548
+ for (const id of ids)
549
+ this.session.prunedToolCallIds.add(id);
550
+ const savedTokens = Math.round(clearedBytes / 4 / 1000);
551
+ this.addItem({
552
+ kind: 'note',
553
+ text: `⚙ Context trimmed: cleared ${ids.length} old tool result${ids.length === 1 ? '' : 's'} (~${savedTokens}k tokens). Re-run tools if that content is needed again.`,
554
+ });
555
+ }
397
556
  async runResolvedTurn(msg) {
398
557
  // A same-message generate_* call auto-uses these when the model gives no explicit reference.
399
558
  this.pendingReferenceImages = msg.refs ?? [];
559
+ this.maybePruneContext();
400
560
  try {
401
561
  this.addItem({ kind: 'user', text: msg.display });
402
562
  this.openAssistant = -1;
403
563
  this.turnAbort = new AbortController();
564
+ this.state = { ...this.state, toolCallsUsed: 0 };
404
565
  await this.turnLoop.runTurn(this.session, msg.content, (event) => this.onEvent(event), {
405
566
  signal: this.turnAbort.signal,
567
+ includeGatedTools: modelSupportsTools(this.session.model),
406
568
  });
407
569
  }
408
570
  catch (err) {
@@ -445,13 +607,13 @@ export class ChatController {
445
607
  /** `/cost`: session usage breakdown. Authoritative spend lives in `glbgpt account transactions`. */
446
608
  showCost() {
447
609
  const u = this.state.sessionUsage;
448
- this.note([
449
- `this session: ${u.turns} turn${u.turns === 1 ? '' : 's'} · ${u.promptTokens.toLocaleString()} in / ${u.completionTokens.toLocaleString()} out tokens`,
450
- u.mediaSubmits > 0
451
- ? `media: ${u.mediaSubmits} task${u.mediaSubmits === 1 ? '' : 's'} submitted · ~${u.mediaCreditsEstimated.toLocaleString()} credits (estimated)`
452
- : 'media: none',
453
- 'authoritative spend: `glbgpt account transactions`',
454
- ].join('\n'));
610
+ this.rich([
611
+ ChatController.kvRow('this session', `${u.turns} turn${u.turns === 1 ? '' : 's'} · ${u.promptTokens.toLocaleString()} in / ${u.completionTokens.toLocaleString()} out tokens`),
612
+ ChatController.kvRow('media', u.mediaSubmits > 0
613
+ ? `${u.mediaSubmits} task${u.mediaSubmits === 1 ? '' : 's'} submitted · ~${u.mediaCreditsEstimated.toLocaleString()} credits (estimated)`
614
+ : 'none'),
615
+ ChatController.kvRow('authoritative spend', 'glbgpt account transactions', 'accent'),
616
+ ]);
455
617
  }
456
618
  /** Interrupt the in-flight turn (Esc). Partial output is kept; no-op when idle. */
457
619
  interrupt() {
@@ -472,6 +634,13 @@ export class ChatController {
472
634
  case 'tool_call_begin': {
473
635
  // Close any open assistant bubble so post-tool text starts a fresh one.
474
636
  this.openAssistant = -1;
637
+ // Past the turn's budget, TurnLoop still emits begin/end for stub calls (it feeds the
638
+ // model a budget-exhausted error instead of dispatching) — clamp so the footer never
639
+ // shows more than the cap it displays (e.g. "18/15").
640
+ this.state = {
641
+ ...this.state,
642
+ toolCallsUsed: Math.min(this.state.toolCallsUsed + 1, MAX_TOOL_CALLS_PER_TURN),
643
+ };
475
644
  this.addItem({ kind: 'tool', id: event.id, name: event.name, status: 'running', args: event.args });
476
645
  break;
477
646
  }
@@ -484,6 +653,7 @@ export class ChatController {
484
653
  break;
485
654
  }
486
655
  case 'usage': {
656
+ this.lastPromptTokens = event.promptTokens;
487
657
  const u = this.state.sessionUsage;
488
658
  this.setState({
489
659
  sessionUsage: {
@@ -546,6 +716,27 @@ function restoreTimelineItem(it) {
546
716
  case 'note':
547
717
  case 'error':
548
718
  return typeof o.text === 'string' ? { kind: o.kind, text: o.text } : null;
719
+ case 'rich': {
720
+ if (!Array.isArray(o.lines))
721
+ return null;
722
+ const lines = [];
723
+ for (const line of o.lines) {
724
+ if (!Array.isArray(line))
725
+ return null;
726
+ const spans = [];
727
+ for (const s of line) {
728
+ if (typeof s !== 'object' || s === null || typeof s.text !== 'string')
729
+ return null;
730
+ const style = s.style;
731
+ spans.push({
732
+ text: s.text,
733
+ ...(style === 'header' || style === 'accent' || style === 'dim' || style === 'warn' ? { style } : {}),
734
+ });
735
+ }
736
+ lines.push(spans);
737
+ }
738
+ return { kind: 'rich', lines };
739
+ }
549
740
  case 'tool':
550
741
  if (typeof o.id !== 'string' || typeof o.name !== 'string')
551
742
  return null;
@@ -573,7 +764,7 @@ function restoreTimelineItem(it) {
573
764
  }
574
765
  }
575
766
  /** Validate a persisted transcript; returns null when absent/unusable (→ derive instead). */
576
- function restoreTimeline(persisted) {
767
+ export function restoreTimeline(persisted) {
577
768
  if (!persisted || persisted.length === 0)
578
769
  return null;
579
770
  const items = persisted.map(restoreTimelineItem).filter((it) => it !== null);
@@ -1 +1 @@
1
- {"version":3,"file":"chatController.js","sourceRoot":"","sources":["../../../src/tui/chatController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chatController.js","sourceRoot":"","sources":["../../../src/tui/chatController.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@
10
10
  export interface ModelInfo {
11
11
  id: string;
12
12
  label: string;
13
+ /** Catalog tool_use capability: model may be offered gated (fs) tools. Absent = false. */
14
+ toolUse?: boolean;
13
15
  }
14
16
  /** Baked-in fallback (offline / no token / first run before the catalog cache exists). */
15
17
  export declare const CHAT_MODELS: ModelInfo[];
@@ -22,12 +24,16 @@ export declare function getChatModels(): ModelInfo[];
22
24
  export declare function getDefaultChatModel(): string;
23
25
  /** Test hook: restore the baked-in list. */
24
26
  export declare function resetChatCatalog(): void;
27
+ /** Whether the catalog marks this model as tool-capable (absent/unknown id → false). */
28
+ export declare function modelSupportsTools(id: string): boolean;
25
29
  /**
26
30
  * Display string for a chat model: the id (name) is ALWAYS shown, with the description as a
27
31
  * suffix when present. Server labels are plain descriptions ("balanced reasoning"); the
28
32
  * baked-in fallback labels already carry an "id — " prefix — strip it so we never double the id.
29
33
  */
30
34
  export declare function modelDisplay(m: ModelInfo): string;
35
+ /** The bare description for a chat model (label with any leading "id — " prefix stripped). */
36
+ export declare function modelDescription(m: ModelInfo): string;
31
37
  /**
32
38
  * Resolve a chat model id, erroring with close candidates on a typo (no silent fuzzy match).
33
39
  * Mirrors the media manifest's resolveModel UX. The backend whitelist is authoritative;
@@ -2,9 +2,9 @@
2
2
  export const CHAT_MODELS = [
3
3
  // All three verified end to end on 2026-07-15: backend whitelist (application-newtest.yml),
4
4
  // robot pricing rows (703-705), live reply + billing row each.
5
- { id: 'gpt-5.6-sol', label: 'gpt-5.6-sol — balanced reasoning' },
6
- { id: 'gpt-5.6-luna', label: 'gpt-5.6-luna — fastest, cheapest' },
7
- { id: 'gpt-5.6-terra', label: 'gpt-5.6-terra — mid-tier' },
5
+ { id: 'gpt-5.6-sol', label: 'gpt-5.6-sol — balanced reasoning', toolUse: true },
6
+ { id: 'gpt-5.6-luna', label: 'gpt-5.6-luna — fastest, cheapest', toolUse: true },
7
+ { id: 'gpt-5.6-terra', label: 'gpt-5.6-terra — mid-tier', toolUse: true },
8
8
  ];
9
9
  export const DEFAULT_CHAT_MODEL = 'gpt-5.6-sol';
10
10
  // Server-driven state (applied by src/core/catalog.ts; module-level so every consumer —
@@ -15,7 +15,7 @@ let currentDefault = DEFAULT_CHAT_MODEL;
15
15
  export function applyChatCatalog(models, defaultId) {
16
16
  if (models.length === 0)
17
17
  return; // never apply an empty list — keep the fallback
18
- currentModels = models.map((m) => ({ id: m.id, label: m.label || m.id }));
18
+ currentModels = models.map((m) => ({ id: m.id, label: m.label || m.id, toolUse: m.toolUse === true }));
19
19
  currentDefault = currentModels.some((m) => m.id === defaultId) ? defaultId : currentModels[0].id;
20
20
  }
21
21
  /** The chat models currently in effect (server-driven when available, else baked-in). */
@@ -31,16 +31,24 @@ export function resetChatCatalog() {
31
31
  currentModels = CHAT_MODELS;
32
32
  currentDefault = DEFAULT_CHAT_MODEL;
33
33
  }
34
+ /** Whether the catalog marks this model as tool-capable (absent/unknown id → false). */
35
+ export function modelSupportsTools(id) {
36
+ return currentModels.find((m) => m.id === id)?.toolUse === true;
37
+ }
34
38
  /**
35
39
  * Display string for a chat model: the id (name) is ALWAYS shown, with the description as a
36
40
  * suffix when present. Server labels are plain descriptions ("balanced reasoning"); the
37
41
  * baked-in fallback labels already carry an "id — " prefix — strip it so we never double the id.
38
42
  */
39
43
  export function modelDisplay(m) {
40
- const raw = m.label && m.label !== m.id ? m.label : '';
41
- const desc = raw.startsWith(m.id) ? raw.slice(m.id.length).replace(/^\s*[—-]\s*/, '') : raw;
44
+ const desc = modelDescription(m);
42
45
  return desc ? `${m.id} — ${desc}` : m.id;
43
46
  }
47
+ /** The bare description for a chat model (label with any leading "id — " prefix stripped). */
48
+ export function modelDescription(m) {
49
+ const raw = m.label && m.label !== m.id ? m.label : '';
50
+ return raw.startsWith(m.id) ? raw.slice(m.id.length).replace(/^\s*[—-]\s*/, '') : raw;
51
+ }
44
52
  /**
45
53
  * Resolve a chat model id, erroring with close candidates on a typo (no silent fuzzy match).
46
54
  * Mirrors the media manifest's resolveModel UX. The backend whitelist is authoritative;