@rk0429/agentic-relay 19.8.4 → 19.9.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.
@@ -8,5 +8,6 @@ export declare class ProjectionService {
8
8
  getVisualizationSnapshot(options?: {
9
9
  now?: Date;
10
10
  includeTerminalTasks?: boolean;
11
+ staleThresholdMs?: number;
11
12
  }): Promise<VisualizationSnapshot>;
12
13
  }
@@ -8,6 +8,7 @@ export class ProjectionService {
8
8
  }
9
9
  async getVisualizationSnapshot(options = {}) {
10
10
  const now = options.now ?? new Date();
11
+ const staleThresholdMs = options.staleThresholdMs ?? 2 * 60 * 60 * 1000;
11
12
  const [allTasks, logs] = await Promise.all([
12
13
  loadTasksWithRetention(this.dependencies.store, { now }),
13
14
  this.dependencies.store.listLogs(),
@@ -15,10 +16,11 @@ export class ProjectionService {
15
16
  const tasks = options.includeTerminalTasks
16
17
  ? allTasks
17
18
  : allTasks.filter((task) => isTaskVisibleByDefault(task));
19
+ const activeAgents = await buildActiveAgents(this.dependencies.store, allTasks, logs, now, staleThresholdMs);
18
20
  return {
19
21
  generated_at: now.toISOString(),
20
22
  task_tree: buildTaskTree(tasks),
21
- active_agents: buildActiveAgents(tasks, logs, now),
23
+ active_agents: activeAgents,
22
24
  };
23
25
  }
24
26
  }
@@ -86,41 +88,67 @@ function resolveBlockedState(task, tasksById) {
86
88
  blocked_reason: "Blocked without a recorded reason.",
87
89
  };
88
90
  }
89
- function buildActiveAgents(tasks, logs, now) {
91
+ async function buildActiveAgents(store, tasks, logs, now, staleThresholdMs) {
90
92
  const tasksById = new Map(tasks.map((task) => [task.taskId, task]));
91
- const activeBySession = new Map();
92
- const sortedLogs = [...logs].sort((left, right) => left.timestamp.localeCompare(right.timestamp));
93
- for (const log of sortedLogs) {
94
- if (log.event_type === "agent_spawned" && log.status === "running") {
95
- activeBySession.set(log.session_id, {
96
- timestamp: log.timestamp,
97
- taskId: log.task_id,
98
- backend: log.backend,
99
- agentId: typeof log.details?.agent_id === "string"
100
- ? log.details.agent_id
101
- : undefined,
102
- });
103
- continue;
104
- }
105
- if (log.event_type === "agent_completed" || log.event_type === "agent_failed") {
106
- activeBySession.delete(log.session_id);
107
- }
108
- }
109
- return [...activeBySession.entries()]
110
- .map(([relaySessionId, active]) => {
111
- const task = active.taskId ? tasksById.get(active.taskId) : undefined;
112
- const runningForSeconds = Math.max(0, Math.floor((now.getTime() - new Date(active.timestamp).getTime()) / 1000));
113
- const agentId = active.agentId ?? task?.agentId ?? relaySessionId;
93
+ const tasksBySessionId = new Map(tasks
94
+ .filter((task) => task.currentRelaySessionId)
95
+ .map((task) => [task.currentRelaySessionId, task]));
96
+ const spawnedBySession = indexSpawnedAgents(logs);
97
+ const sessionIds = await store.listSessionIds();
98
+ const sessions = await Promise.all(sessionIds.map((sessionId) => store.readSessionMetadata(sessionId)));
99
+ return sessions
100
+ .filter((metadata) => Boolean(metadata))
101
+ .filter((metadata) => metadata.status === "running")
102
+ .map((metadata) => {
103
+ const spawned = spawnedBySession.get(metadata.relaySessionId);
104
+ const task = tasksBySessionId.get(metadata.relaySessionId) ??
105
+ (spawned?.taskId ? tasksById.get(spawned.taskId) : undefined);
106
+ const startedAt = metadata.createdAt;
107
+ const updatedAtMs = Date.parse(metadata.updatedAt);
108
+ const runningForSeconds = secondsSince(startedAt, now);
114
109
  return {
115
- agent_id: agentId,
116
- relay_session_id: relaySessionId,
117
- task_id: active.taskId,
110
+ agent_id: metadata.agentId ?? spawned?.agentId ?? metadata.relaySessionId,
111
+ relay_session_id: metadata.relaySessionId,
112
+ parent_relay_session_id: metadata.parentRelaySessionId,
113
+ task_id: task?.taskId ?? spawned?.taskId,
118
114
  task_title: task?.title,
119
- backend: active.backend,
120
- started_at: active.timestamp,
115
+ backend: metadata.backend ?? spawned?.backend,
116
+ role: spawned?.role,
117
+ status: Number.isFinite(updatedAtMs) &&
118
+ now.getTime() - updatedAtMs > staleThresholdMs
119
+ ? "stale"
120
+ : "running",
121
+ started_at: startedAt,
121
122
  running_for_seconds: runningForSeconds,
122
123
  };
123
124
  })
124
125
  .sort((left, right) => left.started_at.localeCompare(right.started_at));
125
126
  }
127
+ function indexSpawnedAgents(logs) {
128
+ const spawnedBySession = new Map();
129
+ const sortedLogs = [...logs].sort((left, right) => left.timestamp.localeCompare(right.timestamp));
130
+ for (const log of sortedLogs) {
131
+ if (log.event_type !== "agent_spawned" || log.status !== "running") {
132
+ continue;
133
+ }
134
+ spawnedBySession.set(log.session_id, {
135
+ taskId: log.task_id,
136
+ role: typeof log.details?.role === "string"
137
+ ? log.details.role
138
+ : undefined,
139
+ backend: log.backend,
140
+ agentId: typeof log.details?.agent_id === "string"
141
+ ? log.details.agent_id
142
+ : undefined,
143
+ });
144
+ }
145
+ return spawnedBySession;
146
+ }
147
+ function secondsSince(timestamp, now) {
148
+ const startedAtMs = Date.parse(timestamp);
149
+ if (!Number.isFinite(startedAtMs)) {
150
+ return 0;
151
+ }
152
+ return Math.max(0, Math.floor((now.getTime() - startedAtMs) / 1000));
153
+ }
126
154
  //# sourceMappingURL=projection-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projection-service.js","sourceRoot":"","sources":["../../src/application/projection-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-service.js","sourceRoot":"","sources":["../../src/application/projection-service.ts"],"names":[],"mappings":"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"}
@@ -379,9 +379,12 @@ export interface TaskTreeNode {
379
379
  export interface ActiveAgentSummary {
380
380
  agent_id: string;
381
381
  relay_session_id: string;
382
+ parent_relay_session_id?: string;
382
383
  task_id?: string;
383
384
  task_title?: string;
384
385
  backend?: BackendType;
386
+ role?: string;
387
+ status: "running" | "stale";
385
388
  started_at: string;
386
389
  running_for_seconds: number;
387
390
  }
@@ -704,7 +704,7 @@ const TOOL_DESCRIPTIONS = {
704
704
  export function createRelayMcpServer(options) {
705
705
  const server = new McpServer({
706
706
  name: "agentic-relay",
707
- version: "19.8.4",
707
+ version: "19.9.1",
708
708
  });
709
709
  if (options.allowSpawnAgents) {
710
710
  server.registerTool("spawn_agents", {
@@ -1,213 +1,197 @@
1
- import { existsSync, watch } from "node:fs";
2
1
  import path from "node:path";
3
2
  import * as vscode from "vscode";
4
3
  import { ProjectionService } from "../../application/projection-service.js";
5
4
  import { RelayStore } from "../../infrastructure/store/relay-store.js";
6
- import { activeAgentLabel, activeAgentTooltip, describeActiveAgent, describeTaskNode, taskTooltip, } from "./view-model.js";
7
- const REFRESH_DEBOUNCE_MS = 150;
5
+ import { RelayFileWatcher } from "./relay-file-watcher.js";
6
+ import { ActiveAgentDataProvider, TaskTreeDataProvider, createSnapshotLoader, } from "./tree-data-providers.js";
7
+ import { activeAgentLabel, buildAgentDetailHtml, buildTaskDetailHtml, } from "./view-model.js";
8
+ const DEFAULT_STALE_THRESHOLD_MS = 2 * 60 * 60 * 1000;
8
9
  export function activate(context) {
9
- const coordinator = new VisualizationCoordinator();
10
- const taskProvider = new TaskTreeProvider(coordinator);
11
- const agentProvider = new ActiveAgentsProvider(coordinator);
12
- context.subscriptions.push(coordinator, taskProvider, agentProvider, vscode.window.registerTreeDataProvider("agenticRelay.taskTree", taskProvider), vscode.window.registerTreeDataProvider("agenticRelay.activeAgents", agentProvider), vscode.commands.registerCommand("agenticRelay.refreshViews", () => {
13
- coordinator.refresh();
10
+ const detailPanels = new RelayDetailPanelManager();
11
+ const loadSnapshot = async () => createSnapshotLoader(getWorkspaceRoot(), createProjectionLoader)();
12
+ const taskProvider = new TaskTreeDataProvider(loadSnapshot);
13
+ const agentProvider = new ActiveAgentDataProvider(loadSnapshot);
14
+ const refreshViews = async () => {
15
+ await Promise.all([taskProvider.refresh(), agentProvider.refresh()]);
16
+ };
17
+ const fileWatcher = new RelayWorkspaceWatcher(() => {
18
+ void refreshViews();
19
+ });
20
+ context.subscriptions.push(detailPanels, fileWatcher, taskProvider, agentProvider, vscode.window.registerTreeDataProvider("agenticRelay.taskTree", taskProvider), vscode.window.registerTreeDataProvider("agenticRelay.activeAgents", agentProvider), vscode.commands.registerCommand("agenticRelay.refreshViews", () => refreshViews()), vscode.commands.registerCommand("agenticRelay.showAgentDetail", async (relaySessionId) => {
21
+ await showAgentDetail(detailPanels, relaySessionId);
22
+ }), vscode.commands.registerCommand("agenticRelay.showTaskDetail", async (taskId) => {
23
+ await showTaskDetail(detailPanels, taskId);
14
24
  }));
25
+ void refreshViews();
15
26
  }
16
27
  export function deactivate() { }
17
- class VisualizationCoordinator {
18
- emitter = new vscode.EventEmitter();
28
+ class RelayWorkspaceWatcher {
29
+ onChange;
19
30
  disposables = [];
20
31
  watchers = [];
21
- refreshTimer;
22
- onDidChange = this.emitter.event;
23
- constructor() {
24
- this.rebuildWatchers();
32
+ constructor(onChange) {
33
+ this.onChange = onChange;
34
+ this.rebuild();
25
35
  this.disposables.push(vscode.workspace.onDidChangeWorkspaceFolders(() => {
26
- this.rebuildWatchers();
27
- this.scheduleRefresh();
36
+ this.rebuild();
37
+ this.onChange();
28
38
  }));
29
39
  }
30
- async getSnapshot() {
31
- const workspaceFolder = vscode.workspace.workspaceFolders?.[0];
32
- if (!workspaceFolder) {
33
- return undefined;
34
- }
35
- const store = new RelayStore(path.join(workspaceFolder.uri.fsPath, ".relay"));
36
- const projectionService = new ProjectionService({
37
- store,
38
- });
39
- return projectionService.getVisualizationSnapshot();
40
- }
41
- refresh() {
42
- this.emitter.fire();
43
- }
44
40
  dispose() {
45
- if (this.refreshTimer) {
46
- clearTimeout(this.refreshTimer);
47
- }
48
- for (const watcher of this.watchers) {
49
- watcher.close();
50
- }
51
- this.watchers.length = 0;
41
+ this.disposeWatchers();
52
42
  for (const disposable of this.disposables) {
53
43
  disposable.dispose();
54
44
  }
55
- this.emitter.dispose();
56
45
  }
57
- scheduleRefresh() {
58
- if (this.refreshTimer) {
59
- clearTimeout(this.refreshTimer);
46
+ rebuild() {
47
+ this.disposeWatchers();
48
+ for (const workspaceFolder of vscode.workspace.workspaceFolders ?? []) {
49
+ const watcher = new RelayFileWatcher({
50
+ workspaceRoot: workspaceFolder.uri.fsPath,
51
+ onChange: this.onChange,
52
+ });
53
+ watcher.start();
54
+ this.watchers.push(watcher);
60
55
  }
61
- this.refreshTimer = setTimeout(() => {
62
- this.refresh();
63
- }, REFRESH_DEBOUNCE_MS);
64
56
  }
65
- rebuildWatchers() {
57
+ disposeWatchers() {
66
58
  for (const watcher of this.watchers) {
67
- watcher.close();
59
+ watcher.dispose();
68
60
  }
69
61
  this.watchers.length = 0;
70
- for (const workspaceFolder of vscode.workspace.workspaceFolders ?? []) {
71
- for (const watchPath of relayWatchPaths(workspaceFolder.uri.fsPath)) {
72
- if (!existsSync(watchPath)) {
73
- continue;
74
- }
75
- try {
76
- const watcher = watch(watchPath, () => {
77
- this.rebuildWatchers();
78
- this.scheduleRefresh();
79
- });
80
- this.watchers.push(watcher);
81
- }
82
- catch {
83
- // Ignore unsupported watch targets and keep the view available.
84
- }
85
- }
86
- }
87
62
  }
88
63
  }
89
- class TaskTreeProvider {
90
- coordinator;
91
- emitter = new vscode.EventEmitter();
92
- onDidChangeTreeData = this.emitter.event;
93
- subscription;
94
- constructor(coordinator) {
95
- this.coordinator = coordinator;
96
- this.subscription = this.coordinator.onDidChange(() => {
97
- this.emitter.fire(undefined);
98
- });
99
- }
100
- dispose() {
101
- this.subscription.dispose();
102
- this.emitter.dispose();
103
- }
104
- getTreeItem(element) {
105
- return element;
106
- }
107
- async getChildren(element) {
108
- if (element) {
109
- return element.children;
64
+ class RelayDetailPanelManager {
65
+ panels = new Map();
66
+ show(kind, id, title, html) {
67
+ const panelKey = `${kind}:${id}`;
68
+ const existingPanel = this.panels.get(panelKey);
69
+ if (existingPanel) {
70
+ existingPanel.title = title;
71
+ existingPanel.webview.html = html;
72
+ existingPanel.reveal(vscode.ViewColumn.Beside);
73
+ return;
110
74
  }
111
- const snapshot = await this.coordinator.getSnapshot();
112
- if (!snapshot) {
113
- return [messageItem("Open a workspace folder to inspect .relay data.")];
114
- }
115
- if (snapshot.task_tree.length === 0) {
116
- return [messageItem("No tasks found under .relay/tasks.")];
117
- }
118
- return snapshot.task_tree.map((node) => toTaskItem(node));
119
- }
120
- }
121
- class ActiveAgentsProvider {
122
- coordinator;
123
- emitter = new vscode.EventEmitter();
124
- onDidChangeTreeData = this.emitter.event;
125
- subscription;
126
- constructor(coordinator) {
127
- this.coordinator = coordinator;
128
- this.subscription = this.coordinator.onDidChange(() => {
129
- this.emitter.fire(undefined);
75
+ const panel = vscode.window.createWebviewPanel("agenticRelay.detail", title, vscode.ViewColumn.Beside, {
76
+ enableFindWidget: true,
77
+ retainContextWhenHidden: true,
130
78
  });
79
+ panel.webview.html = html;
80
+ panel.onDidDispose(() => {
81
+ this.panels.delete(panelKey);
82
+ });
83
+ this.panels.set(panelKey, panel);
131
84
  }
132
85
  dispose() {
133
- this.subscription.dispose();
134
- this.emitter.dispose();
135
- }
136
- getTreeItem(element) {
137
- return element;
138
- }
139
- async getChildren(element) {
140
- if (element) {
141
- return element.children;
142
- }
143
- const snapshot = await this.coordinator.getSnapshot();
144
- if (!snapshot) {
145
- return [messageItem("Open a workspace folder to inspect .relay data.")];
86
+ for (const panel of this.panels.values()) {
87
+ panel.dispose();
146
88
  }
147
- if (snapshot.active_agents.length === 0) {
148
- return [messageItem("No active agents.")];
149
- }
150
- return snapshot.active_agents.map((agent) => toAgentItem(agent));
89
+ this.panels.clear();
151
90
  }
152
91
  }
153
- class RelayTreeItem extends vscode.TreeItem {
154
- children;
155
- constructor(label, children = []) {
156
- super(label, children.length > 0
157
- ? vscode.TreeItemCollapsibleState.Expanded
158
- : vscode.TreeItemCollapsibleState.None);
159
- this.children = children;
160
- }
92
+ async function showAgentDetail(detailPanels, relaySessionId) {
93
+ const store = createStoreFromWorkspace();
94
+ if (!store) {
95
+ void vscode.window.showInformationMessage("Open a workspace folder to inspect .relay data.");
96
+ return;
97
+ }
98
+ const projectionService = new ProjectionService({ store });
99
+ const [metadata, snapshot] = await Promise.all([
100
+ store.readSessionMetadata(relaySessionId),
101
+ projectionService.getVisualizationSnapshot({
102
+ includeTerminalTasks: true,
103
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
104
+ }),
105
+ ]);
106
+ if (!metadata) {
107
+ void vscode.window.showWarningMessage(`Relay session ${relaySessionId} was not found.`);
108
+ return;
109
+ }
110
+ const agent = snapshot.active_agents.find((candidate) => candidate.relay_session_id === relaySessionId) ?? summarizeSessionMetadata(metadata, new Date());
111
+ detailPanels.show("agent", relaySessionId, `Agent: ${activeAgentLabel(agent)}`, buildAgentDetailHtml(agent));
161
112
  }
162
- function toTaskItem(node) {
163
- const item = new RelayTreeItem(node.title, node.children.map((child) => toTaskItem(child)));
164
- item.id = node.task_id;
165
- item.description = describeTaskNode(node);
166
- item.tooltip = new vscode.MarkdownString(taskTooltip(node));
167
- item.contextValue = node.status === "blocked" ? "agenticRelay.blockedTask" : "agenticRelay.task";
168
- item.iconPath = taskStatusIcon(node.status);
169
- return item;
113
+ async function showTaskDetail(detailPanels, taskId) {
114
+ const store = createStoreFromWorkspace();
115
+ if (!store) {
116
+ void vscode.window.showInformationMessage("Open a workspace folder to inspect .relay data.");
117
+ return;
118
+ }
119
+ const projectionService = new ProjectionService({ store });
120
+ const [task, snapshot] = await Promise.all([
121
+ store.readTask(taskId),
122
+ projectionService.getVisualizationSnapshot({
123
+ includeTerminalTasks: true,
124
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
125
+ }),
126
+ ]);
127
+ if (!task) {
128
+ void vscode.window.showWarningMessage(`Task ${taskId} was not found.`);
129
+ return;
130
+ }
131
+ const node = findTaskNode(snapshot.task_tree, taskId) ?? taskRecordToTreeNode(task);
132
+ detailPanels.show("task", taskId, `Task: ${node.title}`, buildTaskDetailHtml(node));
133
+ }
134
+ function createProjectionLoader(workspaceRoot) {
135
+ return async () => {
136
+ const store = new RelayStore(path.join(workspaceRoot, ".relay"));
137
+ const projectionService = new ProjectionService({ store });
138
+ return projectionService.getVisualizationSnapshot({
139
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
140
+ });
141
+ };
170
142
  }
171
- function toAgentItem(agent) {
172
- const item = new RelayTreeItem(activeAgentLabel(agent));
173
- item.id = agent.agent_id;
174
- item.description = describeActiveAgent(agent);
175
- item.tooltip = new vscode.MarkdownString(activeAgentTooltip(agent));
176
- item.contextValue = "agenticRelay.activeAgent";
177
- item.iconPath = new vscode.ThemeIcon("run");
178
- return item;
143
+ function createStoreFromWorkspace() {
144
+ const workspaceRoot = getWorkspaceRoot();
145
+ if (!workspaceRoot) {
146
+ return undefined;
147
+ }
148
+ return new RelayStore(path.join(workspaceRoot, ".relay"));
179
149
  }
180
- function messageItem(label) {
181
- const item = new RelayTreeItem(label);
182
- item.iconPath = new vscode.ThemeIcon("info");
183
- return item;
150
+ function getWorkspaceRoot() {
151
+ return vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
184
152
  }
185
- function relayWatchPaths(workspacePath) {
186
- return [
187
- workspacePath,
188
- path.join(workspacePath, ".relay"),
189
- path.join(workspacePath, ".relay", "tasks"),
190
- path.join(workspacePath, ".relay", "logs"),
191
- ];
153
+ function summarizeSessionMetadata(metadata, now) {
154
+ const updatedAtMs = Date.parse(metadata.updatedAt);
155
+ const startedAtMs = Date.parse(metadata.createdAt);
156
+ return {
157
+ agent_id: metadata.agentId ?? metadata.relaySessionId,
158
+ relay_session_id: metadata.relaySessionId,
159
+ parent_relay_session_id: metadata.parentRelaySessionId,
160
+ backend: metadata.backend,
161
+ status: Number.isFinite(updatedAtMs) &&
162
+ now.getTime() - updatedAtMs <= DEFAULT_STALE_THRESHOLD_MS &&
163
+ metadata.status === "running"
164
+ ? "running"
165
+ : "stale",
166
+ started_at: metadata.createdAt,
167
+ running_for_seconds: Number.isFinite(startedAtMs)
168
+ ? Math.max(0, Math.floor((now.getTime() - startedAtMs) / 1000))
169
+ : 0,
170
+ };
192
171
  }
193
- function taskStatusIcon(status) {
194
- switch (status) {
195
- case "backlog":
196
- return new vscode.ThemeIcon("circle-large-outline");
197
- case "ready":
198
- return new vscode.ThemeIcon("clock");
199
- case "in_progress":
200
- return new vscode.ThemeIcon("sync");
201
- case "review":
202
- return new vscode.ThemeIcon("eye");
203
- case "blocked":
204
- return new vscode.ThemeIcon("warning", new vscode.ThemeColor("list.errorForeground"));
205
- case "done":
206
- return new vscode.ThemeIcon("check", new vscode.ThemeColor("charts.green"));
207
- case "superseded":
208
- return new vscode.ThemeIcon("debug-step-over");
209
- case "archived":
210
- return new vscode.ThemeIcon("archive");
172
+ function findTaskNode(nodes, taskId) {
173
+ for (const node of nodes) {
174
+ if (node.task_id === taskId) {
175
+ return node;
176
+ }
177
+ const nested = findTaskNode(node.children, taskId);
178
+ if (nested) {
179
+ return nested;
180
+ }
211
181
  }
182
+ return undefined;
183
+ }
184
+ function taskRecordToTreeNode(task) {
185
+ return {
186
+ task_id: task.taskId,
187
+ title: task.title,
188
+ status: task.status,
189
+ parent_id: task.parentId,
190
+ agent_id: task.agentId,
191
+ current_relay_session_id: task.currentRelaySessionId,
192
+ depends_on: [...task.dependsOn],
193
+ warnings: [],
194
+ children: [],
195
+ };
212
196
  }
213
197
  //# sourceMappingURL=extension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAkB,MAAM,SAAS,CAAC;AAC5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAO5E,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC,MAAM,UAAU,QAAQ,CAAC,OAAgC;IACvD,MAAM,WAAW,GAAG,IAAI,wBAAwB,EAAE,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE5D,OAAO,CAAC,aAAa,CAAC,IAAI,CACxB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,uBAAuB,EAAE,YAAY,CAAC,EAC7E,MAAM,CAAC,MAAM,CAAC,wBAAwB,CAAC,2BAA2B,EAAE,aAAa,CAAC,EAClF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAChE,WAAW,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,KAAU,CAAC;AAErC,MAAM,wBAAwB;IACX,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAAQ,CAAC;IAC1C,WAAW,GAAwB,EAAE,CAAC;IACtC,QAAQ,GAAgB,EAAE,CAAC;IACpC,YAAY,CAA6B;IAEjC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAEjD;QACE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,GAAG,EAAE;YAChD,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC9C,KAAK;SACN,CAAC,CAAC;QAEH,OAAO,iBAAiB,CAAC,wBAAwB,EAAE,CAAC;IACtD,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC1B,CAAC;IAEO,eAAe;QACrB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,eAAe,IAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACtE,KAAK,MAAM,SAAS,IAAI,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3B,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE;wBACpC,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,eAAe,EAAE,CAAC;oBACzB,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;gBAAC,MAAM,CAAC;oBACP,gEAAgE;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,MAAM,gBAAgB;IAOgB;IAJnB,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAA6B,CAAC;IAChE,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,YAAY,CAAoB;IAEjD,YAAoC,WAAqC;QAArC,gBAAW,GAAX,WAAW,CAA0B;QACvE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,OAAsB;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAuB;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,oBAAoB;IAOY;IAJnB,OAAO,GAAG,IAAI,MAAM,CAAC,YAAY,EAA6B,CAAC;IAChE,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IACxC,YAAY,CAAoB;IAEjD,YAAoC,WAAqC;QAArC,gBAAW,GAAX,WAAW,CAA0B;QACvE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,OAAsB;QACvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAuB;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QACtD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,WAAW,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;CACF;AAED,MAAM,aAAc,SAAQ,MAAM,CAAC,QAAQ;IAGvB;IAFlB,YACE,KAAa,EACG,WAA4B,EAAE;QAE9C,KAAK,CACH,KAAK,EACL,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,QAAQ;YAC1C,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CACzC,CAAC;QAPc,aAAQ,GAAR,QAAQ,CAAsB;IAQhD,CAAC;CACF;AAED,SAAS,UAAU,CAAC,IAAkB;IACpC,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;IACvB,IAAI,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,mBAAmB,CAAC;IACjG,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAC5C,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,YAAY,GAAG,0BAA0B,CAAC;IAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,aAAqB;IAC5C,OAAO;QACL,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAkB;IACxC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACtD,KAAK,OAAO;YACV,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,KAAK,aAAa;YAChB,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,QAAQ;YACX,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,SAAS;YACZ,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACxF,KAAK,MAAM;YACT,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;QAC9E,KAAK,YAAY;YACf,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,KAAK,UAAU;YACb,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/extension.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,7 @@ export function collectWatchTargets(workspaceRoot) {
61
61
  relayRoot,
62
62
  path.join(relayRoot, "tasks"),
63
63
  path.join(relayRoot, "logs"),
64
+ path.join(relayRoot, "sessions"),
64
65
  ].filter((targetPath, index, allTargets) => {
65
66
  if (index === 0) {
66
67
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"relay-file-watcher.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/relay-file-watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-file-watcher.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/relay-file-watcher.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export declare class ActiveAgentDataProvider implements vscode.TreeDataProvider<
27
27
  constructor(loadSnapshot: SnapshotLoader);
28
28
  refresh(): Promise<void>;
29
29
  getTreeItem(element: TreeNode): vscode.TreeItem;
30
- getChildren(): vscode.ProviderResult<TreeNode[]>;
30
+ getChildren(element?: TreeNode): vscode.ProviderResult<TreeNode[]>;
31
31
  dispose(): void;
32
32
  }
33
33
  export declare function createSnapshotLoader(workspaceRoot?: string, projectionFactory?: (workspaceRoot: string) => SnapshotLoader): SnapshotLoader;
@@ -1,5 +1,5 @@
1
1
  import * as vscode from "vscode";
2
- import { buildActiveAgentItemModels, buildTaskTreeItemModels, emptySnapshot, } from "./view-model.js";
2
+ import { buildActiveAgentTree, buildTaskTreeItemModels, emptySnapshot, } from "./view-model.js";
3
3
  export class TaskTreeDataProvider {
4
4
  loadSnapshot;
5
5
  didChangeTreeDataEmitter = new vscode.EventEmitter();
@@ -19,7 +19,7 @@ export class TaskTreeDataProvider {
19
19
  item.contextValue = "agenticRelay.message";
20
20
  return item;
21
21
  }
22
- const item = new vscode.TreeItem(element.label, element.kind === "task" && element.children.length > 0
22
+ const item = new vscode.TreeItem(element.label, element.children.length > 0
23
23
  ? vscode.TreeItemCollapsibleState.Collapsed
24
24
  : vscode.TreeItemCollapsibleState.None);
25
25
  item.id = element.id;
@@ -28,6 +28,13 @@ export class TaskTreeDataProvider {
28
28
  item.iconPath = new vscode.ThemeIcon(element.icon);
29
29
  item.contextValue =
30
30
  element.kind === "task" ? "agenticRelay.task" : "agenticRelay.agent";
31
+ if (element.kind === "task") {
32
+ item.command = {
33
+ command: "agenticRelay.showTaskDetail",
34
+ title: "Show Task Detail",
35
+ arguments: [element.id],
36
+ };
37
+ }
31
38
  return item;
32
39
  }
33
40
  getChildren(element) {
@@ -62,16 +69,31 @@ export class ActiveAgentDataProvider {
62
69
  item.contextValue = "agenticRelay.message";
63
70
  return item;
64
71
  }
65
- const item = new vscode.TreeItem(element.label, vscode.TreeItemCollapsibleState.None);
72
+ const item = new vscode.TreeItem(element.label, element.children.length > 0
73
+ ? vscode.TreeItemCollapsibleState.Collapsed
74
+ : vscode.TreeItemCollapsibleState.None);
66
75
  item.id = element.id;
67
76
  item.description = element.description;
68
77
  item.tooltip = element.tooltip;
69
78
  item.iconPath = new vscode.ThemeIcon(element.icon);
70
79
  item.contextValue = "agenticRelay.agent";
80
+ if (element.kind === "agent") {
81
+ item.command = {
82
+ command: "agenticRelay.showAgentDetail",
83
+ title: "Show Agent Detail",
84
+ arguments: [element.sessionId],
85
+ };
86
+ }
71
87
  return item;
72
88
  }
73
- getChildren() {
74
- return this.items;
89
+ getChildren(element) {
90
+ if (!element) {
91
+ return this.items;
92
+ }
93
+ if (element.kind !== "agent") {
94
+ return [];
95
+ }
96
+ return element.children;
75
97
  }
76
98
  dispose() {
77
99
  this.didChangeTreeDataEmitter.dispose();
@@ -90,7 +112,7 @@ async function loadTaskItems(loadSnapshot) {
90
112
  async function loadAgentItems(loadSnapshot) {
91
113
  try {
92
114
  const snapshot = await loadSnapshot();
93
- const items = buildActiveAgentItemModels(snapshot.active_agents);
115
+ const items = buildActiveAgentTree(snapshot.active_agents);
94
116
  return items.length > 0 ? items : [messageNode("agents-empty", "No active agents.")];
95
117
  }
96
118
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"tree-data-providers.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/tree-data-providers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree-data-providers.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/tree-data-providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,aAAa,GAGd,MAAM,iBAAiB,CAAC;AAczB,MAAM,OAAO,oBAAoB;IAQK;IAPnB,wBAAwB,GAAG,IAAI,MAAM,CAAC,YAAY,EAEhE,CAAC;IACI,KAAK,GAAe,CAAC,WAAW,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE3D,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAE1E,YAAoC,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;IAAG,CAAC;IAE7D,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAEM,WAAW,CAAC,OAAiB;QAClC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAC9B,OAAO,CAAC,KAAK,EACb,MAAM,CAAC,wBAAwB,CAAC,IAAI,CACrC,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAC9B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS;YAC3C,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CACzC,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY;YACf,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACvE,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,GAAG;gBACb,OAAO,EAAE,6BAA6B;gBACtC,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;aACxB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,OAAkB;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,uBAAuB;IAUE;IAPnB,wBAAwB,GAAG,IAAI,MAAM,CAAC,YAAY,EAEhE,CAAC;IACI,KAAK,GAAe,CAAC,WAAW,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAE/D,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;IAE1E,YAAoC,YAA4B;QAA5B,iBAAY,GAAZ,YAAY,CAAgB;IAAG,CAAC;IAE7D,KAAK,CAAC,OAAO;QAClB,IAAI,CAAC,KAAK,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAEM,WAAW,CAAC,OAAiB;QAClC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAC9B,OAAO,CAAC,KAAK,EACb,MAAM,CAAC,wBAAwB,CAAC,IAAI,CACrC,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;YAC3C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,QAAQ,CAC9B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,SAAS;YAC3C,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,IAAI,CACzC,CAAC;QACF,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG;gBACb,OAAO,EAAE,8BAA8B;gBACvC,KAAK,EAAE,mBAAmB;gBAC1B,SAAS,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;aAC/B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,WAAW,CAAC,OAAkB;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC1B,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC;CACF;AAED,KAAK,UAAU,aAAa,CAAC,YAA4B;IACvD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,uBAAuB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,WAAW,CAAC,YAAY,EAAE,uBAAuB,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,YAA4B;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,WAAW,CAAC,cAAc,EAAE,+BAA+B,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,aAAsB,EACtB,iBAA6D;IAE7D,IAAI,CAAC,aAAa,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzC,OAAO,KAAK,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAClB,EAAU,EACV,KAAa,EACb,WAAoB;IAEpB,OAAO;QACL,IAAI,EAAE,SAAS;QACf,EAAE;QACF,KAAK;QACL,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;AAClE,CAAC"}
@@ -11,17 +11,21 @@ export interface TaskTreeItemModel {
11
11
  export interface ActiveAgentItemModel {
12
12
  kind: "agent";
13
13
  id: string;
14
+ sessionId: string;
14
15
  label: string;
15
16
  description: string;
16
17
  tooltip: string;
17
18
  icon: string;
19
+ children: ActiveAgentItemModel[];
18
20
  }
19
21
  export declare function buildTaskTreeItemModels(nodes: TaskTreeNode[]): TaskTreeItemModel[];
20
- export declare function buildActiveAgentItemModels(agents: ActiveAgentSummary[]): ActiveAgentItemModel[];
22
+ export declare function buildActiveAgentTree(agents: ActiveAgentSummary[]): ActiveAgentItemModel[];
21
23
  export declare function emptySnapshot(): VisualizationSnapshot;
22
24
  export declare function describeTaskNode(node: TaskTreeNode): string;
23
25
  export declare function taskTooltip(node: TaskTreeNode): string;
24
26
  export declare function activeAgentLabel(agent: ActiveAgentSummary): string;
25
27
  export declare function describeActiveAgent(agent: ActiveAgentSummary): string;
26
28
  export declare function activeAgentTooltip(agent: ActiveAgentSummary): string;
29
+ export declare function buildAgentDetailHtml(agent: ActiveAgentSummary): string;
30
+ export declare function buildTaskDetailHtml(node: TaskTreeNode): string;
27
31
  export declare function formatDuration(totalSeconds: number): string;
@@ -9,15 +9,45 @@ export function buildTaskTreeItemModels(nodes) {
9
9
  children: buildTaskTreeItemModels(node.children),
10
10
  }));
11
11
  }
12
- export function buildActiveAgentItemModels(agents) {
13
- return agents.map((agent) => ({
14
- kind: "agent",
15
- id: agent.agent_id,
16
- label: activeAgentLabel(agent),
17
- description: describeActiveAgent(agent),
18
- tooltip: activeAgentTooltip(agent),
19
- icon: "run",
20
- }));
12
+ export function buildActiveAgentTree(agents) {
13
+ const sortedAgents = [...agents].sort((left, right) => left.started_at.localeCompare(right.started_at));
14
+ const agentsBySession = new Map(sortedAgents.map((agent) => [agent.relay_session_id, agent]));
15
+ const childrenByParent = new Map();
16
+ for (const agent of sortedAgents) {
17
+ const siblings = childrenByParent.get(agent.parent_relay_session_id) ?? [];
18
+ siblings.push(agent);
19
+ childrenByParent.set(agent.parent_relay_session_id, siblings);
20
+ }
21
+ const buildNode = (agent, visited) => {
22
+ const nextVisited = new Set(visited);
23
+ nextVisited.add(agent.relay_session_id);
24
+ const children = (childrenByParent.get(agent.relay_session_id) ?? [])
25
+ .filter((child) => !visited.has(child.relay_session_id))
26
+ .map((child) => buildNode(child, nextVisited));
27
+ return {
28
+ kind: "agent",
29
+ id: agent.agent_id,
30
+ sessionId: agent.relay_session_id,
31
+ label: activeAgentLabel(agent),
32
+ description: describeActiveAgent(agent),
33
+ tooltip: activeAgentTooltip(agent),
34
+ icon: agent.status === "stale" ? "warning" : "sync~spin",
35
+ children,
36
+ };
37
+ };
38
+ const roots = sortedAgents.filter((agent) => !agent.parent_relay_session_id ||
39
+ !agentsBySession.has(agent.parent_relay_session_id));
40
+ const rootAgents = roots.length > 0 ? roots : sortedAgents;
41
+ const seen = new Set();
42
+ return rootAgents
43
+ .filter((agent) => {
44
+ if (seen.has(agent.relay_session_id)) {
45
+ return false;
46
+ }
47
+ seen.add(agent.relay_session_id);
48
+ return true;
49
+ })
50
+ .map((agent) => buildNode(agent, new Set()));
21
51
  }
22
52
  export function emptySnapshot() {
23
53
  return {
@@ -60,21 +90,90 @@ export function taskTooltip(node) {
60
90
  return lines.join("\n");
61
91
  }
62
92
  export function activeAgentLabel(agent) {
63
- return agent.task_title ?? agent.task_id ?? agent.agent_id;
93
+ return agent.task_title ?? agent.role ?? agent.agent_id;
64
94
  }
65
95
  export function describeActiveAgent(agent) {
66
- return `${agent.backend ?? "-"} · ${formatDuration(agent.running_for_seconds)}`;
96
+ return [
97
+ agent.role,
98
+ agent.backend ?? "-",
99
+ formatDuration(agent.running_for_seconds),
100
+ agent.status === "stale" ? "stale" : undefined,
101
+ ]
102
+ .filter((part) => Boolean(part))
103
+ .join(" · ");
67
104
  }
68
105
  export function activeAgentTooltip(agent) {
69
106
  return [
70
107
  agent.agent_id,
71
108
  `relay_session_id: ${agent.relay_session_id}`,
109
+ `parent_relay_session_id: ${agent.parent_relay_session_id ?? "-"}`,
72
110
  `task: ${agent.task_title ?? "-"} (${agent.task_id ?? "-"})`,
73
111
  `backend: ${agent.backend ?? "-"}`,
112
+ `role: ${agent.role ?? "-"}`,
113
+ `status: ${agent.status}`,
74
114
  `running: ${formatDuration(agent.running_for_seconds)}`,
75
115
  `started_at: ${agent.started_at}`,
76
116
  ].join("\n");
77
117
  }
118
+ export function buildAgentDetailHtml(agent) {
119
+ const label = activeAgentLabel(agent);
120
+ return buildDetailHtml({
121
+ kind: "Agent",
122
+ title: label,
123
+ subtitle: label === agent.agent_id ? undefined : agent.agent_id,
124
+ status: agent.status,
125
+ sections: [
126
+ {
127
+ title: "Metadata",
128
+ rows: [
129
+ detailRow("Agent ID", renderCode(agent.agent_id)),
130
+ detailRow("Session ID", renderCode(agent.relay_session_id)),
131
+ detailRow("Backend", renderText(agent.backend ?? "-")),
132
+ detailRow("Role", renderText(agent.role ?? "-")),
133
+ detailRow("Task", formatTaskReference(agent.task_title, agent.task_id)),
134
+ detailRow("Started", renderCode(agent.started_at)),
135
+ detailRow("Duration", renderText(formatDuration(agent.running_for_seconds))),
136
+ detailRow("Parent", agent.parent_relay_session_id
137
+ ? renderCode(agent.parent_relay_session_id)
138
+ : renderMuted("-")),
139
+ ],
140
+ },
141
+ ],
142
+ });
143
+ }
144
+ export function buildTaskDetailHtml(node) {
145
+ return buildDetailHtml({
146
+ kind: "Task",
147
+ title: node.title,
148
+ status: node.status,
149
+ sections: [
150
+ {
151
+ title: "Metadata",
152
+ rows: [
153
+ detailRow("Task ID", renderCode(node.task_id)),
154
+ detailRow("Status", renderText(node.status)),
155
+ detailRow("Agent", node.agent_id ? renderCode(node.agent_id) : renderMuted("-")),
156
+ detailRow("Session", node.current_relay_session_id
157
+ ? renderCode(node.current_relay_session_id)
158
+ : renderMuted("-")),
159
+ detailRow("Dependencies", renderCodeList(node.depends_on)),
160
+ detailRow("Blocked", node.blocked_reason
161
+ ? renderText(`${node.blocked_kind ?? "unknown"}: ${node.blocked_reason}`)
162
+ : renderMuted("-")),
163
+ detailRow("Warnings", renderTextList(node.warnings)),
164
+ ],
165
+ },
166
+ ...(node.children.length > 0
167
+ ? [
168
+ {
169
+ title: "Children",
170
+ rows: node.children.map((child) => detailRow(child.title, `${renderStatusBadge(child.status)} ${renderCode(child.task_id)}`)),
171
+ },
172
+ ]
173
+ : []),
174
+ ],
175
+ });
176
+ }
78
177
  export function formatDuration(totalSeconds) {
79
178
  const hours = Math.floor(totalSeconds / 3600);
80
179
  const minutes = Math.floor((totalSeconds % 3600) / 60);
@@ -109,4 +208,274 @@ function truncate(value, maxLength) {
109
208
  }
110
209
  return `${value.slice(0, maxLength - 1)}…`;
111
210
  }
211
+ function formatTaskReference(taskTitle, taskId) {
212
+ if (taskTitle && taskId) {
213
+ return `${escapeHtml(taskTitle)} (${renderCode(taskId)})`;
214
+ }
215
+ if (taskTitle) {
216
+ return escapeHtml(taskTitle);
217
+ }
218
+ if (taskId) {
219
+ return renderCode(taskId);
220
+ }
221
+ return renderMuted("-");
222
+ }
223
+ function buildDetailHtml({ kind, title, subtitle, status, sections, }) {
224
+ const escapedTitle = escapeHtml(title);
225
+ const escapedSubtitle = subtitle ? escapeHtml(subtitle) : "";
226
+ const statusClass = statusToClass(status);
227
+ const cards = sections
228
+ .map((section) => `
229
+ <section class="card">
230
+ <h2>${escapeHtml(section.title)}</h2>
231
+ <div class="rows">
232
+ ${section.rows
233
+ .map((row) => `
234
+ <div class="row">
235
+ <span class="label">${escapeHtml(row.label)}</span>
236
+ <span class="value">${row.value}</span>
237
+ </div>`)
238
+ .join("")}
239
+ </div>
240
+ </section>`)
241
+ .join("");
242
+ return `<!DOCTYPE html>
243
+ <html lang="en">
244
+ <head>
245
+ <meta charset="UTF-8" />
246
+ <meta
247
+ http-equiv="Content-Security-Policy"
248
+ content="default-src 'none'; style-src 'unsafe-inline';"
249
+ />
250
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
251
+ <style>
252
+ :root {
253
+ color-scheme: light dark;
254
+ }
255
+
256
+ * {
257
+ box-sizing: border-box;
258
+ }
259
+
260
+ body {
261
+ margin: 0;
262
+ padding: 24px;
263
+ background: var(--vscode-editor-background);
264
+ color: var(--vscode-editor-foreground);
265
+ font-family: var(--vscode-font-family);
266
+ font-size: var(--vscode-font-size);
267
+ line-height: 1.5;
268
+ }
269
+
270
+ .page {
271
+ max-width: 920px;
272
+ margin: 0 auto;
273
+ }
274
+
275
+ .header {
276
+ display: flex;
277
+ align-items: flex-start;
278
+ justify-content: space-between;
279
+ gap: 16px;
280
+ margin-bottom: 20px;
281
+ }
282
+
283
+ .eyebrow {
284
+ margin-bottom: 6px;
285
+ color: var(--vscode-descriptionForeground);
286
+ font-size: 0.85em;
287
+ font-weight: 600;
288
+ letter-spacing: 0.08em;
289
+ text-transform: uppercase;
290
+ }
291
+
292
+ h1 {
293
+ margin: 0;
294
+ font-size: 1.8em;
295
+ line-height: 1.2;
296
+ }
297
+
298
+ .subtitle {
299
+ margin-top: 6px;
300
+ color: var(--vscode-descriptionForeground);
301
+ }
302
+
303
+ .badge {
304
+ display: inline-flex;
305
+ align-items: center;
306
+ justify-content: center;
307
+ min-width: 96px;
308
+ padding: 6px 12px;
309
+ border-radius: 999px;
310
+ color: var(--vscode-editor-background);
311
+ font-size: 0.85em;
312
+ font-weight: 700;
313
+ text-transform: lowercase;
314
+ }
315
+
316
+ .badge-running {
317
+ background: var(--vscode-terminal-ansiGreen);
318
+ }
319
+
320
+ .badge-stale {
321
+ background: var(--vscode-terminal-ansiYellow);
322
+ }
323
+
324
+ .badge-backlog {
325
+ background: var(--vscode-terminal-ansiMagenta);
326
+ }
327
+
328
+ .badge-ready {
329
+ background: var(--vscode-terminal-ansiCyan);
330
+ }
331
+
332
+ .badge-in-progress,
333
+ .badge-review {
334
+ background: var(--vscode-terminal-ansiBlue);
335
+ }
336
+
337
+ .badge-blocked {
338
+ background: var(--vscode-terminal-ansiRed);
339
+ }
340
+
341
+ .badge-done,
342
+ .badge-superseded,
343
+ .badge-archived {
344
+ background: var(--vscode-terminal-ansiBrightBlack);
345
+ }
346
+
347
+ .card {
348
+ margin-top: 16px;
349
+ padding: 18px;
350
+ border: 1px solid var(--vscode-panel-border);
351
+ border-radius: 14px;
352
+ background: var(--vscode-sideBar-background);
353
+ }
354
+
355
+ h2 {
356
+ margin: 0 0 12px;
357
+ font-size: 1.05em;
358
+ }
359
+
360
+ .rows {
361
+ display: flex;
362
+ flex-direction: column;
363
+ gap: 10px;
364
+ }
365
+
366
+ .row {
367
+ display: grid;
368
+ grid-template-columns: minmax(120px, 180px) minmax(0, 1fr);
369
+ gap: 12px;
370
+ align-items: start;
371
+ }
372
+
373
+ .label {
374
+ color: var(--vscode-descriptionForeground);
375
+ font-weight: 600;
376
+ }
377
+
378
+ .value {
379
+ min-width: 0;
380
+ white-space: pre-wrap;
381
+ word-break: break-word;
382
+ }
383
+
384
+ .muted {
385
+ color: var(--vscode-descriptionForeground);
386
+ }
387
+
388
+ code {
389
+ padding: 0.1em 0.35em;
390
+ border-radius: 6px;
391
+ background: var(--vscode-textCodeBlock-background);
392
+ font-family: var(--vscode-editor-font-family, var(--vscode-font-family));
393
+ font-size: 0.95em;
394
+ }
395
+
396
+ .inline-list {
397
+ display: inline-flex;
398
+ flex-wrap: wrap;
399
+ gap: 8px;
400
+ align-items: center;
401
+ }
402
+
403
+ .child-entry {
404
+ display: inline-flex;
405
+ flex-wrap: wrap;
406
+ gap: 8px;
407
+ align-items: center;
408
+ }
409
+
410
+ @media (max-width: 640px) {
411
+ body {
412
+ padding: 16px;
413
+ }
414
+
415
+ .header {
416
+ flex-direction: column;
417
+ }
418
+
419
+ .row {
420
+ grid-template-columns: 1fr;
421
+ gap: 4px;
422
+ }
423
+ }
424
+ </style>
425
+ </head>
426
+ <body>
427
+ <div class="page">
428
+ <header class="header">
429
+ <div>
430
+ <div class="eyebrow">${kind}</div>
431
+ <h1>${escapedTitle}</h1>
432
+ ${subtitle ? `<div class="subtitle">${escapedSubtitle}</div>` : ""}
433
+ </div>
434
+ ${renderStatusBadge(status, statusClass)}
435
+ </header>
436
+ ${cards}
437
+ </div>
438
+ </body>
439
+ </html>`;
440
+ }
441
+ function detailRow(label, value) {
442
+ return { label, value };
443
+ }
444
+ function renderStatusBadge(status, className = statusToClass(status)) {
445
+ return `<span class="badge badge-${className}">${escapeHtml(status)}</span>`;
446
+ }
447
+ function renderCode(value) {
448
+ return `<code>${escapeHtml(value)}</code>`;
449
+ }
450
+ function renderText(value) {
451
+ return escapeHtml(value);
452
+ }
453
+ function renderMuted(value) {
454
+ return `<span class="muted">${escapeHtml(value)}</span>`;
455
+ }
456
+ function renderCodeList(values) {
457
+ if (values.length === 0) {
458
+ return renderMuted("-");
459
+ }
460
+ return `<span class="inline-list">${values.map((value) => renderCode(value)).join("")}</span>`;
461
+ }
462
+ function renderTextList(values) {
463
+ if (values.length === 0) {
464
+ return renderMuted("-");
465
+ }
466
+ return `<span class="inline-list">${values
467
+ .map((value) => `<span>${escapeHtml(value)}</span>`)
468
+ .join("")}</span>`;
469
+ }
470
+ function statusToClass(status) {
471
+ return status.toLowerCase().replace(/[^a-z0-9]+/g, "-");
472
+ }
473
+ function escapeHtml(value) {
474
+ return value
475
+ .replace(/&/g, "&amp;")
476
+ .replace(/</g, "&lt;")
477
+ .replace(/>/g, "&gt;")
478
+ .replace(/"/g, "&quot;")
479
+ .replace(/'/g, "&#39;");
480
+ }
112
481
  //# sourceMappingURL=view-model.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-model.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/view-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"view-model.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/view-model.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rk0429/agentic-relay",
3
- "version": "19.8.4",
3
+ "version": "19.9.1",
4
4
  "displayName": "agentic-relay",
5
5
  "description": "Unified MCP relay for Claude Code, Codex CLI, and Gemini CLI",
6
6
  "type": "module",
@@ -40,7 +40,9 @@
40
40
  "activationEvents": [
41
41
  "onView:agenticRelay.taskTree",
42
42
  "onView:agenticRelay.activeAgents",
43
- "onCommand:agenticRelay.refreshViews"
43
+ "onCommand:agenticRelay.refreshViews",
44
+ "onCommand:agenticRelay.showAgentDetail",
45
+ "onCommand:agenticRelay.showTaskDetail"
44
46
  ],
45
47
  "contributes": {
46
48
  "views": {
@@ -59,6 +61,14 @@
59
61
  {
60
62
  "command": "agenticRelay.refreshViews",
61
63
  "title": "Refresh Agentic Relay Views"
64
+ },
65
+ {
66
+ "command": "agenticRelay.showAgentDetail",
67
+ "title": "Show Agent Detail"
68
+ },
69
+ {
70
+ "command": "agenticRelay.showTaskDetail",
71
+ "title": "Show Task Detail"
62
72
  }
63
73
  ],
64
74
  "menus": {