@agent-relay/dashboard-server 2.0.63 → 2.0.64

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 (63) hide show
  1. package/dist/server.d.ts.map +1 -1
  2. package/dist/server.js +33 -7
  3. package/dist/server.js.map +1 -1
  4. package/out/404.html +1 -1
  5. package/out/_next/static/chunks/873-9aee36b975a9556a.js +1 -0
  6. package/out/_next/static/css/2ee05ba949b3ac9f.css +1 -0
  7. package/out/about.html +2 -2
  8. package/out/about.txt +1 -1
  9. package/out/app/onboarding.html +1 -1
  10. package/out/app/onboarding.txt +1 -1
  11. package/out/app.html +1 -1
  12. package/out/app.txt +2 -2
  13. package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +2 -2
  14. package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
  15. package/out/blog/let-them-cook-multi-agent-orchestration.html +2 -2
  16. package/out/blog/let-them-cook-multi-agent-orchestration.txt +1 -1
  17. package/out/blog.html +2 -2
  18. package/out/blog.txt +1 -1
  19. package/out/careers.html +2 -2
  20. package/out/careers.txt +1 -1
  21. package/out/changelog.html +2 -2
  22. package/out/changelog.txt +1 -1
  23. package/out/cloud/link.html +1 -1
  24. package/out/cloud/link.txt +1 -1
  25. package/out/complete-profile.html +2 -2
  26. package/out/complete-profile.txt +1 -1
  27. package/out/connect-repos.html +1 -1
  28. package/out/connect-repos.txt +1 -1
  29. package/out/contact.html +2 -2
  30. package/out/contact.txt +1 -1
  31. package/out/docs.html +2 -2
  32. package/out/docs.txt +1 -1
  33. package/out/history.html +1 -1
  34. package/out/history.txt +1 -1
  35. package/out/index.html +1 -1
  36. package/out/index.txt +2 -2
  37. package/out/login.html +2 -2
  38. package/out/login.txt +1 -1
  39. package/out/metrics.html +1 -1
  40. package/out/metrics.txt +1 -1
  41. package/out/pricing.html +2 -2
  42. package/out/pricing.txt +1 -1
  43. package/out/privacy.html +2 -2
  44. package/out/privacy.txt +1 -1
  45. package/out/providers/setup/claude.html +1 -1
  46. package/out/providers/setup/claude.txt +1 -1
  47. package/out/providers/setup/codex.html +1 -1
  48. package/out/providers/setup/codex.txt +1 -1
  49. package/out/providers/setup/cursor.html +1 -1
  50. package/out/providers/setup/cursor.txt +1 -1
  51. package/out/providers.html +1 -1
  52. package/out/providers.txt +1 -1
  53. package/out/security.html +2 -2
  54. package/out/security.txt +1 -1
  55. package/out/signup.html +2 -2
  56. package/out/signup.txt +1 -1
  57. package/out/terms.html +2 -2
  58. package/out/terms.txt +1 -1
  59. package/package.json +10 -10
  60. package/out/_next/static/chunks/873-6b31247a84ec58c2.js +0 -1
  61. package/out/_next/static/css/ad96af0f7a47b705.css +0 -1
  62. /package/out/_next/static/{Ip08bs-aI4i94zrABOaVi → 6oI4iquYj1QbK8njLsK3s}/_buildManifest.js +0 -0
  63. /package/out/_next/static/{Ip08bs-aI4i94zrABOaVi → 6oI4iquYj1QbK8njLsK3s}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgYzD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACvH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAiYzD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AACvH,wBAAsB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC"}
package/dist/server.js CHANGED
@@ -790,24 +790,43 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
790
790
  // Serve Next.js static export with .html extension handling
791
791
  app.use(express.static(dashboardDir, { extensions: ['html'] }));
792
792
  // Fallback for Next.js pages (e.g., /metrics -> /metrics.html)
793
- // These are needed when a route exists as both a directory and .html file
794
- const sendFileWithFallback = (res, filePath) => {
793
+ // These are needed when a route exists as both a directory and .html file.
794
+ // For /app/* deep links we prefer redirecting to "/" if the export is missing,
795
+ // so users don’t get stuck on a plain-text error on refresh.
796
+ const uiMissingMessage = 'Dashboard UI file not found. Please reinstall using: curl -fsSL https://raw.githubusercontent.com/AgentWorkforce/relay/main/install.sh | bash';
797
+ const sendFileOr = (res, filePath, onError) => {
795
798
  res.sendFile(filePath, (err) => {
796
799
  if (err && !res.headersSent) {
797
- res.status(404).send('Dashboard UI file not found. Please reinstall using: curl -fsSL https://raw.githubusercontent.com/AgentWorkforce/relay/main/install.sh | bash');
800
+ onError(err);
798
801
  }
799
802
  });
800
803
  };
804
+ const sendFileOrText404 = (res, filePath, message) => {
805
+ sendFileOr(res, filePath, () => {
806
+ res.status(404).send(message);
807
+ });
808
+ };
809
+ const sendFileOrRedirectRoot = (res, filePath) => {
810
+ sendFileOr(res, filePath, () => {
811
+ // If the app entrypoint isn’t present, try to recover by sending users
812
+ // to the root page (if it exists). Otherwise keep the install hint.
813
+ if (fs.existsSync(path.join(dashboardDir, 'index.html'))) {
814
+ res.redirect(302, '/');
815
+ return;
816
+ }
817
+ res.status(404).send(uiMissingMessage);
818
+ });
819
+ };
801
820
  app.get('/metrics', (req, res) => {
802
- sendFileWithFallback(res, path.join(dashboardDir, 'metrics.html'));
821
+ sendFileOrText404(res, path.join(dashboardDir, 'metrics.html'), uiMissingMessage);
803
822
  });
804
823
  app.get('/app', (req, res) => {
805
- sendFileWithFallback(res, path.join(dashboardDir, 'app.html'));
824
+ sendFileOrRedirectRoot(res, path.join(dashboardDir, 'app.html'));
806
825
  });
807
826
  // Catch-all for /app/* routes - serve app.html and let client-side routing handle it
808
827
  // Express 5 requires named parameter for wildcards
809
828
  app.get('/app/{*path}', (req, res) => {
810
- sendFileWithFallback(res, path.join(dashboardDir, 'app.html'));
829
+ sendFileOrRedirectRoot(res, path.join(dashboardDir, 'app.html'));
811
830
  });
812
831
  }
813
832
  else {
@@ -1796,7 +1815,7 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
1796
1815
  // Ignore errors reading processing state - it's optional
1797
1816
  }
1798
1817
  }
1799
- // Mark spawned agents with isSpawned flag and team
1818
+ // Mark spawned agents with isSpawned flag, team, and model
1800
1819
  if (spawnReader) {
1801
1820
  const activeWorkers = spawnReader.getActiveWorkers();
1802
1821
  for (const worker of activeWorkers) {
@@ -1806,6 +1825,13 @@ export async function startDashboard(portOrOptions, dataDirArg, teamDirArg, dbPa
1806
1825
  if (worker.team) {
1807
1826
  agent.team = worker.team;
1808
1827
  }
1828
+ // Extract model from spawn command (e.g., "codex --model gpt-5.2-codex" → "gpt-5.2-codex")
1829
+ if (worker.cli) {
1830
+ const modelMatch = worker.cli.match(/--model\s+(\S+)/);
1831
+ if (modelMatch) {
1832
+ agent.model = modelMatch[1];
1833
+ }
1834
+ }
1809
1835
  }
1810
1836
  }
1811
1837
  }