@rk0429/agentic-relay 19.8.3 → 19.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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":"AAQA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAE/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,OAAO,iBAAiB;IAET;IADnB,YACmB,YAEhB;QAFgB,iBAAY,GAAZ,YAAY,CAE5B;IACA,CAAC;IAEG,KAAK,CAAC,wBAAwB,CACnC,UAII,EAAE;QAEN,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;QACtC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACxE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE;SACnC,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,oBAAoB;YACxC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,QAAQ,EACR,IAAI,EACJ,GAAG,EACH,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE;YAC/B,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC;YAC/B,aAAa,EAAE,YAAY;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,SAAS,aAAa,CAAC,KAAmB;IACxC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAoC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC3D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC;QACjD,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,IAAgB,EAAgB,EAAE,CAAC,CAAC;QACrD,OAAO,EAAE,IAAI,CAAC,MAAM;QACpB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,QAAQ;QACxB,QAAQ,EAAE,IAAI,CAAC,OAAO;QACtB,wBAAwB,EAAE,IAAI,CAAC,qBAAqB;QACpD,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,QAAQ,EAAE,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;QACtC,GAAG,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC;QACvC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;KACnE,CAAC,CAAC;IAEH,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAAgB,EAChB,SAAkC;IAKlC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS;SAC1C,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;QACpB,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,sBAAsB,YAAY,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,GAAG,UAAU,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM,QAAQ,UAAU,CAAC,MAAM,EAAE,CAAC;IAC9E,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,UAAU,EAAwB,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAErE,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,OAAO;YACL,YAAY,EAAE,YAAY;YAC1B,cAAc,EAAE;gBACd,0BAA0B,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC7D,aAAa;aACd;iBACE,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAC/C,IAAI,CAAC,KAAK,CAAC;SACf,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,cAAc,EAAE,aAAa;SAC9B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,YAAY,EAAE,SAAS;QACvB,cAAc,EAAE,oCAAoC;KACrD,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,KAAiB,EACjB,KAAmB,EACnB,IAAgB,EAChB,GAAS,EACT,gBAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,KAAK;SACF,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC;SAC5C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,qBAA+B,EAAE,IAAI,CAAC,CAAC,CAC/D,CAAC;IACF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CACpE,CAAC;IAEF,OAAO,QAAQ;SACZ,MAAM,CAAC,CAAC,QAAQ,EAAsD,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAC3F,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC;SACnD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC9D,MAAM,IAAI,GACR,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC;YAC7C,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,iBAAiB,GAAG,YAAY,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAEvD,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,cAAc;YACzE,gBAAgB,EAAE,QAAQ,CAAC,cAAc;YACzC,uBAAuB,EAAE,QAAQ,CAAC,oBAAoB;YACtD,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM;YACxC,UAAU,EAAE,IAAI,EAAE,KAAK;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,OAAO,EAAE,OAAO;YAC7C,IAAI,EAAE,OAAO,EAAE,IAAI;YACnB,MAAM,EACJ,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC5B,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,GAAG,gBAAgB;gBAC5C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,SAAS;YACf,UAAU,EAAE,SAAS;YACrB,mBAAmB,EAAE,iBAAiB;SACV,CAAC;IACjC,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAgB;IAUhB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAQ7B,CAAC;IAEJ,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAClG,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,UAAU,KAAK,eAAe,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACnE,SAAS;QACX,CAAC;QAED,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE;YACnC,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,IAAI,EACF,OAAO,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,QAAQ;gBACnC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;gBAClB,CAAC,CAAC,SAAS;YACf,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EACL,OAAO,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK,QAAQ;gBACvC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ;gBACtB,CAAC,CAAC,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB,EAAE,GAAS;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AACvE,CAAC"}
@@ -45,32 +45,50 @@ export class VscodeSetupService {
45
45
  const manifestPath = path.join(this.deps.packageDir, "package.json");
46
46
  const originalManifest = await readFile(manifestPath, "utf8");
47
47
  const manifest = JSON.parse(originalManifest);
48
- // Patch: remove npm scope from name (vsce rejects "@scope/name") and
49
- // strip vscode:prepublish (dist is already built).
48
+ // Patch package.json for vsce:
49
+ // - Remove npm scope from name (vsce rejects "@scope/name")
50
+ // - Strip vscode:prepublish (dist is already built)
51
+ // - Remove devDependencies (avoid @types/vscode version check)
52
+ // - Remove "type": "module" (extension host expects CJS)
53
+ // - Point main to the esbuild-bundled CJS entry
50
54
  const unscopedName = manifest.name?.split("/").at(-1) ?? manifest.name;
51
55
  const scripts = { ...(manifest.scripts ?? {}) };
52
56
  delete scripts["vscode:prepublish"];
53
- const { devDependencies: _, ...rest } = manifest;
54
- const patched = { ...rest, name: unscopedName, scripts };
57
+ const { devDependencies: _, type: _type, ...rest } = manifest;
58
+ const bundledEntry = "./extension.js";
59
+ const patched = {
60
+ ...rest,
61
+ name: unscopedName,
62
+ scripts,
63
+ main: bundledEntry,
64
+ files: ["extension.js", "README.md"],
65
+ };
55
66
  await writeFile(path.join(stagingDir, "package.json"), JSON.stringify(patched, null, 2) + "\n");
56
- // Symlink bundled assets listed in "files" + README.md into staging dir.
57
- const fileEntries = manifest.files ?? ["dist"];
58
- for (const entry of fileEntries) {
59
- const src = path.join(this.deps.packageDir, entry);
60
- try {
61
- await symlink(src, path.join(stagingDir, entry));
62
- }
63
- catch {
64
- // Entry may not exist (e.g. "scripts" dir absent in global install).
65
- }
67
+ // Bundle the extension into a single CJS file with esbuild.
68
+ // The source package uses "type": "module" (ESM) but VSCode's extension
69
+ // host expects CommonJS. esbuild resolves all relative imports and
70
+ // produces a self-contained CJS bundle.
71
+ const entryPoint = path.join(this.deps.packageDir, "dist", "interfaces", "vscode", "extension.js");
72
+ await this.executeOrThrow({
73
+ command: "npx",
74
+ args: [
75
+ "esbuild",
76
+ entryPoint,
77
+ "--bundle",
78
+ "--format=cjs",
79
+ "--platform=node",
80
+ "--external:vscode",
81
+ `--outfile=${path.join(stagingDir, "extension.js")}`,
82
+ ],
83
+ cwd: this.deps.packageDir,
84
+ env: this.deps.env,
85
+ }, "bundle extension with esbuild");
86
+ // Symlink README.md if available.
87
+ try {
88
+ await symlink(path.join(this.deps.packageDir, "README.md"), path.join(stagingDir, "README.md"));
66
89
  }
67
- if (!fileEntries.includes("README.md")) {
68
- try {
69
- await symlink(path.join(this.deps.packageDir, "README.md"), path.join(stagingDir, "README.md"));
70
- }
71
- catch {
72
- // README.md is optional for local packaging.
73
- }
90
+ catch {
91
+ // README.md is optional for local packaging.
74
92
  }
75
93
  await this.executeOrThrow({
76
94
  command: "npx",
@@ -1 +1 @@
1
- {"version":3,"file":"vscode-setup-service.js","sourceRoot":"","sources":["../../src/application/vscode-setup-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vscode-setup-service.js","sourceRoot":"","sources":["../../src/application/vscode-setup-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.3",
707
+ version: "19.9.0",
708
708
  });
709
709
  if (options.allowSpawnAgents) {
710
710
  server.registerTool("spawn_agents", {
@@ -1,213 +1,195 @@
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 { buildAgentDetailMarkdown, buildTaskDetailMarkdown, } from "./view-model.js";
8
+ const DETAIL_SCHEME = "agentic-relay-detail";
9
+ const DEFAULT_STALE_THRESHOLD_MS = 2 * 60 * 60 * 1000;
8
10
  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();
11
+ const detailProvider = new RelayDetailDocumentProvider();
12
+ const loadSnapshot = async () => createSnapshotLoader(getWorkspaceRoot(), createProjectionLoader)();
13
+ const taskProvider = new TaskTreeDataProvider(loadSnapshot);
14
+ const agentProvider = new ActiveAgentDataProvider(loadSnapshot);
15
+ const refreshViews = async () => {
16
+ await Promise.all([taskProvider.refresh(), agentProvider.refresh()]);
17
+ };
18
+ const fileWatcher = new RelayWorkspaceWatcher(() => {
19
+ void refreshViews();
20
+ });
21
+ context.subscriptions.push(detailProvider, fileWatcher, taskProvider, agentProvider, vscode.workspace.registerTextDocumentContentProvider(DETAIL_SCHEME, detailProvider), 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) => {
22
+ await showAgentDetail(detailProvider, relaySessionId);
23
+ }), vscode.commands.registerCommand("agenticRelay.showTaskDetail", async (taskId) => {
24
+ await showTaskDetail(detailProvider, taskId);
14
25
  }));
26
+ void refreshViews();
15
27
  }
16
28
  export function deactivate() { }
17
- class VisualizationCoordinator {
18
- emitter = new vscode.EventEmitter();
29
+ class RelayWorkspaceWatcher {
30
+ onChange;
19
31
  disposables = [];
20
32
  watchers = [];
21
- refreshTimer;
22
- onDidChange = this.emitter.event;
23
- constructor() {
24
- this.rebuildWatchers();
33
+ constructor(onChange) {
34
+ this.onChange = onChange;
35
+ this.rebuild();
25
36
  this.disposables.push(vscode.workspace.onDidChangeWorkspaceFolders(() => {
26
- this.rebuildWatchers();
27
- this.scheduleRefresh();
37
+ this.rebuild();
38
+ this.onChange();
28
39
  }));
29
40
  }
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
41
  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;
42
+ this.disposeWatchers();
52
43
  for (const disposable of this.disposables) {
53
44
  disposable.dispose();
54
45
  }
55
- this.emitter.dispose();
56
46
  }
57
- scheduleRefresh() {
58
- if (this.refreshTimer) {
59
- clearTimeout(this.refreshTimer);
47
+ rebuild() {
48
+ this.disposeWatchers();
49
+ for (const workspaceFolder of vscode.workspace.workspaceFolders ?? []) {
50
+ const watcher = new RelayFileWatcher({
51
+ workspaceRoot: workspaceFolder.uri.fsPath,
52
+ onChange: this.onChange,
53
+ });
54
+ watcher.start();
55
+ this.watchers.push(watcher);
60
56
  }
61
- this.refreshTimer = setTimeout(() => {
62
- this.refresh();
63
- }, REFRESH_DEBOUNCE_MS);
64
57
  }
65
- rebuildWatchers() {
58
+ disposeWatchers() {
66
59
  for (const watcher of this.watchers) {
67
- watcher.close();
60
+ watcher.dispose();
68
61
  }
69
62
  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
63
  }
88
64
  }
89
- class TaskTreeProvider {
90
- coordinator;
65
+ class RelayDetailDocumentProvider {
91
66
  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;
110
- }
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));
67
+ documents = new Map();
68
+ onDidChange = this.emitter.event;
69
+ provideTextDocumentContent(uri) {
70
+ return this.documents.get(uri.toString()) ?? "# Detail not available\n";
119
71
  }
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);
72
+ async open(kind, id, content) {
73
+ const uri = vscode.Uri.from({
74
+ scheme: DETAIL_SCHEME,
75
+ path: `/${kind}/${encodeURIComponent(id)}.md`,
76
+ });
77
+ this.documents.set(uri.toString(), content);
78
+ this.emitter.fire(uri);
79
+ const document = await vscode.workspace.openTextDocument(uri);
80
+ await vscode.window.showTextDocument(document, {
81
+ preview: true,
82
+ preserveFocus: false,
130
83
  });
131
84
  }
132
85
  dispose() {
133
- this.subscription.dispose();
86
+ this.documents.clear();
134
87
  this.emitter.dispose();
135
88
  }
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.")];
146
- }
147
- if (snapshot.active_agents.length === 0) {
148
- return [messageItem("No active agents.")];
149
- }
150
- return snapshot.active_agents.map((agent) => toAgentItem(agent));
151
- }
152
89
  }
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
- }
90
+ async function showAgentDetail(detailProvider, relaySessionId) {
91
+ const store = createStoreFromWorkspace();
92
+ if (!store) {
93
+ void vscode.window.showInformationMessage("Open a workspace folder to inspect .relay data.");
94
+ return;
95
+ }
96
+ const projectionService = new ProjectionService({ store });
97
+ const [metadata, snapshot] = await Promise.all([
98
+ store.readSessionMetadata(relaySessionId),
99
+ projectionService.getVisualizationSnapshot({
100
+ includeTerminalTasks: true,
101
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
102
+ }),
103
+ ]);
104
+ if (!metadata) {
105
+ void vscode.window.showWarningMessage(`Relay session ${relaySessionId} was not found.`);
106
+ return;
107
+ }
108
+ const agent = snapshot.active_agents.find((candidate) => candidate.relay_session_id === relaySessionId) ?? summarizeSessionMetadata(metadata, new Date());
109
+ await detailProvider.open("agent", relaySessionId, buildAgentDetailMarkdown(agent));
161
110
  }
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;
111
+ async function showTaskDetail(detailProvider, taskId) {
112
+ const store = createStoreFromWorkspace();
113
+ if (!store) {
114
+ void vscode.window.showInformationMessage("Open a workspace folder to inspect .relay data.");
115
+ return;
116
+ }
117
+ const projectionService = new ProjectionService({ store });
118
+ const [task, snapshot] = await Promise.all([
119
+ store.readTask(taskId),
120
+ projectionService.getVisualizationSnapshot({
121
+ includeTerminalTasks: true,
122
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
123
+ }),
124
+ ]);
125
+ if (!task) {
126
+ void vscode.window.showWarningMessage(`Task ${taskId} was not found.`);
127
+ return;
128
+ }
129
+ const node = findTaskNode(snapshot.task_tree, taskId) ?? taskRecordToTreeNode(task);
130
+ await detailProvider.open("task", taskId, buildTaskDetailMarkdown(node));
170
131
  }
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;
132
+ function createProjectionLoader(workspaceRoot) {
133
+ return async () => {
134
+ const store = new RelayStore(path.join(workspaceRoot, ".relay"));
135
+ const projectionService = new ProjectionService({ store });
136
+ return projectionService.getVisualizationSnapshot({
137
+ staleThresholdMs: DEFAULT_STALE_THRESHOLD_MS,
138
+ });
139
+ };
179
140
  }
180
- function messageItem(label) {
181
- const item = new RelayTreeItem(label);
182
- item.iconPath = new vscode.ThemeIcon("info");
183
- return item;
141
+ function createStoreFromWorkspace() {
142
+ const workspaceRoot = getWorkspaceRoot();
143
+ if (!workspaceRoot) {
144
+ return undefined;
145
+ }
146
+ return new RelayStore(path.join(workspaceRoot, ".relay"));
184
147
  }
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
- ];
148
+ function getWorkspaceRoot() {
149
+ return vscode.workspace.workspaceFolders?.[0]?.uri.fsPath;
192
150
  }
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");
151
+ function summarizeSessionMetadata(metadata, now) {
152
+ const updatedAtMs = Date.parse(metadata.updatedAt);
153
+ const startedAtMs = Date.parse(metadata.createdAt);
154
+ return {
155
+ agent_id: metadata.agentId ?? metadata.relaySessionId,
156
+ relay_session_id: metadata.relaySessionId,
157
+ parent_relay_session_id: metadata.parentRelaySessionId,
158
+ backend: metadata.backend,
159
+ status: Number.isFinite(updatedAtMs) &&
160
+ now.getTime() - updatedAtMs <= DEFAULT_STALE_THRESHOLD_MS &&
161
+ metadata.status === "running"
162
+ ? "running"
163
+ : "stale",
164
+ started_at: metadata.createdAt,
165
+ running_for_seconds: Number.isFinite(startedAtMs)
166
+ ? Math.max(0, Math.floor((now.getTime() - startedAtMs) / 1000))
167
+ : 0,
168
+ };
169
+ }
170
+ function findTaskNode(nodes, taskId) {
171
+ for (const node of nodes) {
172
+ if (node.task_id === taskId) {
173
+ return node;
174
+ }
175
+ const nested = findTaskNode(node.children, taskId);
176
+ if (nested) {
177
+ return nested;
178
+ }
211
179
  }
180
+ return undefined;
181
+ }
182
+ function taskRecordToTreeNode(task) {
183
+ return {
184
+ task_id: task.taskId,
185
+ title: task.title,
186
+ status: task.status,
187
+ parent_id: task.parentId,
188
+ agent_id: task.agentId,
189
+ current_relay_session_id: task.currentRelaySessionId,
190
+ depends_on: [...task.dependsOn],
191
+ warnings: [],
192
+ children: [],
193
+ };
212
194
  }
213
195
  //# sourceMappingURL=extension.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../../../src/interfaces/vscode/extension.ts"],"names":[],"mappings":"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"}
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":"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"}
@@ -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 buildAgentDetailMarkdown(agent: ActiveAgentSummary): string;
30
+ export declare function buildTaskDetailMarkdown(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,76 @@ 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.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 buildAgentDetailMarkdown(agent) {
119
+ const lines = [
120
+ `# Agent: ${agent.agent_id}`,
121
+ "",
122
+ "| Field | Value |",
123
+ "|---|---|",
124
+ markdownRow("Agent", code(agent.agent_id)),
125
+ markdownRow("Session", code(agent.relay_session_id)),
126
+ markdownRow("Status", agent.status),
127
+ markdownRow("Backend", agent.backend ?? "-"),
128
+ markdownRow("Role", agent.role ?? "-"),
129
+ markdownRow("Task", formatTaskReference(agent.task_title, agent.task_id)),
130
+ markdownRow("Started", code(agent.started_at)),
131
+ markdownRow("Running", formatDuration(agent.running_for_seconds)),
132
+ markdownRow("Parent", agent.parent_relay_session_id
133
+ ? code(agent.parent_relay_session_id)
134
+ : "-"),
135
+ ];
136
+ return `${lines.join("\n")}\n`;
137
+ }
138
+ export function buildTaskDetailMarkdown(node) {
139
+ const lines = [
140
+ `# Task: ${node.title}`,
141
+ "",
142
+ "| Field | Value |",
143
+ "|---|---|",
144
+ markdownRow("Task ID", code(node.task_id)),
145
+ markdownRow("Status", node.status),
146
+ markdownRow("Agent", node.agent_id ? code(node.agent_id) : "-"),
147
+ markdownRow("Current Session", node.current_relay_session_id ? code(node.current_relay_session_id) : "-"),
148
+ markdownRow("Dependencies", node.depends_on.length > 0
149
+ ? node.depends_on.map((dependency) => code(dependency)).join(", ")
150
+ : "-"),
151
+ markdownRow("Blocked", node.blocked_reason
152
+ ? `${node.blocked_kind ?? "unknown"}: ${escapeMarkdownCell(node.blocked_reason)}`
153
+ : "-"),
154
+ markdownRow("Warnings", node.warnings.length > 0
155
+ ? node.warnings.map((warning) => escapeMarkdownCell(warning)).join("<br/>")
156
+ : "-"),
157
+ ];
158
+ if (node.children.length > 0) {
159
+ lines.push("", "## Children", "", ...node.children.map((child) => `- ${escapeMarkdownCell(child.title)} (${code(child.task_id)})`));
160
+ }
161
+ return `${lines.join("\n")}\n`;
162
+ }
78
163
  export function formatDuration(totalSeconds) {
79
164
  const hours = Math.floor(totalSeconds / 3600);
80
165
  const minutes = Math.floor((totalSeconds % 3600) / 60);
@@ -109,4 +194,25 @@ function truncate(value, maxLength) {
109
194
  }
110
195
  return `${value.slice(0, maxLength - 1)}…`;
111
196
  }
197
+ function markdownRow(label, value) {
198
+ return `| ${escapeMarkdownCell(label)} | ${value} |`;
199
+ }
200
+ function formatTaskReference(taskTitle, taskId) {
201
+ if (taskTitle && taskId) {
202
+ return `${escapeMarkdownCell(taskTitle)} (${code(taskId)})`;
203
+ }
204
+ if (taskTitle) {
205
+ return escapeMarkdownCell(taskTitle);
206
+ }
207
+ if (taskId) {
208
+ return code(taskId);
209
+ }
210
+ return "-";
211
+ }
212
+ function code(value) {
213
+ return `\`${value.replace(/`/g, "\\`")}\``;
214
+ }
215
+ function escapeMarkdownCell(value) {
216
+ return value.replace(/\|/g, "\\|").replace(/\n/g, "<br/>");
217
+ }
112
218
  //# 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.3",
3
+ "version": "19.9.0",
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": {
@@ -109,6 +119,7 @@
109
119
  "@types/node": "24.7.2",
110
120
  "@types/react": "19.2.2",
111
121
  "@types/vscode": "^1.110.0",
122
+ "esbuild": "^0.27.4",
112
123
  "tsx": "4.21.0",
113
124
  "typescript": "5.9.3",
114
125
  "vitest": "4.0.18"