@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.
Files changed (77) hide show
  1. package/dist/server.js +15 -22
  2. package/dist/server.js.map +1 -1
  3. package/dist/start.js +33 -2
  4. package/dist/start.js.map +1 -1
  5. package/out/404.html +1 -1
  6. package/out/_next/static/chunks/695-e794284f76ffbce7.js +1 -0
  7. package/out/_next/static/chunks/app/about/{page-479cf554b7756577.js → page-fff7c6457683f243.js} +1 -1
  8. package/out/_next/static/chunks/app/blog/go-to-bed-wake-up-to-a-finished-product/page-5d5f28fd126b692f.js +1 -0
  9. package/out/_next/static/chunks/app/blog/page-b9bd9d8703fca76a.js +1 -0
  10. package/out/_next/static/chunks/app/careers/{page-9913f9bb85cbe2c9.js → page-a4bd8d5f4de8f4eb.js} +1 -1
  11. package/out/_next/static/chunks/app/changelog/{page-494867276f9c5391.js → page-9a1f6ad1743d63c5.js} +1 -1
  12. package/out/_next/static/chunks/app/contact/{page-4a8ee59114dd6d71.js → page-3c1dd8690217fade.js} +1 -1
  13. package/out/_next/static/chunks/app/docs/{page-b1ed992f6e63ee88.js → page-1875e981f2c3fd13.js} +1 -1
  14. package/out/_next/static/chunks/app/page-a32b25323fff7aa0.js +1 -0
  15. package/out/_next/static/chunks/app/pricing/{page-7e6eade7456b0fd6.js → page-eeae7d594af333b6.js} +1 -1
  16. package/out/_next/static/chunks/app/privacy/{page-1bf4297028298c0c.js → page-c21d51ac2dee3a88.js} +1 -1
  17. package/out/_next/static/chunks/app/security/{page-64bdbc305eb98bb1.js → page-cd562730fe84a0a2.js} +1 -1
  18. package/out/_next/static/chunks/app/terms/{page-be627dd76451489f.js → page-c7001720e7941dc6.js} +1 -1
  19. package/out/_next/static/chunks/{main-cfe563bdea0acece.js → main-be50531dde531aa3.js} +1 -1
  20. package/out/_next/static/css/{409b25af1ce50fc3.css → 7519fcf229687c83.css} +1 -1
  21. package/out/about.html +2 -2
  22. package/out/about.txt +2 -2
  23. package/out/app/onboarding.html +1 -1
  24. package/out/app/onboarding.txt +1 -1
  25. package/out/app.html +1 -1
  26. package/out/app.txt +1 -1
  27. package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +38 -0
  28. package/out/blog/go-to-bed-wake-up-to-a-finished-product.svg +38 -0
  29. package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +5 -0
  30. package/out/blog.html +3 -3
  31. package/out/blog.txt +4 -6
  32. package/out/careers.html +2 -2
  33. package/out/careers.txt +2 -2
  34. package/out/changelog.html +2 -2
  35. package/out/changelog.txt +2 -2
  36. package/out/cloud/link.html +1 -1
  37. package/out/cloud/link.txt +1 -1
  38. package/out/complete-profile.html +1 -1
  39. package/out/complete-profile.txt +1 -1
  40. package/out/connect-repos.html +1 -1
  41. package/out/connect-repos.txt +1 -1
  42. package/out/contact.html +2 -2
  43. package/out/contact.txt +2 -2
  44. package/out/docs.html +2 -2
  45. package/out/docs.txt +2 -2
  46. package/out/history.html +1 -1
  47. package/out/history.txt +1 -1
  48. package/out/index.html +1 -1
  49. package/out/index.txt +2 -2
  50. package/out/login.html +1 -1
  51. package/out/login.txt +1 -1
  52. package/out/metrics.html +1 -1
  53. package/out/metrics.txt +1 -1
  54. package/out/pricing.html +2 -2
  55. package/out/pricing.txt +2 -2
  56. package/out/privacy.html +2 -2
  57. package/out/privacy.txt +2 -2
  58. package/out/providers/setup/claude.html +1 -1
  59. package/out/providers/setup/claude.txt +1 -1
  60. package/out/providers/setup/codex.html +1 -1
  61. package/out/providers/setup/codex.txt +1 -1
  62. package/out/providers/setup/cursor.html +1 -1
  63. package/out/providers/setup/cursor.txt +1 -1
  64. package/out/providers.html +1 -1
  65. package/out/providers.txt +1 -1
  66. package/out/security.html +2 -2
  67. package/out/security.txt +2 -2
  68. package/out/signup.html +1 -1
  69. package/out/signup.txt +1 -1
  70. package/out/terms.html +2 -2
  71. package/out/terms.txt +2 -2
  72. package/package.json +10 -10
  73. package/out/_next/static/chunks/429-a8c2bd6d054b8db9.js +0 -1
  74. package/out/_next/static/chunks/app/blog/page-4143d69f34bcd279.js +0 -1
  75. package/out/_next/static/chunks/app/page-f750a1e8c0b95eec.js +0 -1
  76. /package/out/_next/static/{HwEoE2BFhgZdESAQLY9dG → HyizcoA_xWZ49yA2PkWKH}/_buildManifest.js +0 -0
  77. /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
- if (externalWorker?.logFile && fs.existsSync(externalWorker.logFile)) {
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(externalWorker.logFile, 5000);
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, externalWorker.logFile);
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