@positronic/cli 0.0.77 → 0.0.78
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.
- package/dist/src/cli.js +298 -196
- package/dist/src/commands/server.js +2 -2
- package/dist/src/components/event-detail.js +139 -139
- package/dist/src/components/events-view.js +60 -63
- package/dist/src/components/watch-keyboard.js +1 -1
- package/dist/src/components/watch-machine.js +344 -286
- package/dist/src/components/watch.js +17 -84
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/components/event-detail.d.ts.map +1 -1
- package/dist/types/components/events-view.d.ts.map +1 -1
- package/dist/types/components/watch-machine.d.ts +90 -146
- package/dist/types/components/watch-machine.d.ts.map +1 -1
- package/dist/types/components/watch.d.ts.map +1 -1
- package/dist/types/hooks/useBrainMachine.d.ts +0 -3
- package/dist/types/hooks/useBrainMachine.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/src/commands/auth.js +0 -91
- package/dist/src/commands/brain.js +0 -139
- package/dist/src/commands/pages.js +0 -47
- package/dist/src/commands/project.js +0 -130
- package/dist/src/commands/resources.js +0 -272
- package/dist/src/commands/schedule.js +0 -91
- package/dist/src/commands/secrets.js +0 -67
- package/dist/src/commands/store.js +0 -36
- package/dist/src/commands/users.js +0 -92
- package/dist/src/components/agent-chat-view.js +0 -125
- package/dist/src/utils/agent-utils.js +0 -107
- package/dist/types/commands/auth.d.ts +0 -32
- package/dist/types/commands/auth.d.ts.map +0 -1
- package/dist/types/commands/brain.d.ts +0 -46
- package/dist/types/commands/brain.d.ts.map +0 -1
- package/dist/types/commands/pages.d.ts +0 -15
- package/dist/types/commands/pages.d.ts.map +0 -1
- package/dist/types/commands/project.d.ts +0 -55
- package/dist/types/commands/project.d.ts.map +0 -1
- package/dist/types/commands/resources.d.ts +0 -13
- package/dist/types/commands/resources.d.ts.map +0 -1
- package/dist/types/commands/schedule.d.ts +0 -33
- package/dist/types/commands/schedule.d.ts.map +0 -1
- package/dist/types/commands/secrets.d.ts +0 -20
- package/dist/types/commands/secrets.d.ts.map +0 -1
- package/dist/types/commands/store.d.ts +0 -5
- package/dist/types/commands/store.d.ts.map +0 -1
- package/dist/types/commands/users.d.ts +0 -34
- package/dist/types/commands/users.d.ts.map +0 -1
- package/dist/types/components/agent-chat-view.d.ts +0 -12
- package/dist/types/components/agent-chat-view.d.ts.map +0 -1
- package/dist/types/utils/agent-utils.d.ts +0 -20
- package/dist/types/utils/agent-utils.d.ts.map +0 -1
|
@@ -274,7 +274,7 @@ export var ServerCommand = /*#__PURE__*/ function() {
|
|
|
274
274
|
}
|
|
275
275
|
// Write PID file for foreground process too
|
|
276
276
|
fs.writeFileSync(pidFile, String(process.pid));
|
|
277
|
-
brainsDir = path.join(this.server.projectRootDir, 'brains');
|
|
277
|
+
brainsDir = path.join(this.server.projectRootDir, 'src', 'brains');
|
|
278
278
|
resourcesDir = path.join(this.server.projectRootDir, 'resources');
|
|
279
279
|
serverHandle = null;
|
|
280
280
|
watcher = null;
|
|
@@ -443,7 +443,7 @@ export var ServerCommand = /*#__PURE__*/ function() {
|
|
|
443
443
|
// Watcher setup - target the user's brains, resources directories, and .env file
|
|
444
444
|
envFilePath = path.join(this.server.projectRootDir, '.env');
|
|
445
445
|
watchPaths = [
|
|
446
|
-
path.join(brainsDir, '
|
|
446
|
+
path.join(brainsDir, '**/*.{ts,tsx}'),
|
|
447
447
|
path.join(resourcesDir, '**/*'),
|
|
448
448
|
envFilePath
|
|
449
449
|
];
|
|
@@ -34,10 +34,6 @@ function formatFullTimestamp(timestamp) {
|
|
|
34
34
|
hour12: false
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
function formatValue(value) {
|
|
38
|
-
if (typeof value === 'string') return value;
|
|
39
|
-
return JSON.stringify(value, null, 2);
|
|
40
|
-
}
|
|
41
37
|
function getStatusIcon(status) {
|
|
42
38
|
switch(status){
|
|
43
39
|
case 'complete':
|
|
@@ -99,74 +95,79 @@ function getEventSymbol(event) {
|
|
|
99
95
|
symbol: '[<]',
|
|
100
96
|
color: 'cyan'
|
|
101
97
|
};
|
|
102
|
-
case BRAIN_EVENTS.
|
|
98
|
+
case BRAIN_EVENTS.PAUSED:
|
|
103
99
|
return {
|
|
104
|
-
symbol: '[
|
|
105
|
-
color: '
|
|
100
|
+
symbol: '[||]',
|
|
101
|
+
color: 'cyan'
|
|
102
|
+
};
|
|
103
|
+
case BRAIN_EVENTS.RESUMED:
|
|
104
|
+
return {
|
|
105
|
+
symbol: '[>]',
|
|
106
|
+
color: 'green'
|
|
107
|
+
};
|
|
108
|
+
case BRAIN_EVENTS.ITERATE_ITEM_COMPLETE:
|
|
109
|
+
return {
|
|
110
|
+
symbol: '[i]',
|
|
111
|
+
color: 'green'
|
|
112
|
+
};
|
|
113
|
+
case BRAIN_EVENTS.FILE_WRITE_START:
|
|
114
|
+
return {
|
|
115
|
+
symbol: '[↑]',
|
|
116
|
+
color: 'blue'
|
|
117
|
+
};
|
|
118
|
+
case BRAIN_EVENTS.FILE_WRITE_COMPLETE:
|
|
119
|
+
return {
|
|
120
|
+
symbol: '[✓]',
|
|
121
|
+
color: 'green'
|
|
106
122
|
};
|
|
107
|
-
case BRAIN_EVENTS.
|
|
123
|
+
case BRAIN_EVENTS.PROMPT_START:
|
|
124
|
+
return {
|
|
125
|
+
symbol: '[P]',
|
|
126
|
+
color: 'magenta'
|
|
127
|
+
};
|
|
128
|
+
case BRAIN_EVENTS.PROMPT_ITERATION:
|
|
108
129
|
return {
|
|
109
130
|
symbol: '[#]',
|
|
110
131
|
color: 'gray'
|
|
111
132
|
};
|
|
112
|
-
case BRAIN_EVENTS.
|
|
133
|
+
case BRAIN_EVENTS.PROMPT_TOOL_CALL:
|
|
113
134
|
return {
|
|
114
|
-
symbol: '[
|
|
115
|
-
color: '
|
|
135
|
+
symbol: '[→]',
|
|
136
|
+
color: 'yellow'
|
|
116
137
|
};
|
|
117
|
-
case BRAIN_EVENTS.
|
|
138
|
+
case BRAIN_EVENTS.PROMPT_TOOL_RESULT:
|
|
118
139
|
return {
|
|
119
|
-
symbol: '[
|
|
120
|
-
color: '
|
|
140
|
+
symbol: '[←]',
|
|
141
|
+
color: 'green'
|
|
121
142
|
};
|
|
122
|
-
case BRAIN_EVENTS.
|
|
143
|
+
case BRAIN_EVENTS.PROMPT_ASSISTANT_MESSAGE:
|
|
123
144
|
return {
|
|
124
145
|
symbol: '[M]',
|
|
125
146
|
color: 'white'
|
|
126
147
|
};
|
|
127
|
-
case BRAIN_EVENTS.
|
|
148
|
+
case BRAIN_EVENTS.PROMPT_COMPLETE:
|
|
128
149
|
return {
|
|
129
|
-
symbol: '[
|
|
150
|
+
symbol: '[P]',
|
|
130
151
|
color: 'green'
|
|
131
152
|
};
|
|
132
|
-
case BRAIN_EVENTS.
|
|
153
|
+
case BRAIN_EVENTS.PROMPT_TOKEN_LIMIT:
|
|
133
154
|
return {
|
|
134
155
|
symbol: '[!]',
|
|
135
156
|
color: 'red'
|
|
136
157
|
};
|
|
137
|
-
case BRAIN_EVENTS.
|
|
158
|
+
case BRAIN_EVENTS.PROMPT_ITERATION_LIMIT:
|
|
138
159
|
return {
|
|
139
160
|
symbol: '[!]',
|
|
140
161
|
color: 'red'
|
|
141
162
|
};
|
|
142
|
-
case BRAIN_EVENTS.
|
|
143
|
-
return {
|
|
144
|
-
symbol: '[W]',
|
|
145
|
-
color: 'cyan'
|
|
146
|
-
};
|
|
147
|
-
case BRAIN_EVENTS.AGENT_RAW_RESPONSE_MESSAGE:
|
|
163
|
+
case BRAIN_EVENTS.PROMPT_RAW_RESPONSE_MESSAGE:
|
|
148
164
|
return {
|
|
149
165
|
symbol: '[~]',
|
|
150
166
|
color: 'gray'
|
|
151
167
|
};
|
|
152
|
-
case BRAIN_EVENTS.
|
|
153
|
-
return {
|
|
154
|
-
symbol: '[||]',
|
|
155
|
-
color: 'cyan'
|
|
156
|
-
};
|
|
157
|
-
case BRAIN_EVENTS.RESUMED:
|
|
158
|
-
return {
|
|
159
|
-
symbol: '[>]',
|
|
160
|
-
color: 'green'
|
|
161
|
-
};
|
|
162
|
-
case BRAIN_EVENTS.ITERATE_ITEM_COMPLETE:
|
|
163
|
-
return {
|
|
164
|
-
symbol: '[i]',
|
|
165
|
-
color: 'green'
|
|
166
|
-
};
|
|
167
|
-
case BRAIN_EVENTS.AGENT_USER_MESSAGE:
|
|
168
|
+
case BRAIN_EVENTS.PROMPT_WEBHOOK:
|
|
168
169
|
return {
|
|
169
|
-
symbol: '[
|
|
170
|
+
symbol: '[W]',
|
|
170
171
|
color: 'cyan'
|
|
171
172
|
};
|
|
172
173
|
default:
|
|
@@ -178,24 +179,6 @@ function getEventSymbol(event) {
|
|
|
178
179
|
}
|
|
179
180
|
function getEventDetailContent(event) {
|
|
180
181
|
switch(event.type){
|
|
181
|
-
case BRAIN_EVENTS.AGENT_TOOL_CALL:
|
|
182
|
-
return [
|
|
183
|
-
"Tool: ".concat(event.toolName),
|
|
184
|
-
"Tool Call ID: ".concat(event.toolCallId),
|
|
185
|
-
"Step: ".concat(event.stepTitle),
|
|
186
|
-
'',
|
|
187
|
-
'Input:',
|
|
188
|
-
JSON.stringify(event.input, null, 2)
|
|
189
|
-
].join('\n');
|
|
190
|
-
case BRAIN_EVENTS.AGENT_TOOL_RESULT:
|
|
191
|
-
return [
|
|
192
|
-
"Tool: ".concat(event.toolName),
|
|
193
|
-
"Tool Call ID: ".concat(event.toolCallId),
|
|
194
|
-
"Step: ".concat(event.stepTitle),
|
|
195
|
-
'',
|
|
196
|
-
'Result:',
|
|
197
|
-
formatValue(event.result)
|
|
198
|
-
].join('\n');
|
|
199
182
|
case BRAIN_EVENTS.ERROR:
|
|
200
183
|
return [
|
|
201
184
|
"Brain: ".concat(event.brainTitle),
|
|
@@ -206,23 +189,6 @@ function getEventDetailContent(event) {
|
|
|
206
189
|
'Stack Trace:',
|
|
207
190
|
event.error.stack || '(no stack trace)'
|
|
208
191
|
].join('\n');
|
|
209
|
-
case BRAIN_EVENTS.AGENT_COMPLETE:
|
|
210
|
-
return [
|
|
211
|
-
"Step: ".concat(event.stepTitle),
|
|
212
|
-
"Terminal Tool: ".concat(event.terminalToolName),
|
|
213
|
-
"Total Iterations: ".concat(event.totalIterations),
|
|
214
|
-
"Total Tokens: ".concat(event.totalTokens.toLocaleString()),
|
|
215
|
-
'',
|
|
216
|
-
'Result:',
|
|
217
|
-
JSON.stringify(event.result, null, 2)
|
|
218
|
-
].join('\n');
|
|
219
|
-
case BRAIN_EVENTS.AGENT_ITERATION:
|
|
220
|
-
return [
|
|
221
|
-
"Step: ".concat(event.stepTitle),
|
|
222
|
-
"Iteration: ".concat(event.iteration),
|
|
223
|
-
"Tokens This Iteration: ".concat(event.tokensThisIteration.toLocaleString()),
|
|
224
|
-
"Total Tokens So Far: ".concat(event.totalTokens.toLocaleString())
|
|
225
|
-
].join('\n');
|
|
226
192
|
case BRAIN_EVENTS.STEP_COMPLETE:
|
|
227
193
|
return [
|
|
228
194
|
"Step: ".concat(event.stepTitle),
|
|
@@ -231,25 +197,6 @@ function getEventDetailContent(event) {
|
|
|
231
197
|
'State Patch:',
|
|
232
198
|
JSON.stringify(event.patch, null, 2)
|
|
233
199
|
].join('\n');
|
|
234
|
-
case BRAIN_EVENTS.AGENT_START:
|
|
235
|
-
return [
|
|
236
|
-
"Step: ".concat(event.stepTitle),
|
|
237
|
-
"Step ID: ".concat(event.stepId),
|
|
238
|
-
'',
|
|
239
|
-
'Tools:'
|
|
240
|
-
].concat(_to_consumable_array(event.tools && event.tools.length > 0 ? event.tools.map(function(t) {
|
|
241
|
-
return " • ".concat(t);
|
|
242
|
-
}) : [
|
|
243
|
-
' (none)'
|
|
244
|
-
]), [
|
|
245
|
-
'',
|
|
246
|
-
'Prompt:',
|
|
247
|
-
event.prompt
|
|
248
|
-
], _to_consumable_array(event.system ? [
|
|
249
|
-
'',
|
|
250
|
-
'System Prompt:',
|
|
251
|
-
event.system
|
|
252
|
-
] : [])).join('\n');
|
|
253
200
|
case BRAIN_EVENTS.START:
|
|
254
201
|
return [
|
|
255
202
|
"Brain: ".concat(event.brainTitle)
|
|
@@ -261,36 +208,12 @@ function getEventDetailContent(event) {
|
|
|
261
208
|
'Options:',
|
|
262
209
|
JSON.stringify(event.options, null, 2)
|
|
263
210
|
]).join('\n');
|
|
264
|
-
case BRAIN_EVENTS.AGENT_TOKEN_LIMIT:
|
|
265
|
-
return [
|
|
266
|
-
"Step: ".concat(event.stepTitle),
|
|
267
|
-
"Total Tokens: ".concat(event.totalTokens.toLocaleString()),
|
|
268
|
-
"Max Tokens: ".concat(event.maxTokens.toLocaleString()),
|
|
269
|
-
'',
|
|
270
|
-
'Token limit exceeded. Agent stopped.'
|
|
271
|
-
].join('\n');
|
|
272
|
-
case BRAIN_EVENTS.AGENT_ITERATION_LIMIT:
|
|
273
|
-
return [
|
|
274
|
-
"Step: ".concat(event.stepTitle),
|
|
275
|
-
"Iteration: ".concat(event.iteration),
|
|
276
|
-
"Max Iterations: ".concat(event.maxIterations),
|
|
277
|
-
"Total Tokens: ".concat(event.totalTokens.toLocaleString()),
|
|
278
|
-
'',
|
|
279
|
-
'Iteration limit reached. Agent stopped.'
|
|
280
|
-
].join('\n');
|
|
281
211
|
case BRAIN_EVENTS.STEP_STATUS:
|
|
282
212
|
return [
|
|
283
213
|
'Steps:'
|
|
284
214
|
].concat(_to_consumable_array(event.steps.map(function(s) {
|
|
285
215
|
return " ".concat(getStatusIcon(s.status), " ").concat(s.title);
|
|
286
216
|
}))).join('\n');
|
|
287
|
-
case BRAIN_EVENTS.AGENT_ASSISTANT_MESSAGE:
|
|
288
|
-
return [
|
|
289
|
-
"Step: ".concat(event.stepTitle),
|
|
290
|
-
'',
|
|
291
|
-
'Message:',
|
|
292
|
-
event.content
|
|
293
|
-
].join('\n');
|
|
294
217
|
case BRAIN_EVENTS.STEP_START:
|
|
295
218
|
return [
|
|
296
219
|
"Step: ".concat(event.stepTitle),
|
|
@@ -320,22 +243,6 @@ function getEventDetailContent(event) {
|
|
|
320
243
|
'Webhook Response:',
|
|
321
244
|
JSON.stringify(event.response, null, 2)
|
|
322
245
|
].join('\n');
|
|
323
|
-
case BRAIN_EVENTS.AGENT_WEBHOOK:
|
|
324
|
-
return [
|
|
325
|
-
"Step: ".concat(event.stepTitle),
|
|
326
|
-
"Tool: ".concat(event.toolName),
|
|
327
|
-
"Tool Call ID: ".concat(event.toolCallId),
|
|
328
|
-
'',
|
|
329
|
-
'Agent waiting for webhook response...'
|
|
330
|
-
].join('\n');
|
|
331
|
-
case BRAIN_EVENTS.AGENT_RAW_RESPONSE_MESSAGE:
|
|
332
|
-
return [
|
|
333
|
-
"Step: ".concat(event.stepTitle),
|
|
334
|
-
"Iteration: ".concat(event.iteration),
|
|
335
|
-
'',
|
|
336
|
-
'Raw Response Message:',
|
|
337
|
-
JSON.stringify(event.message, null, 2)
|
|
338
|
-
].join('\n');
|
|
339
246
|
case BRAIN_EVENTS.PAUSED:
|
|
340
247
|
return [
|
|
341
248
|
"Brain: ".concat(event.brainTitle),
|
|
@@ -353,7 +260,7 @@ function getEventDetailContent(event) {
|
|
|
353
260
|
"Step: ".concat(event.stepTitle),
|
|
354
261
|
"Progress: ".concat(event.processedCount, "/").concat(event.totalItems),
|
|
355
262
|
"Item Index: ".concat(event.itemIndex),
|
|
356
|
-
"
|
|
263
|
+
"State Key: ".concat(event.stateKey),
|
|
357
264
|
'',
|
|
358
265
|
'Item:',
|
|
359
266
|
JSON.stringify(event.item, null, 2),
|
|
@@ -361,13 +268,106 @@ function getEventDetailContent(event) {
|
|
|
361
268
|
'Result:',
|
|
362
269
|
JSON.stringify(event.result, null, 2)
|
|
363
270
|
].join('\n');
|
|
364
|
-
case BRAIN_EVENTS.
|
|
271
|
+
case BRAIN_EVENTS.FILE_WRITE_START:
|
|
272
|
+
return [
|
|
273
|
+
"File: ".concat(event.fileName),
|
|
274
|
+
"Step: ".concat(event.stepTitle)
|
|
275
|
+
].join('\n');
|
|
276
|
+
case BRAIN_EVENTS.FILE_WRITE_COMPLETE:
|
|
277
|
+
return [
|
|
278
|
+
"File: ".concat(event.fileName),
|
|
279
|
+
"Step: ".concat(event.stepTitle)
|
|
280
|
+
].join('\n');
|
|
281
|
+
case BRAIN_EVENTS.PROMPT_START:
|
|
365
282
|
return [
|
|
366
283
|
"Step: ".concat(event.stepTitle),
|
|
367
284
|
"Step ID: ".concat(event.stepId),
|
|
368
285
|
'',
|
|
286
|
+
"Prompt: ".concat(event.prompt)
|
|
287
|
+
].concat(_to_consumable_array(event.system ? [
|
|
288
|
+
"System: ".concat(event.system)
|
|
289
|
+
] : []), [
|
|
290
|
+
'',
|
|
291
|
+
"Tools: ".concat(event.tools.join(', '))
|
|
292
|
+
]).join('\n');
|
|
293
|
+
case BRAIN_EVENTS.PROMPT_ITERATION:
|
|
294
|
+
return [
|
|
295
|
+
"Step: ".concat(event.stepTitle),
|
|
296
|
+
"Iteration: ".concat(event.iteration),
|
|
297
|
+
"Tokens this iteration: ".concat(event.tokensThisIteration),
|
|
298
|
+
"Total tokens: ".concat(event.totalTokens)
|
|
299
|
+
].join('\n');
|
|
300
|
+
case BRAIN_EVENTS.PROMPT_TOOL_CALL:
|
|
301
|
+
return [
|
|
302
|
+
"Step: ".concat(event.stepTitle),
|
|
303
|
+
"Tool: ".concat(event.toolName),
|
|
304
|
+
"Call ID: ".concat(event.toolCallId),
|
|
305
|
+
"Iteration: ".concat(event.iteration),
|
|
306
|
+
'',
|
|
307
|
+
'Input:',
|
|
308
|
+
JSON.stringify(event.input, null, 2)
|
|
309
|
+
].join('\n');
|
|
310
|
+
case BRAIN_EVENTS.PROMPT_TOOL_RESULT:
|
|
311
|
+
return [
|
|
312
|
+
"Step: ".concat(event.stepTitle),
|
|
313
|
+
"Tool: ".concat(event.toolName),
|
|
314
|
+
"Call ID: ".concat(event.toolCallId),
|
|
315
|
+
"Iteration: ".concat(event.iteration)
|
|
316
|
+
].concat(_to_consumable_array(event.status ? [
|
|
317
|
+
"Status: ".concat(event.status)
|
|
318
|
+
] : []), [
|
|
319
|
+
'',
|
|
320
|
+
'Result:',
|
|
321
|
+
JSON.stringify(event.result, null, 2)
|
|
322
|
+
]).join('\n');
|
|
323
|
+
case BRAIN_EVENTS.PROMPT_ASSISTANT_MESSAGE:
|
|
324
|
+
return [
|
|
325
|
+
"Step: ".concat(event.stepTitle),
|
|
326
|
+
"Iteration: ".concat(event.iteration),
|
|
327
|
+
'',
|
|
369
328
|
'Message:',
|
|
370
|
-
event.
|
|
329
|
+
event.text
|
|
330
|
+
].join('\n');
|
|
331
|
+
case BRAIN_EVENTS.PROMPT_COMPLETE:
|
|
332
|
+
return [
|
|
333
|
+
"Step: ".concat(event.stepTitle)
|
|
334
|
+
].concat(_to_consumable_array(event.terminalTool ? [
|
|
335
|
+
"Terminal tool: ".concat(event.terminalTool)
|
|
336
|
+
] : []), [
|
|
337
|
+
"Total iterations: ".concat(event.totalIterations),
|
|
338
|
+
"Total tokens: ".concat(event.totalTokens),
|
|
339
|
+
'',
|
|
340
|
+
'Result:',
|
|
341
|
+
JSON.stringify(event.result, null, 2)
|
|
342
|
+
]).join('\n');
|
|
343
|
+
case BRAIN_EVENTS.PROMPT_TOKEN_LIMIT:
|
|
344
|
+
return [
|
|
345
|
+
"Step: ".concat(event.stepTitle),
|
|
346
|
+
"Total tokens: ".concat(event.totalTokens),
|
|
347
|
+
"Max tokens: ".concat(event.maxTokens)
|
|
348
|
+
].join('\n');
|
|
349
|
+
case BRAIN_EVENTS.PROMPT_ITERATION_LIMIT:
|
|
350
|
+
return [
|
|
351
|
+
"Step: ".concat(event.stepTitle),
|
|
352
|
+
"Total iterations: ".concat(event.totalIterations),
|
|
353
|
+
"Max iterations: ".concat(event.maxIterations)
|
|
354
|
+
].join('\n');
|
|
355
|
+
case BRAIN_EVENTS.PROMPT_RAW_RESPONSE_MESSAGE:
|
|
356
|
+
return [
|
|
357
|
+
"Step: ".concat(event.stepTitle),
|
|
358
|
+
"Iteration: ".concat(event.iteration),
|
|
359
|
+
'',
|
|
360
|
+
'Raw Response:',
|
|
361
|
+
JSON.stringify(event.message, null, 2)
|
|
362
|
+
].join('\n');
|
|
363
|
+
case BRAIN_EVENTS.PROMPT_WEBHOOK:
|
|
364
|
+
return [
|
|
365
|
+
"Step: ".concat(event.stepTitle),
|
|
366
|
+
"Tool: ".concat(event.toolName),
|
|
367
|
+
"Call ID: ".concat(event.toolCallId),
|
|
368
|
+
'',
|
|
369
|
+
'Input:',
|
|
370
|
+
JSON.stringify(event.input, null, 2)
|
|
371
371
|
].join('\n');
|
|
372
372
|
default:
|
|
373
373
|
// Show all fields for any event type
|
|
@@ -65,11 +65,6 @@ function formatTimestamp(timestamp) {
|
|
|
65
65
|
var mins = minutes % 60;
|
|
66
66
|
return mins > 0 ? "".concat(hours, "h ").concat(mins, "m ago") : "".concat(hours, "h ago");
|
|
67
67
|
}
|
|
68
|
-
// Truncate text to a max length
|
|
69
|
-
function truncate(text, maxLength) {
|
|
70
|
-
if (text.length <= maxLength) return text;
|
|
71
|
-
return text.slice(0, maxLength - 3) + '...';
|
|
72
|
-
}
|
|
73
68
|
// Format event for display
|
|
74
69
|
function formatEvent(event) {
|
|
75
70
|
switch(event.type){
|
|
@@ -127,92 +122,94 @@ function formatEvent(event) {
|
|
|
127
122
|
text: "Webhook response received",
|
|
128
123
|
color: 'cyan'
|
|
129
124
|
};
|
|
130
|
-
case BRAIN_EVENTS.
|
|
125
|
+
case BRAIN_EVENTS.PAUSED:
|
|
131
126
|
return {
|
|
132
|
-
symbol: '[
|
|
133
|
-
text: '
|
|
134
|
-
color: '
|
|
127
|
+
symbol: '[||]',
|
|
128
|
+
text: 'Brain paused: "'.concat(event.brainTitle, '"'),
|
|
129
|
+
color: 'cyan'
|
|
130
|
+
};
|
|
131
|
+
case BRAIN_EVENTS.RESUMED:
|
|
132
|
+
return {
|
|
133
|
+
symbol: '[>]',
|
|
134
|
+
text: 'Brain resumed: "'.concat(event.brainTitle, '"'),
|
|
135
|
+
color: 'green'
|
|
136
|
+
};
|
|
137
|
+
case BRAIN_EVENTS.ITERATE_ITEM_COMPLETE:
|
|
138
|
+
return {
|
|
139
|
+
symbol: '[i]',
|
|
140
|
+
text: "Item ".concat(event.processedCount, "/").concat(event.totalItems, ' complete: "').concat(event.stepTitle, '"'),
|
|
141
|
+
color: 'green'
|
|
142
|
+
};
|
|
143
|
+
case BRAIN_EVENTS.FILE_WRITE_START:
|
|
144
|
+
return {
|
|
145
|
+
symbol: '[↑]',
|
|
146
|
+
text: "Writing: ".concat(event.fileName),
|
|
147
|
+
color: 'blue'
|
|
148
|
+
};
|
|
149
|
+
case BRAIN_EVENTS.FILE_WRITE_COMPLETE:
|
|
150
|
+
return {
|
|
151
|
+
symbol: '[✓]',
|
|
152
|
+
text: "Written: ".concat(event.fileName),
|
|
153
|
+
color: 'green'
|
|
154
|
+
};
|
|
155
|
+
case BRAIN_EVENTS.PROMPT_START:
|
|
156
|
+
return {
|
|
157
|
+
symbol: '[P]',
|
|
158
|
+
text: 'Prompt loop started: "'.concat(event.stepTitle, '"'),
|
|
159
|
+
color: 'magenta'
|
|
135
160
|
};
|
|
136
|
-
case BRAIN_EVENTS.
|
|
161
|
+
case BRAIN_EVENTS.PROMPT_ITERATION:
|
|
137
162
|
return {
|
|
138
163
|
symbol: '[#]',
|
|
139
|
-
text: "
|
|
140
|
-
color: 'gray'
|
|
141
|
-
tokens: event.tokensThisIteration
|
|
164
|
+
text: "Iteration ".concat(event.iteration, " (").concat(event.totalTokens, " tokens)"),
|
|
165
|
+
color: 'gray'
|
|
142
166
|
};
|
|
143
|
-
case BRAIN_EVENTS.
|
|
167
|
+
case BRAIN_EVENTS.PROMPT_TOOL_CALL:
|
|
144
168
|
return {
|
|
145
|
-
symbol: '[
|
|
169
|
+
symbol: '[→]',
|
|
146
170
|
text: "Tool call: ".concat(event.toolName),
|
|
147
|
-
color: '
|
|
171
|
+
color: 'yellow'
|
|
148
172
|
};
|
|
149
|
-
case BRAIN_EVENTS.
|
|
173
|
+
case BRAIN_EVENTS.PROMPT_TOOL_RESULT:
|
|
150
174
|
return {
|
|
151
|
-
symbol: '[
|
|
175
|
+
symbol: '[←]',
|
|
152
176
|
text: "Tool result: ".concat(event.toolName),
|
|
153
|
-
color: '
|
|
177
|
+
color: 'green'
|
|
154
178
|
};
|
|
155
|
-
case BRAIN_EVENTS.
|
|
179
|
+
case BRAIN_EVENTS.PROMPT_ASSISTANT_MESSAGE:
|
|
156
180
|
return {
|
|
157
181
|
symbol: '[M]',
|
|
158
|
-
text: "Assistant: ".concat(
|
|
182
|
+
text: "Assistant: ".concat(event.text.slice(0, 80)).concat(event.text.length > 80 ? '...' : ''),
|
|
159
183
|
color: 'white'
|
|
160
184
|
};
|
|
161
|
-
case BRAIN_EVENTS.
|
|
185
|
+
case BRAIN_EVENTS.PROMPT_COMPLETE:
|
|
162
186
|
return {
|
|
163
|
-
symbol: '[
|
|
164
|
-
text:
|
|
165
|
-
color: 'green'
|
|
166
|
-
tokens: event.totalTokens
|
|
187
|
+
symbol: '[P]',
|
|
188
|
+
text: "Prompt complete (".concat(event.totalIterations, " iterations, ").concat(event.totalTokens, " tokens)"),
|
|
189
|
+
color: 'green'
|
|
167
190
|
};
|
|
168
|
-
case BRAIN_EVENTS.
|
|
191
|
+
case BRAIN_EVENTS.PROMPT_TOKEN_LIMIT:
|
|
169
192
|
return {
|
|
170
193
|
symbol: '[!]',
|
|
171
|
-
text: "Token limit reached
|
|
172
|
-
color: 'red'
|
|
173
|
-
tokens: event.totalTokens
|
|
194
|
+
text: "Token limit reached (".concat(event.totalTokens, "/").concat(event.maxTokens, ")"),
|
|
195
|
+
color: 'red'
|
|
174
196
|
};
|
|
175
|
-
case BRAIN_EVENTS.
|
|
197
|
+
case BRAIN_EVENTS.PROMPT_ITERATION_LIMIT:
|
|
176
198
|
return {
|
|
177
199
|
symbol: '[!]',
|
|
178
|
-
text: "Iteration limit reached
|
|
179
|
-
color: 'red'
|
|
180
|
-
tokens: event.totalTokens
|
|
181
|
-
};
|
|
182
|
-
case BRAIN_EVENTS.AGENT_WEBHOOK:
|
|
183
|
-
return {
|
|
184
|
-
symbol: '[W]',
|
|
185
|
-
text: "Agent webhook: ".concat(event.toolName),
|
|
186
|
-
color: 'cyan'
|
|
200
|
+
text: "Iteration limit reached (".concat(event.totalIterations, "/").concat(event.maxIterations, ")"),
|
|
201
|
+
color: 'red'
|
|
187
202
|
};
|
|
188
|
-
case BRAIN_EVENTS.
|
|
203
|
+
case BRAIN_EVENTS.PROMPT_RAW_RESPONSE_MESSAGE:
|
|
189
204
|
return {
|
|
190
205
|
symbol: '[~]',
|
|
191
|
-
text: "
|
|
206
|
+
text: "Raw response (iteration ".concat(event.iteration, ")"),
|
|
192
207
|
color: 'gray'
|
|
193
208
|
};
|
|
194
|
-
case BRAIN_EVENTS.
|
|
195
|
-
return {
|
|
196
|
-
symbol: '[||]',
|
|
197
|
-
text: 'Brain paused: "'.concat(event.brainTitle, '"'),
|
|
198
|
-
color: 'cyan'
|
|
199
|
-
};
|
|
200
|
-
case BRAIN_EVENTS.RESUMED:
|
|
201
|
-
return {
|
|
202
|
-
symbol: '[>]',
|
|
203
|
-
text: 'Brain resumed: "'.concat(event.brainTitle, '"'),
|
|
204
|
-
color: 'green'
|
|
205
|
-
};
|
|
206
|
-
case BRAIN_EVENTS.ITERATE_ITEM_COMPLETE:
|
|
209
|
+
case BRAIN_EVENTS.PROMPT_WEBHOOK:
|
|
207
210
|
return {
|
|
208
|
-
symbol: '[
|
|
209
|
-
text:
|
|
210
|
-
color: 'green'
|
|
211
|
-
};
|
|
212
|
-
case BRAIN_EVENTS.AGENT_USER_MESSAGE:
|
|
213
|
-
return {
|
|
214
|
-
symbol: '[U]',
|
|
215
|
-
text: 'User message: "'.concat(truncate(event.content, 50), '"'),
|
|
211
|
+
symbol: '[W]',
|
|
212
|
+
text: 'Tool "'.concat(event.toolName, '" waiting for webhook'),
|
|
216
213
|
color: 'cyan'
|
|
217
214
|
};
|
|
218
215
|
default:
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
return null;
|
|
37
37
|
case 'agent-chat':
|
|
38
38
|
// Agent chat view: 'b' or escape goes back to previous view
|
|
39
|
-
// j/k scrolling is handled by
|
|
39
|
+
// j/k scrolling is handled by the chat view component
|
|
40
40
|
if (input === 'b' || key.escape) {
|
|
41
41
|
return {
|
|
42
42
|
type: 'GO_BACK'
|