@redplanethq/corebrain 2.8.18 → 2.8.21

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 (177) hide show
  1. package/dist/commands/browser/close-session.d.ts.map +1 -1
  2. package/dist/commands/browser/close-session.js +3 -0
  3. package/dist/commands/browser/close-session.js.map +1 -1
  4. package/dist/commands/browser/close.d.ts.map +1 -1
  5. package/dist/commands/browser/close.js +3 -0
  6. package/dist/commands/browser/close.js.map +1 -1
  7. package/dist/commands/browser/command.d.ts.map +1 -1
  8. package/dist/commands/browser/command.js +3 -0
  9. package/dist/commands/browser/command.js.map +1 -1
  10. package/dist/commands/browser/create-profile.d.ts.map +1 -1
  11. package/dist/commands/browser/create-profile.js +3 -0
  12. package/dist/commands/browser/create-profile.js.map +1 -1
  13. package/dist/commands/browser/create-session.d.ts.map +1 -1
  14. package/dist/commands/browser/create-session.js +3 -0
  15. package/dist/commands/browser/create-session.js.map +1 -1
  16. package/dist/commands/browser/delete-profile.d.ts.map +1 -1
  17. package/dist/commands/browser/delete-profile.js +3 -0
  18. package/dist/commands/browser/delete-profile.js.map +1 -1
  19. package/dist/commands/browser/delete-session.d.ts.map +1 -1
  20. package/dist/commands/browser/delete-session.js +3 -0
  21. package/dist/commands/browser/delete-session.js.map +1 -1
  22. package/dist/commands/browser/install.d.ts.map +1 -1
  23. package/dist/commands/browser/install.js +3 -0
  24. package/dist/commands/browser/install.js.map +1 -1
  25. package/dist/commands/browser/list-sessions.d.ts.map +1 -1
  26. package/dist/commands/browser/list-sessions.js +3 -0
  27. package/dist/commands/browser/list-sessions.js.map +1 -1
  28. package/dist/commands/browser/open-head.d.ts.map +1 -1
  29. package/dist/commands/browser/open-head.js +3 -0
  30. package/dist/commands/browser/open-head.js.map +1 -1
  31. package/dist/commands/browser/open.d.ts.map +1 -1
  32. package/dist/commands/browser/open.js +3 -0
  33. package/dist/commands/browser/open.js.map +1 -1
  34. package/dist/commands/browser/set-browser.d.ts.map +1 -1
  35. package/dist/commands/browser/set-browser.js +3 -0
  36. package/dist/commands/browser/set-browser.js.map +1 -1
  37. package/dist/commands/browser/status.d.ts.map +1 -1
  38. package/dist/commands/browser/status.js +3 -0
  39. package/dist/commands/browser/status.js.map +1 -1
  40. package/dist/commands/coding/agents.d.ts.map +1 -1
  41. package/dist/commands/coding/agents.js +3 -0
  42. package/dist/commands/coding/agents.js.map +1 -1
  43. package/dist/commands/coding/config.d.ts.map +1 -1
  44. package/dist/commands/coding/config.js +3 -0
  45. package/dist/commands/coding/config.js.map +1 -1
  46. package/dist/commands/coding/list.d.ts.map +1 -1
  47. package/dist/commands/coding/list.js +3 -0
  48. package/dist/commands/coding/list.js.map +1 -1
  49. package/dist/commands/coding/read.d.ts.map +1 -1
  50. package/dist/commands/coding/read.js +3 -0
  51. package/dist/commands/coding/read.js.map +1 -1
  52. package/dist/commands/coding/remove.d.ts.map +1 -1
  53. package/dist/commands/coding/remove.js +3 -0
  54. package/dist/commands/coding/remove.js.map +1 -1
  55. package/dist/commands/coding/setup.d.ts.map +1 -1
  56. package/dist/commands/coding/setup.js +3 -0
  57. package/dist/commands/coding/setup.js.map +1 -1
  58. package/dist/commands/exec/config.d.ts.map +1 -1
  59. package/dist/commands/exec/config.js +3 -0
  60. package/dist/commands/exec/config.js.map +1 -1
  61. package/dist/commands/folder/add.d.ts.map +1 -1
  62. package/dist/commands/folder/add.js +3 -0
  63. package/dist/commands/folder/add.js.map +1 -1
  64. package/dist/commands/folder/list.d.ts.map +1 -1
  65. package/dist/commands/folder/list.js +3 -0
  66. package/dist/commands/folder/list.js.map +1 -1
  67. package/dist/commands/folder/remove.d.ts.map +1 -1
  68. package/dist/commands/folder/remove.js +3 -0
  69. package/dist/commands/folder/remove.js.map +1 -1
  70. package/dist/commands/folder/scope.d.ts.map +1 -1
  71. package/dist/commands/folder/scope.js +3 -0
  72. package/dist/commands/folder/scope.js.map +1 -1
  73. package/dist/commands/gateway/config.d.ts +16 -0
  74. package/dist/commands/gateway/config.d.ts.map +1 -1
  75. package/dist/commands/gateway/config.js +21 -2
  76. package/dist/commands/gateway/config.js.map +1 -1
  77. package/dist/commands/gateway/index.d.ts +1 -1
  78. package/dist/commands/gateway/index.d.ts.map +1 -1
  79. package/dist/commands/gateway/index.js +9 -1
  80. package/dist/commands/gateway/index.js.map +1 -1
  81. package/dist/commands/gateway/list.d.ts +9 -0
  82. package/dist/commands/gateway/list.d.ts.map +1 -0
  83. package/dist/commands/gateway/list.js +63 -0
  84. package/dist/commands/gateway/list.js.map +1 -0
  85. package/dist/commands/gateway/setup.d.ts +15 -0
  86. package/dist/commands/gateway/setup.d.ts.map +1 -0
  87. package/dist/commands/gateway/setup.js +82 -0
  88. package/dist/commands/gateway/setup.js.map +1 -0
  89. package/dist/commands/gateway/status.d.ts +4 -1
  90. package/dist/commands/gateway/status.d.ts.map +1 -1
  91. package/dist/commands/gateway/status.js +97 -17
  92. package/dist/commands/gateway/status.js.map +1 -1
  93. package/dist/commands/setup.d.ts +9 -0
  94. package/dist/commands/setup.d.ts.map +1 -0
  95. package/dist/commands/setup.js +28 -0
  96. package/dist/commands/setup.js.map +1 -0
  97. package/dist/config/folders.d.ts.map +1 -1
  98. package/dist/config/folders.js +9 -1
  99. package/dist/config/folders.js.map +1 -1
  100. package/dist/server/api/gateways.d.ts +50 -0
  101. package/dist/server/api/gateways.d.ts.map +1 -0
  102. package/dist/server/api/gateways.js +63 -0
  103. package/dist/server/api/gateways.js.map +1 -0
  104. package/dist/server/pty/manager.d.ts +7 -0
  105. package/dist/server/pty/manager.d.ts.map +1 -1
  106. package/dist/server/pty/manager.js +37 -0
  107. package/dist/server/pty/manager.js.map +1 -1
  108. package/dist/server/tools/coding-tools.d.ts.map +1 -1
  109. package/dist/server/tools/coding-tools.js +34 -1
  110. package/dist/server/tools/coding-tools.js.map +1 -1
  111. package/dist/templates/env-overrides.d.ts +15 -0
  112. package/dist/templates/env-overrides.d.ts.map +1 -0
  113. package/dist/templates/env-overrides.js +40 -0
  114. package/dist/templates/env-overrides.js.map +1 -0
  115. package/dist/templates/gateway-compose.d.ts +14 -0
  116. package/dist/templates/gateway-compose.d.ts.map +1 -0
  117. package/dist/templates/gateway-compose.js +34 -0
  118. package/dist/templates/gateway-compose.js.map +1 -0
  119. package/dist/templates/webapp-compose.d.ts +11 -0
  120. package/dist/templates/webapp-compose.d.ts.map +1 -0
  121. package/dist/templates/webapp-compose.js +31 -0
  122. package/dist/templates/webapp-compose.js.map +1 -0
  123. package/dist/tui/chat.d.ts.map +1 -1
  124. package/dist/tui/chat.js +305 -54
  125. package/dist/tui/chat.js.map +1 -1
  126. package/dist/tui/components/approval-panel.d.ts +21 -2
  127. package/dist/tui/components/approval-panel.d.ts.map +1 -1
  128. package/dist/tui/components/approval-panel.js +87 -16
  129. package/dist/tui/components/approval-panel.js.map +1 -1
  130. package/dist/tui/components/status-line.d.ts +3 -0
  131. package/dist/tui/components/status-line.d.ts.map +1 -1
  132. package/dist/tui/components/status-line.js +9 -0
  133. package/dist/tui/components/status-line.js.map +1 -1
  134. package/dist/tui/components/task-detail.d.ts +21 -0
  135. package/dist/tui/components/task-detail.d.ts.map +1 -0
  136. package/dist/tui/components/task-detail.js +105 -0
  137. package/dist/tui/components/task-detail.js.map +1 -0
  138. package/dist/tui/components/task-list.d.ts +34 -0
  139. package/dist/tui/components/task-list.d.ts.map +1 -0
  140. package/dist/tui/components/task-list.js +245 -0
  141. package/dist/tui/components/task-list.js.map +1 -0
  142. package/dist/tui/components/tool-call-item.d.ts +6 -0
  143. package/dist/tui/components/tool-call-item.d.ts.map +1 -1
  144. package/dist/tui/components/tool-call-item.js +78 -12
  145. package/dist/tui/components/tool-call-item.js.map +1 -1
  146. package/dist/tui/hooks/use-conversation.d.ts.map +1 -1
  147. package/dist/tui/hooks/use-conversation.js +116 -35
  148. package/dist/tui/hooks/use-conversation.js.map +1 -1
  149. package/dist/tui/utils/avatar.d.ts +7 -23
  150. package/dist/tui/utils/avatar.d.ts.map +1 -1
  151. package/dist/tui/utils/avatar.js +102 -84
  152. package/dist/tui/utils/avatar.js.map +1 -1
  153. package/dist/tui/utils/html-to-md.d.ts +2 -0
  154. package/dist/tui/utils/html-to-md.d.ts.map +1 -0
  155. package/dist/tui/utils/html-to-md.js +17 -0
  156. package/dist/tui/utils/html-to-md.js.map +1 -0
  157. package/dist/tui/utils/stream.d.ts +59 -5
  158. package/dist/tui/utils/stream.d.ts.map +1 -1
  159. package/dist/tui/utils/stream.js +69 -0
  160. package/dist/tui/utils/stream.js.map +1 -1
  161. package/dist/utils/require-native-gateway.d.ts +11 -0
  162. package/dist/utils/require-native-gateway.d.ts.map +1 -0
  163. package/dist/utils/require-native-gateway.js +22 -0
  164. package/dist/utils/require-native-gateway.js.map +1 -0
  165. package/dist/utils/setup/docker.d.ts +10 -0
  166. package/dist/utils/setup/docker.d.ts.map +1 -0
  167. package/dist/utils/setup/docker.js +253 -0
  168. package/dist/utils/setup/docker.js.map +1 -0
  169. package/dist/utils/setup/local.d.ts +9 -0
  170. package/dist/utils/setup/local.d.ts.map +1 -0
  171. package/dist/utils/setup/local.js +226 -0
  172. package/dist/utils/setup/local.js.map +1 -0
  173. package/dist/utils/setup/railway.d.ts +9 -0
  174. package/dist/utils/setup/railway.d.ts.map +1 -0
  175. package/dist/utils/setup/railway.js +244 -0
  176. package/dist/utils/setup/railway.js.map +1 -0
  177. package/package.json +5 -3
