agent-relay 6.0.22 → 6.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/index.cjs +338 -49
  2. package/dist/src/cli/bootstrap.d.ts.map +1 -1
  3. package/dist/src/cli/bootstrap.js +62 -0
  4. package/dist/src/cli/bootstrap.js.map +1 -1
  5. package/dist/src/cli/commands/agent-management.d.ts +8 -0
  6. package/dist/src/cli/commands/agent-management.d.ts.map +1 -1
  7. package/dist/src/cli/commands/agent-management.js +34 -0
  8. package/dist/src/cli/commands/agent-management.js.map +1 -1
  9. package/dist/src/cli/commands/drive.d.ts +222 -0
  10. package/dist/src/cli/commands/drive.d.ts.map +1 -0
  11. package/dist/src/cli/commands/drive.js +565 -0
  12. package/dist/src/cli/commands/drive.js.map +1 -0
  13. package/dist/src/cli/commands/messaging.d.ts +25 -0
  14. package/dist/src/cli/commands/messaging.d.ts.map +1 -1
  15. package/dist/src/cli/commands/messaging.js +702 -138
  16. package/dist/src/cli/commands/messaging.js.map +1 -1
  17. package/dist/src/cli/commands/new.d.ts +112 -0
  18. package/dist/src/cli/commands/new.d.ts.map +1 -0
  19. package/dist/src/cli/commands/new.js +189 -0
  20. package/dist/src/cli/commands/new.js.map +1 -0
  21. package/dist/src/cli/commands/on/provision.d.ts +1 -1
  22. package/dist/src/cli/commands/on/provision.d.ts.map +1 -1
  23. package/dist/src/cli/commands/on/provision.js +1 -1
  24. package/dist/src/cli/commands/on/provision.js.map +1 -1
  25. package/dist/src/cli/commands/on/start.d.ts +1 -1
  26. package/dist/src/cli/commands/on/start.d.ts.map +1 -1
  27. package/dist/src/cli/commands/on/start.js +2 -2
  28. package/dist/src/cli/commands/on/start.js.map +1 -1
  29. package/dist/src/cli/commands/passthrough.d.ts +142 -0
  30. package/dist/src/cli/commands/passthrough.d.ts.map +1 -0
  31. package/dist/src/cli/commands/passthrough.js +398 -0
  32. package/dist/src/cli/commands/passthrough.js.map +1 -0
  33. package/dist/src/cli/commands/rm.d.ts +52 -0
  34. package/dist/src/cli/commands/rm.d.ts.map +1 -0
  35. package/dist/src/cli/commands/rm.js +96 -0
  36. package/dist/src/cli/commands/rm.js.map +1 -0
  37. package/dist/src/cli/commands/view.d.ts +98 -0
  38. package/dist/src/cli/commands/view.d.ts.map +1 -0
  39. package/dist/src/cli/commands/view.js +238 -0
  40. package/dist/src/cli/commands/view.js.map +1 -0
  41. package/dist/src/cli/lib/agent-management-listing.d.ts +35 -7
  42. package/dist/src/cli/lib/agent-management-listing.d.ts.map +1 -1
  43. package/dist/src/cli/lib/agent-management-listing.js +188 -40
  44. package/dist/src/cli/lib/agent-management-listing.js.map +1 -1
  45. package/dist/src/cli/lib/attach.d.ts +56 -0
  46. package/dist/src/cli/lib/attach.d.ts.map +1 -0
  47. package/dist/src/cli/lib/attach.js +73 -0
  48. package/dist/src/cli/lib/attach.js.map +1 -0
  49. package/dist/src/cli/lib/broker-connection.d.ts +40 -0
  50. package/dist/src/cli/lib/broker-connection.d.ts.map +1 -0
  51. package/dist/src/cli/lib/broker-connection.js +82 -0
  52. package/dist/src/cli/lib/broker-connection.js.map +1 -0
  53. package/dist/src/cli/lib/formatting.d.ts +4 -0
  54. package/dist/src/cli/lib/formatting.d.ts.map +1 -1
  55. package/dist/src/cli/lib/formatting.js +31 -1
  56. package/dist/src/cli/lib/formatting.js.map +1 -1
  57. package/dist/src/cli/lib/sdk-client.d.ts +9 -0
  58. package/dist/src/cli/lib/sdk-client.d.ts.map +1 -0
  59. package/dist/src/cli/lib/sdk-client.js +28 -0
  60. package/dist/src/cli/lib/sdk-client.js.map +1 -0
  61. package/dist/src/cli/lib/spawn-and-attach.d.ts +132 -0
  62. package/dist/src/cli/lib/spawn-and-attach.d.ts.map +1 -0
  63. package/dist/src/cli/lib/spawn-and-attach.js +334 -0
  64. package/dist/src/cli/lib/spawn-and-attach.js.map +1 -0
  65. package/package.json +12 -10
  66. package/dist/packages/cloud/src/api-client.d.ts +0 -33
  67. package/dist/packages/cloud/src/api-client.d.ts.map +0 -1
  68. package/dist/packages/cloud/src/api-client.js +0 -123
  69. package/dist/packages/cloud/src/api-client.js.map +0 -1
  70. package/dist/packages/cloud/src/auth.d.ts +0 -13
  71. package/dist/packages/cloud/src/auth.d.ts.map +0 -1
  72. package/dist/packages/cloud/src/auth.js +0 -299
  73. package/dist/packages/cloud/src/auth.js.map +0 -1
  74. package/dist/packages/cloud/src/connect.d.ts +0 -45
  75. package/dist/packages/cloud/src/connect.d.ts.map +0 -1
  76. package/dist/packages/cloud/src/connect.js +0 -166
  77. package/dist/packages/cloud/src/connect.js.map +0 -1
  78. package/dist/packages/cloud/src/index.d.ts +0 -10
  79. package/dist/packages/cloud/src/index.d.ts.map +0 -1
  80. package/dist/packages/cloud/src/index.js +0 -10
  81. package/dist/packages/cloud/src/index.js.map +0 -1
  82. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts +0 -70
  83. package/dist/packages/cloud/src/lib/ssh-interactive.d.ts.map +0 -1
  84. package/dist/packages/cloud/src/lib/ssh-interactive.js +0 -440
  85. package/dist/packages/cloud/src/lib/ssh-interactive.js.map +0 -1
  86. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts +0 -35
  87. package/dist/packages/cloud/src/lib/ssh-runtime.d.ts.map +0 -1
  88. package/dist/packages/cloud/src/lib/ssh-runtime.js +0 -52
  89. package/dist/packages/cloud/src/lib/ssh-runtime.js.map +0 -1
  90. package/dist/packages/cloud/src/proactive-runtime.d.ts +0 -24
  91. package/dist/packages/cloud/src/proactive-runtime.d.ts.map +0 -1
  92. package/dist/packages/cloud/src/proactive-runtime.js +0 -315
  93. package/dist/packages/cloud/src/proactive-runtime.js.map +0 -1
  94. package/dist/packages/cloud/src/types.d.ts +0 -200
  95. package/dist/packages/cloud/src/types.d.ts.map +0 -1
  96. package/dist/packages/cloud/src/types.js +0 -12
  97. package/dist/packages/cloud/src/types.js.map +0 -1
  98. package/dist/packages/cloud/src/workflows.d.ts +0 -65
  99. package/dist/packages/cloud/src/workflows.d.ts.map +0 -1
  100. package/dist/packages/cloud/src/workflows.js +0 -892
  101. package/dist/packages/cloud/src/workflows.js.map +0 -1
  102. package/dist/packages/cloud/src/workspaces.d.ts +0 -11
  103. package/dist/packages/cloud/src/workspaces.d.ts.map +0 -1
  104. package/dist/packages/cloud/src/workspaces.js +0 -146
  105. package/dist/packages/cloud/src/workspaces.js.map +0 -1
  106. package/dist/packages/sdk/src/provisioner/local-jwks.d.ts +0 -25
  107. package/dist/packages/sdk/src/provisioner/local-jwks.d.ts.map +0 -1
  108. package/dist/packages/sdk/src/provisioner/local-jwks.js +0 -70
  109. package/dist/packages/sdk/src/provisioner/local-jwks.js.map +0 -1
  110. package/dist/packages/sdk/src/provisioner/seeder.d.ts +0 -17
  111. package/dist/packages/sdk/src/provisioner/seeder.d.ts.map +0 -1
  112. package/dist/packages/sdk/src/provisioner/seeder.js +0 -419
  113. package/dist/packages/sdk/src/provisioner/seeder.js.map +0 -1
  114. package/dist/packages/sdk/src/provisioner/token.d.ts +0 -41
  115. package/dist/packages/sdk/src/provisioner/token.d.ts.map +0 -1
  116. package/dist/packages/sdk/src/provisioner/token.js +0 -77
  117. package/dist/packages/sdk/src/provisioner/token.js.map +0 -1
