@pentoshi/clai 3.7.6 → 3.7.8

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 (123) hide show
  1. package/dist/agent/events.d.ts +7 -0
  2. package/dist/agent/runner.js +7 -0
  3. package/dist/agent/runner.js.map +1 -1
  4. package/dist/app/adapters/agent-event-adapter.js +9 -0
  5. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  6. package/dist/app/adapters/current-store-adapter.js +3 -2
  7. package/dist/app/adapters/current-store-adapter.js.map +1 -1
  8. package/dist/app/controllers/session-controller.d.ts +32 -1
  9. package/dist/app/controllers/session-controller.js +69 -1
  10. package/dist/app/controllers/session-controller.js.map +1 -1
  11. package/dist/app/events/app-event.d.ts +7 -0
  12. package/dist/app/events/app-event.js.map +1 -1
  13. package/dist/app/ports/persistence-port.d.ts +3 -0
  14. package/dist/commands/update.js +1 -1
  15. package/dist/llm/agentrouter.js +3 -15
  16. package/dist/llm/agentrouter.js.map +1 -1
  17. package/dist/llm/anthropic.js +26 -2
  18. package/dist/llm/anthropic.js.map +1 -1
  19. package/dist/llm/aws-mantle.js +3 -15
  20. package/dist/llm/aws-mantle.js.map +1 -1
  21. package/dist/llm/bynara.js +3 -15
  22. package/dist/llm/bynara.js.map +1 -1
  23. package/dist/llm/gemini.js +8 -0
  24. package/dist/llm/gemini.js.map +1 -1
  25. package/dist/llm/groq.js +3 -15
  26. package/dist/llm/groq.js.map +1 -1
  27. package/dist/llm/http.d.ts +4 -1
  28. package/dist/llm/http.js +29 -1
  29. package/dist/llm/http.js.map +1 -1
  30. package/dist/llm/kimchi.js +3 -15
  31. package/dist/llm/kimchi.js.map +1 -1
  32. package/dist/llm/nvidia.js +3 -15
  33. package/dist/llm/nvidia.js.map +1 -1
  34. package/dist/llm/ollama.js +14 -0
  35. package/dist/llm/ollama.js.map +1 -1
  36. package/dist/llm/openai.js +3 -15
  37. package/dist/llm/openai.js.map +1 -1
  38. package/dist/llm/openrouter.js +3 -15
  39. package/dist/llm/openrouter.js.map +1 -1
  40. package/dist/llm/qwen-cloud.js +3 -15
  41. package/dist/llm/qwen-cloud.js.map +1 -1
  42. package/dist/llm/token-usage.d.ts +70 -0
  43. package/dist/llm/token-usage.js +209 -0
  44. package/dist/llm/token-usage.js.map +1 -0
  45. package/dist/safety/engagement-policy.d.ts +6 -0
  46. package/dist/safety/engagement-policy.js +53 -2
  47. package/dist/safety/engagement-policy.js.map +1 -1
  48. package/dist/store/history.d.ts +16 -2
  49. package/dist/store/history.js +19 -4
  50. package/dist/store/history.js.map +1 -1
  51. package/dist/store/scope.d.ts +2 -0
  52. package/dist/store/scope.js +54 -8
  53. package/dist/store/scope.js.map +1 -1
  54. package/dist/tools/file-diff.js +12 -3
  55. package/dist/tools/file-diff.js.map +1 -1
  56. package/dist/tools/fs.js +3 -1
  57. package/dist/tools/fs.js.map +1 -1
  58. package/dist/tui/state.d.ts +6 -0
  59. package/dist/tui/state.js +2 -1
  60. package/dist/tui/state.js.map +1 -1
  61. package/dist/tui-v2/actions/keymap.js +16 -8
  62. package/dist/tui-v2/actions/keymap.js.map +1 -1
  63. package/dist/tui-v2/app/App.js +22 -4
  64. package/dist/tui-v2/app/App.js.map +1 -1
  65. package/dist/tui-v2/app/commands/picker-commands.js +9 -2
  66. package/dist/tui-v2/app/commands/picker-commands.js.map +1 -1
  67. package/dist/tui-v2/app/commands/session-commands.js +13 -7
  68. package/dist/tui-v2/app/commands/session-commands.js.map +1 -1
  69. package/dist/tui-v2/bootstrap/composition-root.js +10 -2
  70. package/dist/tui-v2/bootstrap/composition-root.js.map +1 -1
  71. package/dist/tui-v2/components/pager/pager.js +25 -7
  72. package/dist/tui-v2/components/pager/pager.js.map +1 -1
  73. package/dist/tui-v2/components/plan/plan-view.d.ts +4 -5
  74. package/dist/tui-v2/components/plan/plan-view.js +138 -31
  75. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  76. package/dist/tui-v2/components/status/status-line.d.ts +4 -4
  77. package/dist/tui-v2/components/status/status-line.js +25 -7
  78. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  79. package/dist/tui-v2/components/transcript/file-diff-card.d.ts +25 -0
  80. package/dist/tui-v2/components/transcript/file-diff-card.js +116 -0
  81. package/dist/tui-v2/components/transcript/file-diff-card.js.map +1 -0
  82. package/dist/tui-v2/components/transcript/tool-card.js +69 -108
  83. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  84. package/dist/tui-v2/components/transcript/transcript-row.js +9 -1
  85. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  86. package/dist/tui-v2/components/transcript/transcript-scroll-port.d.ts +7 -0
  87. package/dist/tui-v2/components/transcript/transcript-scroll-port.js +25 -0
  88. package/dist/tui-v2/components/transcript/transcript-scroll-port.js.map +1 -1
  89. package/dist/tui-v2/components/transcript/transcript-view.js +20 -3
  90. package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
  91. package/dist/tui-v2/components/transcript/user-message.js +1 -0
  92. package/dist/tui-v2/components/transcript/user-message.js.map +1 -1
  93. package/dist/tui-v2/composer/composer-editor.js +3 -1
  94. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  95. package/dist/tui-v2/rendering/file-diff-view.d.ts +4 -1
  96. package/dist/tui-v2/rendering/file-diff-view.js +13 -6
  97. package/dist/tui-v2/rendering/file-diff-view.js.map +1 -1
  98. package/dist/tui-v2/rendering/open-tool-output.d.ts +12 -0
  99. package/dist/tui-v2/rendering/open-tool-output.js +140 -17
  100. package/dist/tui-v2/rendering/open-tool-output.js.map +1 -1
  101. package/dist/tui-v2/rendering/plan-view.d.ts +22 -1
  102. package/dist/tui-v2/rendering/plan-view.js +56 -2
  103. package/dist/tui-v2/rendering/plan-view.js.map +1 -1
  104. package/dist/tui-v2/rendering/theme.d.ts +19 -5
  105. package/dist/tui-v2/rendering/theme.js +23 -7
  106. package/dist/tui-v2/rendering/theme.js.map +1 -1
  107. package/dist/tui-v2/rendering/tool-presenter.d.ts +5 -0
  108. package/dist/tui-v2/rendering/tool-presenter.js +57 -22
  109. package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
  110. package/dist/tui-v2/rendering/transcript-semantic.js +6 -1
  111. package/dist/tui-v2/rendering/transcript-semantic.js.map +1 -1
  112. package/dist/tui-v2/state/transcript-hydrate.d.ts +16 -0
  113. package/dist/tui-v2/state/transcript-hydrate.js +189 -29
  114. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
  115. package/dist/tui-v2/state/transcript-reducer.js +2 -0
  116. package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
  117. package/dist/tui-v2/state/transcript-types.d.ts +7 -0
  118. package/dist/tui-v2/state/transcript-types.js +17 -0
  119. package/dist/tui-v2/state/transcript-types.js.map +1 -1
  120. package/dist/types.d.ts +10 -0
  121. package/dist/ui/intro-header.js +7 -3
  122. package/dist/ui/intro-header.js.map +1 -1
  123. package/package.json +1 -1
