switchboard-router 0.9.60 → 0.9.61

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 (124) hide show
  1. package/app/.next/static/chunks/{1321-0ab72f9128c10ae8.js → 1321-8f2bc21e3e1510f8.js} +1 -1
  2. package/app/.next-cli-build/BUILD_ID +1 -1
  3. package/app/.next-cli-build/app-path-routes-manifest.json +11 -11
  4. package/app/.next-cli-build/build-manifest.json +2 -2
  5. package/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/agent-library/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/routing/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  34. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  35. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  36. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  37. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  38. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  40. package/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  41. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  42. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  43. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  44. package/app/.next-cli-build/server/app/api/cli-tools/aider-settings/route.js +2 -2
  45. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +6 -6
  46. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  47. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  48. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  49. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  50. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  51. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  52. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  53. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  54. package/app/.next-cli-build/server/app/api/cli-tools/fx-settings/route.js +2 -2
  55. package/app/.next-cli-build/server/app/api/cli-tools/gemini-cli-settings/route.js +3 -3
  56. package/app/.next-cli-build/server/app/api/cli-tools/grok-settings/route.js +2 -2
  57. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  58. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  59. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  60. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  61. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  62. package/app/.next-cli-build/server/app/api/cli-tools/pi-settings/route.js +2 -2
  63. package/app/.next-cli-build/server/app/api/mgmt/v1/health/route.js +1 -1
  64. package/app/.next-cli-build/server/app/api/mgmt/v1/metrics/route.js +2 -2
  65. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  66. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  67. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/callback.html +1 -1
  69. package/app/.next-cli-build/server/app/callback.rsc +3 -3
  70. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  71. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  72. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +3 -3
  73. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  75. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  76. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  77. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  78. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +3 -3
  79. package/app/.next-cli-build/server/app/index.html +1 -1
  80. package/app/.next-cli-build/server/app/index.rsc +3 -3
  81. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  82. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  83. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/landing.html +1 -1
  86. package/app/.next-cli-build/server/app/landing.rsc +3 -3
  87. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  88. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +3 -3
  90. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  91. package/app/.next-cli-build/server/app/login.html +1 -1
  92. package/app/.next-cli-build/server/app/login.rsc +4 -4
  93. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  94. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  95. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +4 -4
  96. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  97. package/app/.next-cli-build/server/app-paths-manifest.json +11 -11
  98. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  99. package/app/.next-cli-build/server/chunks/2847.js +1 -1
  100. package/app/.next-cli-build/server/chunks/369.js +16 -14
  101. package/app/.next-cli-build/server/chunks/4454.js +1 -1
  102. package/app/.next-cli-build/server/chunks/5139.js +1 -1
  103. package/app/.next-cli-build/server/chunks/869.js +1 -1
  104. package/app/.next-cli-build/server/chunks/8998.js +2 -2
  105. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  106. package/app/.next-cli-build/server/pages/404.html +1 -1
  107. package/app/.next-cli-build/server/pages/500.html +1 -1
  108. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  109. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  110. package/app/.next-cli-build/static/chunks/{1321-0ab72f9128c10ae8.js → 1321-8f2bc21e3e1510f8.js} +1 -1
  111. package/app/open-sse/identity/tls/bin/darwin/arm64/switchboard-claude-tls +0 -0
  112. package/app/open-sse/identity/tls/bin/darwin/x64/switchboard-claude-tls +0 -0
  113. package/app/open-sse/identity/tls/bin/linux/arm64/switchboard-claude-tls +0 -0
  114. package/app/open-sse/identity/tls/bin/linux/x64/switchboard-claude-tls +0 -0
  115. package/app/open-sse/identity/tls/bin/win32/arm64/switchboard-claude-tls.exe +0 -0
  116. package/app/open-sse/identity/tls/bin/win32/x64/switchboard-claude-tls.exe +0 -0
  117. package/app/package.json +1 -1
  118. package/cli.js +5 -1
  119. package/package.json +1 -1
  120. package/src/shared/heapSize.js +35 -0
  121. /package/app/.next/static/{kn4tTYMd_zh76SjzZUnxP → buFm6Q9XY8OxLsQzoorjq}/_buildManifest.js +0 -0
  122. /package/app/.next/static/{kn4tTYMd_zh76SjzZUnxP → buFm6Q9XY8OxLsQzoorjq}/_ssgManifest.js +0 -0
  123. /package/app/.next-cli-build/static/{kn4tTYMd_zh76SjzZUnxP → buFm6Q9XY8OxLsQzoorjq}/_buildManifest.js +0 -0
  124. /package/app/.next-cli-build/static/{kn4tTYMd_zh76SjzZUnxP → buFm6Q9XY8OxLsQzoorjq}/_ssgManifest.js +0 -0
