@agent-relay/dashboard-server 2.0.48 → 2.0.50
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/server.js +15 -22
- package/dist/server.js.map +1 -1
- package/dist/start.js +33 -2
- package/dist/start.js.map +1 -1
- package/out/404.html +1 -1
- package/out/_next/static/chunks/695-e794284f76ffbce7.js +1 -0
- package/out/_next/static/chunks/app/about/{page-479cf554b7756577.js → page-fff7c6457683f243.js} +1 -1
- package/out/_next/static/chunks/app/blog/go-to-bed-wake-up-to-a-finished-product/page-5d5f28fd126b692f.js +1 -0
- package/out/_next/static/chunks/app/blog/page-b9bd9d8703fca76a.js +1 -0
- package/out/_next/static/chunks/app/careers/{page-9913f9bb85cbe2c9.js → page-a4bd8d5f4de8f4eb.js} +1 -1
- package/out/_next/static/chunks/app/changelog/{page-494867276f9c5391.js → page-9a1f6ad1743d63c5.js} +1 -1
- package/out/_next/static/chunks/app/contact/{page-4a8ee59114dd6d71.js → page-3c1dd8690217fade.js} +1 -1
- package/out/_next/static/chunks/app/docs/{page-b1ed992f6e63ee88.js → page-1875e981f2c3fd13.js} +1 -1
- package/out/_next/static/chunks/app/page-a32b25323fff7aa0.js +1 -0
- package/out/_next/static/chunks/app/pricing/{page-7e6eade7456b0fd6.js → page-eeae7d594af333b6.js} +1 -1
- package/out/_next/static/chunks/app/privacy/{page-1bf4297028298c0c.js → page-c21d51ac2dee3a88.js} +1 -1
- package/out/_next/static/chunks/app/security/{page-64bdbc305eb98bb1.js → page-cd562730fe84a0a2.js} +1 -1
- package/out/_next/static/chunks/app/terms/{page-be627dd76451489f.js → page-c7001720e7941dc6.js} +1 -1
- package/out/_next/static/chunks/{main-cfe563bdea0acece.js → main-be50531dde531aa3.js} +1 -1
- package/out/_next/static/css/{409b25af1ce50fc3.css → 7519fcf229687c83.css} +1 -1
- package/out/about.html +2 -2
- package/out/about.txt +2 -2
- package/out/app/onboarding.html +1 -1
- package/out/app/onboarding.txt +1 -1
- package/out/app.html +1 -1
- package/out/app.txt +1 -1
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +38 -0
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.svg +38 -0
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +5 -0
- package/out/blog.html +3 -3
- package/out/blog.txt +4 -6
- package/out/careers.html +2 -2
- package/out/careers.txt +2 -2
- package/out/changelog.html +2 -2
- package/out/changelog.txt +2 -2
- package/out/cloud/link.html +1 -1
- package/out/cloud/link.txt +1 -1
- package/out/complete-profile.html +1 -1
- package/out/complete-profile.txt +1 -1
- package/out/connect-repos.html +1 -1
- package/out/connect-repos.txt +1 -1
- package/out/contact.html +2 -2
- package/out/contact.txt +2 -2
- package/out/docs.html +2 -2
- package/out/docs.txt +2 -2
- package/out/history.html +1 -1
- package/out/history.txt +1 -1
- package/out/index.html +1 -1
- package/out/index.txt +2 -2
- package/out/login.html +1 -1
- package/out/login.txt +1 -1
- package/out/metrics.html +1 -1
- package/out/metrics.txt +1 -1
- package/out/pricing.html +2 -2
- package/out/pricing.txt +2 -2
- package/out/privacy.html +2 -2
- package/out/privacy.txt +2 -2
- package/out/providers/setup/claude.html +1 -1
- package/out/providers/setup/claude.txt +1 -1
- package/out/providers/setup/codex.html +1 -1
- package/out/providers/setup/codex.txt +1 -1
- package/out/providers/setup/cursor.html +1 -1
- package/out/providers/setup/cursor.txt +1 -1
- package/out/providers.html +1 -1
- package/out/providers.txt +1 -1
- package/out/security.html +2 -2
- package/out/security.txt +2 -2
- package/out/signup.html +1 -1
- package/out/signup.txt +1 -1
- package/out/terms.html +2 -2
- package/out/terms.txt +2 -2
- package/package.json +10 -10
- package/out/_next/static/chunks/429-a8c2bd6d054b8db9.js +0 -1
- package/out/_next/static/chunks/app/blog/page-4143d69f34bcd279.js +0 -1
- package/out/_next/static/chunks/app/page-f750a1e8c0b95eec.js +0 -1
- /package/out/_next/static/{HwEoE2BFhgZdESAQLY9dG → HyizcoA_xWZ49yA2PkWKH}/_buildManifest.js +0 -0
- /package/out/_next/static/{HwEoE2BFhgZdESAQLY9dG → HyizcoA_xWZ49yA2PkWKH}/_ssgManifest.js +0 -0
package/dist/server.js
CHANGED
|
@@ -1194,6 +1194,9 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
|
|
|
1194
1194
|
}
|
|
1195
1195
|
const hasMessageData = Object.keys(messageData).length > 0;
|
|
1196
1196
|
// Send to all targets (single agent, team members, or broadcast)
|
|
1197
|
+
// Note: We do NOT persist outgoing messages here because the relay daemon
|
|
1198
|
+
// already persists them when delivered (in router.persistDeliverEnvelope).
|
|
1199
|
+
// Persisting here would cause duplicate messages in storage.
|
|
1197
1200
|
let allSent = true;
|
|
1198
1201
|
for (const target of targets) {
|
|
1199
1202
|
const sent = relayClient.sendMessage(target, message, 'message', hasMessageData ? messageData : undefined, thread);
|
|
@@ -1201,25 +1204,6 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
|
|
|
1201
1204
|
allSent = false;
|
|
1202
1205
|
console.error(`[dashboard] Failed to send message to ${target}`);
|
|
1203
1206
|
}
|
|
1204
|
-
else if (storage) {
|
|
1205
|
-
// Persist outgoing message to storage so it survives page refresh
|
|
1206
|
-
const messageId = `out-${crypto.randomUUID()}`;
|
|
1207
|
-
storage.saveMessage({
|
|
1208
|
-
id: messageId,
|
|
1209
|
-
ts: Date.now(),
|
|
1210
|
-
from: senderName || 'Dashboard',
|
|
1211
|
-
to: target,
|
|
1212
|
-
topic: thread,
|
|
1213
|
-
kind: 'message',
|
|
1214
|
-
body: message,
|
|
1215
|
-
data: hasMessageData ? messageData : undefined,
|
|
1216
|
-
status: 'read', // Outgoing messages are already "read" by sender
|
|
1217
|
-
is_urgent: false,
|
|
1218
|
-
is_broadcast: isBroadcast,
|
|
1219
|
-
}).catch((err) => {
|
|
1220
|
-
console.error('[dashboard] Failed to persist outgoing message', err);
|
|
1221
|
-
});
|
|
1222
|
-
}
|
|
1223
1207
|
}
|
|
1224
1208
|
if (allSent) {
|
|
1225
1209
|
// Broadcast updated data to all connected clients so they see the sent message
|
|
@@ -2198,16 +2182,25 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
|
|
|
2198
2182
|
else {
|
|
2199
2183
|
// Check if this is an externally-spawned worker with a log file
|
|
2200
2184
|
const externalWorker = getExternalWorkerInfo(agentName);
|
|
2201
|
-
|
|
2185
|
+
let logFile = externalWorker?.logFile;
|
|
2186
|
+
// If no explicit logFile in workers.json, try conventional path
|
|
2187
|
+
// This handles agents spawned via `agent-relay create-agent` CLI
|
|
2188
|
+
if (!logFile) {
|
|
2189
|
+
const conventionalPath = path.join(teamDir, 'worker-logs', `${agentName}.log`);
|
|
2190
|
+
if (fs.existsSync(conventionalPath)) {
|
|
2191
|
+
logFile = conventionalPath;
|
|
2192
|
+
}
|
|
2193
|
+
}
|
|
2194
|
+
if (logFile && fs.existsSync(logFile)) {
|
|
2202
2195
|
// Read logs from the external worker's log file
|
|
2203
|
-
const lines = readLogsFromFile(
|
|
2196
|
+
const lines = readLogsFromFile(logFile, 5000);
|
|
2204
2197
|
ws.send(JSON.stringify({
|
|
2205
2198
|
type: 'history',
|
|
2206
2199
|
agent: agentName,
|
|
2207
2200
|
lines,
|
|
2208
2201
|
}));
|
|
2209
2202
|
// Start watching the log file for live updates
|
|
2210
|
-
watchLogFile(agentName,
|
|
2203
|
+
watchLogFile(agentName, logFile);
|
|
2211
2204
|
}
|
|
2212
2205
|
else {
|
|
2213
2206
|
// For daemon-connected agents without log files, explain that PTY output isn't available
|