@@ -76,14 +76,82 @@ function extractSearchHits(parsed) {
76
76
  }
77
77
  return hits.length > 0 ? hits : undefined;
78
78
  }
79
+ /**
80
+ * Human path/command label for pager titles and headers.
81
+ * Never dump raw tool-arg JSON (history rows often store that).
82
+ *
83
+ * @param maxLen Cap for short titles only. Omit for full body headers so the
84
+ * pager shows the complete command (card already has it untruncated).
85
+ */
86
+ export function cleanArgsLabel(name, argsDisplay, options = {}) {
87
+ const maxLen = options.maxLen;
88
+ const clip = (s) => {
89
+ if (maxLen === undefined || maxLen <= 0 || s.length <= maxLen)
90
+ return s;
91
+ if (maxLen <= 1)
92
+ return "…";
93
+ return `${s.slice(0, Math.max(0, maxLen - 1))}…`;
94
+ };
95
+ const raw = (argsDisplay ?? "").trim();
96
+ if (!raw)
97
+ return "";
98
+ if (!raw.startsWith("{")) {
99
+ return clip(raw);
100
+ }
101
+ try {
102
+ const parsed = JSON.parse(raw);
103
+ if (typeof parsed.path === "string" && parsed.path)
104
+ return clip(parsed.path);
105
+ if (typeof parsed.command === "string" && parsed.command) {
106
+ return clip(parsed.command);
107
+ }
108
+ if (typeof parsed.url === "string" && parsed.url)
109
+ return clip(parsed.url);
110
+ if (typeof parsed.pattern === "string" && parsed.pattern) {
111
+ return clip(parsed.pattern);
112
+ }
113
+ if (Array.isArray(parsed.files))
114
+ return clip(`${parsed.files.length} file(s)`);
115
+ }
116
+ catch {
117
+ /* fall through */
118
+ }
119
+ // Truncated JSON (common in history) — pull a path-looking substring.
120
+ const pathHit = raw.match(/"path"\s*:\s*"((?:\\.|[^"\\])*)"/);
121
+ if (pathHit?.[1]) {
122
+ try {
123
+ return clip(JSON.parse(`"${pathHit[1]}"`));
124
+ }
125
+ catch {
126
+ return clip(pathHit[1]);
127
+ }
128
+ }
129
+ void name;
130
+ return clip(raw);
131
+ }
132
+ /** Absolute path for on-disk open (fs.read / similar) when recoverable. */
133
+ export function pathFromArgsDisplay(argsDisplay) {
134
+ const label = cleanArgsLabel("fs.read", argsDisplay);
135
+ if (!label)
136
+ return undefined;
137
+ // Plain absolute / home-relative path only — never treat shell commands as paths.
138
+ if (label.startsWith("/") || label.startsWith("~/") || /^[A-Za-z]:[\\/]/.test(label)) {
139
+ return label;
140
+ }
141
+ return undefined;
142
+ }
79
143
  /** Short, stable title: `web.search · output` (args live in the body header). */