@@ -1,7 +1,14 @@
1
1
  import path from 'node:path';
2
- import { formatRelativeTime, formatTableRow } from './formatting.js';
2
+ import { formatTableRow, formatUptimeSecs, sanitizeForTerminal, sanitizeForTerminalLine, } from './formatting.js';
3
3
  import { getWorkerLogsDir } from './paths.js';
4
4
  const HIDDEN_LOCAL_AGENT_NAMES = new Set(['Dashboard', 'zed-bridge']);
5
+ const MAX_LOG_LINES = 5000;
6
+ const MIN_LOG_TAIL_BYTES = 64 * 1024;
7
+ const MAX_LOG_TAIL_BYTES = 4 * 1024 * 1024;
8
+ const MAX_LOG_FOLLOW_BYTES = 1024 * 1024;
9
+ function tableCell(value, fallback = '-') {
10
+ return sanitizeForTerminalLine(value ?? fallback);
11
+ }
5
12
  function shouldHideLocalAgentByDefault(name) {
6
13
  if (!name)
7
14
  return true;
@@ -14,6 +21,58 @@ function getWorkerLogsDirCandidates(projectRoot) {
14
21
  const legacyDir = getWorkerLogsDir(projectRoot);
15
22
  return preferredDir === legacyDir ? [preferredDir] : [preferredDir, legacyDir];
16
23
  }
24
+ function isSafeLogAgentName(name) {
25
+ const trimmed = name.trim();
26
+ if (!trimmed || path.isAbsolute(trimmed) || path.win32.isAbsolute(trimmed)) {
27
+ return false;
28
+ }
29
+ return !trimmed.split(/[\\/]+/).some((segment) => segment === '' || segment === '.' || segment === '..');
30
+ }
31
+ function resolveLogFileCandidate(logsDir, name) {
32
+ const base = path.resolve(logsDir);
33
+ const candidate = path.resolve(base, `${name}.log`);
34
+ const relative = path.relative(base, candidate);
35
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
36
+ return undefined;
37
+ }
38
+ return candidate;
39
+ }
40
+ function parseLogLineCount(value) {
41
+ const raw = value ?? '50';
42
+ if (!/^\d+$/.test(raw.trim())) {
43
+ throw new Error(`Invalid --lines value: ${raw}`);
44
+ }
45
+ const parsed = Number(raw);
46
+ if (!Number.isSafeInteger(parsed) || parsed < 1 || parsed > MAX_LOG_LINES) {
47
+ throw new Error(`Invalid --lines value: ${raw} (must be 1-${MAX_LOG_LINES})`);
48
+ }
49
+ return parsed;
50
+ }
51
+ function getTailByteLimit(lineCount) {
52
+ return Math.min(MAX_LOG_TAIL_BYTES, Math.max(MIN_LOG_TAIL_BYTES, lineCount * 4096));
53
+ }
54
+ function tailLinesFromText(text, lineCount) {
55
+ const lines = text.length > 0 ? text.split('\n') : [];
56
+ if (lines.length > 0 && lines[lines.length - 1] === '') {
57
+ lines.pop();
58
+ }
59
+ return lines.slice(-lineCount);
60
+ }
61
+ function readLogTail(deps, filePath, lineCount) {
62
+ const maxBytes = getTailByteLimit(lineCount);
63
+ if (deps.readFileTail) {
64
+ return deps.readFileTail(filePath, maxBytes, 'utf-8');
65
+ }
66
+ const text = deps.readFile(filePath, 'utf-8');
67
+ return { text, size: Buffer.byteLength(text, 'utf-8') };
68
+ }
69
+ function readLogFrom(deps, filePath, offset) {
70
+ if (deps.readFileFrom) {
71
+ return deps.readFileFrom(filePath, offset, MAX_LOG_FOLLOW_BYTES, 'utf-8');
72
+ }
73
+ const text = deps.readFile(filePath, 'utf-8');
74
+ return { text: text.slice(offset), size: text.length };
75
+ }
17
76
  function readCloudConfig(deps) {
18
77
  const configPath = path.join(deps.getDataDir(), 'cloud-config.json');
19
78
  if (!deps.fileExists(configPath)) {
@@ -125,10 +184,10 @@ export async function runAgentsCommand(options, deps) {
125
184
  deps.log('─'.repeat(55));
126
185
  combined.forEach((agent) => {
127
186
  deps.log(formatTableRow([
128
- { value: agent.name, width: 15 },
129
- { value: agent.status, width: 8 },
130
- { value: agent.cli, width: 9 },
131
- { value: agent.location ?? 'local' },
187
+ { value: tableCell(agent.name, 'unknown'), width: 15 },
188
+ { value: tableCell(agent.status), width: 8 },
189
+ { value: tableCell(agent.cli), width: 9 },
190
+ { value: tableCell(agent.location, 'local') },
132
191
  ]));
133
192
  });
134
193
  }
@@ -137,11 +196,11 @@ export async function runAgentsCommand(options, deps) {
137
196
  deps.log('─'.repeat(65));
138
197
  combined.forEach((agent) => {
139
198
  deps.log(formatTableRow([
140
- { value: agent.name, width: 15 },
141
- { value: agent.status, width: 8 },
142
- { value: agent.cli, width: 9 },
143
- { value: agent.model ?? '-', width: 14 },
144
- { value: agent.team ?? '-' },
199
+ { value: tableCell(agent.name, 'unknown'), width: 15 },
200
+ { value: tableCell(agent.status), width: 8 },
201
+ { value: tableCell(agent.cli), width: 9 },
202
+ { value: tableCell(agent.model), width: 14 },
203
+ { value: tableCell(agent.team) },
145
204
  ]));
146
205
  });
147
206
  }
@@ -171,16 +230,44 @@ export async function runWhoCommand(options, deps) {
171
230
  }
172
231
  return;
173
232
  }
233
+ // Real per-agent metrics from the broker (pid / memory / uptime). This
234
+ // replaces the previous fabricated `status: 'ONLINE'` + `lastSeen: now()`
235
+ // placeholders so an orchestrator can poll a machine-readable lifecycle
236
+ // signal instead of scraping the agent TTY.
237
+ let metricsByName = new Map();
238
+ if (typeof client.getMetrics === 'function') {
239
+ try {
240
+ const raw = (await client.getMetrics());
241
+ for (const m of raw?.agents ?? []) {
242
+ if (m && typeof m.name === 'string') {
243
+ metricsByName.set(m.name, m);
244
+ }
245
+ }
246
+ }
247
+ catch {
248
+ // Metrics are best-effort enrichment — fall back to list-only data.
249
+ metricsByName = new Map();
250
+ }
251
+ }
174
252
  const onlineAgents = await client
175
253
  .listAgents()
176
254
  .then((list) => list
177
255
  .filter((agent) => (options.all ? true : !shouldHideLocalAgentByDefault(agent.name)))
178
- .map((agent) => ({
179
- name: agent.name,
180
- cli: agent.cli || agent.runtime,
181
- lastSeen: deps.nowIso(),
182
- status: 'ONLINE',
183
- })))
256
+ .map((agent) => {
257
+ const m = metricsByName.get(agent.name);
258
+ return {
259
+ name: agent.name,
260
+ cli: agent.cli || agent.runtime || null,
261
+ // An agent present in the broker's live list is connected. We
262
+ // do not synthesize idle/exited here — that requires broker
263
+ // lifecycle state the CLI cannot observe without a follow-up
264
+ // broker change.
265
+ status: 'online',
266
+ pid: m?.pid ?? agent.pid ?? null,
267
+ uptimeSecs: typeof m?.uptime_secs === 'number' ? m.uptime_secs : null,
268
+ memoryBytes: typeof m?.memory_bytes === 'number' ? m.memory_bytes : null,
269
+ };
270
+ }))
184
271
  .catch(() => []);
