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.
Files changed (77) hide show
  1. package/dist/agent/activity-tracker.d.ts +103 -0
  2. package/dist/agent/activity-tracker.d.ts.map +1 -1
  3. package/dist/agent/activity-tracker.js +176 -0
  4. package/dist/agent/activity-tracker.js.map +1 -1
  5. package/dist/agent/command-handlers.d.ts.map +1 -1
  6. package/dist/agent/command-handlers.js +157 -59
  7. package/dist/agent/command-handlers.js.map +1 -1
  8. package/dist/agent/interrupt-handler.d.ts.map +1 -1
  9. package/dist/agent/interrupt-handler.js +5 -3
  10. package/dist/agent/interrupt-handler.js.map +1 -1
  11. package/dist/agent/loop.d.ts.map +1 -1
  12. package/dist/agent/loop.js +17 -0
  13. package/dist/agent/loop.js.map +1 -1
  14. package/dist/agent/providers/claude/session.d.ts +43 -0
  15. package/dist/agent/providers/claude/session.d.ts.map +1 -1
  16. package/dist/agent/providers/claude/session.js +74 -0
  17. package/dist/agent/providers/claude/session.js.map +1 -1
  18. package/dist/agent/status.d.ts.map +1 -1
  19. package/dist/agent/status.js +1 -34
  20. package/dist/agent/status.js.map +1 -1
  21. package/dist/agent/stream-handler.d.ts +64 -1
  22. package/dist/agent/stream-handler.d.ts.map +1 -1
  23. package/dist/agent/stream-handler.js +170 -4
  24. package/dist/agent/stream-handler.js.map +1 -1
  25. package/dist/agent/subscription-gate.d.ts.map +1 -1
  26. package/dist/agent/subscription-gate.js +4 -3
  27. package/dist/agent/subscription-gate.js.map +1 -1
  28. package/dist/agent/system-prompt.d.ts.map +1 -1
  29. package/dist/agent/system-prompt.js +7 -2
  30. package/dist/agent/system-prompt.js.map +1 -1
  31. package/dist/agent/wake-cycle-runner.d.ts.map +1 -1
  32. package/dist/agent/wake-cycle-runner.js +152 -44
  33. package/dist/agent/wake-cycle-runner.js.map +1 -1
  34. package/dist/channels/interface.d.ts +25 -0
  35. package/dist/channels/interface.d.ts.map +1 -1
  36. package/dist/channels/manager.d.ts +13 -0
  37. package/dist/channels/manager.d.ts.map +1 -1
  38. package/dist/channels/manager.js +30 -0
  39. package/dist/channels/manager.js.map +1 -1
  40. package/dist/channels/telegram.d.ts +34 -0
  41. package/dist/channels/telegram.d.ts.map +1 -1
  42. package/dist/channels/telegram.js +248 -9
  43. package/dist/channels/telegram.js.map +1 -1
  44. package/dist/config/types.d.ts +2 -0
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/config/types.js +2 -0
  47. package/dist/config/types.js.map +1 -1
  48. package/dist/i18n/index.d.ts +25 -0
  49. package/dist/i18n/index.d.ts.map +1 -0
  50. package/dist/i18n/index.js +40 -0
  51. package/dist/i18n/index.js.map +1 -0
  52. package/dist/i18n/messages.d.ts +318 -0
  53. package/dist/i18n/messages.d.ts.map +1 -0
  54. package/dist/i18n/messages.js +341 -0
  55. package/dist/i18n/messages.js.map +1 -0
  56. package/dist/obs/server.d.ts.map +1 -1
  57. package/dist/obs/server.js +35 -16
  58. package/dist/obs/server.js.map +1 -1
  59. package/dist/onboarding/bot-profile.d.ts.map +1 -1
  60. package/dist/onboarding/bot-profile.js +1 -0
  61. package/dist/onboarding/bot-profile.js.map +1 -1
  62. package/dist/onboarding/remote-set-owner.d.ts.map +1 -1
  63. package/dist/onboarding/remote-set-owner.js +1 -0
  64. package/dist/onboarding/remote-set-owner.js.map +1 -1
  65. package/dist/onboarding/set-owner.d.ts.map +1 -1
  66. package/dist/onboarding/set-owner.js +1 -0
  67. package/dist/onboarding/set-owner.js.map +1 -1
  68. package/dist/onboarding/telegram-onboarding.d.ts +17 -4
  69. package/dist/onboarding/telegram-onboarding.d.ts.map +1 -1
  70. package/dist/onboarding/telegram-onboarding.js +89 -5
  71. package/dist/onboarding/telegram-onboarding.js.map +1 -1
  72. package/dist/utils/exec.d.ts +19 -0
  73. package/dist/utils/exec.d.ts.map +1 -1
  74. package/dist/utils/exec.js +57 -1
  75. package/dist/utils/exec.js.map +1 -1
  76. package/dist-agent/bundle.cjs +3747 -2532
  77. 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;AAUD;;;;GAIG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,sBAAsB,CAAM;IACpC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAM;IAC/B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,eAAe,CAA2B;IAElD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,SAAK;IAI3B,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAQpC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIrC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKvC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAOxD,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI;IAO3D,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAIpC,QAAQ,IAAI,QAAQ,EAAE;IAItB,kBAAkB,IAAI,MAAM;IAI5B,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,gBAAgB,IAAI,MAAM,EAAE;IAI5B;;;OAGG;IACH,UAAU,IAAI,MAAM;IAqCpB,KAAK,IAAI,IAAI;IASb,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,YAAY;CAMrB"}
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":"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"}
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;AAuBxE,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;AAgBlE,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,CAusBtE"}
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"}