@@ -66,6 +66,26 @@ export function createConversation(baseUrl, apiKey) {
66
66
  let activeAbortController = null;
67
67
  // Equivalent of webapp's cachedNestedPartsRef — persists agent item across streams
68
68
  let savedAgentItem = null;
69
+ const partsByCallId = new Map();
70
+ function rememberPart(toolCallId, updates) {
71
+ const existing = partsByCallId.get(toolCallId);
72
+ partsByCallId.set(toolCallId, {
73
+ toolName: updates.toolName || existing?.toolName || toolCallId,
74
+ input: updates.input ?? existing?.input,
75
+ state: updates.state ?? existing?.state,
76
+ parentCallId: updates.parentCallId ?? existing?.parentCallId,
77
+ });
78
+ }
79
+ const TERMINAL_STATES = new Set(['output-available', 'output-denied', 'output-error', 'approval-responded']);
80
+ function findPendingChildrenOf(parentCallId) {
81
+ const out = [];
82
+ for (const [callId, part] of partsByCallId) {
83
+ if (part.parentCallId === parentCallId && (!part.state || !TERMINAL_STATES.has(part.state))) {
84
+ out.push({ toolName: part.toolName, input: part.input ?? {}, toolCallId: callId });
85
+ }
86
+ }
87
+ return out;
88
+ }
69
89
  // ── Shared stream event processor ─────────────────────────────────────────
70
90
  async function processStream(gen, callbacks, controller) {
71
91
  const streamNum = ++streamCounter;
@@ -75,6 +95,7 @@ export function createConversation(baseUrl, apiKey) {
75
95
  const toolInputMap = new Map(); // toolCallId → input
76
96
  let activeParent = null;
77
97
  let lastAgentItem = savedAgentItem; // restored from prior stream (like cachedNestedPartsRef)
98
+ let lastAgentCallId = null; // tracks lastAgentItem's toolCallId for parent linkage
78
99
  let hadApprovalRequest = false;
79
100
  const approvedContainerIds = new Set(); // prevent duplicate approval expansion
80
101
  try {
@@ -94,15 +115,20 @@ export function createConversation(baseUrl, apiKey) {
94
115
  activeTools.set(event.toolCallId, item);
95
116
  if (CONTAINER_TOOLS.has(event.toolName)) {
96
117
  activeParent = { id: event.toolCallId, item };
97
- if (event.toolName.startsWith('agent-'))
118
+ if (event.toolName.startsWith('agent-')) {
98
119
  lastAgentItem = item;
120
+ lastAgentCallId = event.toolCallId;
121
+ }
122
+ rememberPart(event.toolCallId, { toolName: event.toolName, state: 'input-streaming' });
99
123
  callbacks.onToolStart?.(event.toolCallId, event.toolName, item);
100
124
  }
101
125
  else if (activeParent) {
102
126
  activeParent.item.addChild(item);
127
+ rememberPart(event.toolCallId, { toolName: event.toolName, state: 'input-streaming', parentCallId: activeParent.id });
103
128
  callbacks.onRerender?.();
104
129
  }
105
130
  else {
131
+ rememberPart(event.toolCallId, { toolName: event.toolName, state: 'input-streaming' });
106
132
  callbacks.onToolStart?.(event.toolCallId, event.toolName, item);
107
133
  }
108
134
  break;
@@ -116,6 +142,7 @@ export function createConversation(baseUrl, apiKey) {
116
142
  }
117
143
  case 'tool-input-available': {
118
144
  toolInputMap.set(event.toolCallId, event.input);
145
+ rememberPart(event.toolCallId, { input: event.input, state: 'in-progress' });
119
146
  break;
120
147
  }
121
148
  case 'tool-call': {
@@ -126,21 +153,27 @@ export function createConversation(baseUrl, apiKey) {
126
153
  activeTools.set(event.toolCallId, item);
127
154
  if (CONTAINER_TOOLS.has(event.toolName)) {
128
155
  activeParent = { id: event.toolCallId, item };
129
- if (event.toolName.startsWith('agent-'))
156
+ if (event.toolName.startsWith('agent-')) {
130
157
  lastAgentItem = item;
158
+ lastAgentCallId = event.toolCallId;
159
+ }
160
+ rememberPart(event.toolCallId, { toolName: event.toolName, input: event.args, state: 'in-progress' });
131
161
  callbacks.onToolStart?.(event.toolCallId, event.toolName, item);
132
162
  }
133
163
  else if (activeParent) {
134
164
  item.setDone();
135
165
  activeParent.item.addChild(item);
166
+ rememberPart(event.toolCallId, { toolName: event.toolName, input: event.args, state: 'in-progress', parentCallId: activeParent.id });
136
167
  callbacks.onRerender?.();
137
168
  }
138
169
  else {
170
+ rememberPart(event.toolCallId, { toolName: event.toolName, input: event.args, state: 'in-progress' });
139
171
  callbacks.onToolStart?.(event.toolCallId, event.toolName, item);
140
172
  }
141
173
  break;
142
174
  }
143
175
  case 'tool-output-available': {
176
+ rememberPart(event.toolCallId, { state: 'output-available' });
144
177
  const parentItem = activeTools.get(event.toolCallId);
145
178
  if (parentItem && event.output) {
146
179
  let parts = null;
@@ -150,8 +183,26 @@ export function createConversation(baseUrl, apiKey) {
150
183
  else if (event.output.toolCalls ?? event.output.toolResults ?? event.output.steps) {
151
184
  parts = mastraDataToOutputParts(event.output);
152
185
  }
153
- if (parts)
186
+ if (parts) {
154
187
  parentItem.updateFromOutputParts(parts);
188
+ // Mirror the nested children into the persistent parts model so
189
+ // approval expansion can find them when the container's
190
+ // ToolCallItem isn't in activeTools (cross-stream resumption).
191
+ for (const part of parts) {
192
+ if (!part.type.startsWith('tool-') || !part.toolCallId)
193
+ continue;
194
+ const childToolName = part.type.slice('tool-'.length);
195
+ const isTerminal = part.state === 'output-available' ||
196
+ part.state === 'output-denied' ||
197
+ part.state === 'output-error';
198
+ rememberPart(part.toolCallId, {
199
+ toolName: childToolName,
200
+ input: part.input,
201
+ parentCallId: event.toolCallId,
202
+ state: isTerminal ? 'output-available' : (part.state ?? 'in-progress'),
203
+ });
204
+ }
205
+ }
155
206
  }
156
207
  if (!event.preliminary && activeParent?.id === event.toolCallId) {
157
208
  parentItem?.setDone();
@@ -163,6 +214,7 @@ export function createConversation(baseUrl, apiKey) {
163
214
  break;
164
215
  }
165
216
  case 'tool-result': {
217
+ rememberPart(event.toolCallId, { state: 'output-available' });
166
218
  const item = activeTools.get(event.toolCallId);
167
219
  if (item) {
168
220
  item.setDone(event.result);
@@ -175,40 +227,54 @@ export function createConversation(baseUrl, apiKey) {
175
227
  }
176
228
  case 'tool-approval-request': {
177
229
  hadApprovalRequest = true;
178
- const toolName = toolNameMap.get(event.toolCallId) ?? event.toolCallId;
230
+ // Mark the approval-requested state on the persistent part.
231
+ rememberPart(event.toolCallId, { state: 'approval-requested' });
232
+ // Resolve toolName from the persistent parts model first, then
233
+ // fall back to the per-stream toolNameMap. This catches the case
234
+ // where the approval arrives in a fresh stream session that didn't
235
+ // see the original tool-input-start.
236
+ const persistedPart = partsByCallId.get(event.toolCallId);
237
+ const toolName = persistedPart?.toolName ?? toolNameMap.get(event.toolCallId) ?? event.toolCallId;
179
238
  // Save agent item unconditionally — must happen before any early break
180
239
  // so the next processStream (approval resume stream) can look up children.
181
240
  if (lastAgentItem)
182
241
  savedAgentItem = lastAgentItem;
183
242
  // Mirror webapp's findPendingApprovals: expand container tools into
184
243
  // their pending children so the user sees the actual leaf tools.
185
- const containerItem = activeTools.get(event.toolCallId);
244
+ // Find pending children via the persistent parts model (works across
245
+ // stream resumptions, unlike activeTools which is per-stream).
186
246
  const isContainerTool = toolName === 'agent-take_action' || toolName === 'take_action';
187
- if (isContainerTool && containerItem) {
247
+ if (isContainerTool) {
188
248
  // Deduplicate: parallel tool calls fire multiple approval events for
189
249
  // the same container. Only expand once — one approval covers all children.
190
250
  if (approvedContainerIds.has(event.toolCallId))
191
251
  break;
192
252
  approvedContainerIds.add(event.toolCallId);
193
- const pendingChildren = containerItem.getPendingChildren();
253
+ // Source 1 (in-stream): the container's ToolCallItem in activeTools
254
+ // has nested children registered via tool-output-available's
255
+ // updateFromOutputParts. This is the most reliable source when the
256
+ // container was started in this same stream.
257
+ const containerItem = activeTools.get(event.toolCallId);
258
+ let pendingChildren = containerItem?.getPendingChildren() ?? [];
259
+ // Source 2 (cross-stream resumption): the persistent parts model.
260
+ // The container's ToolCallItem may have been cleared but
261
+ // partsByCallId entries with parentCallId === containerId persist.
262
+ if (pendingChildren.length === 0) {
263
+ pendingChildren = findPendingChildrenOf(event.toolCallId);
264
+ }
194
265
  if (pendingChildren.length > 0) {
195
266
  for (const child of pendingChildren) {
196
- callbacks.onApprovalRequested?.(event.approvalId, event.toolCallId, child.toolName, child.input);
267
+ // Pass child's own toolCallId — sharing the container's id
268
+ // across children would collapse decisions in the panel
269
+ // (decisions Map keyed by toolCallId).
270
+ callbacks.onApprovalRequested?.(event.approvalId, child.toolCallId, child.toolName, child.input);
197
271
  }
198
272
  break;
199
273
  }
200
274
  }
201
- // Fall back: if toolName wasn't resolved, check children cached from first stream
202
- let resolvedName = toolName;
203
- let toolInput = toolInputMap.get(event.toolCallId);
204
- if (resolvedName === event.toolCallId && lastAgentItem) {
205
- const childInfo = lastAgentItem.getChildInfo(event.toolCallId);
206
- if (childInfo) {
207
- resolvedName = childInfo.toolName;
208
- toolInput = childInfo.input;
209
- }
210
- }
211
- callbacks.onApprovalRequested?.(event.approvalId, event.toolCallId, resolvedName, toolInput);
275
+ // Fall back: single approval. resolvedName comes from persistedPart.
276
+ const toolInput = persistedPart?.input ?? toolInputMap.get(event.toolCallId);
277
+ callbacks.onApprovalRequested?.(event.approvalId, event.toolCallId, toolName, toolInput);
212
278
  break;
213
279
  }
214
280
  case 'data-tool-agent': {
@@ -231,6 +297,28 @@ export function createConversation(baseUrl, apiKey) {
231
297
  toolNameMap.set(call.toolCallId, call.toolName);
232
298
  if (call.args)
233
299
  toolInputMap.set(call.toolCallId, call.args);
300
+ // Children registered via data-tool-agent are nested inside the
301
+ // active agent container — link them so approval expansion can find them.
302
+ rememberPart(call.toolCallId, {
303
+ toolName: call.toolName,
304
+ input: call.args,
305
+ parentCallId: lastAgentCallId ?? undefined,
306
+ state: 'in-progress',
307
+ });
308
+ }
309
+ }
310
+ // Mark any toolResults as output-available in the parts model so
311
+ // findPendingChildrenOf doesn't return completed tools as "pending".
312
+ const allResults = [
313
+ ...(agentData.toolResults ?? []),
314
+ ...(Array.isArray(agentData.steps)
315
+ ? agentData.steps.flatMap((s) => s.toolResults ?? [])
316
+ : []),
317
+ ];
318
+ for (const r of allResults) {
319
+ const res = r.payload ?? r;
320
+ if (res.toolCallId) {
321
+ rememberPart(res.toolCallId, { state: 'output-available' });
234
322
  }
235
323
  }
236
324
  const parts = mastraDataToOutputParts(agentData);
@@ -238,25 +326,17 @@ export function createConversation(baseUrl, apiKey) {
238
326
  lastAgentItem.updateFromOutputParts(parts);
239
327
  callbacks.onRerender?.();
240
328
  }
241
- else {
329
+ else if (allResults.length > 0) {
242
330
  // Post-approval pattern: toolCalls is [] but toolResults has results
243
331
  // for children registered in an earlier snapshot — mark them done.
244
- const allResults = [
245
- ...(agentData.toolResults ?? []),
246
- ...(Array.isArray(agentData.steps)
247
- ? agentData.steps.flatMap((s) => s.toolResults ?? [])
248
- : []),
249
- ];
250
- if (allResults.length > 0) {
251
- const resultMap = new Map();
252
- for (const r of allResults) {
253
- const res = r.payload ?? r;
254
- if (res.toolCallId)
255
- resultMap.set(res.toolCallId, res.result);
256
- }
257
- lastAgentItem.markChildrenDoneByIds(resultMap);
258
- callbacks.onRerender?.();
332
+ const resultMap = new Map();
333
+ for (const r of allResults) {
334
+ const res = r.payload ?? r;
335
+ if (res.toolCallId)
336
+ resultMap.set(res.toolCallId, res.result);
259
337
  }
338
+ lastAgentItem.markChildrenDoneByIds(resultMap);
339
+ callbacks.onRerender?.();
260
340
  }
261
341
  }
262
342
  break;
@@ -319,6 +399,7 @@ export function createConversation(baseUrl, apiKey) {
319
399
  clear() {
320
400
  conversationId = null;
321
401
  savedAgentItem = null;
402
+ partsByCallId.clear();
322
403
  },
323
404
  resume(id) {
324
405
  conversationId = id;
@@ -1 +1 @@
1
- {"version":3,"file":"use-conversation.js","sourceRoot":"","sources":["../../../src/tui/hooks/use-conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-conversation.js","sourceRoot":"","sources":["../../../src/tui/hooks/use-conversation.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,11 @@
1
- import { Text } from '@mariozechner/pi-tui';
2
1
  import type { Component } from '@mariozechner/pi-tui';
3
2
  /**
4
- * Checks if the current terminal supports inline images.
5
- * Extends pi-tui's detection with tmux passthrough and explicit override.
3
+ * Renders the workspace name (up to MAX_LETTERS chars) as a compact 3×5
4
+ * pixel-font monogram using half-blocks (3 lines tall per letter).
5
+ * Top pixel of each cell uses the full accent; bottom pixel uses a 70%
6
+ * shaded accent — gives a subtle vertical gradient for visual interest
7
+ * without losing readability. OFF pixels emit a plain space so it works
8
+ * on light and dark themes alike.
6
9
  */
7
- export declare function supportsImages(): boolean;
8
- /**
9
- * Builds an inline PNG Image component from base64 data.
10
- * Returns null if terminal doesn't support images.
11
- */
12
- export declare function buildImageAvatar(base64Png: string, accentHex: string): Component | null;
13
- /**
14
- * Renders a PNG (base64) as colored Unicode half-block characters.
15
- * Uses ▀ (upper half block) with ANSI 24-bit fg/bg colors to pack
16
- * 2 pixel rows into each terminal line, preserving aspect ratio.
17
- * Works in any terminal that supports truecolor (no Kitty/iTerm2 needed).
18
- */
19
- export declare function buildColorBlockAvatar(base64Png: string, targetCols?: number): Text;
20
- /**
21
- * Returns the best available avatar component:
22
- * - Inline PNG image (if terminal supports Kitty/iTerm2 protocol)
23
- * - Colored half-block rendering (truecolor, works everywhere)
24
- * - Deterministic accent-colored pixel grid (final fallback, no PNG needed)
25
- */
26
- export declare function buildAvatar(name: string, accentHex: string, base64Png?: string | null): Component;
10
+ export declare function buildAvatar(name: string, accentHex: string, _base64Png?: string | null): Component;
27
11
  //# sourceMappingURL=avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/avatar.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,IAAI,EAKJ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAkBxC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAWvF;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,SAAK,GAAG,IAAI,CA8B9E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,SAAS,CAcX"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/avatar.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAkEpD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,GACxB,SAAS,CAwCX"}
@@ -1,96 +1,114 @@
1
1
  import chalk from 'chalk';
2
- import { decode as decodePng } from 'fast-png';
3
- import { Text, Image, getPngDimensions, getCapabilities, resetCapabilitiesCache, } from '@mariozechner/pi-tui';
4
- /**
5
- * Checks if the current terminal supports inline images.
6
- * Extends pi-tui's detection with tmux passthrough and explicit override.
7
- */
8
- export function supportsImages() {
9
- // Allow explicit override via env var
10
- if (process.env.CORE_IMAGE_PROTOCOL === 'iterm2' || process.env.CORE_IMAGE_PROTOCOL === 'kitty') {
11
- return true;
12
- }
13
- // tmux passes TERM_PROGRAM through — but some setups don't.
14
- // If running inside tmux, check if the outer terminal supports images.
15
- if (process.env.TERM === 'screen' || process.env.TMUX) {
16
- const outerTerm = (process.env.TERM_PROGRAM ?? '').toLowerCase();
17
- if (outerTerm === 'iterm.app' || process.env.ITERM_SESSION_ID)
18
- return true;
19
- if (outerTerm === 'kitty' || process.env.KITTY_WINDOW_ID)
20
- return true;
21
- if (outerTerm === 'wezterm' || process.env.WEZTERM_PANE)
22
- return true;
23
- if (outerTerm === 'ghostty' || process.env.GHOSTTY_RESOURCES_DIR)
24
- return true;
25
- }
26
- resetCapabilitiesCache();
27
- return getCapabilities().images !== null;
2
+ import { Text } from '@mariozechner/pi-tui';
3
+ // 3×5 bitmap font for digits and uppercase letters.
4
+ // Each glyph is 5 rows of 3 columns; '1' = pixel on, '0' = off.
5
+ const FONT_3X5 = {
6
+ A: ['010', '101', '111', '101', '101'],
7
+ B: ['110', '101', '110', '101', '110'],
8
+ C: ['011', '100', '100', '100', '011'],
9
+ D: ['110', '101', '101', '101', '110'],
10
+ E: ['111', '100', '110', '100', '111'],
11
+ F: ['111', '100', '110', '100', '100'],
12
+ G: ['011', '100', '101', '101', '011'],
13
+ H: ['101', '101', '111', '101', '101'],
14
+ I: ['111', '010', '010', '010', '111'],
15
+ J: ['001', '001', '001', '101', '010'],
16
+ K: ['101', '101', '110', '101', '101'],
17
+ L: ['100', '100', '100', '100', '111'],
18
+ M: ['101', '111', '111', '101', '101'],
19
+ N: ['101', '111', '111', '111', '101'],
20
+ O: ['010', '101', '101', '101', '010'],
21
+ P: ['110', '101', '110', '100', '100'],
22
+ Q: ['010', '101', '101', '110', '011'],
23
+ R: ['110', '101', '110', '110', '101'],
24
+ S: ['011', '100', '010', '001', '110'],
25
+ T: ['111', '010', '010', '010', '010'],
26
+ U: ['101', '101', '101', '101', '011'],
27
+ V: ['101', '101', '101', '101', '010'],
28
+ W: ['101', '101', '111', '111', '101'],
29
+ X: ['101', '101', '010', '101', '101'],
30
+ Y: ['101', '101', '010', '010', '010'],
31
+ Z: ['111', '001', '010', '100', '111'],
32
+ '0': ['010', '101', '101', '101', '010'],
33
+ '1': ['010', '110', '010', '010', '111'],
34
+ '2': ['110', '001', '010', '100', '111'],
35
+ '3': ['110', '001', '010', '001', '110'],
36
+ '4': ['101', '101', '111', '001', '001'],
37
+ '5': ['111', '100', '110', '001', '110'],
38
+ '6': ['011', '100', '110', '101', '010'],
39
+ '7': ['111', '001', '010', '010', '010'],
40
+ '8': ['010', '101', '010', '101', '010'],
41
+ '9': ['010', '101', '011', '001', '110'],
42
+ '?': ['111', '001', '010', '000', '010'],
43
+ };
44
+ const LETTER_W = 3;
45
+ const LETTER_H = 5;
46
+ const LETTER_GAP = 1;
47
+ const MAX_LETTERS = 3;
48
+ function parseHexColor(hex) {
49
+ const h = hex.replace('#', '');
50
+ return [
51
+ parseInt(h.substring(0, 2), 16) || 0,
52
+ parseInt(h.substring(2, 4), 16) || 0,
53
+ parseInt(h.substring(4, 6), 16) || 0,
54
+ ];
28
55
  }
29
- /**
30
- * Builds an inline PNG Image component from base64 data.
31
- * Returns null if terminal doesn't support images.
32
- */
33
- export function buildImageAvatar(base64Png, accentHex) {
34
- if (!supportsImages())
35
- return null;
36
- const dims = getPngDimensions(base64Png);
37
- if (!dims)
38
- return null;
39
- return new Image(base64Png, 'image/png', { fallbackColor: chalk.hex(accentHex) }, { maxWidthCells: 8, maxHeightCells: 4 }, dims);
56
+ function scale([r, g, b], factor) {
57
+ return [
58
+ Math.max(0, Math.min(255, Math.round(r * factor))),
59
+ Math.max(0, Math.min(255, Math.round(g * factor))),
60
+ Math.max(0, Math.min(255, Math.round(b * factor))),
61
+ ];
40
62
  }
41
63
  /**
42
- * Renders a PNG (base64) as colored Unicode half-block characters.
43
- * Uses (upper half block) with ANSI 24-bit fg/bg colors to pack
44
- * 2 pixel rows into each terminal line, preserving aspect ratio.
45
- * Works in any terminal that supports truecolor (no Kitty/iTerm2 needed).
64
+ * Renders the workspace name (up to MAX_LETTERS chars) as a compact 3×5
65
+ * pixel-font monogram using half-blocks (3 lines tall per letter).
66
+ * Top pixel of each cell uses the full accent; bottom pixel uses a 70%
67
+ * shaded accent gives a subtle vertical gradient for visual interest
68
+ * without losing readability. OFF pixels emit a plain space so it works
69
+ * on light and dark themes alike.
46
70
  */
47
- export function buildColorBlockAvatar(base64Png, targetCols = 10) {
48
- const buffer = Buffer.from(base64Png, 'base64');
49
- const png = decodePng(buffer);
50
- const { width, height, data, channels } = png;
51
- // Terminal cells are ~1:2 (width:height). Half-blocks split each line into
52
- // 2 pixel rows, but the visual height of a line is still 2× the cell width.
53
- // Dividing by 2 cancels that out so the rendered output is visually square.
54
- const termRows = Math.max(1, Math.round((targetCols * height) / (width * 2)));
55
- const pixelRows = termRows * 2;
56
- function getPixel(pxRow, pxCol) {
57
- const srcRow = Math.min(Math.floor((pxRow * height) / pixelRows), height - 1);
58
- const srcCol = Math.min(Math.floor((pxCol * width) / targetCols), width - 1);
59
- const idx = (srcRow * width + srcCol) * channels;
60
- return [data[idx], data[idx + 1], data[idx + 2]];
71
+ export function buildAvatar(name, accentHex, _base64Png) {
72
+ const accent = parseHexColor(accentHex);
73
+ const accentDim = scale(accent, 0.7);
74
+ const top = chalk.rgb(accent[0], accent[1], accent[2]);
75
+ const bot = chalk.rgb(accentDim[0], accentDim[1], accentDim[2]);
76
+ const both = chalk.rgb(accent[0], accent[1], accent[2]).bgRgb(accentDim[0], accentDim[1], accentDim[2]);
77
+ const upper = (name || '').toUpperCase();
78
+ let chars = upper.split('').filter(c => FONT_3X5[c]);
79
+ if (chars.length === 0)
80
+ chars = ['?'];
81
+ chars = chars.slice(0, MAX_LETTERS);
82
+ // Pad letter to even row count so half-blocks divide cleanly.
83
+ const paddedRows = LETTER_H + (LETTER_H % 2); // 6
84
+ const lineCount = paddedRows / 2; // 3
85
+ function bitAt(charIdx, row, col) {
86
+ if (row >= LETTER_H)
87
+ return false;
88
+ const glyph = FONT_3X5[chars[charIdx] ?? '?'];
89
+ return glyph?.[row]?.[col] === '1';
61
90
  }
62
91
  const lines = [];
63
- for (let row = 0; row < termRows; row++) {
64
- let line = '';
65
- for (let col = 0; col < targetCols; col++) {
66
- const [tr, tg, tb] = getPixel(row * 2, col);
67
- const [br, bg, bb] = getPixel(row * 2 + 1, col);
68
- line += chalk.rgb(tr, tg, tb).bgRgb(br, bg, bb)('▀');
92
+ for (let line = 0; line < lineCount; line++) {
93
+ let out = '';
94
+ for (let ci = 0; ci < chars.length; ci++) {
95
+ for (let col = 0; col < LETTER_W; col++) {
96
+ const t = bitAt(ci, line * 2, col);
97
+ const b = bitAt(ci, line * 2 + 1, col);
98
+ if (t && b)
99
+ out += both('▀');
100
+ else if (t)
101
+ out += top('▀');
102
+ else if (b)
103
+ out += bot('▄');
104
+ else
105
+ out += ' ';
106
+ }
107
+ if (ci < chars.length - 1)
108
+ out += ' '.repeat(LETTER_GAP);
69
109
  }
70
- lines.push(line);
110
+ lines.push(out);
71
111
  }
72
112
  return new Text(lines.join('\n'), 0, 1);
73
113
  }
74
- /**
75
- * Returns the best available avatar component:
76
- * - Inline PNG image (if terminal supports Kitty/iTerm2 protocol)
77
- * - Colored half-block rendering (truecolor, works everywhere)
78
- * - Deterministic accent-colored pixel grid (final fallback, no PNG needed)
79
- */
80
- export function buildAvatar(name, accentHex, base64Png) {
81
- if (base64Png) {
82
- const img = buildImageAvatar(base64Png, accentHex);
83
- if (img)
84
- return img;
85
- try {
86
- return buildColorBlockAvatar(base64Png);
87
- }
88
- catch {
89
- // fall through to accent-colored fallback
90
- }
91
- }
92
- // Final fallback: simple accent block (no PNG)
93
- const block = chalk.hex(accentHex)('██\n██\n██');
94
- return new Text(block, 0, 1);
95
- }
96
114
  //# sourceMappingURL=avatar.js.map