185
272
  await client.shutdown().catch(() => undefined);
186
273
  if (options.json) {
@@ -192,20 +279,54 @@ export async function runWhoCommand(options, deps) {
192
279
  deps.log(`No active agents found${hint}.`);
193
280
  return;
194
281
  }
195
- deps.log('NAME STATUS CLI LAST SEEN');
196
- deps.log('---------------------------------------------');
282
+ deps.log('NAME STATUS CLI PID UPTIME');
283
+ deps.log('-----------------------------------------------------');
197
284
  onlineAgents.forEach((agent) => {
198
285
  deps.log(formatTableRow([
199
- { value: agent.name ?? 'unknown', width: 15 },
200
- { value: agent.status, width: 8 },
201
- { value: agent.cli ?? '-', width: 8 },
202
- { value: formatRelativeTime(agent.lastSeen) },
286
+ { value: tableCell(agent.name, 'unknown'), width: 15 },
287
+ { value: tableCell(agent.status), width: 8 },
288
+ { value: tableCell(agent.cli), width: 8 },
289
+ { value: agent.pid != null ? String(agent.pid) : '-', width: 8 },
290
+ { value: agent.uptimeSecs != null ? formatUptimeSecs(agent.uptimeSecs) : '-' },
203
291
  ]));
204
292
  });
205
293
  }