80
144
  export function toolPagerTitle(name, argsDisplay) {
81
- if (!argsDisplay)
145
+ // Border title only — full command/path is in the pager body header.
146
+ const label = cleanArgsLabel(name, argsDisplay, { maxLen: 48 });
147
+ if (!label)
82
148
  return `${name} · output`;
83
- // Keep the query readable but don't let it double as a second title line.
84
- const short = argsDisplay.length > 48 ? `${argsDisplay.slice(0, 45)}…` : argsDisplay;
85
- return `${name} · ${short}`;
149
+ return `${name} · ${label}`;
86
150
  }
151
+ /** Inline full artifact into the pager when small enough (no paging UI needed). */
152
+ const INLINE_ARTIFACT_MAX_BYTES = 512 * 1024;
153
+ /** Cap when opening the real source file for fs.read in the pager. */
154
+ const FULL_SOURCE_FILE_MAX_BYTES = 2 * 1024 * 1024;
87
155
  async function resolveFileChangeBody(change) {
88
156
  let full = change;
89
157
  if (!change.afterText && change.snapshotPath) {
@@ -137,18 +205,55 @@ export async function openToolOutputPager(services, item, options = {}) {
137
205
  }
138
206
  let body;
139
207
  let artifactSource;
208
+ let highlightPath;
209
+ let openedSourceFile = false;
140
210
  if (options.bodyOverride !== undefined) {
141
211
  body = options.bodyOverride;
142
212
  }
143
213
  else {
144
214
  body = services.session.spool.tail(asToolCallId(item.toolCallId));
145
- if (item.artifactPath && !options.skipArtifact) {
215
+ // fs.read (and similar) often return a line-range slice to the model.
216
+ // When the user opens the card, prefer the full on-disk file so the pager
217
+ // is not stuck on "[lines 55-66 of 168] … call fs.read with offset=…".
218
+ if ((item.name === "fs.read" || item.name === "fs.cat") &&
219
+ options.bodyOverride === undefined) {
220
+ const sourcePath = pathFromArgsDisplay(item.argsDisplay);
221
+ if (sourcePath) {
222
+ try {
223
+ const info = await stat(sourcePath);
224
+ if (info.isFile() && info.size <= FULL_SOURCE_FILE_MAX_BYTES) {
225
+ body = await readFile(sourcePath, "utf8");
226
+ highlightPath = sourcePath;
227
+ openedSourceFile = true;
228
+ }
229
+ else if (info.isFile()) {
230
+ artifactSource = createArtifactPagerSource(sourcePath);
231
+ const firstPage = await artifactSource.readPage(0);
232
+ body = firstPage.body;
233
+ highlightPath = sourcePath;
234
+ openedSourceFile = true;
235
+ }
236
+ }
237
+ catch {
238
+ /* keep spool body */
239
+ }
240
+ }
241
+ }
242
+ if (!openedSourceFile &&
243
+ item.artifactPath &&
244
+ !options.skipArtifact) {
146
245
  try {
147
246
  const info = await stat(item.artifactPath);
148
247
  if (info.isFile() && info.size >= Buffer.byteLength(body, "utf8")) {
149
- artifactSource = createArtifactPagerSource(item.artifactPath);
150
- const firstPage = await artifactSource.readPage(0);
151
- body = firstPage.body;
248
+ if (info.size <= INLINE_ARTIFACT_MAX_BYTES) {
249
+ // Full body up front — no artificial first-page truncation.
250
+ body = await readFile(item.artifactPath, "utf8");
251
+ }
252
+ else {
253
+ artifactSource = createArtifactPagerSource(item.artifactPath);
254
+ const firstPage = await artifactSource.readPage(0);
255
+ body = firstPage.body;
256
+ }
152
257
  }
153
258
  }
154
259
  catch {
@@ -159,27 +264,45 @@ export async function openToolOutputPager(services, item, options = {}) {
159
264
  }
160
265
  body = body
161
266
  .replace(/^(ok|failed)\n/gm, "")
267
+ .replace(/^Tool\s+\S+\s+result\s*\([^)]*\)\s*:?\s*\n?/gim, "")
162
268
  .replace(/^full output saved to .+\n?/gim, "")
163
269
  .replace(/^artifact: .+\n?/gim, "")
164
270
  .trimEnd();
165
271
  if (!artifactSource)
166
272
  body = formatToolPagerBody(body);
167
- // Optional one-line query header so the border title can stay short.
273
+ // Full command/path header in the body (never ellipsize — title is short).
168
274
  let header = "";
169
- if (options.bodyOverride === undefined &&
170
- item.argsDisplay &&
171
- item.argsDisplay.length > 0) {
172
- const label = item.name === "shell.exec" ? "command" : "query";
173
- header = `${label}: ${item.argsDisplay}\n\n`;
275
+ if (options.bodyOverride === undefined) {
276
+ const label = cleanArgsLabel(item.name, item.argsDisplay);
277
+ if (label) {
278
+ const kind = item.name === "shell.exec"
279
+ ? "command"
280
+ : openedSourceFile
281
+ ? "file"
282
+ : item.name.startsWith("fs.")
283
+ ? "path"
284
+ : "query";
285
+ header = `${kind}: ${label}\n\n`;
286
+ }
174
287
  }
175
288
  let note = "";
176
- if (item.artifactPath && options.bodyOverride === undefined) {
289
+ if (openedSourceFile && highlightPath) {
290
+ note = `\n\n── full file ──\n${highlightPath}`;
291
+ }
292
+ else if (item.artifactPath && options.bodyOverride === undefined) {
177
293
  note =
178
294
  `\n\n── full output saved at ──\n${item.artifactPath}` +
179
- (artifactSource ? "\n(paged from disk)" : "\n(spool body; artifact unreadable)");
295
+ (artifactSource
296
+ ? "\n(paged from disk — PageDown / ^U·^D for more)"
297
+ : "\n(full body)");
180
298
  }
181
299
  const title = options.titleOverride ?? toolPagerTitle(item.name, item.argsDisplay);
182
- const opened = services.overlay.openPager(title, `${header}${body || "(no output)"}${note}`, artifactSource);
300
+ // When paging an artifact, pass body alone as fallback; pager swaps to pages.
301
+ // Include header only for in-memory full bodies so path context stays visible.
302
+ const pagerBody = artifactSource
303
+ ? body || "(no output)"
304
+ : `${header}${body || "(no output)"}${note}`;
305
+ const opened = services.overlay.openPager(title, pagerBody, artifactSource, highlightPath);
183
306
  if (!opened) {
184
307
  services.session.notice("warn", "could not open output pager (another overlay is open)");
185
308
  }
@@ -1 +1 @@
1
- {"version":3,"file":"open-tool-output.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/open-tool-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-tool-output.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/open-tool-output.ts"],"names":[],"mappings":"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"}
@@ -11,10 +11,31 @@ export interface PlanProgressView {
11
11
  export declare const TASK_GLYPH: Record<TaskState, string>;
12
12
  export declare const TASK_STATE_LABEL: Record<TaskState, string>;
13
13
  export declare const STATUS_LABEL: Record<PlanStatus, string>;
14
- export type PlanColorToken = "muted" | "foreground" | "accent" | "success" | "activity" | "cyan" | "magenta" | "mode";
14
+ /**
15
+ * Theme keys used for plan/task pane text. Keep these high-contrast on the
16
+ * pane background (statusBackground) — avoid washed slate for body text.
17
+ */
18
+ export type PlanColorToken = "muted" | "foreground" | "accent" | "success" | "activity" | "cyan" | "magenta" | "mode" | "response" | "diffDel";
15
19
  export declare function planStatusColor(status: PlanStatus): PlanColorToken;
20
+ /**
21
+ * Task row colors (tasks pane):
22
+ * - pending → solid foreground (not light gray wash)
23
+ * - active → yellow activity (already good)
24
+ * - done → bright success green
25
+ * - failed → red
26
+ * - skipped → muted secondary
27
+ */
16
28
  export declare function taskStateColor(state: TaskState): PlanColorToken;
17
29
  export declare function progressView(plan: SessionPlan): PlanProgressView;
30
+ /**
31
+ * Compact progress bar for the tasks pane header.
32
+ * Example (width=8, 3/8): `███░░░░░`
33
+ */
34
+ export declare function progressBar(done: number, total: number, width: number): string;
35
+ /** Short uppercase chip label for plan status (TASKS header). */
36
+ export declare function planStatusChip(status: PlanStatus): string;
37
+ /** Short chip label for a task state. */
38
+ export declare function taskStateChip(state: TaskState): string;
18
39
  export declare function taskLabel(task: PlanTask): string;
19
40
  export declare function activeTaskId(plan: SessionPlan): string | undefined;
20
41
  /** Soft-wrap without ellipsis — full text, never truncated. */
@@ -38,6 +38,14 @@ export function planStatusColor(status) {
38
38
  return "foreground";
39
39
  }
40
40
  }
41
+ /**
42
+ * Task row colors (tasks pane):
43
+ * - pending → solid foreground (not light gray wash)
44
+ * - active → yellow activity (already good)
45
+ * - done → bright success green
46
+ * - failed → red
47
+ * - skipped → muted secondary
48
+ */
41
49
  export function taskStateColor(state) {
42
50
  switch (state) {
43
51
  case "done":
@@ -45,12 +53,12 @@ export function taskStateColor(state) {
45
53
  case "in_progress":
46
54
  return "activity";
47
55
  case "failed":
48
- return "accent";
56
+ return "diffDel";
49
57
  case "skipped":
50
58
  return "muted";
51
59
  case "pending":
52
60
  default:
53
- return "muted";
61
+ return "foreground";
54
62
  }
55
63
  }
56
64
  export function progressView(plan) {
@@ -61,6 +69,52 @@ export function progressView(plan) {
61
69
  return { done, total, label: `${done}/${total} complete` };
62
70
  return { done, total, label: `${done}/${total} tasks` };
63
71
  }
72
+ /**
73
+ * Compact progress bar for the tasks pane header.
74
+ * Example (width=8, 3/8): `███░░░░░`
75
+ */
76
+ export function progressBar(done, total, width) {
77
+ const w = Math.max(4, Math.min(24, Math.floor(width)));
78
+ if (total <= 0)
79
+ return "░".repeat(w);
80
+ const filled = Math.max(0, Math.min(w, Math.round((done / total) * w)));
81
+ return `${"█".repeat(filled)}${"░".repeat(w - filled)}`;
82
+ }
83
+ /** Short uppercase chip label for plan status (TASKS header). */
84
+ export function planStatusChip(status) {
85
+ switch (status) {
86
+ case "draft":
87
+ return "DRAFT";
88
+ case "approved":
89
+ return "READY";
90
+ case "in_progress":
91
+ return "ACTIVE";
92
+ case "completed":
93
+ return "DONE";
94
+ case "abandoned":
95
+ return "DROPPED";
96
+ default: {
97
+ const _exhaustive = status;
98
+ return String(_exhaustive).toUpperCase() || "PLAN";
99
+ }
100
+ }
101
+ }
102
+ /** Short chip label for a task state. */
103
+ export function taskStateChip(state) {
104
+ switch (state) {
105
+ case "in_progress":
106
+ return "ACTIVE";
107
+ case "done":
108
+ return "DONE";
109
+ case "failed":
110
+ return "FAIL";
111
+ case "skipped":
112
+ return "SKIP";
113
+ case "pending":
114
+ default:
115
+ return "TODO";
116
+ }
117
+ }
64
118
  export function taskLabel(task) {
65
119
  return `${TASK_GLYPH[task.state]} ${task.id} ${task.title}`;
66
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/plan-view.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/plan-view.ts"],"names":[],"mappings":"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"}
@@ -23,8 +23,21 @@ export interface Theme {
23
23
  readonly chip: string;
24
24
  /** Mode badge amber / RUNNING (legacy #B45309). */
25
25
  readonly mode: string;
26
- /** Success / READY / allow-all green. */
26
+ /**
27
+ * Success / done / READY green — bright enough to read on dark panes
28
+ * (tasks list, toasts, confirmations). Not a dim forest green.
29
+ */
27
30
  readonly success: string;
31
+ /**
32
+ * Dark green plate for "done" status chips (white label on solid bg).
33
+ * Brighter `success` is for text/borders only — too light as a fill.
34
+ */
35
+ readonly successBg: string;
36
+ /**
37
+ * Dark red plate for "failed" / "blocked" status chips (white on solid bg).
38
+ * Brighter `diffDel` stays for text/borders.
39
+ */
40
+ readonly failedBg: string;
28
41
  /**
29
42
  * Wordmark top-of-"I" magenta (`WORDMARK_TOP_HEX` / chalk.magentaBright).
30
43
  * Used for plan/task pane border, agent-card frame, output accents.
@@ -46,8 +59,7 @@ export interface Theme {
46
59
  /** Indigo chip alternate for idle shortcuts. */
47
60
  readonly chipIndigo: string;
48
61
  /**
49
- * Prompt / YOU badge background — same as the CTRL+O OUTPUT chip so user
50
- * chrome and output chrome share one brand accent.
62
+ * Prompt / YOU badge background — warm amber (matches user bubble border).
51
63
  */
52
64
  readonly prompt: string;
53
65
  /** Thinking / reasoning text (violet). */
@@ -57,10 +69,12 @@ export interface Theme {
57
69
  * stronger than the `/` command menu border (`theme.border` #22D3EE).
58
70
  */
59
71
  readonly inputBorder: string;
60
- /** User prompt bubble border — soft magenta. */
72
+ /** User prompt bubble border — warm amber. */
61
73
  readonly userBorder: string;
62
- /** Tool output card border blue from wordmark mid gradient. */
74
+ /** Tool card chrome accent (legacy mid-blue). */
63
75
  readonly toolBorder: string;
76
+ /** Tool OUTPUT body text (readable sky cyan). */
77
+ readonly toolOutput: string;
64
78
  /** Modal accent border. */
65
79
  readonly modalBorder: string;
66
80
  /** Added lines in file-diff cards / pager (green). */
@@ -17,7 +17,12 @@ const DARK_THEME = {
17
17
  rowB: "#0F172A",
18
18
  chip: "#334155",
19
19
  mode: "#B45309",
20
- success: "#166534",
20
+ // Readable on #0b0e14 / statusBackground — was #166534 (too dark / washed).
21
+ success: "#4ADE80",
22
+ // Solid dark green for "done" badge fills (white text stays crisp).
23
+ successBg: "#166534",
24
+ // Solid dark red for "failed" badge fills.
25
+ failedBg: "#991B1B",
21
26
  // Top of CLAI wordmark "I" (magentaBright) — plan pane + agent card frame.
22
27
  magenta: "#FF55FF",
23
28
  cyan: "#67E8F9",
@@ -28,13 +33,16 @@ const DARK_THEME = {
28
33
  queued: "#854D0E",
29
34
  chipTeal: "#0E7490",
30
35
  chipIndigo: "#3730A3",
31
- // Match CTRL+O OUTPUT chip bg for YOU / prompt chrome.
32
- prompt: "#0E7490",
36
+ // YOU badge plate darker amber so white "YOU" stays crisp.
37
+ prompt: "#B45309",
33
38
  thinking: "#A78BFA",
34
39
  // Stronger aqua than /command border (#22D3EE) — high-sat electric cyan.
35
40
  inputBorder: "#2EEBFF",
36
- userBorder: "#0E7490",
41
+ // User prompt bubble border — lighter warm amber (distinct from YOU plate).
42
+ userBorder: "#f5b351",
37
43
  toolBorder: "#3B82F6",
44
+ // Tool OUTPUT body text — sky cyan (readable on dark panes).
45
+ toolOutput: "#7DD3FC",
38
46
  modalBorder: "#22D3EE",
39
47
  diffAdd: "#4ADE80",
40
48
  diffDel: "#F87171",
@@ -63,7 +71,11 @@ const LIGHT_THEME = {
63
71
  rowB: "#f8fafc",
64
72
  chip: "#e2e8f0",
65
73
  mode: "#B45309",
66
- success: "#166534",
74
+ success: "#16A34A",
75
+ // Darker plate for "done" chips on light terminals.
76
+ successBg: "#14532d",
77
+ // Darker plate for "failed" chips on light terminals.
78
+ failedBg: "#7f1d1d",
67
79
  // Top of CLAI wordmark "I" (slightly deeper on light bg for contrast).
68
80
  magenta: "#D946EF",
69
81
  cyan: "#0891b2",
@@ -74,12 +86,16 @@ const LIGHT_THEME = {
74
86
  queued: "#854D0E",
75
87
  chipTeal: "#0e7490",
76
88
  chipIndigo: "#4338ca",
77
- prompt: "#0e7490",
89
+ // YOU badge plate — deep amber.
90
+ prompt: "#b45309",
78
91
  thinking: "#7c3aed",
79
92
  // Stronger aqua than /command border (#0891B2) for light terminals.
80
93
  inputBorder: "#06B6D4",
81
- userBorder: "#0e7490",
94
+ // User prompt bubble border — lighter warm amber.
95
+ userBorder: "#f5b351",
82
96
  toolBorder: "#2563eb",
97
+ // Tool OUTPUT body text — sky cyan.
98
+ toolOutput: "#0369a1",
83
99
  modalBorder: "#0891B2",
84
100
  diffAdd: "#15803d",
85
101
  diffDel: "#dc2626",
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/theme.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2FH,MAAM,UAAU,GAAU;IACxB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,SAAS;IAC3B,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,2EAA2E;IAC3E,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,uDAAuD;IACvD,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,yEAAyE;IACzE,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,WAAW,GAAU;IACzB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,SAAS;IAC3B,SAAS,EAAE,SAAS;IACpB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,uEAAuE;IACvE,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,oEAAoE;IACpE,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,SAAS;IACpB,WAAW,EAAE,SAAS;IACtB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,SAAS;IACtB,WAAW,EAAE,SAAS;IACtB,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF,MAAM,UAAU,QAAQ,CAAC,IAAe;IACtC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/tui-v2/rendering/theme.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,11 @@ export interface ToolPresentation {
20
20
  readonly isFileDiff: boolean;
21
21
  }
22
22
  export declare function presentTool(item: ToolItem): ToolPresentation;
23
+ /** Basename + create/overwrite marker for writeMany list rows. */
24
+ export declare function writeManyFileLabel(change: {
25
+ readonly path: string;
26
+ readonly kind: string;
27
+ }): string;
23
28
  export interface OutputPresentation {
24
29
  readonly lines: readonly string[];
25
30
  readonly hiddenAboveCount: number;
@@ -20,6 +20,27 @@ const STATUS_LABEL = {
20
20
  failed: "failed",
21
21
  blocked: "blocked",
22
22
  };
23
+ /** Pull a display path / "N file(s)" out of argsDisplay even when it is JSON. */
24
+ function pathFromArgsDisplay(toolName, argsDisplay) {
25
+ const raw = (argsDisplay ?? "").trim();
26
+ if (!raw)
27
+ return "";
28
+ if (!raw.startsWith("{"))
29
+ return raw;
30
+ try {
31
+ const parsed = JSON.parse(raw);
32
+ if (typeof parsed.path === "string" && parsed.path)
33
+ return parsed.path;
34
+ if (Array.isArray(parsed.files)) {
35
+ const n = parsed.files.length;
36
+ return n > 0 ? `${n} file(s)` : "files";
37
+ }
38
+ }
39
+ catch {
40
+ // fall through
41
+ }
42
+ return toolName === "fs.writeMany" ? "files" : "";
43
+ }
23
44
  export function presentTool(item) {
24
45
  const fileDiff = isFileMutationTool(item.name) ||
25
46
  Boolean(item.fileChanges && item.fileChanges.length > 0);
@@ -33,27 +54,30 @@ export function presentTool(item) {
33
54
  let pathLine;
34
55
  if (fileDiff) {
35
56
  const kind = item.fileChanges?.[0]?.kind;
36
- const pathOrDisplay = item.fileChanges?.[0]?.path ??
37
- item.argsDisplay ??
38
- "";
39
- const titled = fileToolTitle(item.name, item.status, pathOrDisplay, kind);
40
- name = titled.title;
41
- pathLine = titled.pathLine ?? item.fileChanges?.[0]?.path;
42
- // Never dump oldText/newText JSON under a file mutation card.
43
- if (item.name === "fs.edit" ||
44
- item.name === "fs.replaceLines" ||
45
- item.name === "fs.delete" ||
46
- item.name === "fs.write" ||
47
- item.name === "fs.append" ||
48
- item.fileChanges) {
49
- argsLabel = undefined;
50
- argsDisplay = undefined;
57
+ // Prefer structured file list for multi-write; never use raw JSON args.
58
+ let pathOrDisplay = "";
59
+ if (item.name === "fs.writeMany" && item.fileChanges?.length) {
60
+ pathOrDisplay = `${item.fileChanges.length} file(s)`;
61
+ }
62
+ else if (item.fileChanges?.[0]?.path) {
63
+ pathOrDisplay = item.fileChanges[0].path;
51
64
  }
52
- if (item.name === "fs.writeMany" && item.argsDisplay) {
53
- // Title already carries summary; skip duplicate input line.
54
- argsLabel = undefined;
55
- argsDisplay = undefined;
65
+ else {
66
+ pathOrDisplay = pathFromArgsDisplay(item.name, item.argsDisplay);
67
+ if (!pathOrDisplay) {
68
+ pathOrDisplay =
69
+ item.name === "fs.writeMany" ? "files" : item.name.replace(/^fs\./, "");
70
+ }
56
71
  }
72
+ const titled = fileToolTitle(item.name, item.status, pathOrDisplay, kind);
73
+ name = titled.title;
74
+ pathLine =
75
+ item.name === "fs.writeMany"
76
+ ? undefined
77
+ : titled.pathLine ?? item.fileChanges?.[0]?.path;
78
+ // Never dump oldText/newText / multi-file JSON under a file mutation card.
79
+ argsLabel = undefined;
80
+ argsDisplay = undefined;
57
81
  }
58
82
  let detail;
59
83
  if (item.status === "blocked") {
@@ -65,9 +89,14 @@ export function presentTool(item) {
65
89
  detail = short;
66
90
  }
67
91
  }
68
- const statusLabel = item.exitCode !== undefined
69
- ? `${STATUS_LABEL[item.status]} (exit ${item.exitCode})`
70
- : STATUS_LABEL[item.status];
92
+ // Keep the badge short so "done (exit 0)" never overflows the card border.
93
+ // Non-zero exit is still shown; success exit is implied by green "done".
94
+ let statusLabel = STATUS_LABEL[item.status];
95
+ if (item.exitCode !== undefined &&
96
+ item.exitCode !== 0 &&
97
+ (item.status === "failed" || item.status === "ok")) {
98
+ statusLabel = `${statusLabel} · ${item.exitCode}`;
99
+ }
71
100
  return {
72
101
  glyph: STATUS_GLYPH[item.status],
73
102
  statusLabel,
@@ -79,6 +108,12 @@ export function presentTool(item) {
79
108
  isFileDiff: Boolean(item.fileChanges && item.fileChanges.length > 0),
80
109
  };
81
110
  }
111
+ /** Basename + create/overwrite marker for writeMany list rows. */
112
+ export function writeManyFileLabel(change) {
113
+ const base = change.path.split(/[/\\]/).pop() || change.path;
114
+ const mark = change.kind === "create" ? "+" : change.kind === "overwrite" ? "~" : "·";
115
+ return `${mark} ${base}`;
116
+ }
82
117
  const COLLAPSED_HEAD_LINES = 4;
83
118
  const COLLAPSED_TAIL_LINES = 4;
84
119
  /**