@namzu/cli 15.1.1 → 16.0.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.
- package/README.md +22 -6
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +8 -0
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +8 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/context/capabilities.d.ts +7 -4
- package/dist/context/capabilities.d.ts.map +1 -1
- package/dist/context/capabilities.js +7 -4
- package/dist/context/capabilities.js.map +1 -1
- package/dist/context/sandbox.d.ts +5 -0
- package/dist/context/sandbox.d.ts.map +1 -1
- package/dist/context/sandbox.js +11 -4
- package/dist/context/sandbox.js.map +1 -1
- package/dist/doctor/checks/chain.d.ts.map +1 -1
- package/dist/doctor/checks/chain.js +1 -0
- package/dist/doctor/checks/chain.js.map +1 -1
- package/dist/integrations/subagents/activity.d.ts +70 -0
- package/dist/integrations/subagents/activity.d.ts.map +1 -0
- package/dist/integrations/subagents/activity.js +332 -0
- package/dist/integrations/subagents/activity.js.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +11 -1
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +27 -2
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/tui/AgentExplorer.d.ts +36 -0
- package/dist/tui/AgentExplorer.d.ts.map +1 -0
- package/dist/tui/AgentExplorer.js +174 -0
- package/dist/tui/AgentExplorer.js.map +1 -0
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +269 -106
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Composer.d.ts +7 -1
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +26 -5
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +9 -3
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/LiveActivity.js +27 -10
- package/dist/tui/LiveActivity.js.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +8 -9
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +6 -10
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/StatusBar.d.ts +1 -47
- package/dist/tui/StatusBar.d.ts.map +1 -1
- package/dist/tui/StatusBar.js +9 -79
- package/dist/tui/StatusBar.js.map +1 -1
- package/dist/tui/agent.d.ts +3 -0
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +199 -176
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/permission-review.d.ts +18 -2
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +88 -2
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +4 -0
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +14 -0
- package/dist/tui/slashCommands.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
import { genericLabel, isTerminalAgentTaskState } from '@namzu/sdk';
|
|
2
|
+
const MAX_RETAINED_AGENTS = 80;
|
|
3
|
+
const MAX_TRANSCRIPT_ROWS = 120;
|
|
4
|
+
const MAX_ROW_CODE_UNITS = 2_048;
|
|
5
|
+
const MAX_PROMPT_CODE_UNITS = 4_096;
|
|
6
|
+
const MAX_LABEL_CODE_UNITS = 240;
|
|
7
|
+
const NOTIFY_INTERVAL_MS = 100;
|
|
8
|
+
/**
|
|
9
|
+
* Projects each child stream immediately and retains only bounded display
|
|
10
|
+
* state. Raw RunEvents never accumulate here: images, tool inputs and token
|
|
11
|
+
* deltas can be arbitrarily large and the parent TUI must not inherit them.
|
|
12
|
+
*/
|
|
13
|
+
export class SubagentActivityMonitor {
|
|
14
|
+
records = new Map();
|
|
15
|
+
listeners = new Set();
|
|
16
|
+
epoch = 0;
|
|
17
|
+
counter = 0;
|
|
18
|
+
notifyTimer;
|
|
19
|
+
closed = false;
|
|
20
|
+
begin(input) {
|
|
21
|
+
const epoch = this.epoch;
|
|
22
|
+
const viewId = `agent-${++this.counter}`;
|
|
23
|
+
const record = {
|
|
24
|
+
epoch,
|
|
25
|
+
order: this.counter,
|
|
26
|
+
viewId,
|
|
27
|
+
agentId: bounded(input.agentId, MAX_LABEL_CODE_UNITS),
|
|
28
|
+
description: bounded(input.description, MAX_LABEL_CODE_UNITS),
|
|
29
|
+
prompt: bounded(input.prompt, MAX_PROMPT_CODE_UNITS),
|
|
30
|
+
status: 'starting',
|
|
31
|
+
startedAt: Date.now(),
|
|
32
|
+
rows: [],
|
|
33
|
+
closed: false,
|
|
34
|
+
};
|
|
35
|
+
this.records.set(viewId, record);
|
|
36
|
+
this.prune();
|
|
37
|
+
this.notifyNow();
|
|
38
|
+
const current = () => {
|
|
39
|
+
if (this.closed || epoch !== this.epoch || record.closed)
|
|
40
|
+
return undefined;
|
|
41
|
+
return this.records.get(viewId) === record ? record : undefined;
|
|
42
|
+
};
|
|
43
|
+
return {
|
|
44
|
+
onEvent: (event) => {
|
|
45
|
+
const owned = current();
|
|
46
|
+
if (!owned)
|
|
47
|
+
return;
|
|
48
|
+
projectEvent(owned, event);
|
|
49
|
+
this.scheduleNotify();
|
|
50
|
+
},
|
|
51
|
+
settle: (handle) => {
|
|
52
|
+
const owned = current();
|
|
53
|
+
if (!owned)
|
|
54
|
+
return;
|
|
55
|
+
owned.taskId = String(handle.taskId);
|
|
56
|
+
owned.agentId = bounded(handle.agentId, MAX_LABEL_CODE_UNITS);
|
|
57
|
+
owned.status = statusOf(handle);
|
|
58
|
+
owned.completedAt = handle.completedAt ?? Date.now();
|
|
59
|
+
owned.latestActivity = terminalLabel(owned.status);
|
|
60
|
+
if (owned.rows.length === 0) {
|
|
61
|
+
pushRow(owned, {
|
|
62
|
+
id: `${owned.viewId}:unavailable`,
|
|
63
|
+
kind: 'system',
|
|
64
|
+
text: 'Live transcript was not exposed by this scheduler; the settled result remains on the parent Agent call.',
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
owned.closed = true;
|
|
68
|
+
this.prune();
|
|
69
|
+
this.notifyNow();
|
|
70
|
+
},
|
|
71
|
+
fail: (error) => {
|
|
72
|
+
const owned = current();
|
|
73
|
+
if (!owned)
|
|
74
|
+
return;
|
|
75
|
+
const cancelled = cancellationLike(error);
|
|
76
|
+
owned.status = cancelled ? 'cancelled' : 'failed';
|
|
77
|
+
owned.completedAt = Date.now();
|
|
78
|
+
owned.latestActivity = terminalLabel(owned.status);
|
|
79
|
+
pushRow(owned, {
|
|
80
|
+
id: `${owned.viewId}:failure`,
|
|
81
|
+
kind: 'system',
|
|
82
|
+
text: bounded(errorMessage(error), MAX_ROW_CODE_UNITS),
|
|
83
|
+
});
|
|
84
|
+
owned.closed = true;
|
|
85
|
+
this.prune();
|
|
86
|
+
this.notifyNow();
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
getSnapshot() {
|
|
91
|
+
return [...this.records.values()]
|
|
92
|
+
.sort((left, right) => {
|
|
93
|
+
const live = Number(isTerminal(left.status)) - Number(isTerminal(right.status));
|
|
94
|
+
return live !== 0 ? live : left.order - right.order;
|
|
95
|
+
})
|
|
96
|
+
.map((record) => Object.freeze({
|
|
97
|
+
viewId: record.viewId,
|
|
98
|
+
...(record.taskId ? { taskId: record.taskId } : {}),
|
|
99
|
+
...(record.runId ? { runId: record.runId } : {}),
|
|
100
|
+
agentId: record.agentId,
|
|
101
|
+
description: record.description,
|
|
102
|
+
prompt: record.prompt,
|
|
103
|
+
status: record.status,
|
|
104
|
+
startedAt: record.startedAt,
|
|
105
|
+
...(record.completedAt !== undefined ? { completedAt: record.completedAt } : {}),
|
|
106
|
+
...(record.latestActivity ? { latestActivity: record.latestActivity } : {}),
|
|
107
|
+
transcript: Object.freeze(record.rows.map((row) => Object.freeze({ ...row }))),
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
subscribe(listener) {
|
|
111
|
+
this.listeners.add(listener);
|
|
112
|
+
return () => this.listeners.delete(listener);
|
|
113
|
+
}
|
|
114
|
+
reset() {
|
|
115
|
+
this.epoch += 1;
|
|
116
|
+
this.records.clear();
|
|
117
|
+
this.clearNotifyTimer();
|
|
118
|
+
this.notifyNow();
|
|
119
|
+
}
|
|
120
|
+
close() {
|
|
121
|
+
if (this.closed)
|
|
122
|
+
return;
|
|
123
|
+
this.closed = true;
|
|
124
|
+
this.records.clear();
|
|
125
|
+
this.clearNotifyTimer();
|
|
126
|
+
this.notifyNow();
|
|
127
|
+
this.listeners.clear();
|
|
128
|
+
}
|
|
129
|
+
prune() {
|
|
130
|
+
const terminal = [...this.records.values()]
|
|
131
|
+
.filter((record) => isTerminal(record.status))
|
|
132
|
+
.sort((left, right) => left.order - right.order);
|
|
133
|
+
while (terminal.length > MAX_RETAINED_AGENTS) {
|
|
134
|
+
const oldest = terminal.shift();
|
|
135
|
+
if (oldest)
|
|
136
|
+
this.records.delete(oldest.viewId);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
scheduleNotify() {
|
|
140
|
+
if (this.closed || this.notifyTimer)
|
|
141
|
+
return;
|
|
142
|
+
this.notifyTimer = setTimeout(() => {
|
|
143
|
+
this.notifyTimer = undefined;
|
|
144
|
+
this.notifyNow();
|
|
145
|
+
}, NOTIFY_INTERVAL_MS);
|
|
146
|
+
this.notifyTimer.unref?.();
|
|
147
|
+
}
|
|
148
|
+
clearNotifyTimer() {
|
|
149
|
+
if (!this.notifyTimer)
|
|
150
|
+
return;
|
|
151
|
+
clearTimeout(this.notifyTimer);
|
|
152
|
+
this.notifyTimer = undefined;
|
|
153
|
+
}
|
|
154
|
+
notifyNow() {
|
|
155
|
+
if (this.notifyTimer)
|
|
156
|
+
this.clearNotifyTimer();
|
|
157
|
+
for (const listener of this.listeners) {
|
|
158
|
+
try {
|
|
159
|
+
listener();
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Observers are projections, never backpressure or authority. One
|
|
163
|
+
// broken renderer must not keep other surfaces from receiving state.
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function projectEvent(record, event) {
|
|
169
|
+
switch (event.type) {
|
|
170
|
+
case 'agent_pending':
|
|
171
|
+
record.taskId = String(event.taskId);
|
|
172
|
+
record.agentId = bounded(event.childAgentId, MAX_LABEL_CODE_UNITS);
|
|
173
|
+
record.latestActivity = 'Starting';
|
|
174
|
+
return;
|
|
175
|
+
case 'run_started':
|
|
176
|
+
record.runId = String(event.runId);
|
|
177
|
+
record.status = 'working';
|
|
178
|
+
record.latestActivity = 'Working';
|
|
179
|
+
return;
|
|
180
|
+
case 'text_delta': {
|
|
181
|
+
record.status = 'working';
|
|
182
|
+
record.latestActivity = 'Answering';
|
|
183
|
+
const id = `${record.viewId}:assistant:${event.messageId ?? event.runId}`;
|
|
184
|
+
const current = record.rows.at(-1);
|
|
185
|
+
if (current?.kind === 'assistant' && current.id === id) {
|
|
186
|
+
record.rows[record.rows.length - 1] = {
|
|
187
|
+
...current,
|
|
188
|
+
text: appendBounded(current.text, event.text),
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
pushRow(record, {
|
|
193
|
+
id,
|
|
194
|
+
kind: 'assistant',
|
|
195
|
+
text: bounded(event.text, MAX_ROW_CODE_UNITS),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
case 'tool_executing': {
|
|
201
|
+
record.status = 'working';
|
|
202
|
+
const label = `${event.toolName}(${genericLabel(event.input)})`;
|
|
203
|
+
record.latestActivity = bounded(label, MAX_LABEL_CODE_UNITS);
|
|
204
|
+
pushRow(record, {
|
|
205
|
+
id: `${record.viewId}:tool:${event.toolUseId}`,
|
|
206
|
+
kind: 'tool',
|
|
207
|
+
text: bounded(label, MAX_ROW_CODE_UNITS),
|
|
208
|
+
status: 'working',
|
|
209
|
+
});
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
case 'tool_progress': {
|
|
213
|
+
const id = `${record.viewId}:tool:${event.toolUseId}`;
|
|
214
|
+
const index = record.rows.findIndex((row) => row.id === id);
|
|
215
|
+
if (index < 0)
|
|
216
|
+
return;
|
|
217
|
+
const row = record.rows[index];
|
|
218
|
+
if (!row || row.kind !== 'tool')
|
|
219
|
+
return;
|
|
220
|
+
record.rows[index] = {
|
|
221
|
+
...row,
|
|
222
|
+
detail: bounded(event.message, MAX_ROW_CODE_UNITS),
|
|
223
|
+
};
|
|
224
|
+
record.latestActivity = bounded(event.message, MAX_LABEL_CODE_UNITS);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
case 'tool_completed': {
|
|
228
|
+
const id = `${record.viewId}:tool:${event.toolUseId}`;
|
|
229
|
+
const index = record.rows.findIndex((row) => row.id === id);
|
|
230
|
+
if (index >= 0) {
|
|
231
|
+
const row = record.rows[index];
|
|
232
|
+
if (row?.kind === 'tool') {
|
|
233
|
+
record.rows[index] = {
|
|
234
|
+
...row,
|
|
235
|
+
status: event.isError ? 'failed' : 'completed',
|
|
236
|
+
...(event.result ? { detail: bounded(event.result, MAX_ROW_CODE_UNITS) } : {}),
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
record.latestActivity = event.isError ? `${event.toolName} failed` : `${event.toolName} done`;
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
case 'provider_retry':
|
|
244
|
+
record.latestActivity = `Retrying (${event.attempt}/${event.maxRetries})`;
|
|
245
|
+
return;
|
|
246
|
+
case 'agent_completed':
|
|
247
|
+
record.status = event.result.status === 'completed' ? 'completed' : 'failed';
|
|
248
|
+
record.completedAt = Date.now();
|
|
249
|
+
record.latestActivity = terminalLabel(record.status);
|
|
250
|
+
return;
|
|
251
|
+
case 'agent_failed':
|
|
252
|
+
record.status = 'failed';
|
|
253
|
+
record.completedAt = Date.now();
|
|
254
|
+
record.latestActivity = 'Failed';
|
|
255
|
+
pushRow(record, {
|
|
256
|
+
id: `${record.viewId}:agent-failed`,
|
|
257
|
+
kind: 'system',
|
|
258
|
+
text: bounded(event.error, MAX_ROW_CODE_UNITS),
|
|
259
|
+
});
|
|
260
|
+
return;
|
|
261
|
+
case 'agent_canceled':
|
|
262
|
+
record.status = 'cancelled';
|
|
263
|
+
record.completedAt = Date.now();
|
|
264
|
+
record.latestActivity = 'Cancelled';
|
|
265
|
+
return;
|
|
266
|
+
case 'run_failed':
|
|
267
|
+
record.latestActivity = 'Failed';
|
|
268
|
+
pushRow(record, {
|
|
269
|
+
id: `${record.viewId}:run-failed`,
|
|
270
|
+
kind: 'system',
|
|
271
|
+
text: bounded(event.error, MAX_ROW_CODE_UNITS),
|
|
272
|
+
});
|
|
273
|
+
return;
|
|
274
|
+
default:
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
function pushRow(record, row) {
|
|
279
|
+
record.rows.push(row);
|
|
280
|
+
if (record.rows.length > MAX_TRANSCRIPT_ROWS) {
|
|
281
|
+
record.rows.splice(0, record.rows.length - MAX_TRANSCRIPT_ROWS);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
function statusOf(handle) {
|
|
285
|
+
if (handle.state === 'canceled')
|
|
286
|
+
return 'cancelled';
|
|
287
|
+
if (handle.state === 'failed' || handle.state === 'rejected')
|
|
288
|
+
return 'failed';
|
|
289
|
+
if (handle.result && handle.result.status !== 'completed') {
|
|
290
|
+
return handle.result.status === 'cancelled' ? 'cancelled' : 'failed';
|
|
291
|
+
}
|
|
292
|
+
if (isTerminalAgentTaskState(handle.state))
|
|
293
|
+
return 'completed';
|
|
294
|
+
return 'working';
|
|
295
|
+
}
|
|
296
|
+
function isTerminal(status) {
|
|
297
|
+
return status === 'completed' || status === 'failed' || status === 'cancelled';
|
|
298
|
+
}
|
|
299
|
+
function terminalLabel(status) {
|
|
300
|
+
switch (status) {
|
|
301
|
+
case 'starting':
|
|
302
|
+
return 'Starting';
|
|
303
|
+
case 'working':
|
|
304
|
+
return 'Working';
|
|
305
|
+
case 'completed':
|
|
306
|
+
return 'Completed';
|
|
307
|
+
case 'failed':
|
|
308
|
+
return 'Failed';
|
|
309
|
+
case 'cancelled':
|
|
310
|
+
return 'Cancelled';
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
function bounded(value, max) {
|
|
314
|
+
if (value.length <= max)
|
|
315
|
+
return value;
|
|
316
|
+
const suffix = '… [clipped]';
|
|
317
|
+
return `${value.slice(0, Math.max(0, max - suffix.length))}${suffix}`;
|
|
318
|
+
}
|
|
319
|
+
function appendBounded(current, delta) {
|
|
320
|
+
const joined = current + delta;
|
|
321
|
+
if (joined.length <= MAX_ROW_CODE_UNITS)
|
|
322
|
+
return joined;
|
|
323
|
+
const prefix = '… [earlier text clipped]\n';
|
|
324
|
+
return prefix + joined.slice(-(MAX_ROW_CODE_UNITS - prefix.length));
|
|
325
|
+
}
|
|
326
|
+
function errorMessage(error) {
|
|
327
|
+
return error instanceof Error ? error.message : String(error);
|
|
328
|
+
}
|
|
329
|
+
function cancellationLike(error) {
|
|
330
|
+
return error instanceof Error && (error.name === 'AbortError' || error.name === 'RunCancelled');
|
|
331
|
+
}
|
|
332
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/integrations/subagents/activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,16 +11,24 @@
|
|
|
11
11
|
* store backs the AgentManager, so sub-agent bookkeeping never touches the
|
|
12
12
|
* CLI's on-disk `/resume` conversation store.
|
|
13
13
|
*/
|
|
14
|
-
import { type AuthorizationGateConfig, type LLMProvider, type ProjectInstructionContext, type RunEvent, type SandboxProvider, type TaskScheduler, type ToolDefinition, type ToolRegistryContract } from '@namzu/sdk';
|
|
14
|
+
import { type AuthorizationGateConfig, type LLMProvider, type ProjectInstructionContext, type ResumeHandler, type RunEvent, type SandboxProvider, type TaskScheduler, type ToolContext, type ToolDefinition, type ToolRegistryContract } from '@namzu/sdk';
|
|
15
|
+
import { type SubagentActivitySource } from './activity.js';
|
|
15
16
|
export declare const GENERAL_PURPOSE_SUBAGENT = "general-purpose";
|
|
16
17
|
export interface SubagentRuntimeOptions {
|
|
17
18
|
readonly cwd: string;
|
|
18
19
|
readonly model: string;
|
|
20
|
+
/** Root every child allocation at the session workspace or a fresh temp tree. */
|
|
21
|
+
readonly sandboxWorkspace?: 'working-directory' | 'ephemeral';
|
|
19
22
|
/** Construct a fresh provider for the sub-agent (current credential). */
|
|
20
23
|
readonly buildProvider: () => LLMProvider;
|
|
21
24
|
/** Build the sub-agent's tool registry (its own working set). */
|
|
22
25
|
readonly buildTools: () => ToolRegistryContract;
|
|
23
26
|
readonly authorizationGate?: AuthorizationGateConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the interactive authority owned by the parent run that invoked
|
|
29
|
+
* the Agent tool. Absent means the child has no human review channel.
|
|
30
|
+
*/
|
|
31
|
+
readonly resolveResumeHandler?: (runId: ToolContext['runId']) => ResumeHandler | undefined;
|
|
24
32
|
/** Use the same execution boundary the parent session reports. */
|
|
25
33
|
readonly sandboxProvider?: SandboxProvider;
|
|
26
34
|
/** Bound child teardown with the parent's operator-selected value. */
|
|
@@ -44,6 +52,8 @@ export interface SubagentRuntime {
|
|
|
44
52
|
readonly gateway: TaskScheduler;
|
|
45
53
|
readonly agentTool: ToolDefinition;
|
|
46
54
|
readonly allowedAgentIds: readonly string[];
|
|
55
|
+
/** Live, bounded observation of children created by this CLI session. */
|
|
56
|
+
readonly activity: SubagentActivitySource;
|
|
47
57
|
/** Stop every child still owned by this parent session. Idempotent. */
|
|
48
58
|
close(): Promise<void>;
|
|
49
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/integrations/subagents/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAMN,KAAK,uBAAuB,EAQ5B,KAAK,WAAW,EAEhB,KAAK,yBAAyB,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/integrations/subagents/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAMN,KAAK,uBAAuB,EAQ5B,KAAK,WAAW,EAEhB,KAAK,yBAAyB,EAG9B,KAAK,aAAa,EAElB,KAAK,QAAQ,EACb,KAAK,eAAe,EAGpB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EASzB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAA2B,KAAK,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAEpF,eAAO,MAAM,wBAAwB,oBAAoB,CAAA;AAczD,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,iFAAiF;IACjF,QAAQ,CAAC,gBAAgB,CAAC,EAAE,mBAAmB,GAAG,WAAW,CAAA;IAC7D,yEAAyE;IACzE,QAAQ,CAAC,aAAa,EAAE,MAAM,WAAW,CAAA;IACzC,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,oBAAoB,CAAA;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,uBAAuB,CAAA;IACpD;;;OAGG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,aAAa,GAAG,SAAS,CAAA;IAC1F,kEAAkE;IAClE,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAC1C,2EAA2E;IAC3E,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,yBAAyB,CAAA;IACpE;;;;;;;;OAQG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAChD,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;CAC5C;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;IAClC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,uEAAuE;IACvE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAC1C,IAAI,EAAE,sBAAsB,GAC1B,OAAO,CAAC,eAAe,CAAC,CA6M1B"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* CLI's on-disk `/resume` conversation store.
|
|
13
13
|
*/
|
|
14
14
|
import { AgentManager, AgentRegistry, DefaultCapacityValidator, InMemorySessionStore, InMemoryTopicStore, LocalTaskScheduler, ReactiveAgent, RunCancelled, SessionSummaryMaterializer, TopicManager, WorkspaceBackendRegistry, asRunId, asSummaryId, asTenantId, asUserId, defineTool, mcpJsonSchemaToZod, } from '@namzu/sdk';
|
|
15
|
+
import { SubagentActivityMonitor } from './activity.js';
|
|
15
16
|
export const GENERAL_PURPOSE_SUBAGENT = 'general-purpose';
|
|
16
17
|
const SUBAGENT_PROMPT = [
|
|
17
18
|
'You are a focused sub-agent dispatched by namzu to complete one self-contained task and report back.',
|
|
@@ -82,6 +83,7 @@ export async function createSubagentRuntime(opts) {
|
|
|
82
83
|
parentActor: userActor,
|
|
83
84
|
};
|
|
84
85
|
const gateway = new LocalTaskScheduler(manager, taskContext, opts.onEvent);
|
|
86
|
+
const activity = new SubagentActivityMonitor();
|
|
85
87
|
// Dynamic `Agent` tool: the model passes an optional `role` (the persona /
|
|
86
88
|
// system prompt) and we register + spawn a fresh specialist for it at call
|
|
87
89
|
// time — no pre-defined agent file needed. Omit `role` → general-purpose.
|
|
@@ -118,7 +120,7 @@ export async function createSubagentRuntime(opts) {
|
|
|
118
120
|
destructive: false,
|
|
119
121
|
concurrencySafe: true,
|
|
120
122
|
async execute(input, context) {
|
|
121
|
-
const { prompt, role } = input;
|
|
123
|
+
const { description, prompt, role } = input;
|
|
122
124
|
let agentId = GENERAL_PURPOSE_SUBAGENT;
|
|
123
125
|
const persona = typeof role === 'string' ? role.trim() : '';
|
|
124
126
|
const dynamic = persona.length > 0;
|
|
@@ -126,6 +128,12 @@ export async function createSubagentRuntime(opts) {
|
|
|
126
128
|
agentId = `dyn-${++dynCounter}`;
|
|
127
129
|
registry.register(buildDefinition(agentId, `Dynamic specialist: ${agentId}`, persona, opts));
|
|
128
130
|
}
|
|
131
|
+
const tracker = activity.begin({ agentId, description, prompt });
|
|
132
|
+
const resumeHandler = opts.resolveResumeHandler?.(context.runId);
|
|
133
|
+
const configOverrides = {
|
|
134
|
+
...(Object.keys(context.env ?? {}).length > 0 ? { env: context.env } : {}),
|
|
135
|
+
...(resumeHandler ? { resumeHandler } : {}),
|
|
136
|
+
};
|
|
129
137
|
try {
|
|
130
138
|
const completed = await runBlockingAgentTask({
|
|
131
139
|
gateway,
|
|
@@ -140,8 +148,11 @@ export async function createSubagentRuntime(opts) {
|
|
|
140
148
|
// a delegation trace exists to record — who dispatched whom
|
|
141
149
|
// — is the thing that goes missing.
|
|
142
150
|
...(context.parentSpan ? { parentSpan: context.parentSpan } : {}),
|
|
151
|
+
...(Object.keys(configOverrides).length > 0 ? { configOverrides } : {}),
|
|
152
|
+
onEvent: tracker.onEvent,
|
|
143
153
|
},
|
|
144
154
|
});
|
|
155
|
+
tracker.settle(completed);
|
|
145
156
|
const runStatus = completed.result?.status;
|
|
146
157
|
const succeeded = completed.state === 'completed' && (runStatus === undefined || runStatus === 'completed');
|
|
147
158
|
const resultText = typeof completed.result?.result === 'string'
|
|
@@ -161,6 +172,10 @@ export async function createSubagentRuntime(opts) {
|
|
|
161
172
|
output: resultText || '(sub-agent returned no text)',
|
|
162
173
|
};
|
|
163
174
|
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
tracker.fail(error);
|
|
177
|
+
throw error;
|
|
178
|
+
}
|
|
164
179
|
finally {
|
|
165
180
|
// A per-call dynamic specialist is single-use — drop its definition
|
|
166
181
|
// (and retained persona string) so long sessions don't leak `dyn-N`
|
|
@@ -182,10 +197,17 @@ export async function createSubagentRuntime(opts) {
|
|
|
182
197
|
taskContext.parentAbortController.abort(new RunCancelled('parent'));
|
|
183
198
|
}
|
|
184
199
|
manager.dispose();
|
|
200
|
+
activity.close();
|
|
185
201
|
});
|
|
186
202
|
return closePromise;
|
|
187
203
|
};
|
|
188
|
-
return {
|
|
204
|
+
return {
|
|
205
|
+
gateway,
|
|
206
|
+
agentTool,
|
|
207
|
+
allowedAgentIds: [GENERAL_PURPOSE_SUBAGENT],
|
|
208
|
+
activity,
|
|
209
|
+
close,
|
|
210
|
+
};
|
|
189
211
|
}
|
|
190
212
|
/** CLI copy of the SDK Agent tool's ownership boundary. */
|
|
191
213
|
async function runBlockingAgentTask(input) {
|
|
@@ -291,6 +313,9 @@ function buildDefinition(id, description, systemPrompt, opts) {
|
|
|
291
313
|
: {}),
|
|
292
314
|
...(opts.authorizationGate ? { authorizationGate: opts.authorizationGate } : {}),
|
|
293
315
|
...(opts.sandboxProvider ? { sandboxProvider: opts.sandboxProvider } : {}),
|
|
316
|
+
...(opts.sandboxProvider && opts.sandboxWorkspace
|
|
317
|
+
? { sandbox: { workspace: opts.sandboxWorkspace } }
|
|
318
|
+
: {}),
|
|
294
319
|
...(opts.sandboxTeardownTimeoutMs !== undefined
|
|
295
320
|
? { sandboxTeardownTimeoutMs: opts.sandboxTeardownTimeoutMs }
|
|
296
321
|
: {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/integrations/subagents/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAGN,YAAY,EACZ,aAAa,EAOb,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAElB,kBAAkB,EAElB,aAAa,
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/integrations/subagents/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { SubagentActivity } from '../integrations/subagents/activity.js';
|
|
2
|
+
export interface AgentPickerProps {
|
|
3
|
+
readonly agents: readonly SubagentActivity[];
|
|
4
|
+
readonly selectedId: string;
|
|
5
|
+
readonly terminalRows: number;
|
|
6
|
+
}
|
|
7
|
+
/** Live child-run chooser. App owns input and keeps selection by stable view id. */
|
|
8
|
+
export declare function AgentPicker({ agents, selectedId, terminalRows }: AgentPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export interface AgentTranscriptProps {
|
|
10
|
+
readonly agent: SubagentActivity;
|
|
11
|
+
/** Number of physical display rows skipped backward from the live tail. */
|
|
12
|
+
readonly tailOffset: number;
|
|
13
|
+
readonly terminalRows: number;
|
|
14
|
+
readonly terminalColumns: number;
|
|
15
|
+
}
|
|
16
|
+
/** Bounded observational child transcript. Deliberately contains no Ink Static. */
|
|
17
|
+
export declare function AgentTranscript({ agent, tailOffset, terminalRows, terminalColumns, }: AgentTranscriptProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare function agentPickerPageSize(terminalRows: number): number;
|
|
19
|
+
export declare function agentTranscriptPageSize(terminalRows: number): number;
|
|
20
|
+
export declare function maxAgentTranscriptTailOffset(agent: SubagentActivity, terminalRows: number, terminalColumns: number): number;
|
|
21
|
+
export declare function agentTranscriptPage(agent: SubagentActivity, tailOffset: number, terminalRows: number, terminalColumns: number): {
|
|
22
|
+
readonly rows: readonly AgentTranscriptLine[];
|
|
23
|
+
readonly pageSize: number;
|
|
24
|
+
readonly first: number;
|
|
25
|
+
readonly last: number;
|
|
26
|
+
readonly total: number;
|
|
27
|
+
};
|
|
28
|
+
export interface AgentTranscriptLine {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly text: string;
|
|
31
|
+
readonly continuation: boolean;
|
|
32
|
+
readonly source: 'prompt' | SubagentActivity['transcript'][number];
|
|
33
|
+
}
|
|
34
|
+
/** Wrap before paging so every retained character remains reachable. */
|
|
35
|
+
export declare function agentTranscriptRows(agent: SubagentActivity, terminalColumns: number | undefined): readonly AgentTranscriptLine[];
|
|
36
|
+
//# sourceMappingURL=AgentExplorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentExplorer.d.ts","sourceRoot":"","sources":["../../src/tui/AgentExplorer.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,gBAAgB,EAEhB,MAAM,uCAAuC,CAAA;AAS9C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC7B;AAED,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,gBAAgB,2CA0DjF;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;IAChC,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAChC;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,EAC/B,KAAK,EACL,UAAU,EACV,YAAY,EACZ,eAAe,GACf,EAAE,oBAAoB,2CA0CtB;AAED,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,gBAAgB,EACvB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACrB,MAAM,CAKR;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,gBAAgB,EACvB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,eAAe,EAAE,MAAM,GACrB;IACF,QAAQ,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAA;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACtB,CAcA;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;CAClE;AAED,wEAAwE;AACxE,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,gBAAgB,EACvB,eAAe,EAAE,MAAM,GAAG,SAAS,GACjC,SAAS,mBAAmB,EAAE,CAkDhC"}
|