agent-relay 8.8.5 → 8.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.
- package/dist/cli/agent-relay-mcp.d.ts +2 -53
- package/dist/cli/agent-relay-mcp.d.ts.map +1 -1
- package/dist/cli/agent-relay-mcp.js +11 -943
- package/dist/cli/agent-relay-mcp.js.map +1 -1
- package/dist/cli/commands/fleet.d.ts.map +1 -1
- package/dist/cli/commands/fleet.js +86 -13
- package/dist/cli/commands/fleet.js.map +1 -1
- package/dist/cli/lib/broker-dashboard.d.ts +12 -0
- package/dist/cli/lib/broker-dashboard.d.ts.map +1 -0
- package/dist/cli/lib/broker-dashboard.js +431 -0
- package/dist/cli/lib/broker-dashboard.js.map +1 -0
- package/dist/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/cli/lib/broker-lifecycle.js +1 -428
- package/dist/cli/lib/broker-lifecycle.js.map +1 -1
- package/dist/cli/mcp/action-schema.d.ts +20 -0
- package/dist/cli/mcp/action-schema.d.ts.map +1 -0
- package/dist/cli/mcp/action-schema.js +132 -0
- package/dist/cli/mcp/action-schema.js.map +1 -0
- package/dist/cli/mcp/action-tools.d.ts +10 -0
- package/dist/cli/mcp/action-tools.d.ts.map +1 -0
- package/dist/cli/mcp/action-tools.js +114 -0
- package/dist/cli/mcp/action-tools.js.map +1 -0
- package/dist/cli/mcp/inbox.d.ts +9 -0
- package/dist/cli/mcp/inbox.d.ts.map +1 -0
- package/dist/cli/mcp/inbox.js +49 -0
- package/dist/cli/mcp/inbox.js.map +1 -0
- package/dist/cli/mcp/messaging-tools.d.ts +9 -0
- package/dist/cli/mcp/messaging-tools.d.ts.map +1 -0
- package/dist/cli/mcp/messaging-tools.js +315 -0
- package/dist/cli/mcp/messaging-tools.js.map +1 -0
- package/dist/cli/mcp/resources.d.ts +39 -0
- package/dist/cli/mcp/resources.d.ts.map +1 -0
- package/dist/cli/mcp/resources.js +158 -0
- package/dist/cli/mcp/resources.js.map +1 -0
- package/dist/cli/mcp/telemetry.d.ts +9 -0
- package/dist/cli/mcp/telemetry.d.ts.map +1 -0
- package/dist/cli/mcp/telemetry.js +176 -0
- package/dist/cli/mcp/telemetry.js.map +1 -0
- package/dist/cli/mcp/tool-results.d.ts +29 -0
- package/dist/cli/mcp/tool-results.d.ts.map +1 -0
- package/dist/cli/mcp/tool-results.js +39 -0
- package/dist/cli/mcp/tool-results.js.map +1 -0
- package/dist/cli/mcp/tool-shapes.d.ts +13 -0
- package/dist/cli/mcp/tool-shapes.d.ts.map +1 -0
- package/dist/cli/mcp/tool-shapes.js +16 -0
- package/dist/cli/mcp/tool-shapes.js.map +1 -0
- package/dist/cli/mcp/types.d.ts +38 -0
- package/dist/cli/mcp/types.d.ts.map +1 -0
- package/dist/cli/mcp/types.js +2 -0
- package/dist/cli/mcp/types.js.map +1 -0
- package/dist/cli/mcp/workspace.d.ts +10 -0
- package/dist/cli/mcp/workspace.d.ts.map +1 -0
- package/dist/cli/mcp/workspace.js +36 -0
- package/dist/cli/mcp/workspace.js.map +1 -0
- package/dist/index.cjs +47 -2
- package/package.json +8 -8
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
export async function resolveDashboardPortWithFallback(dashboardPort, dashboardPortCandidates, deps) {
|
|
5
|
+
for (let attempt = 0; attempt < dashboardPortCandidates; attempt += 1) {
|
|
6
|
+
const candidatePort = dashboardPort + attempt;
|
|
7
|
+
const inUse = await deps.isPortInUse(candidatePort);
|
|
8
|
+
if (!inUse) {
|
|
9
|
+
if (attempt > 0) {
|
|
10
|
+
deps.warn(`Dashboard port ${dashboardPort} is already in use; trying ${candidatePort}`);
|
|
11
|
+
}
|
|
12
|
+
return candidatePort;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
throw new Error(`Failed to find an available dashboard port near ${dashboardPort}.`);
|
|
16
|
+
}
|
|
17
|
+
function pickDashboardStaticDir(candidates, deps) {
|
|
18
|
+
const existingCandidates = Array.from(new Set(candidates)).filter((candidate) => deps.fs.existsSync(candidate));
|
|
19
|
+
if (existingCandidates.length === 0) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const pageMarkerPriority = [
|
|
23
|
+
['metrics.html', path.join('metrics', 'index.html')],
|
|
24
|
+
['app.html'],
|
|
25
|
+
['index.html'],
|
|
26
|
+
];
|
|
27
|
+
for (const markerGroup of pageMarkerPriority) {
|
|
28
|
+
const withMarker = existingCandidates.find((candidate) => markerGroup.some((marker) => deps.fs.existsSync(path.join(candidate, marker))));
|
|
29
|
+
if (withMarker) {
|
|
30
|
+
return withMarker;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return existingCandidates[0];
|
|
34
|
+
}
|
|
35
|
+
function getHomeDashboardRoot(deps) {
|
|
36
|
+
const homeDir = deps.env.HOME || deps.env.USERPROFILE || os.homedir();
|
|
37
|
+
return path.join(homeDir, '.agentworkforce/relay', 'dashboard');
|
|
38
|
+
}
|
|
39
|
+
function getPriorDashboardRoot(deps) {
|
|
40
|
+
const homeDir = deps.env.HOME || deps.env.USERPROFILE || '';
|
|
41
|
+
if (!homeDir) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return path.join(homeDir, '.relay', 'dashboard');
|
|
45
|
+
}
|
|
46
|
+
function getDashboardRootFromBinary(dashboardBinary, deps) {
|
|
47
|
+
if (!dashboardBinary || dashboardBinary.endsWith('.js') || dashboardBinary.endsWith('.ts')) {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const binaryDir = path.dirname(dashboardBinary);
|
|
51
|
+
if (path.basename(binaryDir) !== 'bin') {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const homeDir = deps.env.HOME || deps.env.USERPROFILE || '';
|
|
55
|
+
const resolvedBinaryDir = path.resolve(binaryDir);
|
|
56
|
+
const ignoredBinDirs = [
|
|
57
|
+
homeDir ? path.join(homeDir, '.local', 'bin') : null,
|
|
58
|
+
path.join('/usr/local', 'bin'),
|
|
59
|
+
]
|
|
60
|
+
.filter((candidate) => Boolean(candidate))
|
|
61
|
+
.map((candidate) => path.resolve(candidate));
|
|
62
|
+
if (ignoredBinDirs.includes(resolvedBinaryDir)) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
return path.join(path.dirname(binaryDir), 'dashboard');
|
|
66
|
+
}
|
|
67
|
+
function resolveDashboardStaticDir(dashboardBinary, deps) {
|
|
68
|
+
const explicitStaticDir = deps.env.RELAY_DASHBOARD_STATIC_DIR ?? deps.env.STATIC_DIR;
|
|
69
|
+
if (explicitStaticDir && explicitStaticDir.trim()) {
|
|
70
|
+
return explicitStaticDir;
|
|
71
|
+
}
|
|
72
|
+
if (!dashboardBinary) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
if (dashboardBinary.endsWith('.js') || dashboardBinary.endsWith('.ts')) {
|
|
76
|
+
const dashboardServerOutDir = path.resolve(path.dirname(dashboardBinary), '..', 'out');
|
|
77
|
+
const siblingDashboardOutDir = path.resolve(path.dirname(dashboardBinary), '..', '..', 'dashboard', 'out');
|
|
78
|
+
return pickDashboardStaticDir([dashboardServerOutDir, siblingDashboardOutDir], deps);
|
|
79
|
+
}
|
|
80
|
+
// Installs place UI assets under the install dir (~/.agentworkforce/relay/dashboard/out
|
|
81
|
+
// by default, or next to a custom install's bin/ directory). ~/.relay/dashboard/out is
|
|
82
|
+
// read as a fallback for installs predating that move.
|
|
83
|
+
const installDashboardRoot = getDashboardRootFromBinary(dashboardBinary, deps);
|
|
84
|
+
const priorDashboardRoot = getPriorDashboardRoot(deps);
|
|
85
|
+
const candidates = [
|
|
86
|
+
installDashboardRoot ? path.join(installDashboardRoot, 'out') : null,
|
|
87
|
+
path.join(getHomeDashboardRoot(deps), 'out'),
|
|
88
|
+
priorDashboardRoot ? path.join(priorDashboardRoot, 'out') : null,
|
|
89
|
+
].filter((candidate) => Boolean(candidate));
|
|
90
|
+
return pickDashboardStaticDir(candidates, deps);
|
|
91
|
+
}
|
|
92
|
+
function normalizeLocalhostRelayUrl(relayUrl) {
|
|
93
|
+
try {
|
|
94
|
+
const parsed = new URL(relayUrl);
|
|
95
|
+
if (parsed.hostname === 'localhost') {
|
|
96
|
+
parsed.hostname = '127.0.0.1';
|
|
97
|
+
}
|
|
98
|
+
return parsed.toString().replace(/\/+$/, '');
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return relayUrl;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export function getDefaultDashboardRelayUrl(apiPort) {
|
|
105
|
+
return normalizeLocalhostRelayUrl(`http://localhost:${apiPort}`);
|
|
106
|
+
}
|
|
107
|
+
export function resolveDashboardRelayUrl(apiPort, deps) {
|
|
108
|
+
const explicitRelayUrl = deps.env.RELAY_DASHBOARD_RELAY_URL;
|
|
109
|
+
if (explicitRelayUrl && explicitRelayUrl.trim()) {
|
|
110
|
+
return normalizeLocalhostRelayUrl(explicitRelayUrl.trim());
|
|
111
|
+
}
|
|
112
|
+
return getDefaultDashboardRelayUrl(apiPort);
|
|
113
|
+
}
|
|
114
|
+
export function isDebugLikeLoggingEnabled(deps) {
|
|
115
|
+
const rawLevel = String(deps.env.RUST_LOG ?? '').toLowerCase();
|
|
116
|
+
return rawLevel.includes('debug') || rawLevel.includes('trace');
|
|
117
|
+
}
|
|
118
|
+
function getDashboardSpawnEnv(deps, relayUrl, enableVerboseLogging, relayApiKey, brokerApiKey) {
|
|
119
|
+
const env = {
|
|
120
|
+
...deps.env,
|
|
121
|
+
RELAY_URL: relayUrl,
|
|
122
|
+
VERBOSE: enableVerboseLogging || deps.env.VERBOSE === 'true' ? 'true' : deps.env.VERBOSE,
|
|
123
|
+
};
|
|
124
|
+
// Pass the workspace key so the dashboard can make Agent Relay calls
|
|
125
|
+
// (e.g. posting thread replies) without requiring a relaycast.json file.
|
|
126
|
+
if (relayApiKey) {
|
|
127
|
+
if (!env.RELAY_WORKSPACE_KEY) {
|
|
128
|
+
env.RELAY_WORKSPACE_KEY = relayApiKey;
|
|
129
|
+
}
|
|
130
|
+
if (!env.RELAY_API_KEY) {
|
|
131
|
+
env.RELAY_API_KEY = relayApiKey;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Pass the broker API key so the dashboard can authenticate with the
|
|
135
|
+
// broker's HTTP API (e.g. /api/spawn, /api/spawned).
|
|
136
|
+
if (brokerApiKey) {
|
|
137
|
+
env.RELAY_BROKER_API_KEY = brokerApiKey;
|
|
138
|
+
}
|
|
139
|
+
return env;
|
|
140
|
+
}
|
|
141
|
+
function getDashboardSpawnArgs(paths, port, apiPort, dashboardBinary, relayUrl, enableVerboseLogging, deps) {
|
|
142
|
+
const args = ['--port', String(port), '--data-dir', paths.dataDir];
|
|
143
|
+
args.push('--relay-url', relayUrl);
|
|
144
|
+
const staticDir = resolveDashboardStaticDir(dashboardBinary, deps);
|
|
145
|
+
if (staticDir) {
|
|
146
|
+
args.push('--static-dir', staticDir);
|
|
147
|
+
}
|
|
148
|
+
if (enableVerboseLogging) {
|
|
149
|
+
args.push('--verbose');
|
|
150
|
+
}
|
|
151
|
+
return args;
|
|
152
|
+
}
|
|
153
|
+
export function normalizeDashboardPath(rawDashboardPath) {
|
|
154
|
+
const trimmed = rawDashboardPath?.trim();
|
|
155
|
+
if (!trimmed)
|
|
156
|
+
return undefined;
|
|
157
|
+
if (trimmed.startsWith('/')) {
|
|
158
|
+
return trimmed;
|
|
159
|
+
}
|
|
160
|
+
return `/${trimmed}`;
|
|
161
|
+
}
|
|
162
|
+
function startDashboard(paths, port, apiPort, deps, enableVerboseLogging, dashboardBinaryOverride, relayApiKey, brokerApiKey) {
|
|
163
|
+
const dashboardBinary = dashboardBinaryOverride === undefined ? deps.findDashboardBinary() : dashboardBinaryOverride;
|
|
164
|
+
const relayUrl = resolveDashboardRelayUrl(apiPort, deps);
|
|
165
|
+
const shouldEnableVerbose = enableVerboseLogging || isDebugLikeLoggingEnabled(deps);
|
|
166
|
+
const args = getDashboardSpawnArgs(paths, port, apiPort, dashboardBinary, relayUrl, shouldEnableVerbose, deps);
|
|
167
|
+
const launchTarget = dashboardBinary
|
|
168
|
+
? dashboardBinary.endsWith('.js')
|
|
169
|
+
? `node ${dashboardBinary}`
|
|
170
|
+
: dashboardBinary
|
|
171
|
+
: 'npx --yes @agent-relay/dashboard-server@latest';
|
|
172
|
+
const spawnOpts = {
|
|
173
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
174
|
+
env: getDashboardSpawnEnv(deps, relayUrl, shouldEnableVerbose, relayApiKey, brokerApiKey),
|
|
175
|
+
};
|
|
176
|
+
if (shouldEnableVerbose) {
|
|
177
|
+
deps.log(`[dashboard] Starting: ${launchTarget} ${args.join(' ')}`);
|
|
178
|
+
}
|
|
179
|
+
let child;
|
|
180
|
+
if (dashboardBinary) {
|
|
181
|
+
// If the binary is a .js file (local dev), run it with node
|
|
182
|
+
if (dashboardBinary.endsWith('.js')) {
|
|
183
|
+
child = deps.spawnProcess('node', [dashboardBinary, ...args], spawnOpts);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
child = deps.spawnProcess(dashboardBinary, args, spawnOpts);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
child = deps.spawnProcess('npx', ['--yes', '@agent-relay/dashboard-server@latest', ...args], spawnOpts);
|
|
191
|
+
}
|
|
192
|
+
// Capture stderr for error reporting
|
|
193
|
+
const childAny = child;
|
|
194
|
+
let stderrBuf = '';
|
|
195
|
+
const logChunk = (chunk, logger, prefix) => {
|
|
196
|
+
if (!shouldEnableVerbose) {
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
const text = chunk.toString();
|
|
200
|
+
for (const line of text.split(/\r?\n/)) {
|
|
201
|
+
const trimmed = line.trim();
|
|
202
|
+
if (trimmed) {
|
|
203
|
+
logger(`[dashboard] ${prefix}: ${trimmed}`);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
childAny.stdout?.on?.('data', (chunk) => {
|
|
208
|
+
logChunk(chunk, deps.log, 'stdout');
|
|
209
|
+
});
|
|
210
|
+
childAny.stderr?.on?.('data', (chunk) => {
|
|
211
|
+
stderrBuf += chunk.toString();
|
|
212
|
+
logChunk(chunk, deps.warn, 'stderr');
|
|
213
|
+
});
|
|
214
|
+
// Report early crashes
|
|
215
|
+
childAny.on?.('exit', (...exitArgs) => {
|
|
216
|
+
const code = exitArgs[0];
|
|
217
|
+
const signal = exitArgs[1];
|
|
218
|
+
if (code !== null && code !== 0) {
|
|
219
|
+
deps.error(`Dashboard process exited with code ${code}`);
|
|
220
|
+
if (stderrBuf.trim()) {
|
|
221
|
+
deps.error(stderrBuf.trim().split('\n').slice(-5).join('\n'));
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
else if (signal && signal !== 'SIGINT' && signal !== 'SIGTERM') {
|
|
225
|
+
deps.error(`Dashboard process killed by signal ${signal}`);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
return child;
|
|
229
|
+
}
|
|
230
|
+
async function resolveStartedDashboardPort(process, preferredPort, deps) {
|
|
231
|
+
return new Promise((resolve) => {
|
|
232
|
+
let resolved = false;
|
|
233
|
+
const processAny = process;
|
|
234
|
+
const detach = () => {
|
|
235
|
+
process.stdout?.off?.('data', extractPort);
|
|
236
|
+
process.stdout?.removeListener?.('data', extractPort);
|
|
237
|
+
process.stderr?.off?.('data', extractPort);
|
|
238
|
+
process.stderr?.removeListener?.('data', extractPort);
|
|
239
|
+
processAny.off?.('exit', handleExit);
|
|
240
|
+
processAny.removeListener?.('exit', handleExit);
|
|
241
|
+
clearTimeout(timer);
|
|
242
|
+
};
|
|
243
|
+
const timer = setTimeout(() => {
|
|
244
|
+
if (resolved)
|
|
245
|
+
return;
|
|
246
|
+
resolved = true;
|
|
247
|
+
detach();
|
|
248
|
+
deps.warn(`Dashboard did not report its bound port quickly; assuming requested port ${preferredPort}`);
|
|
249
|
+
resolve(preferredPort);
|
|
250
|
+
}, 3000);
|
|
251
|
+
const finalize = (port) => {
|
|
252
|
+
if (resolved)
|
|
253
|
+
return;
|
|
254
|
+
resolved = true;
|
|
255
|
+
detach();
|
|
256
|
+
resolve(port);
|
|
257
|
+
};
|
|
258
|
+
const handleExit = (...exitArgs) => {
|
|
259
|
+
const code = exitArgs[0];
|
|
260
|
+
const signal = exitArgs[1];
|
|
261
|
+
if (resolved) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
resolved = true;
|
|
265
|
+
detach();
|
|
266
|
+
if (code !== null && code !== 0) {
|
|
267
|
+
deps.warn(`Dashboard exited before reporting its port (code: ${code}).`);
|
|
268
|
+
}
|
|
269
|
+
else if (signal && signal !== 'SIGINT' && signal !== 'SIGTERM') {
|
|
270
|
+
deps.warn(`Dashboard exited before reporting its port (signal: ${signal}).`);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
deps.warn('Dashboard exited before reporting its bound port.');
|
|
274
|
+
}
|
|
275
|
+
resolve(null);
|
|
276
|
+
};
|
|
277
|
+
const extractPort = (...chunkArgs) => {
|
|
278
|
+
const firstChunk = chunkArgs[0];
|
|
279
|
+
if (!firstChunk) {
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
const chunk = Buffer.isBuffer(firstChunk)
|
|
283
|
+
? firstChunk
|
|
284
|
+
: typeof firstChunk === 'string'
|
|
285
|
+
? Buffer.from(firstChunk)
|
|
286
|
+
: Buffer.from(JSON.stringify(firstChunk));
|
|
287
|
+
const match = chunk.toString().match(/Server running at http:\/\/localhost:(\d+)/i);
|
|
288
|
+
if (!match?.[1]) {
|
|
289
|
+
return;
|
|
290
|
+
}
|
|
291
|
+
const parsed = Number.parseInt(match[1], 10);
|
|
292
|
+
if (!Number.isNaN(parsed)) {
|
|
293
|
+
finalize(parsed);
|
|
294
|
+
}
|
|
295
|
+
};
|
|
296
|
+
process.stdout?.on?.('data', extractPort);
|
|
297
|
+
process.stderr?.on?.('data', extractPort);
|
|
298
|
+
processAny.on?.('exit', handleExit);
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* Check if the cached dashboard UI assets match the installed dashboard-server
|
|
303
|
+
* binary version. If they are stale (or missing a version marker), re-download
|
|
304
|
+
* the latest assets from the relay-dashboard GitHub release.
|
|
305
|
+
*/
|
|
306
|
+
async function refreshDashboardAssetsIfStale(dashboardBinary, deps) {
|
|
307
|
+
if (!dashboardBinary || dashboardBinary.endsWith('.js') || dashboardBinary.endsWith('.ts')) {
|
|
308
|
+
// Dev mode or npx — skip
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
// Get installed binary version (async to avoid blocking event loop)
|
|
312
|
+
let binaryVersion;
|
|
313
|
+
try {
|
|
314
|
+
const versionResult = await deps.execCommand(`${JSON.stringify(dashboardBinary)} --version`);
|
|
315
|
+
binaryVersion = versionResult.stdout.trim();
|
|
316
|
+
}
|
|
317
|
+
catch {
|
|
318
|
+
return; // Can't determine version — skip
|
|
319
|
+
}
|
|
320
|
+
if (!binaryVersion) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
const targetDir = getDashboardRootFromBinary(dashboardBinary, deps) ?? getHomeDashboardRoot(deps);
|
|
324
|
+
const assetsDir = path.join(targetDir, 'out');
|
|
325
|
+
const versionFile = path.join(targetDir, '.version');
|
|
326
|
+
// Check if assets match the binary version
|
|
327
|
+
try {
|
|
328
|
+
const cachedVersion = deps.fs.readFileSync(versionFile, 'utf-8').trim();
|
|
329
|
+
if (cachedVersion === binaryVersion) {
|
|
330
|
+
return; // Up to date
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
catch {
|
|
334
|
+
// No version file — need to download if assets exist but are unversioned,
|
|
335
|
+
// or if assets don't exist at all
|
|
336
|
+
if (deps.fs.existsSync(assetsDir)) {
|
|
337
|
+
// Assets exist but no version marker — they're from an old install
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
// No assets at all — need to download
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
deps.log(`Updating dashboard UI assets (${binaryVersion})...`);
|
|
344
|
+
const uiUrl = 'https://github.com/AgentWorkforce/relay-dashboard/releases/latest/download/dashboard-ui.tar.gz';
|
|
345
|
+
let tempDir;
|
|
346
|
+
let tempFile;
|
|
347
|
+
try {
|
|
348
|
+
tempDir = fs.mkdtempSync(path.join(os.tmpdir(), `dashboard-ui-${deps.pid}-`));
|
|
349
|
+
tempFile = path.join(tempDir, 'dashboard-ui.tar.gz');
|
|
350
|
+
// Download (async to avoid blocking event loop during network I/O)
|
|
351
|
+
await deps.execCommand(`curl -fsSL --max-time 30 ${JSON.stringify(uiUrl)} -o ${JSON.stringify(tempFile)}`);
|
|
352
|
+
// Verify it's a valid gzip
|
|
353
|
+
const header = Buffer.alloc(2);
|
|
354
|
+
const fd = fs.openSync(tempFile, 'r');
|
|
355
|
+
fs.readSync(fd, header, 0, 2, 0);
|
|
356
|
+
fs.closeSync(fd);
|
|
357
|
+
if (header[0] !== 0x1f || header[1] !== 0x8b) {
|
|
358
|
+
if (tempFile)
|
|
359
|
+
deps.fs.unlinkSync(tempFile);
|
|
360
|
+
return; // Not a valid gzip file
|
|
361
|
+
}
|
|
362
|
+
// Remove old assets and extract (async to avoid blocking event loop)
|
|
363
|
+
deps.fs.rmSync(assetsDir, { recursive: true, force: true });
|
|
364
|
+
deps.fs.mkdirSync(targetDir, { recursive: true });
|
|
365
|
+
await deps.execCommand(`tar -xzf ${JSON.stringify(tempFile)} -C ${JSON.stringify(targetDir)}`);
|
|
366
|
+
if (tempFile)
|
|
367
|
+
deps.fs.unlinkSync(tempFile);
|
|
368
|
+
// Write version marker only after confirming extraction succeeded
|
|
369
|
+
if (deps.fs.existsSync(path.join(assetsDir, 'index.html'))) {
|
|
370
|
+
deps.fs.writeFileSync(versionFile, binaryVersion);
|
|
371
|
+
deps.log(`Dashboard UI assets updated to ${binaryVersion}`);
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
deps.warn('Dashboard UI extraction may be incomplete — skipping version marker');
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
// Best-effort — don't block startup
|
|
379
|
+
try {
|
|
380
|
+
if (tempFile)
|
|
381
|
+
deps.fs.unlinkSync(tempFile);
|
|
382
|
+
}
|
|
383
|
+
catch {
|
|
384
|
+
/* ignore */
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
finally {
|
|
388
|
+
try {
|
|
389
|
+
if (tempDir)
|
|
390
|
+
deps.fs.rmSync(tempDir, { recursive: true, force: true });
|
|
391
|
+
}
|
|
392
|
+
catch {
|
|
393
|
+
/* ignore */
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
export async function startDashboardWithFallback(paths, dashboardPort, apiPort, deps, enableVerboseLogging, relayApiKey, brokerApiKey) {
|
|
398
|
+
const preferredBinary = deps.findDashboardBinary();
|
|
399
|
+
await refreshDashboardAssetsIfStale(preferredBinary, deps);
|
|
400
|
+
let process = startDashboard(paths, dashboardPort, apiPort, deps, enableVerboseLogging, preferredBinary, relayApiKey, brokerApiKey);
|
|
401
|
+
let port = await resolveStartedDashboardPort(process, dashboardPort, deps);
|
|
402
|
+
if (port === null && preferredBinary) {
|
|
403
|
+
deps.warn('Retrying dashboard startup using npx @agent-relay/dashboard-server@latest');
|
|
404
|
+
process = startDashboard(paths, dashboardPort, apiPort, deps, enableVerboseLogging, null, relayApiKey, brokerApiKey);
|
|
405
|
+
port = await resolveStartedDashboardPort(process, dashboardPort, deps);
|
|
406
|
+
}
|
|
407
|
+
return { process, port };
|
|
408
|
+
}
|
|
409
|
+
export async function waitForDashboard(port, process, deps, isShuttingDown) {
|
|
410
|
+
for (let i = 0; i < 20; i++) {
|
|
411
|
+
await new Promise((r) => setTimeout(r, 500));
|
|
412
|
+
if (process.killed) {
|
|
413
|
+
if (!isShuttingDown()) {
|
|
414
|
+
deps.warn(`Warning: Dashboard process exited before becoming ready on port ${port}`);
|
|
415
|
+
}
|
|
416
|
+
return;
|
|
417
|
+
}
|
|
418
|
+
try {
|
|
419
|
+
const resp = await fetch(`http://localhost:${port}/health`);
|
|
420
|
+
if (resp.ok)
|
|
421
|
+
return; // Dashboard is up
|
|
422
|
+
}
|
|
423
|
+
catch {
|
|
424
|
+
// Not ready yet
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
if (!isShuttingDown()) {
|
|
428
|
+
deps.warn(`Warning: Dashboard not responding on port ${port} after 10s`);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=broker-dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-dashboard.js","sourceRoot":"","sources":["../../../src/cli/lib/broker-dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broker-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/broker-lifecycle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"broker-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/broker-lifecycle.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EAGV,MAAM,qBAAqB,CAAC;AAoB7B,KAAK,SAAS,GAAG;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAWF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAwDD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAE7E;AAcD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAuBlD;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAU7D;AAED,4BAA4B;AAC5B,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,GAAG,MAAM,CAQvG;AAwBD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,gBAAgB,EACvB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,gBAAgB,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAWhD;AAyfD,wBAAsB,YAAY,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuX5F;AAGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkHhG;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,gBAAgB,EACtB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|