294
+ /**
295
+ * Convert a raw PTY/TTY log capture into greppable, line-oriented plain text:
296
+ * strip ANSI/cursor/control escapes, drop lines that were pure escape noise,
297
+ * and collapse consecutive identical lines (spinner/redraw frames like
298
+ * `⠙ Working(18m 07s)` re-printed every tick).
299
+ */
300
+ export function toPlainLogLines(raw) {
301
+ const out = [];
302
+ let prev;
303
+ // Drop the single file-terminating newline (its trailing '' element) so a
304
+ // normal log file doesn't yield a spurious blank last line — same trim the
305
+ // default view does. Interior blank lines are preserved.
306
+ const body = raw.endsWith('\n') ? raw.slice(0, -1) : raw;
307
+ for (const rawLine of body.split('\n')) {
308
+ const clean = sanitizeForTerminal(rawLine).replace(/\s+$/, '');
309
+ // A non-empty source line that sanitizes to nothing was pure escape
310
+ // noise (cursor moves, color resets) — drop it entirely.
311
+ if (clean === '' && rawLine.trim() !== '')
312
+ continue;
313
+ // Collapse consecutive identical lines (redraw frames / repeated blanks).
314
+ if (clean === prev)
315
+ continue;
316
+ out.push(clean);
317
+ prev = clean;
318
+ }
319
+ return out;
320
+ }
206
321
  export async function runAgentsLogsCommand(name, options, deps) {
322
+ if (!isSafeLogAgentName(name)) {
323
+ deps.error(`Invalid agent name for log lookup: "${sanitizeForTerminalLine(name)}"`);
324
+ deps.exit(1);
325
+ return;
326
+ }
207
327
  const logFileCandidates = getWorkerLogsDirCandidates(deps.getProjectRoot())
208
- .map((logsDir) => path.join(logsDir, `${name}.log`));
328
+ .map((logsDir) => resolveLogFileCandidate(logsDir, name))
329
+ .filter((candidate) => Boolean(candidate));
209
330
  const logFile = logFileCandidates.find((candidate) => deps.fileExists(candidate));
210
331
  if (!logFile) {
211
332
  deps.error(`No logs found for agent "${name}"`);
@@ -218,19 +339,34 @@ export async function runAgentsLogsCommand(name, options, deps) {
218
339
  return;
219
340
  }
220
341
  try {
221
- const lineCount = Math.max(1, Number.parseInt(options.lines || '50', 10) || 50);
222
- const text = deps.readFile(logFile, 'utf-8');
223
- const lines = text.length > 0 ? text.split('\n') : [];
224
- if (lines.length > 0 && lines[lines.length - 1] === '') {
225
- lines.pop();
342
+ const lineCount = parseLogLineCount(options.lines);
343
+ const snapshot = readLogTail(deps, logFile, lineCount);
344
+ const text = snapshot.text;
345
+ // --json: machine-readable snapshot of sanitized, line-oriented output.
346
+ // (Snapshot only — combine with the SDK event stream for live tailing.)
347
+ if (options.json) {
348
+ const plainLines = toPlainLogLines(text).slice(-lineCount);
349
+ deps.log(JSON.stringify({ agent: name, file: logFile, lines: plainLines }, null, 2));
350
+ return;
351
+ }
352
+ // --plain: ANSI-stripped, deduped, greppable. No decorative header so the
353
+ // output is pure log content for piping into grep/awk.
354
+ if (options.plain) {
355
+ const plainLines = toPlainLogLines(text).slice(-lineCount);
356
+ deps.log(plainLines.join('\n'));
357
+ }
358
+ else {
359
+ const tail = tailLinesFromText(text, lineCount).map(sanitizeForTerminal).join('\n');
360
+ deps.log(`Logs for ${sanitizeForTerminalLine(name)} (last ${lineCount} lines):`);
361
+ deps.log('─'.repeat(50));
362
+ deps.log(tail || '(empty)');
226
363
  }
227
- const tail = lines.slice(-lineCount).join('\n');
228
- deps.log(`Logs for ${name} (last ${lineCount} lines):`);
229
- deps.log('─'.repeat(50));
230
- deps.log(tail || '(empty)');
231
364
  if (options.follow) {
232
- let lastSize = text.length;
365
+ let lastSize = snapshot.size;
233
366
  let remainder = '';
367
+ let prevStreamLine = options.plain
368
+ ? toPlainLogLines(text).slice(-lineCount).at(-1)
369
+ : undefined;
234
370
  // Poll the log file for new content every 500ms
235
371
  await new Promise(() => {
236
372
  const interval = setInterval(() => {
@@ -238,21 +374,33 @@ export async function runAgentsLogsCommand(name, options, deps) {
238
374
  if (!deps.fileExists(logFile)) {
239
375
  return;
240
376
  }
241
- const currentText = deps.readFile(logFile, 'utf-8');
242
- if (currentText.length > lastSize) {
243
- const newContent = remainder + currentText.slice(lastSize);
244
- lastSize = currentText.length;
377
+ const current = readLogFrom(deps, logFile, lastSize);
378
+ if (current.size > lastSize) {
379
+ const newContent = remainder + current.text;
380
+ lastSize = current.size;
245
381
  const newLines = newContent.split('\n');
246
382
  // Keep the last element as remainder (may be incomplete line)
247
383
  remainder = newLines.pop() ?? '';
248
384
  for (const line of newLines) {
249
- deps.log(line);
385
+ if (options.plain) {
386
+ const clean = sanitizeForTerminal(line).replace(/\s+$/, '');
387
+ if (clean === '' && line.trim() !== '')
388
+ continue;
389
+ if (clean === prevStreamLine)
390
+ continue;
391
+ prevStreamLine = clean;
392
+ deps.log(clean);
393
+ }
394
+ else {
395
+ deps.log(sanitizeForTerminal(line));
396
+ }
250
397
  }
251
398
  }
252
- else if (currentText.length < lastSize) {
399
+ else if (current.size < lastSize) {
253
400
  // File was truncated/rotated, reset
254
401
  lastSize = 0;
255
402
  remainder = '';
403
+ prevStreamLine = undefined;
256
404
  }
257
405
  }
258
406
  catch {
@@ -270,7 +418,7 @@ export async function runAgentsLogsCommand(name, options, deps) {
270
418
  }
271
419
  }
272
420
  catch (err) {
273
- const message = err instanceof Error ? err.message : String(err);
421
+ const message = sanitizeForTerminalLine(err instanceof Error ? err.message : String(err));
274
422
  deps.error(`Failed to read logs: ${message}`);
275
423
  deps.exit(1);
276
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-management-listing.js","sourceRoot":"","sources":["../../../../src/cli/lib/agent-management-listing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-management-listing.js","sourceRoot":"","sources":["../../../../src/cli/lib/agent-management-listing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Shared helpers for attach-style CLI commands.
3
+ *
4
+ * Every attach verb (`view`, `drive`, `relay`) needs to render the agent's
5
+ * *current* visible screen before it starts streaming live updates —
6
+ * otherwise the user attaches to a quiet agent and stares at a blank
7
+ * terminal until the agent happens to produce more output. This module
8
+ * wraps the broker's snapshot endpoint so each verb gets that for one line
9
+ * of code.
10
+ */
11
+ /** Connection metadata used to call the broker's snapshot endpoint. */
12
+ export interface AttachSnapshotConnection {
13
+ /** Broker base URL (no trailing slash). */
14
+ url: string;
15
+ /** Optional API key — added as an `X-API-Key` header if present. */
16
+ apiKey?: string;
17
+ }
18
+ /** Dependencies for `captureAndRenderSnapshot` — injected so tests don't hit
19
+ * the network. */
20
+ export interface AttachSnapshotDeps {
21
+ /** Native `fetch` by default; swapped out by tests. */
22
+ fetch: typeof globalThis.fetch;
23
+ /** Where the ANSI bytes get written. Typically `process.stdout.write`. */
24
+ writeChunk: (chunk: string) => void;
25
+ }
26
+ /** Outcome of a snapshot capture. Callers decide whether to bail or continue
27
+ * on each variant — `view` aborts on `not_found` / `no_pty`, warns and
28
+ * continues on `unavailable` / `transport_error`. */
29
+ export interface AttachSnapshotResult {
30
+ status: 'ok' | 'not_found' | 'no_pty' | 'unavailable' | 'transport_error';
31
+ /** Grid dimensions as reported by the broker, if the call succeeded. */
32
+ rows?: number;
33
+ cols?: number;
34
+ /** Cursor position `[row, col]`, 1-indexed, if the call succeeded. */
35
+ cursor?: [number, number];
36
+ /** Human-readable detail for error variants. */
37
+ message?: string;
38
+ }
39
+ /**
40
+ * Fetch a worker's current visible screen as ANSI reproduction bytes and
41
+ * write them to the caller's output. Callers should invoke this BEFORE
42
+ * subscribing to the WebSocket event stream so the user sees the agent's
43
+ * current state before live deltas start arriving.
44
+ *
45
+ * There is a tiny window between the snapshot capture and the live stream
46
+ * starting in which the agent's output could be missed (≤10ms in practice).
47
+ * Most TUI agents repaint heavily so the next update overwrites anything
48
+ * lost; subscribe-first + buffer + drain would close the gap at the cost
49
+ * of risking double-application of bytes that arrive in both the snapshot
50
+ * and the buffered stream, which is the worse failure mode for TUIs.
51
+ *
52
+ * @returns A status describing the outcome. `ok` means the screen was
53
+ * rendered; other variants carry a message the caller can surface.
54
+ */
55
+ export declare function captureAndRenderSnapshot(connection: AttachSnapshotConnection, agentName: string, deps: AttachSnapshotDeps): Promise<AttachSnapshotResult>;
56
+ //# sourceMappingURL=attach.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/attach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,uEAAuE;AACvE,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;mBACmB;AACnB,MAAM,WAAW,kBAAkB;IACjC,uDAAuD;IACvD,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAC/B,0EAA0E;IAC1E,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;sDAEsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,iBAAiB,CAAC;IAC1E,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,wBAAwB,EACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAgD/B"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Shared helpers for attach-style CLI commands.
3
+ *
4
+ * Every attach verb (`view`, `drive`, `relay`) needs to render the agent's
5
+ * *current* visible screen before it starts streaming live updates —
6
+ * otherwise the user attaches to a quiet agent and stares at a blank
7
+ * terminal until the agent happens to produce more output. This module
8
+ * wraps the broker's snapshot endpoint so each verb gets that for one line
9
+ * of code.
10
+ */
11
+ import { createBrokerClient, mapBrokerSdkFailure } from './sdk-client.js';
12
+ /**
13
+ * Fetch a worker's current visible screen as ANSI reproduction bytes and
14
+ * write them to the caller's output. Callers should invoke this BEFORE
15
+ * subscribing to the WebSocket event stream so the user sees the agent's
16
+ * current state before live deltas start arriving.
17
+ *
18
+ * There is a tiny window between the snapshot capture and the live stream
19
+ * starting in which the agent's output could be missed (≤10ms in practice).
20
+ * Most TUI agents repaint heavily so the next update overwrites anything
21
+ * lost; subscribe-first + buffer + drain would close the gap at the cost
22
+ * of risking double-application of bytes that arrive in both the snapshot
23
+ * and the buffered stream, which is the worse failure mode for TUIs.
24
+ *
25
+ * @returns A status describing the outcome. `ok` means the screen was
26
+ * rendered; other variants carry a message the caller can surface.
27
+ */
28
+ export async function captureAndRenderSnapshot(connection, agentName, deps) {
29
+ let body;
30
+ try {
31
+ body = await createBrokerClient(connection, deps.fetch).snapshot(agentName, 'ansi');
32
+ }
33
+ catch (err) {
34
+ const failure = mapBrokerSdkFailure(err);
35
+ if (failure.status === 404) {
36
+ return { status: 'not_found', message: `no agent named '${agentName}'` };
37
+ }
38
+ if (failure.status === 409) {
39
+ return {
40
+ status: 'no_pty',
41
+ message: `agent '${agentName}' has no PTY (headless worker — nothing to view)`,
42
+ };
43
+ }
44
+ if (failure.status === 0 || failure.status === 200) {
45
+ return { status: 'transport_error', message: failure.message };
46
+ }
47
+ return { status: 'unavailable', message: `snapshot returned HTTP ${failure.status}` };
48
+ }
49
+ if (typeof body !== 'object' || body === null) {
50
+ return { status: 'transport_error', message: 'snapshot response was not an object' };
51
+ }
52
+ const obj = body;
53
+ const screen = obj.screen;
54
+ if (typeof screen !== 'string') {
55
+ return { status: 'transport_error', message: "snapshot response missing 'screen' field" };
56
+ }
57
+ // Snapshot bytes are mostly ASCII (escape sequences) plus the cell
58
+ // characters which are valid Unicode codepoints (alacritty stores
59
+ // chars, not bytes). UTF-8 round-trips cleanly.
60
+ const decoded = Buffer.from(screen, 'base64').toString('utf-8');
61
+ deps.writeChunk(decoded);
62
+ const rows = typeof obj.rows === 'number' ? obj.rows : undefined;
63
+ const cols = typeof obj.cols === 'number' ? obj.cols : undefined;
64
+ const cursorRaw = Array.isArray(obj.cursor) ? obj.cursor : undefined;
65
+ const cursor = cursorRaw &&
66
+ cursorRaw.length === 2 &&
67
+ typeof cursorRaw[0] === 'number' &&
68
+ typeof cursorRaw[1] === 'number'
69
+ ? [cursorRaw[0], cursorRaw[1]]
70
+ : undefined;
71
+ return { status: 'ok', rows, cols, cursor };
72
+ }
73
+ //# sourceMappingURL=attach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attach.js","sourceRoot":"","sources":["../../../../src/cli/lib/attach.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Shared broker-connection discovery for the attach-style CLI verbs
3
+ * (`view`, `drive`, `passthrough`).
4
+ *
5
+ * Resolution order matches `agent-relay-broker dump-pty` so users don't
6
+ * have to learn two patterns:
7
+ *
8
+ * 1. `--broker-url` / `--api-key` CLI flags
9
+ * 2. `RELAY_BROKER_URL` / `RELAY_BROKER_API_KEY` environment variables
10
+ * 3. `<state-dir>/connection.json` (default `.agent-relay/connection.json`)
11
+ */
12
+ /** Connection metadata discovered from `connection.json` or CLI/env overrides. */
13
+ export interface BrokerConnection {
14
+ url: string;
15
+ apiKey?: string;
16
+ }
17
+ /** Options the caller may have parsed from CLI flags. */
18
+ export interface BrokerConnectionOptions {
19
+ brokerUrl?: string;
20
+ apiKey?: string;
21
+ stateDir?: string;
22
+ }
23
+ /** Injectable bits — tests stub these out instead of touching disk / env. */
24
+ export interface BrokerConnectionDeps {
25
+ readConnectionFile: (stateDir: string) => unknown;
26
+ getDefaultStateDir: () => string;
27
+ env: NodeJS.ProcessEnv;
28
+ }
29
+ /** Read `<state-dir>/connection.json` from disk, returning the parsed JSON or `null`. */
30
+ export declare function readConnectionFileFromDisk(stateDir: string): unknown;
31
+ /** Default state-directory: `.agent-relay/` under the resolved project root. */
32
+ export declare function defaultStateDir(): string;
33
+ /**
34
+ * Resolve the broker connection in priority order. Returns `null` when no
35
+ * source provides a URL — the caller decides how to surface that.
36
+ */
37
+ export declare function resolveBrokerConnection(options: BrokerConnectionOptions, deps: BrokerConnectionDeps): BrokerConnection | null;
38
+ /** Convert an `http(s)://host:port` base URL to the matching `ws(s)://…/ws`. */
39
+ export declare function toWsUrl(baseUrl: string): string;
40
+ //# sourceMappingURL=broker-connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker-connection.d.ts","sourceRoot":"","sources":["../../../../src/cli/lib/broker-connection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,kFAAkF;AAClF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,yDAAyD;AACzD,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQpE;AAED,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,MAAM,CAGxC;AA2BD;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,oBAAoB,GACzB,gBAAgB,GAAG,IAAI,CAmBzB;AAED,gFAAgF;AAChF,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/C"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Shared broker-connection discovery for the attach-style CLI verbs
3
+ * (`view`, `drive`, `passthrough`).
4
+ *
5
+ * Resolution order matches `agent-relay-broker dump-pty` so users don't
6
+ * have to learn two patterns:
7
+ *
8
+ * 1. `--broker-url` / `--api-key` CLI flags
9
+ * 2. `RELAY_BROKER_URL` / `RELAY_BROKER_API_KEY` environment variables
10
+ * 3. `<state-dir>/connection.json` (default `.agent-relay/connection.json`)
11
+ */
12
+ import fs from 'node:fs';
13
+ import path from 'node:path';
14
+ import { getProjectPaths } from '@agent-relay/config';
15
+ /** Read `<state-dir>/connection.json` from disk, returning the parsed JSON or `null`. */
16
+ export function readConnectionFileFromDisk(stateDir) {
17
+ const connPath = path.join(stateDir, 'connection.json');
18
+ try {
19
+ const raw = fs.readFileSync(connPath, 'utf-8');
20
+ return JSON.parse(raw);
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ /** Default state-directory: `.agent-relay/` under the resolved project root. */
27
+ export function defaultStateDir() {
28
+ const projectRoot = getProjectPaths().projectRoot;
29
+ return path.join(projectRoot, '.agent-relay');
30
+ }
31
+ function isStringObject(value) {
32
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
33
+ }
34
+ function readString(obj, key) {
35
+ if (!isStringObject(obj))
36
+ return undefined;
37
+ const value = obj[key];
38
+ if (typeof value !== 'string')
39
+ return undefined;
40
+ const trimmed = value.trim();
41
+ return trimmed === '' ? undefined : trimmed;
42
+ }
43
+ /**
44
+ * Trim a possibly-undefined string and treat empty results as
45
+ * `undefined` so `??` chains correctly fall through to lower-priority
46
+ * sources. Plain `value?.trim()` would yield `""` for blank inputs,
47
+ * which is not nullish — that would let an empty `--broker-url` flag
48
+ * silently override a real `RELAY_BROKER_URL` env var, etc.
49
+ */
50
+ function trimOrUndefined(value) {
51
+ if (typeof value !== 'string')
52
+ return undefined;
53
+ const trimmed = value.trim();
54
+ return trimmed === '' ? undefined : trimmed;
55
+ }
56
+ /**
57
+ * Resolve the broker connection in priority order. Returns `null` when no
58
+ * source provides a URL — the caller decides how to surface that.
59
+ */
60
+ export function resolveBrokerConnection(options, deps) {
61
+ const explicitUrl = trimOrUndefined(options.brokerUrl);
62
+ const envUrl = trimOrUndefined(deps.env.RELAY_BROKER_URL);
63
+ const stateDir = options.stateDir ? path.resolve(options.stateDir) : deps.getDefaultStateDir();
64
+ const connectionFile = deps.readConnectionFile(stateDir);
65
+ const fileUrl = readString(connectionFile, 'url');
66
+ const url = explicitUrl ?? envUrl ?? fileUrl;
67
+ if (!url)
68
+ return null;
69
+ const explicitKey = trimOrUndefined(options.apiKey);
70
+ const envKey = trimOrUndefined(deps.env.RELAY_BROKER_API_KEY);
71
+ const fileKey = readString(connectionFile, 'api_key');
72
+ const apiKey = explicitKey ?? envKey ?? fileKey;
73
+ return {
74
+ url: url.replace(/\/+$/, ''),
75
+ apiKey,
76
+ };
77
+ }
78
+ /** Convert an `http(s)://host:port` base URL to the matching `ws(s)://…/ws`. */
79
+ export function toWsUrl(baseUrl) {
80
+ return `${baseUrl.replace(/^http/, 'ws')}/ws`;
81
+ }
82
+ //# sourceMappingURL=broker-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker-connection.js","sourceRoot":"","sources":["../../../../src/cli/lib/broker-connection.ts"],"names":[],"mappings":"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"}