package/app/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchboard-app",
3
- "version": "0.9.60",
3
+ "version": "0.9.61",
4
4
  "description": "Switchboard — intelligent model routing dashboard",
5
5
  "private": true,
6
6
  "engines": {
package/cli.js CHANGED
@@ -11,6 +11,7 @@ const { DEFAULT_HOST, DEFAULT_PORT, formatHelp, isLoopbackHost, parseCliArgs } =
11
11
  const processTools = require("./src/cli/processManager");
12
12
  const { findListeningPids, observeChildExit } = processTools;
13
13
  const { probeSwitchboard, probeTcp, startHealthWatchdog, waitForSwitchboard } = require("./src/cli/serverStatus");
14
+ const { maxOldSpaceArgs } = require("./src/shared/heapSize");
14
15
 
15
16
  // Subcommands (`switchboard xai video …`) run against an already-running
16
17
  // gateway and skip the launcher flow (no arg parsing, no server spawn).
@@ -672,7 +673,10 @@ function startServer(latestVersion) {
672
673
  // Boot failures abandon after maxBootFailures; watchdog respawns keep
673
674
  // everHealthy so transient overload does not permanently quit the launcher.
674
675
  if (resetEverHealthy) everHealthy = false;
675
- const child = spawn(RUNTIME, ["--max-old-space-size=6144", serverPath], {
676
+ // Heap sized to host RAM (6144 MB on ≥12 GB hosts, less on small ones);
677
+ // a fixed 6144 gets kernel-OOM-killed on small VPS hosts. Skipped when
678
+ // the operator set their own flag via NODE_OPTIONS.
679
+ const child = spawn(RUNTIME, [...maxOldSpaceArgs(), serverPath], {
676
680
  cwd: standaloneDir,
677
681
  stdio: ["ignore", "pipe", "pipe"],
678
682
  detached: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "switchboard-router",
3
- "version": "0.9.60",
3
+ "version": "0.9.61",
4
4
  "description": "Switchboard CLI — local AI routing gateway (install: npm i -g switchboard-router; run: switchboard)",
5
5
  "bin": {
6
6
  "switchboard": "./cli.js",
@@ -0,0 +1,35 @@
1
+ // Host-aware V8 old-space sizing. Mirror of scripts/heapSizing.mjs — the CLI
2
+ // package is packed separately and cannot import from the app repo, so keep
3
+ // the semantics identical: explicit SWITCHBOARD_MAX_OLD_SPACE_MB wins, else
4
+ // half of host RAM clamped to [512, 6144] MB. A fixed 6144 invites the kernel
5
+ // OOM killer on small hosts long before V8 feels GC pressure.
6
+ const os = require("node:os");
7
+
8
+ function nodeOptionsHasMaxOldSpace(env = process.env) {
9
+ return /--max-old-space-size(?:=|\s)/.test((env && env.NODE_OPTIONS) || "");
10
+ }
11
+
12
+ function resolveMaxOldSpaceMb({ env = process.env, totalMemBytes } = {}) {
13
+ const override = Number.parseInt((env && env.SWITCHBOARD_MAX_OLD_SPACE_MB) || "", 10);
14
+ if (Number.isFinite(override) && override >= 256) return override;
15
+
16
+ let total = Number.isFinite(totalMemBytes) && totalMemBytes > 0 ? totalMemBytes : null;
17
+ if (!total) {
18
+ try {
19
+ const detected = os.totalmem();
20
+ if (Number.isFinite(detected) && detected > 0) total = detected;
21
+ } catch { /* fall through to fallback */ }
22
+ }
23
+ if (!total) return 2048;
24
+ const halfMb = Math.floor(total / (1024 * 1024) / 2);
25
+ return Math.min(6144, Math.max(512, halfMb));
26
+ }
27
+
28
+ /** Node CLI args to prepend, or [] when the operator already set a heap flag. */
29
+ function maxOldSpaceArgs(options = {}) {
30
+ const env = options.env ?? process.env;
31
+ if (nodeOptionsHasMaxOldSpace(env)) return [];
32
+ return [`--max-old-space-size=${resolveMaxOldSpaceMb(options)}`];
33
+ }
34
+
35
+ module.exports = { resolveMaxOldSpaceMb, nodeOptionsHasMaxOldSpace, maxOldSpaceArgs };