visionclaw 0.1.186 → 0.1.187-beta.1
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/agent/activity-tracker.d.ts +103 -0
- package/dist/agent/activity-tracker.d.ts.map +1 -1
- package/dist/agent/activity-tracker.js +176 -0
- package/dist/agent/activity-tracker.js.map +1 -1
- package/dist/agent/command-handlers.d.ts.map +1 -1
- package/dist/agent/command-handlers.js +157 -59
- package/dist/agent/command-handlers.js.map +1 -1
- package/dist/agent/interrupt-handler.d.ts.map +1 -1
- package/dist/agent/interrupt-handler.js +5 -3
- package/dist/agent/interrupt-handler.js.map +1 -1
- package/dist/agent/loop.d.ts.map +1 -1
- package/dist/agent/loop.js +17 -0
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/providers/claude/session.d.ts +43 -0
- package/dist/agent/providers/claude/session.d.ts.map +1 -1
- package/dist/agent/providers/claude/session.js +74 -0
- package/dist/agent/providers/claude/session.js.map +1 -1
- package/dist/agent/status.d.ts.map +1 -1
- package/dist/agent/status.js +1 -34
- package/dist/agent/status.js.map +1 -1
- package/dist/agent/stream-handler.d.ts +64 -1
- package/dist/agent/stream-handler.d.ts.map +1 -1
- package/dist/agent/stream-handler.js +170 -4
- package/dist/agent/stream-handler.js.map +1 -1
- package/dist/agent/subscription-gate.d.ts.map +1 -1
- package/dist/agent/subscription-gate.js +4 -3
- package/dist/agent/subscription-gate.js.map +1 -1
- package/dist/agent/system-prompt.d.ts.map +1 -1
- package/dist/agent/system-prompt.js +7 -2
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
- package/dist/agent/wake-cycle-runner.js +152 -44
- package/dist/agent/wake-cycle-runner.js.map +1 -1
- package/dist/channels/interface.d.ts +25 -0
- package/dist/channels/interface.d.ts.map +1 -1
- package/dist/channels/manager.d.ts +13 -0
- package/dist/channels/manager.d.ts.map +1 -1
- package/dist/channels/manager.js +30 -0
- package/dist/channels/manager.js.map +1 -1
- package/dist/channels/telegram.d.ts +34 -0
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +248 -9
- package/dist/channels/telegram.js.map +1 -1
- package/dist/config/types.d.ts +2 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -1
- package/dist/i18n/index.d.ts +25 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +40 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/messages.d.ts +318 -0
- package/dist/i18n/messages.d.ts.map +1 -0
- package/dist/i18n/messages.js +341 -0
- package/dist/i18n/messages.js.map +1 -0
- package/dist/obs/server.d.ts.map +1 -1
- package/dist/obs/server.js +35 -16
- package/dist/obs/server.js.map +1 -1
- package/dist/onboarding/bot-profile.d.ts.map +1 -1
- package/dist/onboarding/bot-profile.js +1 -0
- package/dist/onboarding/bot-profile.js.map +1 -1
- package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
- package/dist/onboarding/remote-set-owner.js +1 -0
- package/dist/onboarding/remote-set-owner.js.map +1 -1
- package/dist/onboarding/set-owner.d.ts.map +1 -1
- package/dist/onboarding/set-owner.js +1 -0
- package/dist/onboarding/set-owner.js.map +1 -1
- package/dist/onboarding/telegram-onboarding.d.ts +17 -4
- package/dist/onboarding/telegram-onboarding.d.ts.map +1 -1
- package/dist/onboarding/telegram-onboarding.js +89 -5
- package/dist/onboarding/telegram-onboarding.js.map +1 -1
- package/dist/utils/exec.d.ts +19 -0
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +57 -1
- package/dist/utils/exec.js.map +1 -1
- package/dist-agent/bundle.cjs +3747 -2532
- package/package.json +1 -1
|
@@ -2,6 +2,35 @@ export interface TodoItem {
|
|
|
2
2
|
content: string;
|
|
3
3
|
status: "pending" | "in_progress" | "completed";
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Compact progress record for a single nested subagent run (one Task
|
|
7
|
+
* tool invocation). Tracked separately from `recentActions` so that a
|
|
8
|
+
* chatty subagent can't flood the primary agent's recent-actions buffer.
|
|
9
|
+
*/
|
|
10
|
+
export interface SubagentProgress {
|
|
11
|
+
/** Claude tool_use_id of the Task invocation that spawned this subagent. */
|
|
12
|
+
toolUseId: string;
|
|
13
|
+
/**
|
|
14
|
+
* SDK-issued task_id (a.k.a. agentId) for async Agent runs. Captured from
|
|
15
|
+
* the `task_started` system event and used as a fallback lookup key when
|
|
16
|
+
* later events (notably `task_updated`) arrive without `tool_use_id`.
|
|
17
|
+
*/
|
|
18
|
+
taskId?: string;
|
|
19
|
+
subagentType?: string;
|
|
20
|
+
/** Human-readable description, usually from the Task tool input. */
|
|
21
|
+
description?: string;
|
|
22
|
+
startedAt: number;
|
|
23
|
+
completedAt: number | null;
|
|
24
|
+
status: "running" | "completed" | "failed";
|
|
25
|
+
/**
|
|
26
|
+
* The most recent signal we saw from this subagent, formatted for
|
|
27
|
+
* operator display. Typically a truncated tool call or a truncated
|
|
28
|
+
* assistant-text excerpt. Null until the first nested event arrives.
|
|
29
|
+
*/
|
|
30
|
+
lastActivity: string | null;
|
|
31
|
+
/** Count of nested tool calls + assistant text blocks observed. */
|
|
32
|
+
actionCount: number;
|
|
33
|
+
}
|
|
5
34
|
/**
|
|
6
35
|
* Maintains a rolling summary of the primary agent's current activity.
|
|
7
36
|
* Read by the fast responder to give context-aware quick replies when the
|
|
@@ -14,6 +43,12 @@ export declare class ActivityTracker {
|
|
|
14
43
|
private taskStartedAt;
|
|
15
44
|
private lastTodos;
|
|
16
45
|
private recentExchanges;
|
|
46
|
+
/**
|
|
47
|
+
* Ordered map of in-flight + recently-completed subagent runs keyed by
|
|
48
|
+
* tool_use_id. Insertion order is preserved by `Map`; we prune oldest
|
|
49
|
+
* completed entries when the map exceeds `MAX_SUBAGENTS`.
|
|
50
|
+
*/
|
|
51
|
+
private subagents;
|
|
17
52
|
private readonly maxActions;
|
|
18
53
|
constructor(maxActions?: number);
|
|
19
54
|
startTask(description: string): void;
|
|
@@ -23,6 +58,61 @@ export declare class ActivityTracker {
|
|
|
23
58
|
recordToolResult(name: string, outputSummary: string): void;
|
|
24
59
|
recordTodos(todos: TodoItem[]): void;
|
|
25
60
|
getTodos(): TodoItem[];
|
|
61
|
+
/**
|
|
62
|
+
* Register a newly-spawned subagent. Safe to call multiple times for
|
|
63
|
+
* the same toolUseId — later calls are treated as no-ops so we don't
|
|
64
|
+
* clobber already-captured progress if events arrive out of order.
|
|
65
|
+
*/
|
|
66
|
+
recordSubagentStarted(toolUseId: string, info: {
|
|
67
|
+
subagentType?: string;
|
|
68
|
+
description?: string;
|
|
69
|
+
}): void;
|
|
70
|
+
/**
|
|
71
|
+
* Associate an SDK `task_id` with an already-registered subagent so that
|
|
72
|
+
* subsequent system events lacking `tool_use_id` (notably `task_updated`)
|
|
73
|
+
* can still be routed to the correct entry. No-op if the subagent isn't
|
|
74
|
+
* tracked or already has a taskId — the mapping is stable for the life of
|
|
75
|
+
* the task.
|
|
76
|
+
*/
|
|
77
|
+
recordSubagentTaskId(toolUseId: string, taskId: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Reverse lookup: given an SDK `task_id`, return the tracked subagent.
|
|
80
|
+
* Used by stream-handler to repair events that only carry `task_id`.
|
|
81
|
+
*/
|
|
82
|
+
findSubagentByTaskId(taskId: string): SubagentProgress | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Record a nested event (assistant text or tool call) observed under
|
|
85
|
+
* an active subagent. We keep only the latest activity string plus a
|
|
86
|
+
* counter to avoid per-subagent history growth. No-op if the subagent
|
|
87
|
+
* isn't tracked — stream ordering can produce nested events before we
|
|
88
|
+
* see the parent Task block; callers should always `recordSubagentStarted`
|
|
89
|
+
* first when possible.
|
|
90
|
+
*/
|
|
91
|
+
recordSubagentActivity(toolUseId: string, label: string): void;
|
|
92
|
+
/**
|
|
93
|
+
* Record an async subagent progress snapshot from a `task_progress` system
|
|
94
|
+
* event. Unlike {@link recordSubagentActivity}, the SDK supplies a cumulative
|
|
95
|
+
* `toolUses` count, so we *set* `actionCount` instead of incrementing. The
|
|
96
|
+
* `description` and `lastToolName` fields describe the current operation;
|
|
97
|
+
* prefer `lastToolName` when present because descriptions often repeat the
|
|
98
|
+
* subagent title (e.g. "Research Middle East situation") rather than the
|
|
99
|
+
* current step.
|
|
100
|
+
*/
|
|
101
|
+
recordSubagentProgress(toolUseId: string, info: {
|
|
102
|
+
toolUses?: number;
|
|
103
|
+
lastToolName?: string;
|
|
104
|
+
description?: string;
|
|
105
|
+
}): void;
|
|
106
|
+
recordSubagentCompleted(toolUseId: string, info: {
|
|
107
|
+
ok: boolean;
|
|
108
|
+
summary?: string;
|
|
109
|
+
}): void;
|
|
110
|
+
/**
|
|
111
|
+
* Returns all tracked subagents in insertion order. Callers that only
|
|
112
|
+
* care about the currently-running ones should filter by status.
|
|
113
|
+
*/
|
|
114
|
+
getSubagents(): SubagentProgress[];
|
|
115
|
+
getActiveSubagents(): SubagentProgress[];
|
|
26
116
|
getTaskDescription(): string;
|
|
27
117
|
getTaskElapsedMs(): number | null;
|
|
28
118
|
getRecentActions(): string[];
|
|
@@ -34,5 +124,18 @@ export declare class ActivityTracker {
|
|
|
34
124
|
clear(): void;
|
|
35
125
|
private push;
|
|
36
126
|
private pushExchange;
|
|
127
|
+
/**
|
|
128
|
+
* Bound the subagent map. Running subagents are never evicted — only
|
|
129
|
+
* already-completed ones age out when we exceed the cap. This protects
|
|
130
|
+
* both against runaway growth and against losing in-flight progress
|
|
131
|
+
* for long-running tasks.
|
|
132
|
+
*/
|
|
133
|
+
private pruneCompletedSubagents;
|
|
37
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Render a one-line summary of a subagent for `/tasks` and status surfaces.
|
|
137
|
+
* Kept at module scope so it can be reused by command handlers that want
|
|
138
|
+
* a consistent presentation (e.g. /tasks).
|
|
139
|
+
*/
|
|
140
|
+
export declare function formatSubagentLine(progress: SubagentProgress): string;
|
|
38
141
|
//# sourceMappingURL=activity-tracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;CACjD;
|
|
1
|
+
{"version":3,"file":"activity-tracker.d.ts","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { logger } from "../logger.js";
|
|
2
2
|
const MAX_EXCHANGES = 10;
|
|
3
3
|
const EXCHANGE_TEXT_LIMIT = 200;
|
|
4
|
+
const SUBAGENT_ACTIVITY_LIMIT = 120;
|
|
5
|
+
/**
|
|
6
|
+
* Cap the number of subagent records we retain. Active subagents always
|
|
7
|
+
* fit; once completed they age out FIFO when new ones are added. This
|
|
8
|
+
* prevents unbounded growth over a long task that spawns many subagents.
|
|
9
|
+
*/
|
|
10
|
+
const MAX_SUBAGENTS = 32;
|
|
4
11
|
/**
|
|
5
12
|
* Maintains a rolling summary of the primary agent's current activity.
|
|
6
13
|
* Read by the fast responder to give context-aware quick replies when the
|
|
@@ -13,6 +20,12 @@ export class ActivityTracker {
|
|
|
13
20
|
taskStartedAt = null;
|
|
14
21
|
lastTodos = [];
|
|
15
22
|
recentExchanges = [];
|
|
23
|
+
/**
|
|
24
|
+
* Ordered map of in-flight + recently-completed subagent runs keyed by
|
|
25
|
+
* tool_use_id. Insertion order is preserved by `Map`; we prune oldest
|
|
26
|
+
* completed entries when the map exceeds `MAX_SUBAGENTS`.
|
|
27
|
+
*/
|
|
28
|
+
subagents = new Map();
|
|
16
29
|
maxActions;
|
|
17
30
|
constructor(maxActions = 15) {
|
|
18
31
|
this.maxActions = maxActions;
|
|
@@ -22,6 +35,7 @@ export class ActivityTracker {
|
|
|
22
35
|
this.recentActions = [];
|
|
23
36
|
this.lastAssistantText = "";
|
|
24
37
|
this.taskStartedAt = Date.now();
|
|
38
|
+
this.subagents.clear();
|
|
25
39
|
logger.debug("[activity-tracker] task started");
|
|
26
40
|
}
|
|
27
41
|
recordUserMessage(text) {
|
|
@@ -49,6 +63,115 @@ export class ActivityTracker {
|
|
|
49
63
|
getTodos() {
|
|
50
64
|
return this.lastTodos;
|
|
51
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Register a newly-spawned subagent. Safe to call multiple times for
|
|
68
|
+
* the same toolUseId — later calls are treated as no-ops so we don't
|
|
69
|
+
* clobber already-captured progress if events arrive out of order.
|
|
70
|
+
*/
|
|
71
|
+
recordSubagentStarted(toolUseId, info) {
|
|
72
|
+
if (this.subagents.has(toolUseId))
|
|
73
|
+
return;
|
|
74
|
+
this.subagents.set(toolUseId, {
|
|
75
|
+
toolUseId,
|
|
76
|
+
subagentType: info.subagentType,
|
|
77
|
+
description: info.description,
|
|
78
|
+
startedAt: Date.now(),
|
|
79
|
+
completedAt: null,
|
|
80
|
+
status: "running",
|
|
81
|
+
lastActivity: null,
|
|
82
|
+
actionCount: 0,
|
|
83
|
+
});
|
|
84
|
+
this.pruneCompletedSubagents();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Associate an SDK `task_id` with an already-registered subagent so that
|
|
88
|
+
* subsequent system events lacking `tool_use_id` (notably `task_updated`)
|
|
89
|
+
* can still be routed to the correct entry. No-op if the subagent isn't
|
|
90
|
+
* tracked or already has a taskId — the mapping is stable for the life of
|
|
91
|
+
* the task.
|
|
92
|
+
*/
|
|
93
|
+
recordSubagentTaskId(toolUseId, taskId) {
|
|
94
|
+
const entry = this.subagents.get(toolUseId);
|
|
95
|
+
if (!entry)
|
|
96
|
+
return;
|
|
97
|
+
entry.taskId ??= taskId;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Reverse lookup: given an SDK `task_id`, return the tracked subagent.
|
|
101
|
+
* Used by stream-handler to repair events that only carry `task_id`.
|
|
102
|
+
*/
|
|
103
|
+
findSubagentByTaskId(taskId) {
|
|
104
|
+
for (const entry of this.subagents.values()) {
|
|
105
|
+
if (entry.taskId === taskId)
|
|
106
|
+
return entry;
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Record a nested event (assistant text or tool call) observed under
|
|
112
|
+
* an active subagent. We keep only the latest activity string plus a
|
|
113
|
+
* counter to avoid per-subagent history growth. No-op if the subagent
|
|
114
|
+
* isn't tracked — stream ordering can produce nested events before we
|
|
115
|
+
* see the parent Task block; callers should always `recordSubagentStarted`
|
|
116
|
+
* first when possible.
|
|
117
|
+
*/
|
|
118
|
+
recordSubagentActivity(toolUseId, label) {
|
|
119
|
+
const entry = this.subagents.get(toolUseId);
|
|
120
|
+
if (entry?.status !== "running")
|
|
121
|
+
return;
|
|
122
|
+
const truncated = label.length > SUBAGENT_ACTIVITY_LIMIT
|
|
123
|
+
? label.substring(0, SUBAGENT_ACTIVITY_LIMIT) + "…"
|
|
124
|
+
: label;
|
|
125
|
+
entry.lastActivity = truncated;
|
|
126
|
+
entry.actionCount += 1;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Record an async subagent progress snapshot from a `task_progress` system
|
|
130
|
+
* event. Unlike {@link recordSubagentActivity}, the SDK supplies a cumulative
|
|
131
|
+
* `toolUses` count, so we *set* `actionCount` instead of incrementing. The
|
|
132
|
+
* `description` and `lastToolName` fields describe the current operation;
|
|
133
|
+
* prefer `lastToolName` when present because descriptions often repeat the
|
|
134
|
+
* subagent title (e.g. "Research Middle East situation") rather than the
|
|
135
|
+
* current step.
|
|
136
|
+
*/
|
|
137
|
+
recordSubagentProgress(toolUseId, info) {
|
|
138
|
+
const entry = this.subagents.get(toolUseId);
|
|
139
|
+
if (entry?.status !== "running")
|
|
140
|
+
return;
|
|
141
|
+
if (typeof info.toolUses === "number" && Number.isFinite(info.toolUses)) {
|
|
142
|
+
entry.actionCount = Math.max(entry.actionCount, info.toolUses);
|
|
143
|
+
}
|
|
144
|
+
const label = info.lastToolName ?? info.description;
|
|
145
|
+
if (label && label.length > 0) {
|
|
146
|
+
const truncated = label.length > SUBAGENT_ACTIVITY_LIMIT
|
|
147
|
+
? label.substring(0, SUBAGENT_ACTIVITY_LIMIT) + "…"
|
|
148
|
+
: label;
|
|
149
|
+
entry.lastActivity = truncated;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
recordSubagentCompleted(toolUseId, info) {
|
|
153
|
+
const entry = this.subagents.get(toolUseId);
|
|
154
|
+
if (!entry)
|
|
155
|
+
return;
|
|
156
|
+
entry.status = info.ok ? "completed" : "failed";
|
|
157
|
+
entry.completedAt = Date.now();
|
|
158
|
+
if (info.summary) {
|
|
159
|
+
const truncated = info.summary.length > SUBAGENT_ACTIVITY_LIMIT
|
|
160
|
+
? info.summary.substring(0, SUBAGENT_ACTIVITY_LIMIT) + "…"
|
|
161
|
+
: info.summary;
|
|
162
|
+
entry.lastActivity = truncated;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Returns all tracked subagents in insertion order. Callers that only
|
|
167
|
+
* care about the currently-running ones should filter by status.
|
|
168
|
+
*/
|
|
169
|
+
getSubagents() {
|
|
170
|
+
return Array.from(this.subagents.values());
|
|
171
|
+
}
|
|
172
|
+
getActiveSubagents() {
|
|
173
|
+
return this.getSubagents().filter((s) => s.status === "running");
|
|
174
|
+
}
|
|
52
175
|
getTaskDescription() {
|
|
53
176
|
return this.currentTaskDescription;
|
|
54
177
|
}
|
|
@@ -92,6 +215,13 @@ export class ActivityTracker {
|
|
|
92
215
|
for (const a of this.recentActions)
|
|
93
216
|
lines.push(` ${a}`);
|
|
94
217
|
}
|
|
218
|
+
const activeSubagents = this.getActiveSubagents();
|
|
219
|
+
if (activeSubagents.length > 0) {
|
|
220
|
+
lines.push("Active subagents:");
|
|
221
|
+
for (const s of activeSubagents) {
|
|
222
|
+
lines.push(` ${formatSubagentLine(s)}`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
95
225
|
return lines.join("\n");
|
|
96
226
|
}
|
|
97
227
|
clear() {
|
|
@@ -101,6 +231,7 @@ export class ActivityTracker {
|
|
|
101
231
|
this.taskStartedAt = null;
|
|
102
232
|
this.lastTodos = [];
|
|
103
233
|
this.recentExchanges = [];
|
|
234
|
+
this.subagents.clear();
|
|
104
235
|
}
|
|
105
236
|
push(entry) {
|
|
106
237
|
this.recentActions.push(entry);
|
|
@@ -114,5 +245,50 @@ export class ActivityTracker {
|
|
|
114
245
|
this.recentExchanges.shift();
|
|
115
246
|
}
|
|
116
247
|
}
|
|
248
|
+
/**
|
|
249
|
+
* Bound the subagent map. Running subagents are never evicted — only
|
|
250
|
+
* already-completed ones age out when we exceed the cap. This protects
|
|
251
|
+
* both against runaway growth and against losing in-flight progress
|
|
252
|
+
* for long-running tasks.
|
|
253
|
+
*/
|
|
254
|
+
pruneCompletedSubagents() {
|
|
255
|
+
if (this.subagents.size <= MAX_SUBAGENTS)
|
|
256
|
+
return;
|
|
257
|
+
let overflow = this.subagents.size - MAX_SUBAGENTS;
|
|
258
|
+
for (const [id, entry] of this.subagents) {
|
|
259
|
+
if (overflow <= 0)
|
|
260
|
+
break;
|
|
261
|
+
if (entry.status !== "running") {
|
|
262
|
+
this.subagents.delete(id);
|
|
263
|
+
overflow -= 1;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Render a one-line summary of a subagent for `/tasks` and status surfaces.
|
|
270
|
+
* Kept at module scope so it can be reused by command handlers that want
|
|
271
|
+
* a consistent presentation (e.g. /tasks).
|
|
272
|
+
*/
|
|
273
|
+
export function formatSubagentLine(progress) {
|
|
274
|
+
const elapsedSec = Math.round(((progress.completedAt ?? Date.now()) - progress.startedAt) / 1000);
|
|
275
|
+
const label = progress.subagentType ?? "subagent";
|
|
276
|
+
const statusIcon = progress.status === "running"
|
|
277
|
+
? "🔄"
|
|
278
|
+
: progress.status === "completed"
|
|
279
|
+
? "✅"
|
|
280
|
+
: "❌";
|
|
281
|
+
const parts = [`${statusIcon} ${label}`];
|
|
282
|
+
parts.push(`(${elapsedSec}s, ${progress.actionCount} step${progress.actionCount === 1 ? "" : "s"})`);
|
|
283
|
+
if (progress.description) {
|
|
284
|
+
const desc = progress.description.length > 80
|
|
285
|
+
? progress.description.substring(0, 80) + "…"
|
|
286
|
+
: progress.description;
|
|
287
|
+
parts.push(`— ${desc}`);
|
|
288
|
+
}
|
|
289
|
+
if (progress.lastActivity) {
|
|
290
|
+
parts.push(`| last: ${progress.lastActivity}`);
|
|
291
|
+
}
|
|
292
|
+
return parts.join(" ");
|
|
117
293
|
}
|
|
118
294
|
//# sourceMappingURL=activity-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"activity-tracker.js","sourceRoot":"","sources":["../../src/agent/activity-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"command-handlers.d.ts","sourceRoot":"","sources":["../../src/agent/command-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AA2BxE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,KAAK,UAAU,EAAuB,MAAM,YAAY,CAAC;AAkBlE,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CA2zBtE"}
|