polyrouter 1.0.5 → 1.0.7

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 (1094) hide show
  1. package/README.md +70 -84
  2. package/app/.next-cli-build/BUILD_ID +1 -1
  3. package/app/.next-cli-build/app-path-routes-manifest.json +15 -14
  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/routes-manifest.json +6 -0
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +4 -4
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/realtime/page.js +2 -2
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/realtime/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/realtime/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  80. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  81. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  88. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  90. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  91. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  92. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  93. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  94. package/app/.next-cli-build/server/app/_not-found.rsc +20 -19
  95. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +20 -19
  96. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  97. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +9 -8
  98. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  99. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  100. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  101. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/setup-password/route.js +1 -0
  114. package/app/.next-cli-build/server/app/api/auth/setup-password/route.js.nft.json +1 -0
  115. package/app/.next-cli-build/server/app/api/auth/setup-password/route_client-reference-manifest.js +1 -0
  116. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +9 -9
  119. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  131. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  133. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  135. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +4 -4
  139. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +6 -6
  143. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +3 -3
  145. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  149. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +3 -3
  181. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +4 -4
  183. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  213. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  235. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  243. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  244. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  245. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  263. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  265. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  267. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  268. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  269. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  271. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  273. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  275. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
  277. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  279. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  281. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  283. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  285. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  287. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/realtime/authorize/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/realtime/authorize/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  299. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  305. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  327. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  347. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  390. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  391. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  392. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  393. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  394. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  395. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  396. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  397. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  398. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  399. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  401. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  403. package/app/.next-cli-build/server/app/callback.html +1 -1
  404. package/app/.next-cli-build/server/app/callback.rsc +24 -23
  405. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +24 -23
  406. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  407. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +9 -8
  408. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -3
  409. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +22 -21
  413. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  417. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +22 -21
  418. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +9 -8
  420. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -3
  421. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +23 -22
  423. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  424. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  427. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +23 -22
  428. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +9 -8
  430. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -3
  431. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/combos.rsc +25 -24
  433. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  434. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  435. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  437. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +25 -24
  438. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +9 -8
  440. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -3
  441. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +23 -22
  443. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  444. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  447. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +23 -22
  448. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +9 -8
  450. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -3
  451. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  452. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +25 -24
  453. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  454. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +25 -24
  459. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +9 -8
  461. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +3 -3
  462. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +22 -21
  464. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  465. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  466. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +22 -21
  469. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +9 -8
  471. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -3
  472. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/profile.rsc +25 -24
  474. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  475. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  476. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +25 -24
  479. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +9 -8
  481. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -3
  482. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  483. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +25 -24
  484. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  485. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  488. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +25 -24
  490. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +9 -8
  492. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -3
  493. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  494. package/app/.next-cli-build/server/app/dashboard/providers.rsc +25 -24
  495. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  496. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  498. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +25 -24
  500. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +9 -8
  502. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -3
  503. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  504. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +25 -24
  505. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  506. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  508. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +25 -24
  510. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  511. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +9 -8
  512. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -3
  513. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  514. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +22 -21
  515. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  516. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  517. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  518. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +22 -21
  520. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +9 -8
  522. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +3 -3
  523. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  524. package/app/.next-cli-build/server/app/dashboard/quota.rsc +23 -22
  525. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  526. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  527. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  529. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +23 -22
  530. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  531. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +9 -8
  532. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -3
  533. package/app/.next-cli-build/server/app/dashboard/realtime.html +1 -1
  534. package/app/.next-cli-build/server/app/dashboard/realtime.rsc +22 -21
  535. package/app/.next-cli-build/server/app/dashboard/realtime.segments/!KGRhc2hib2FyZCk/dashboard/realtime/__PAGE__.segment.rsc +2 -2
  536. package/app/.next-cli-build/server/app/dashboard/realtime.segments/!KGRhc2hib2FyZCk/dashboard/realtime.segment.rsc +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/realtime.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  538. package/app/.next-cli-build/server/app/dashboard/realtime.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  539. package/app/.next-cli-build/server/app/dashboard/realtime.segments/_full.segment.rsc +22 -21
  540. package/app/.next-cli-build/server/app/dashboard/realtime.segments/_head.segment.rsc +1 -1
  541. package/app/.next-cli-build/server/app/dashboard/realtime.segments/_index.segment.rsc +9 -8
  542. package/app/.next-cli-build/server/app/dashboard/realtime.segments/_tree.segment.rsc +3 -3
  543. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  544. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  545. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  546. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  547. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +24 -23
  548. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +24 -23
  549. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +9 -8
  551. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -3
  552. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  553. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  554. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  555. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  556. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  557. package/app/.next-cli-build/server/app/dashboard/skills.rsc +25 -24
  558. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  559. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  560. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  561. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  562. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +25 -24
  563. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  564. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +9 -8
  565. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +3 -3
  566. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  567. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +22 -21
  568. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  569. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  570. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  571. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  572. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +22 -21
  573. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  574. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +9 -8
  575. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +3 -3
  576. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  577. package/app/.next-cli-build/server/app/dashboard/translator.rsc +25 -24
  578. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  579. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  580. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  581. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  582. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +25 -24
  583. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  584. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +9 -8
  585. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -3
  586. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  587. package/app/.next-cli-build/server/app/dashboard/usage.rsc +25 -24
  588. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  589. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  590. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  591. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  592. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +25 -24
  593. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  594. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +9 -8
  595. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -3
  596. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  597. package/app/.next-cli-build/server/app/dashboard.rsc +23 -22
  598. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  599. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  600. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  601. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +23 -22
  602. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  603. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +9 -8
  604. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +3 -3
  605. package/app/.next-cli-build/server/app/index.html +1 -1
  606. package/app/.next-cli-build/server/app/index.rsc +19 -18
  607. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  608. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +19 -18
  609. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  610. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +9 -8
  611. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +3 -3
  612. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  613. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  614. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  615. package/app/.next-cli-build/server/app/landing.html +1 -1
  616. package/app/.next-cli-build/server/app/landing.rsc +24 -23
  617. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +24 -23
  618. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  619. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +9 -8
  620. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -3
  621. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  622. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  623. package/app/.next-cli-build/server/app/login/page.js +2 -2
  624. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  625. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  626. package/app/.next-cli-build/server/app/login.html +1 -1
  627. package/app/.next-cli-build/server/app/login.rsc +24 -23
  628. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +24 -23
  629. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  630. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +9 -8
  631. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +3 -3
  632. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  633. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  634. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  635. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  636. package/app/.next-cli-build/server/app/page.js +2 -2
  637. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  638. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  639. package/app/.next-cli-build/server/app-paths-manifest.json +15 -14
  640. package/app/.next-cli-build/server/chunks/1455.js +1 -0
  641. package/app/.next-cli-build/server/chunks/1605.js +1 -0
  642. package/app/.next-cli-build/server/chunks/1829.js +1 -1
  643. package/app/.next-cli-build/server/chunks/2065.js +1 -0
  644. package/app/.next-cli-build/server/chunks/2112.js +1 -1
  645. package/app/.next-cli-build/server/chunks/2194.js +1 -1
  646. package/app/.next-cli-build/server/chunks/238.js +1 -1
  647. package/app/.next-cli-build/server/chunks/2620.js +1 -1
  648. package/app/.next-cli-build/server/chunks/318.js +2 -2
  649. package/app/.next-cli-build/server/chunks/3239.js +9 -0
  650. package/app/.next-cli-build/server/chunks/3535.js +1 -1
  651. package/app/.next-cli-build/server/chunks/3593.js +2 -2
  652. package/app/.next-cli-build/server/chunks/3726.js +1 -1
  653. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  654. package/app/.next-cli-build/server/chunks/412.js +2 -2
  655. package/app/.next-cli-build/server/chunks/4123.js +3 -3
  656. package/app/.next-cli-build/server/chunks/4293.js +1 -0
  657. package/app/.next-cli-build/server/chunks/4433.js +1 -0
  658. package/app/.next-cli-build/server/chunks/{4884.js → 4491.js} +8 -3
  659. package/app/.next-cli-build/server/chunks/4739.js +2 -2
  660. package/app/.next-cli-build/server/chunks/4780.js +2 -2
  661. package/app/.next-cli-build/server/chunks/4946.js +9 -0
  662. package/app/.next-cli-build/server/chunks/5033.js +1 -0
  663. package/app/.next-cli-build/server/chunks/507.js +2 -2
  664. package/app/.next-cli-build/server/chunks/5258.js +2 -2
  665. package/app/.next-cli-build/server/chunks/5612.js +1 -1
  666. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  667. package/app/.next-cli-build/server/chunks/6805.js +3 -3
  668. package/app/.next-cli-build/server/chunks/6877.js +1 -1
  669. package/app/.next-cli-build/server/chunks/6922.js +1 -0
  670. package/app/.next-cli-build/server/chunks/698.js +2 -2
  671. package/app/.next-cli-build/server/chunks/7807.js +1 -1
  672. package/app/.next-cli-build/server/chunks/7965.js +2 -2
  673. package/app/.next-cli-build/server/chunks/8038.js +19 -19
  674. package/app/.next-cli-build/server/chunks/8145.js +1 -1
  675. package/app/.next-cli-build/server/chunks/8185.js +1 -0
  676. package/app/.next-cli-build/server/chunks/8251.js +2 -2
  677. package/app/.next-cli-build/server/chunks/827.js +1 -1
  678. package/app/.next-cli-build/server/chunks/8363.js +1 -0
  679. package/app/.next-cli-build/server/chunks/8520.js +2 -2
  680. package/app/.next-cli-build/server/chunks/869.js +1 -1
  681. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  682. package/app/.next-cli-build/server/chunks/8910.js +1 -1
  683. package/app/.next-cli-build/server/chunks/915.js +6 -6
  684. package/app/.next-cli-build/server/chunks/{3850.js → 9336.js} +1 -1
  685. package/app/.next-cli-build/server/chunks/9660.js +1 -1
  686. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  687. package/app/.next-cli-build/server/middleware.js +6 -6
  688. package/app/.next-cli-build/server/pages/404.html +1 -1
  689. package/app/.next-cli-build/server/pages/500.html +1 -1
  690. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  691. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  692. package/app/.next-cli-build/static/chunks/{1321-874aad1cb7882601.js → 1321-ee3f98a273573f07.js} +1 -1
  693. package/app/.next-cli-build/static/chunks/4024-823f5cdd3f7f04cc.js +1 -0
  694. package/app/.next-cli-build/static/chunks/5116-57607d97ad30f27c.js +70 -0
  695. package/app/.next-cli-build/static/chunks/{533-74450af7ce8a32b6.js → 533-34fc7f5a3c79da82.js} +1 -1
  696. package/app/.next-cli-build/static/chunks/{5497-78a8a8716352195f.js → 5497-84dfd144b30eda56.js} +1 -1
  697. package/app/.next-cli-build/static/chunks/9da6db1e-abf82355a5ee5150.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-3b24dec9f1a5c678.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-63a707f86838189f.js → page-c737bc25a827d251.js} +1 -1
  700. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-52f8e9cf6aa8554b.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/realtime/{page-81a6d2a3fffb86dc.js → page-f4b382f06f0f8eb6.js} +1 -1
  702. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-07a0044d9e135cb8.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/token-saver/{page-ec365dbdc0860d04.js → page-d488121dc0c130ad.js} +1 -1
  704. package/app/.next-cli-build/static/chunks/app/_global-error/page-a1ad2a6494b449e0.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-a1ad2a6494b449e0.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-a1ad2a6494b449e0.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-a1ad2a6494b449e0.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-a1ad2a6494b449e0.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-a1ad2a6494b449e0.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-a1ad2a6494b449e0.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/auth/setup-password/route-a1ad2a6494b449e0.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-a1ad2a6494b449e0.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-a1ad2a6494b449e0.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-a1ad2a6494b449e0.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-a1ad2a6494b449e0.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-a1ad2a6494b449e0.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-a1ad2a6494b449e0.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-a1ad2a6494b449e0.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-a1ad2a6494b449e0.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-a1ad2a6494b449e0.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-a1ad2a6494b449e0.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-a1ad2a6494b449e0.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-a1ad2a6494b449e0.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-a1ad2a6494b449e0.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-a1ad2a6494b449e0.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-a1ad2a6494b449e0.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-a1ad2a6494b449e0.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-a1ad2a6494b449e0.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-a1ad2a6494b449e0.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-a1ad2a6494b449e0.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-a1ad2a6494b449e0.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/combos/route-a1ad2a6494b449e0.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-a1ad2a6494b449e0.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-a1ad2a6494b449e0.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-a1ad2a6494b449e0.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-a1ad2a6494b449e0.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-a1ad2a6494b449e0.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-a1ad2a6494b449e0.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/health/route-a1ad2a6494b449e0.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/init/route-a1ad2a6494b449e0.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-a1ad2a6494b449e0.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/keys/route-a1ad2a6494b449e0.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/locale/route-a1ad2a6494b449e0.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-a1ad2a6494b449e0.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-a1ad2a6494b449e0.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-a1ad2a6494b449e0.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-a1ad2a6494b449e0.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-a1ad2a6494b449e0.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-a1ad2a6494b449e0.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-a1ad2a6494b449e0.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-a1ad2a6494b449e0.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-a1ad2a6494b449e0.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-a1ad2a6494b449e0.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-a1ad2a6494b449e0.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/models/route-a1ad2a6494b449e0.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/models/test/route-a1ad2a6494b449e0.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-a1ad2a6494b449e0.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-a1ad2a6494b449e0.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-a1ad2a6494b449e0.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-a1ad2a6494b449e0.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-a1ad2a6494b449e0.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-a1ad2a6494b449e0.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-a1ad2a6494b449e0.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-a1ad2a6494b449e0.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-a1ad2a6494b449e0.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-a1ad2a6494b449e0.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-a1ad2a6494b449e0.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-a1ad2a6494b449e0.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-a1ad2a6494b449e0.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/pricing/route-a1ad2a6494b449e0.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-a1ad2a6494b449e0.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-a1ad2a6494b449e0.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-a1ad2a6494b449e0.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-a1ad2a6494b449e0.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-a1ad2a6494b449e0.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-a1ad2a6494b449e0.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-a1ad2a6494b449e0.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-a1ad2a6494b449e0.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-a1ad2a6494b449e0.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/providers/route-a1ad2a6494b449e0.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-a1ad2a6494b449e0.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-a1ad2a6494b449e0.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-a1ad2a6494b449e0.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-a1ad2a6494b449e0.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-a1ad2a6494b449e0.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-a1ad2a6494b449e0.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-a1ad2a6494b449e0.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-a1ad2a6494b449e0.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-a1ad2a6494b449e0.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-a1ad2a6494b449e0.js +1 -0
  791. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-a1ad2a6494b449e0.js +1 -0
  792. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-a1ad2a6494b449e0.js +1 -0
  793. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-a1ad2a6494b449e0.js +1 -0
  794. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-a1ad2a6494b449e0.js +1 -0
  795. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-a1ad2a6494b449e0.js +1 -0
  796. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-a1ad2a6494b449e0.js +1 -0
  797. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-a1ad2a6494b449e0.js +1 -0
  798. package/app/.next-cli-build/static/chunks/app/api/realtime/authorize/route-a1ad2a6494b449e0.js +1 -0
  799. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-a1ad2a6494b449e0.js +1 -0
  800. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-a1ad2a6494b449e0.js +1 -0
  801. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-a1ad2a6494b449e0.js +1 -0
  802. package/app/.next-cli-build/static/chunks/app/api/settings/route-a1ad2a6494b449e0.js +1 -0
  803. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-a1ad2a6494b449e0.js +1 -0
  804. package/app/.next-cli-build/static/chunks/app/api/tags/route-a1ad2a6494b449e0.js +1 -0
  805. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-a1ad2a6494b449e0.js +1 -0
  806. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-a1ad2a6494b449e0.js +1 -0
  807. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-a1ad2a6494b449e0.js +1 -0
  808. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-a1ad2a6494b449e0.js +1 -0
  809. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-a1ad2a6494b449e0.js +1 -0
  810. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-a1ad2a6494b449e0.js +1 -0
  811. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-a1ad2a6494b449e0.js +1 -0
  812. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-a1ad2a6494b449e0.js +1 -0
  813. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-a1ad2a6494b449e0.js +1 -0
  814. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-a1ad2a6494b449e0.js +1 -0
  815. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-a1ad2a6494b449e0.js +1 -0
  816. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-a1ad2a6494b449e0.js +1 -0
  817. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-a1ad2a6494b449e0.js +1 -0
  818. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-a1ad2a6494b449e0.js +1 -0
  819. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-a1ad2a6494b449e0.js +1 -0
  820. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-a1ad2a6494b449e0.js +1 -0
  821. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-a1ad2a6494b449e0.js +1 -0
  822. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-a1ad2a6494b449e0.js +1 -0
  823. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-a1ad2a6494b449e0.js +1 -0
  824. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-a1ad2a6494b449e0.js +1 -0
  825. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-a1ad2a6494b449e0.js +1 -0
  826. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-a1ad2a6494b449e0.js +1 -0
  827. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-a1ad2a6494b449e0.js +1 -0
  828. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-a1ad2a6494b449e0.js +1 -0
  829. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-a1ad2a6494b449e0.js +1 -0
  830. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-a1ad2a6494b449e0.js +1 -0
  831. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-a1ad2a6494b449e0.js +1 -0
  832. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-a1ad2a6494b449e0.js +1 -0
  833. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-a1ad2a6494b449e0.js +1 -0
  834. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-a1ad2a6494b449e0.js +1 -0
  835. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-a1ad2a6494b449e0.js +1 -0
  836. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-a1ad2a6494b449e0.js +1 -0
  837. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-a1ad2a6494b449e0.js +1 -0
  838. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-a1ad2a6494b449e0.js +1 -0
  839. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-a1ad2a6494b449e0.js +1 -0
  840. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-a1ad2a6494b449e0.js +1 -0
  841. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-a1ad2a6494b449e0.js +1 -0
  842. package/app/.next-cli-build/static/chunks/app/api/v1/route-a1ad2a6494b449e0.js +1 -0
  843. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-a1ad2a6494b449e0.js +1 -0
  844. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-a1ad2a6494b449e0.js +1 -0
  845. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-a1ad2a6494b449e0.js +1 -0
  846. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-a1ad2a6494b449e0.js +1 -0
  847. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-a1ad2a6494b449e0.js +1 -0
  848. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-a1ad2a6494b449e0.js +1 -0
  849. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-a1ad2a6494b449e0.js +1 -0
  850. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-a1ad2a6494b449e0.js +1 -0
  851. package/app/.next-cli-build/static/chunks/app/api/version/route-a1ad2a6494b449e0.js +1 -0
  852. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-a1ad2a6494b449e0.js +1 -0
  853. package/app/.next-cli-build/static/chunks/app/api/version/update/route-a1ad2a6494b449e0.js +1 -0
  854. package/app/.next-cli-build/static/chunks/app/landing/page-1f76869d947f63aa.js +1 -0
  855. package/app/.next-cli-build/static/chunks/app/layout-c029c07aec92583d.js +1 -0
  856. package/app/.next-cli-build/static/chunks/app/login/page-61bdc6ffbffa18d7.js +1 -0
  857. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-a1ad2a6494b449e0.js +1 -0
  858. package/app/.next-cli-build/static/chunks/app/page-a1ad2a6494b449e0.js +1 -0
  859. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-a1ad2a6494b449e0.js +1 -0
  860. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-a1ad2a6494b449e0.js +1 -0
  861. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-a1ad2a6494b449e0.js +1 -0
  862. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-a1ad2a6494b449e0.js +1 -0
  863. package/app/.next-cli-build/static/css/ada9b169590290e6.css +1 -0
  864. package/app/.next-cli-build/static/css/b71ca13188930393.css +1 -0
  865. package/app/.next-cli-build/static/j9NY-4IuO21Wl7djjsl7y/_buildManifest.js +1 -0
  866. package/app/node_modules/baseline-browser-mapping/dist/index.cjs +1 -1
  867. package/app/node_modules/baseline-browser-mapping/package.json +1 -1
  868. package/app/package.json +11 -9
  869. package/app/public/i18n/literals/ar.json +4 -4
  870. package/app/public/i18n/literals/bn.json +4 -4
  871. package/app/public/i18n/literals/cs.json +4 -4
  872. package/app/public/i18n/literals/da.json +4 -4
  873. package/app/public/i18n/literals/de.json +4 -4
  874. package/app/public/i18n/literals/el.json +4 -4
  875. package/app/public/i18n/literals/es.json +4 -4
  876. package/app/public/i18n/literals/fa.json +33 -33
  877. package/app/public/i18n/literals/fi.json +4 -4
  878. package/app/public/i18n/literals/fr.json +4 -4
  879. package/app/public/i18n/literals/he.json +4 -4
  880. package/app/public/i18n/literals/hi.json +4 -4
  881. package/app/public/i18n/literals/hu.json +4 -4
  882. package/app/public/i18n/literals/id.json +4 -4
  883. package/app/public/i18n/literals/it.json +4 -4
  884. package/app/public/i18n/literals/ja.json +4 -4
  885. package/app/public/i18n/literals/km.json +33 -33
  886. package/app/public/i18n/literals/ko.json +4 -4
  887. package/app/public/i18n/literals/nl.json +4 -4
  888. package/app/public/i18n/literals/no.json +4 -4
  889. package/app/public/i18n/literals/pl.json +4 -4
  890. package/app/public/i18n/literals/pt-BR.json +4 -4
  891. package/app/public/i18n/literals/pt-PT.json +4 -4
  892. package/app/public/i18n/literals/ro.json +4 -4
  893. package/app/public/i18n/literals/ru.json +4 -4
  894. package/app/public/i18n/literals/sv.json +4 -4
  895. package/app/public/i18n/literals/th.json +33 -33
  896. package/app/public/i18n/literals/tl.json +4 -4
  897. package/app/public/i18n/literals/tr.json +4 -4
  898. package/app/public/i18n/literals/uk.json +4 -4
  899. package/app/public/i18n/literals/ur.json +4 -4
  900. package/app/public/i18n/literals/vi.json +4 -4
  901. package/app/public/i18n/literals/zh-CN.json +33 -33
  902. package/app/public/i18n/literals/zh-TW.json +4 -4
  903. package/app/src/lib/updater/updater.js +3 -3
  904. package/app/src/mitm/server.js +3 -3
  905. package/app/src/realtime/protocol.js +1 -1
  906. package/app/src/shared/services/installationTelemetry.js +156 -0
  907. package/cli.js +16 -16
  908. package/hooks/postinstall.js +5 -5
  909. package/hooks/sqliteRuntime.js +4 -4
  910. package/hooks/trayRuntime.js +6 -6
  911. package/package.json +14 -8
  912. package/src/cli/api/client.js +6 -3
  913. package/src/cli/commands/xaiVideo.js +7 -7
  914. package/src/cli/menus/cliTools.js +16 -16
  915. package/src/cli/terminalUI.js +2 -2
  916. package/src/cli/tray/autostart.js +9 -9
  917. package/src/cli/tray/tray.js +5 -5
  918. package/src/cli/tray/tray.ps1 +1 -1
  919. package/app/.next-cli-build/server/chunks/3350.js +0 -1
  920. package/app/.next-cli-build/server/chunks/4055.js +0 -9
  921. package/app/.next-cli-build/server/chunks/4223.js +0 -11
  922. package/app/.next-cli-build/server/chunks/4306.js +0 -1
  923. package/app/.next-cli-build/server/chunks/5217.js +0 -9
  924. package/app/.next-cli-build/server/chunks/6832.js +0 -1
  925. package/app/.next-cli-build/server/chunks/6935.js +0 -1
  926. package/app/.next-cli-build/server/chunks/8658.js +0 -1
  927. package/app/.next-cli-build/server/chunks/8971.js +0 -1
  928. package/app/.next-cli-build/static/2HBi62dJo0vhfF1vhuTk4/_buildManifest.js +0 -1
  929. package/app/.next-cli-build/static/chunks/3122-7d92444836703c7a.js +0 -11
  930. package/app/.next-cli-build/static/chunks/5116-8422f68a0c01ef77.js +0 -70
  931. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-4c5a22762fe663b8.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-f8b4e4dc27c90c0c.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-d73bd129f40d6396.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/_global-error/page-421648f433e539cc.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-421648f433e539cc.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-421648f433e539cc.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-421648f433e539cc.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-421648f433e539cc.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-421648f433e539cc.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-421648f433e539cc.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-421648f433e539cc.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-421648f433e539cc.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-421648f433e539cc.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-421648f433e539cc.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-421648f433e539cc.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-421648f433e539cc.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-421648f433e539cc.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-421648f433e539cc.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-421648f433e539cc.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-421648f433e539cc.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-421648f433e539cc.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-421648f433e539cc.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-421648f433e539cc.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-421648f433e539cc.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-421648f433e539cc.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-421648f433e539cc.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-421648f433e539cc.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-421648f433e539cc.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-421648f433e539cc.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-421648f433e539cc.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/combos/route-421648f433e539cc.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-421648f433e539cc.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-421648f433e539cc.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-421648f433e539cc.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-421648f433e539cc.js +0 -1
  966. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-421648f433e539cc.js +0 -1
  967. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-421648f433e539cc.js +0 -1
  968. package/app/.next-cli-build/static/chunks/app/api/health/route-421648f433e539cc.js +0 -1
  969. package/app/.next-cli-build/static/chunks/app/api/init/route-421648f433e539cc.js +0 -1
  970. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-421648f433e539cc.js +0 -1
  971. package/app/.next-cli-build/static/chunks/app/api/keys/route-421648f433e539cc.js +0 -1
  972. package/app/.next-cli-build/static/chunks/app/api/locale/route-421648f433e539cc.js +0 -1
  973. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-421648f433e539cc.js +0 -1
  974. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-421648f433e539cc.js +0 -1
  975. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-421648f433e539cc.js +0 -1
  976. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-421648f433e539cc.js +0 -1
  977. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-421648f433e539cc.js +0 -1
  978. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-421648f433e539cc.js +0 -1
  979. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-421648f433e539cc.js +0 -1
  980. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-421648f433e539cc.js +0 -1
  981. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-421648f433e539cc.js +0 -1
  982. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-421648f433e539cc.js +0 -1
  983. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-421648f433e539cc.js +0 -1
  984. package/app/.next-cli-build/static/chunks/app/api/models/route-421648f433e539cc.js +0 -1
  985. package/app/.next-cli-build/static/chunks/app/api/models/test/route-421648f433e539cc.js +0 -1
  986. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-421648f433e539cc.js +0 -1
  987. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-421648f433e539cc.js +0 -1
  988. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-421648f433e539cc.js +0 -1
  989. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-421648f433e539cc.js +0 -1
  990. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-421648f433e539cc.js +0 -1
  991. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-421648f433e539cc.js +0 -1
  992. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-421648f433e539cc.js +0 -1
  993. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-421648f433e539cc.js +0 -1
  994. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-421648f433e539cc.js +0 -1
  995. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-421648f433e539cc.js +0 -1
  996. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-421648f433e539cc.js +0 -1
  997. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-421648f433e539cc.js +0 -1
  998. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-421648f433e539cc.js +0 -1
  999. package/app/.next-cli-build/static/chunks/app/api/pricing/route-421648f433e539cc.js +0 -1
  1000. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-421648f433e539cc.js +0 -1
  1001. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-421648f433e539cc.js +0 -1
  1002. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-421648f433e539cc.js +0 -1
  1003. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-421648f433e539cc.js +0 -1
  1004. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-421648f433e539cc.js +0 -1
  1005. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-421648f433e539cc.js +0 -1
  1006. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-421648f433e539cc.js +0 -1
  1007. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-421648f433e539cc.js +0 -1
  1008. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-421648f433e539cc.js +0 -1
  1009. package/app/.next-cli-build/static/chunks/app/api/providers/route-421648f433e539cc.js +0 -1
  1010. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-421648f433e539cc.js +0 -1
  1011. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-421648f433e539cc.js +0 -1
  1012. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-421648f433e539cc.js +0 -1
  1013. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-421648f433e539cc.js +0 -1
  1014. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-421648f433e539cc.js +0 -1
  1015. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-421648f433e539cc.js +0 -1
  1016. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-421648f433e539cc.js +0 -1
  1017. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-421648f433e539cc.js +0 -1
  1018. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-421648f433e539cc.js +0 -1
  1019. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-421648f433e539cc.js +0 -1
  1020. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-421648f433e539cc.js +0 -1
  1021. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-421648f433e539cc.js +0 -1
  1022. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-421648f433e539cc.js +0 -1
  1023. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-421648f433e539cc.js +0 -1
  1024. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-421648f433e539cc.js +0 -1
  1025. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-421648f433e539cc.js +0 -1
  1026. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-421648f433e539cc.js +0 -1
  1027. package/app/.next-cli-build/static/chunks/app/api/realtime/authorize/route-421648f433e539cc.js +0 -1
  1028. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-421648f433e539cc.js +0 -1
  1029. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-421648f433e539cc.js +0 -1
  1030. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-421648f433e539cc.js +0 -1
  1031. package/app/.next-cli-build/static/chunks/app/api/settings/route-421648f433e539cc.js +0 -1
  1032. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-421648f433e539cc.js +0 -1
  1033. package/app/.next-cli-build/static/chunks/app/api/tags/route-421648f433e539cc.js +0 -1
  1034. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-421648f433e539cc.js +0 -1
  1035. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-421648f433e539cc.js +0 -1
  1036. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-421648f433e539cc.js +0 -1
  1037. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-421648f433e539cc.js +0 -1
  1038. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-421648f433e539cc.js +0 -1
  1039. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-421648f433e539cc.js +0 -1
  1040. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-421648f433e539cc.js +0 -1
  1041. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-421648f433e539cc.js +0 -1
  1042. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-421648f433e539cc.js +0 -1
  1043. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-421648f433e539cc.js +0 -1
  1044. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-421648f433e539cc.js +0 -1
  1045. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-421648f433e539cc.js +0 -1
  1046. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-421648f433e539cc.js +0 -1
  1047. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-421648f433e539cc.js +0 -1
  1048. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-421648f433e539cc.js +0 -1
  1049. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-421648f433e539cc.js +0 -1
  1050. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-421648f433e539cc.js +0 -1
  1051. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-421648f433e539cc.js +0 -1
  1052. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-421648f433e539cc.js +0 -1
  1053. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-421648f433e539cc.js +0 -1
  1054. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-421648f433e539cc.js +0 -1
  1055. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-421648f433e539cc.js +0 -1
  1056. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-421648f433e539cc.js +0 -1
  1057. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-421648f433e539cc.js +0 -1
  1058. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-421648f433e539cc.js +0 -1
  1059. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-421648f433e539cc.js +0 -1
  1060. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-421648f433e539cc.js +0 -1
  1061. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-421648f433e539cc.js +0 -1
  1062. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-421648f433e539cc.js +0 -1
  1063. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-421648f433e539cc.js +0 -1
  1064. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-421648f433e539cc.js +0 -1
  1065. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-421648f433e539cc.js +0 -1
  1066. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-421648f433e539cc.js +0 -1
  1067. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-421648f433e539cc.js +0 -1
  1068. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-421648f433e539cc.js +0 -1
  1069. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-421648f433e539cc.js +0 -1
  1070. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-421648f433e539cc.js +0 -1
  1071. package/app/.next-cli-build/static/chunks/app/api/v1/route-421648f433e539cc.js +0 -1
  1072. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-421648f433e539cc.js +0 -1
  1073. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-421648f433e539cc.js +0 -1
  1074. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-421648f433e539cc.js +0 -1
  1075. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-421648f433e539cc.js +0 -1
  1076. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-421648f433e539cc.js +0 -1
  1077. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-421648f433e539cc.js +0 -1
  1078. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-421648f433e539cc.js +0 -1
  1079. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-421648f433e539cc.js +0 -1
  1080. package/app/.next-cli-build/static/chunks/app/api/version/route-421648f433e539cc.js +0 -1
  1081. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-421648f433e539cc.js +0 -1
  1082. package/app/.next-cli-build/static/chunks/app/api/version/update/route-421648f433e539cc.js +0 -1
  1083. package/app/.next-cli-build/static/chunks/app/landing/page-d0dc2acaf2a1c239.js +0 -1
  1084. package/app/.next-cli-build/static/chunks/app/layout-1c95599c7054cadc.js +0 -1
  1085. package/app/.next-cli-build/static/chunks/app/login/page-744fd018e592b5f6.js +0 -1
  1086. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-421648f433e539cc.js +0 -1
  1087. package/app/.next-cli-build/static/chunks/app/page-421648f433e539cc.js +0 -1
  1088. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-421648f433e539cc.js +0 -1
  1089. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-421648f433e539cc.js +0 -1
  1090. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-421648f433e539cc.js +0 -1
  1091. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-421648f433e539cc.js +0 -1
  1092. package/app/.next-cli-build/static/css/f21ca4a324c22a6c.css +0 -1
  1093. package/app/.next-cli-build/static/css/fa9e956ea578b5b8.css +0 -1
  1094. /package/app/.next-cli-build/static/{2HBi62dJo0vhfF1vhuTk4 → j9NY-4IuO21Wl7djjsl7y}/_ssgManifest.js +0 -0
@@ -15,19 +15,19 @@
15
15
  "1. CLI & SDKs": "1. CLI 和 SDK",
16
16
  "1. Client Request (Input)": "1. 客户端请求(输入)",
17
17
  "1. Generates SSL cert & adds to system keychain": "1. 生成 SSL 证书并添加到系统钥匙串",
18
- "2. 9Router Hub": "2. 9Router 枢纽",
18
+ "2. PolyRouter Hub": "2. PolyRouter 枢纽",
19
19
  "2. Provider Request (Translated)": "2. 提供商请求(已​​翻译)",
20
20
  "2. Redirects": "2. 重定向",
21
21
  "24h": "24小时",
22
22
  "3. AI Providers": "3. AI 提供商",
23
- "3. Maps Antigravity models to any provider via 9Router": "3. 通过 9Router 将Antigravity模型映射到任何提供商",
23
+ "3. Maps Antigravity models to any provider via PolyRouter": "3. 通过 PolyRouter 将Antigravity模型映射到任何提供商",
24
24
  "3. Provider Response (Raw)": "3. 提供商响应(原始)",
25
25
  "30D": "30 天",
26
26
  "4. Client Response (Final)": "4. 客户端响应(最终)",
27
27
  "60D": "60 天",
28
28
  "7D": "7 天",
29
- "9Router (Entry)": "9Router(入口)",
30
- "9Router Base URL": "9Router 基础 URL",
29
+ "PolyRouter (Entry)": "PolyRouter(入口)",
30
+ "PolyRouter Base URL": "PolyRouter 基础 URL",
31
31
  ": Account | Workers Scripts | Edit": ":账号 | Workers 脚本 | 编辑",
32
32
  ": Include | Account |": ":包含 | 账号 |",
33
33
  "AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.": "AI 端点代理,附带 Web 仪表盘 — CLIProxyAPI 的 JavaScript 移植版。与 Claude Code、OpenAI Codex、Cline、RooCode 和其他 CLI 工具无缝协作。",
@@ -88,12 +88,12 @@
88
88
  "Add the following configuration to your models array:": "将以下配置添加到您的 models 数组中:",
89
89
  "Add your first connection to get started": "添加您的第一个连接以开始使用",
90
90
  "Administrator required": "需要管理员权限",
91
- "Administrator required — restart 9Router as Administrator to use MITM": "需要管理员权限 — 以管理员身份重新启动 9Router 以使用 MITM",
91
+ "Administrator required — restart PolyRouter as Administrator to use MITM": "需要管理员权限 — 以管理员身份重新启动 PolyRouter 以使用 MITM",
92
92
  "After authorization, copy the full URL from your browser address bar.": "授权后,从浏览器地址栏中复制完整的 URL。",
93
93
  "After authorization, copy the full URL from your browser.": "授权后,从浏览器复制完整的 URL。",
94
94
  "After installation, run": "安装后,运行",
95
95
  "After login, you'll need to copy the callback URL from your browser and paste it back here.": "登录后,您需要从浏览器复制回调 URL 并将其粘贴回此处。",
96
- "Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via 9Router": "阿里巴巴 Qwen Code CLI — 通过 9Router 支持 OpenAI、Anthropic 和 Gemini 提供商",
96
+ "Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via PolyRouter": "阿里巴巴 Qwen Code CLI — 通过 PolyRouter 支持 OpenAI、Anthropic 和 Gemini 提供商",
97
97
  "All": "全部",
98
98
  "All AI Providers": "所有 AI 提供商",
99
99
  "All Providers": "所有提供商",
@@ -108,8 +108,8 @@
108
108
  "Anthropic Claude Code CLI": "Anthropic Claude Code CLI",
109
109
  "Anthropic Compatible (Prod)": "Anthropic 兼容(生产)",
110
110
  "Anthropic Compatible Details": "Anthropic 兼容详情",
111
- "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot": "Antigravity/Copilot IDE 请求 → DNS 重定向到 localhost:443 → MITM 代理拦截 → 9Router → 响应返回 Antigravity/Copilot",
112
- "Any model available in 9Router can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more.": "9Router 中可用的任何模型都可以使用——不仅仅是 Qwen 模型。从 Qwen、Claude、Gemini、GPT 等中选择。",
111
+ "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → PolyRouter → response to Antigravity/Copilot": "Antigravity/Copilot IDE 请求 → DNS 重定向到 localhost:443 → MITM 代理拦截 → PolyRouter → 响应返回 Antigravity/Copilot",
112
+ "Any model available in PolyRouter can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more.": "PolyRouter 中可用的任何模型都可以使用——不仅仅是 Qwen 模型。从 Qwen、Claude、Gemini、GPT 等中选择。",
113
113
  "App Name": "应用名称",
114
114
  "Apply": "应用",
115
115
  "Apply Proxy": "应用代理",
@@ -253,7 +253,7 @@
253
253
  "Config path: Linux/macOS ~/.deepseek/config.toml • Windows %USERPROFILE%\\.deepseek\\config.toml": "配置路径:Linux/macOS ~/.deepseek/config.toml • Windows %USERPROFILE%\\.deepseek\\config.toml",
254
254
  "Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json": "配置路径:Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json",
255
255
  "Configuration": "配置",
256
- "Configure 9router as an OpenAI-compatible provider to route all jcode requests through 9router's optimization layer.": "将 9router 配置为 OpenAI 兼容提供商,以通过 9router 的优化层路由所有 jcode 请求。",
256
+ "Configure polyrouter as an OpenAI-compatible provider to route all jcode requests through polyrouter's optimization layer.": "将 polyrouter 配置为 OpenAI 兼容提供商,以通过 polyrouter 的优化层路由所有 jcode 请求。",
257
257
  "Configure CLI tools": "配置 CLI 工具",
258
258
  "Configure a new AI provider to use with your applications.": "配置新的 AI 提供程序以与您的应用程序一起使用。",
259
259
  "Configure pricing rates for cost tracking and calculations": "配置定价以进行成本跟踪和计算",
@@ -296,7 +296,7 @@
296
296
  "Copy": "复制",
297
297
  "Copy & Shutdown": "复制并关闭",
298
298
  "Copy This URL": "复制此 URL",
299
- "Copy a link and paste to your AI to use 9Router — no install needed": "复制链接并粘贴到您的 AI 以使用 9Router — 无需安装",
299
+ "Copy a link and paste to your AI to use PolyRouter — no install needed": "复制链接并粘贴到您的 AI 以使用 PolyRouter — 无需安装",
300
300
  "Copy combo name": "复制组合名称",
301
301
  "Copy install command": "复制安装命令",
302
302
  "Copy model": "复制模型",
@@ -354,7 +354,7 @@
354
354
  "Debug translation flow between formats": "调试格式之间的翻译流程",
355
355
  "DeepSeek TUI - Manual Configuration": "DeepSeek TUI - 手动配置",
356
356
  "DeepSeek TUI not detected locally": "未在本地检测到 DeepSeek TUI",
357
- "DeepSeek TUI uses ~/.deepseek/config.toml for configuration. 9Router will update the provider to 'openai' mode with your base_url, api_key, and model.": "DeepSeek TUI 使用 ~/.deepseek/config.toml 进行配置。9Router 将提供商更新为 'openai' 模式,包含您的 base_url、api_key 和 model。",
357
+ "DeepSeek TUI uses ~/.deepseek/config.toml for configuration. PolyRouter will update the provider to 'openai' mode with your base_url, api_key, and model.": "DeepSeek TUI 使用 ~/.deepseek/config.toml 进行配置。PolyRouter 将提供商更新为 'openai' 模式,包含您的 base_url、api_key 和 model。",
358
358
  "DeepSeek Terminal Coding Agent (Rust TUI)": "DeepSeek 终端编程代理(Rust TUI)",
359
359
  "Default Model": "默认模型",
360
360
  "Default password is": "默认密码为",
@@ -454,7 +454,7 @@
454
454
  "Expires At": "过期时间",
455
455
  "Expiring first": "即将过期优先",
456
456
  "Expiring-first currently reorders accounts inside the current page. Cross-page ordering still follows backend pagination.": "「即将过期优先」当前会在当前页面内重新排序账号。跨页面排序仍遵循后端分页。",
457
- "Expose your local 9Router to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere.": "将您本地的 9Router 暴露到互联网。无需端口转发,无需静态 IP。与您的团队共享端点 URL 或从任何地方在 Cursor、Cline 和其他 AI 工具中使用它。",
457
+ "Expose your local PolyRouter to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere.": "将您本地的 PolyRouter 暴露到互联网。无需端口转发,无需静态 IP。与您的团队共享端点 URL 或从任何地方在 Cursor、Cline 和其他 AI 工具中使用它。",
458
458
  "Factory Droid - Manual Configuration": "Factory Droid - 手动配置",
459
459
  "Factory Droid AI Assistant": "Factory Droid AI 助手",
460
460
  "Factory Droid CLI not detected locally": "未在本地检测到 Factory Droid CLI",
@@ -532,7 +532,7 @@
532
532
  "High performance global routing and IP masking via Cloudflare Workers": "通过 Cloudflare Workers 实现高性能全局路由和 IP 隐藏",
533
533
  "High-performance Rust-based coding agent harness": "基于 Rust 的高性能编程代理框架",
534
534
  "History": "历史记录",
535
- "How 9Router Works": "9Router 工作原理",
535
+ "How PolyRouter Works": "PolyRouter 工作原理",
536
536
  "How Pricing Works": "定价如何运作",
537
537
  "How it Works": "工作原理",
538
538
  "How it works:": "工作原理:",
@@ -561,8 +561,8 @@
561
561
  "Input Tokens": "输入 Token",
562
562
  "Input Tokens:": "输入 Token:",
563
563
  "Input:": "输入:",
564
- "Install 9Router": "安装 9Router",
565
- "Install 9Router, configure your providers via web dashboard, and start routing AI requests.": "安装 9Router,通过 Web 仪表盘配置您的提供商,然后开始路由 AI 请求。",
564
+ "Install PolyRouter": "安装 PolyRouter",
565
+ "Install PolyRouter, configure your providers via web dashboard, and start routing AI requests.": "安装 PolyRouter,通过 Web 仪表盘配置您的提供商,然后开始路由 AI 请求。",
566
566
  "Install Chrome extension": "安装 Chrome 扩展",
567
567
  "Install Cline VS Code extension or CLI from": "从以下位置安装 Cline VS Code 扩展或 CLI",
568
568
  "Install Kilo Code from": "从以下位置安装 Kilo Code",
@@ -576,14 +576,14 @@
576
576
  "Installation Guide": "安装指南",
577
577
  "Installing Tailscale...": "正在安装 Tailscale...",
578
578
  "Interactive diagram visible on desktop": "桌面上可见的交互式图表",
579
- "Intercept CLI tool traffic and route through 9Router": "拦截 CLI 工具流量并通过 9Router 路由",
580
- "Intercepts Antigravity traffic via DNS redirect, letting you reroute models through 9Router.": "通过 DNS 重定向拦截Antigravity流量,让您可以通过 9Router 重新路由模型。",
579
+ "Intercept CLI tool traffic and route through PolyRouter": "拦截 CLI 工具流量并通过 PolyRouter 路由",
580
+ "Intercepts Antigravity traffic via DNS redirect, letting you reroute models through PolyRouter.": "通过 DNS 重定向拦截Antigravity流量,让您可以通过 PolyRouter 重新路由模型。",
581
581
  "Intercepts Claude Code's topic-naming requests and returns a fake response locally, saving API tokens.": "拦截 Claude Code 的主题命名请求并在本地返回伪响应,节省 API Token。",
582
582
  "Invalid": "无效",
583
583
  "Invalid password": "密码错误",
584
584
  "Issuer URL": "发行者 URL",
585
585
  "JSON Response": "JSON 响应",
586
- "Join developers who are streamlining their AI integrations with 9Router. Open source and free to start.": "加入正在使用 9Router 简化 AI 集成的开发者行列。开源且免费。",
586
+ "Join developers who are streamlining their AI integrations with PolyRouter. Open source and free to start.": "加入正在使用 PolyRouter 简化 AI 集成的开发者行列。开源且免费。",
587
587
  "Judge": "裁判",
588
588
  "Just now": "刚刚",
589
589
  "KB per field": "每个字段的 KB",
@@ -664,8 +664,8 @@
664
664
  "Manual / current endpoint": "手动/当前端点",
665
665
  "Manual Callback Required": "需要手动回调",
666
666
  "Manual Config": "手动配置",
667
- "Manual configuration is still available if 9router is deployed on a remote server.": "如果 9router 部署在远程服务器上,仍可使用手动配置。",
668
- "Map Amp shorthand names such as g25p or cs45 to 9Router aliases in your local config.": "将 Amp 简写名称(如 g25p 或 cs45)映射到本地配置中的 9Router 别名。",
667
+ "Manual configuration is still available if polyrouter is deployed on a remote server.": "如果 polyrouter 部署在远程服务器上,仍可使用手动配置。",
668
+ "Map Amp shorthand names such as g25p or cs45 to PolyRouter aliases in your local config.": "将 Amp 简写名称(如 g25p 或 cs45)映射到本地配置中的 PolyRouter 别名。",
669
669
  "Mask (URL)": "遮罩(URL)",
670
670
  "Max JSON Size (KB)": "最大 JSON 大小 (KB)",
671
671
  "Max Records": "最大记录数",
@@ -916,8 +916,8 @@
916
916
  "Python ≥ 3.10 required for local managed mode. Install Python first, or use an external proxy URL.": "本地管理模式需要 Python ≥ 3.10。请先安装 Python,或使用外部代理 URL。",
917
917
  "Quota Tracker": "配额跟踪器",
918
918
  "Qwen": "Qwen",
919
- "Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. 9Router works as an OpenAI-compatible endpoint.": "Qwen Code 通过 settings.json 中的 modelProviders 支持多种提供商类型(openai、anthropic、gemini)。9Router 作为 OpenAI 兼容端点工作。",
920
- "Qwen OAuth free tier was discontinued on 2026-04-15. Use 9Router with alicode/openrouter/anthropic/gemini providers instead.": "Qwen OAuth 免费套餐已于 2026-04-15 停止。请改用带有 alicode/openrouter/anthropic/gemini 提供商的 9Router。",
919
+ "Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. PolyRouter works as an OpenAI-compatible endpoint.": "Qwen Code 通过 settings.json 中的 modelProviders 支持多种提供商类型(openai、anthropic、gemini)。PolyRouter 作为 OpenAI 兼容端点工作。",
920
+ "Qwen OAuth free tier was discontinued on 2026-04-15. Use PolyRouter with alicode/openrouter/anthropic/gemini providers instead.": "Qwen OAuth 免费套餐已于 2026-04-15 停止。请改用带有 alicode/openrouter/anthropic/gemini 提供商的 PolyRouter。",
921
921
  "Rate Limited": "被限流",
922
922
  "Read Documentation": "阅读文档",
923
923
  "Reading from AWS SSO cache": "从 AWS SSO 缓存中读取",
@@ -1104,7 +1104,7 @@
1104
1104
  "Start Server": "启动服务器",
1105
1105
  "Start Tunnel": "开始隧道",
1106
1106
  "Start a conversation": "开始一个对话",
1107
- "Starting 9Router...": "正在启动 9Router...",
1107
+ "Starting PolyRouter...": "正在启动 PolyRouter...",
1108
1108
  "Status": "状态",
1109
1109
  "Status:": "状态:",
1110
1110
  "Step 1: Open this URL in your browser": "第 1 步:在浏览器中打开此 URL",
@@ -1223,7 +1223,7 @@
1223
1223
  "Unknown": "未知",
1224
1224
  "Unselect all": "取消选择全部",
1225
1225
  "Update": "更新",
1226
- "Update 9Router": "更新 9Router",
1226
+ "Update PolyRouter": "更新 PolyRouter",
1227
1227
  "Update Password": "修改密码",
1228
1228
  "Update now": "立即更新",
1229
1229
  "Upstream Auth Error": "上游认证错误",
@@ -1238,8 +1238,8 @@
1238
1238
  "Usage by Endpoint": "按端点统计",
1239
1239
  "Usage by Model": "按模型统计",
1240
1240
  "Usage:": "用法:",
1241
- "Use 9Router model aliases to keep Amp shorthand mappings stable across provider updates.": "使用 9Router 模型别名来保持 Amp 简写映射在提供商更新时稳定。",
1242
- "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router": "使用 Antigravity IDE 和 GitHub Copilot → 与 9Router 的任何提供商/模型",
1241
+ "Use PolyRouter model aliases to keep Amp shorthand mappings stable across provider updates.": "使用 PolyRouter 模型别名来保持 Amp 简写映射在提供商更新时稳定。",
1242
+ "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from PolyRouter": "使用 Antigravity IDE 和 GitHub Copilot → 与 PolyRouter 的任何提供商/模型",
1243
1243
  "Use Authentik or any OIDC provider to sign in to the dashboard.": "使用 Authentik 或任何 OIDC 提供商登录仪表盘。",
1244
1244
  "Use Authentik or any OIDC provider to sign in to the dashboard. You can enable password-only, OIDC-only, or both for the dashboard; model API access still uses API keys.": "使用 Authentik 或任何 OIDC 提供商登录仪表盘。您可以启用仅密码、仅 OIDC 或两者同时启用;模型 API 访问仍使用 API 密钥。",
1245
1245
  "Use a GitLab OAuth application": "使用 GitLab OAuth 应用",
@@ -1279,8 +1279,8 @@
1279
1279
  "When": "时间",
1280
1280
  "When ON, dashboard requires password. When OFF, access without login.": "当打开时,仪表板需要密码。当关闭时,无需登录即可访问。",
1281
1281
  "Windows:": "Windows:",
1282
- "Windows: Run 9Router terminal as Administrator": "Windows:以管理员身份运行 9Router 终端",
1283
- "Windows: Run terminal (9Router) as Administrator to enable MITM": "Windows:以管理员身份运行终端 (9Router) 以启用 MITM",
1282
+ "Windows: Run PolyRouter terminal as Administrator": "Windows:以管理员身份运行 PolyRouter 终端",
1283
+ "Windows: Run terminal (PolyRouter) as Administrator to enable MITM": "Windows:以管理员身份运行终端 (PolyRouter) 以启用 MITM",
1284
1284
  "Worker Name": "Worker 名称",
1285
1285
  "Works on any device": "适用于任何设备",
1286
1286
  "Writes to": "写入到",
@@ -1341,8 +1341,8 @@
1341
1341
  "name|apiKey": "name|apiKey",
1342
1342
  "no_proxy:": "无代理:",
1343
1343
  "not detected locally": "未在本地检测到",
1344
- "npm install -g 9router": "npm install -g 9router",
1345
- "npx 9router": "npx 9router",
1344
+ "npm install -g polyrouter": "npm install -g polyrouter",
1345
+ "npx polyrouter": "npx polyrouter",
1346
1346
  "open http://localhost:9099": "open http://localhost:9099",
1347
1347
  "openid profile email": "openid profile email",
1348
1348
  "optional context to improve accuracy": "可选的上下文,用于提高准确性",
@@ -1359,20 +1359,20 @@
1359
1359
  "seconds...": "秒...",
1360
1360
  "sends image/PDF/audio requests to a model that supports them first": "将图片/PDF/音频请求优先发送到支持的模型",
1361
1361
  "sk-...": "sk-...",
1362
- "sk_9router (default)": "sk_9router(默认)",
1362
+ "sk_polyrouter (default)": "sk_polyrouter(默认)",
1363
1363
  "system": "跟随系统",
1364
1364
  "tested": "已测试",
1365
1365
  "the database.": "数据库。",
1366
1366
  "to apply changes": "以使更改生效",
1367
1367
  "to verify.": "来验证。",
1368
- "traffic through 9Router via MITM.": "通过 MITM 通过 9Router 的流量。",
1368
+ "traffic through PolyRouter via MITM.": "通过 MITM 通过 PolyRouter 的流量。",
1369
1369
  "tries models in order (next on failure)": "按顺序尝试模型(失败时切换到下一个)",
1370
1370
  "unknown": "未知",
1371
1371
  "v1.0 is now live": "v1.0 现已上线",
1372
1372
  "vercel relay": "vercel 中继",
1373
1373
  "yet.": "。",
1374
1374
  "your-org.deno.net": "your-org.deno.net",
1375
- "© 2025 9Router. All rights reserved.": "© 2025 9Router。保留所有权利。",
1375
+ "© 2025 PolyRouter. All rights reserved.": "© 2025 PolyRouter。保留所有权利。",
1376
1376
  "— queries all models in parallel, then a judge synthesizes one answer. Best quality, but costs the most: every request bills all panel models + the judge (N+1 calls)": "— 并行查询所有模型,然后由裁判综合出一个答案。质量最佳但成本最高:每次请求会计费所有面板模型 + 裁判(N+1 次调用)",
1377
1377
  "— rotates models across requests to spread load": "— 在请求间轮换模型以分散负载",
1378
1378
  "— sends image/PDF/audio requests to a model that supports them first": "— 将图片/PDF/音频请求优先发送到支持的模型",
@@ -108,7 +108,7 @@
108
108
  "Manage your AI provider connections": "管理您的 AI 提供者連接",
109
109
  "Model combos with fallback": "具有備用的模型組合",
110
110
  "Monitor your API usage, token consumption, and request logs": "監控您的 API 使用、令牌消耗和請求日誌",
111
- "Intercept CLI tool traffic and route through 9Router": "攔截 CLI 工具流量並通過 9Router 路由",
111
+ "Intercept CLI tool traffic and route through PolyRouter": "攔截 CLI 工具流量並通過 PolyRouter 路由",
112
112
  "Configure CLI tools": "配置 CLI 工具",
113
113
  "API endpoint configuration": "API 端點配置",
114
114
  "Manage your preferences": "管理您的首選項",
@@ -172,11 +172,11 @@
172
172
  "Cert": "證書",
173
173
  "Server": "服務器",
174
174
  "Purpose:": "目的:",
175
- "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from 9Router": "使用 Antigravity IDE 和 GitHub Copilot → 與 9Router 中的任何提供者/模型一起",
175
+ "Use Antigravity IDE & GitHub Copilot → with ANY provider/model from PolyRouter": "使用 Antigravity IDE 和 GitHub Copilot → 與 PolyRouter 中的任何提供者/模型一起",
176
176
  "How it works:": "工作原理:",
177
- "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → 9Router → response to Antigravity/Copilot": "Antigravity/Copilot IDE 請求 → DNS 重定向到 localhost:443 → MITM 代理攔截 → 9Router → 响應到 Antigravity/Copilot",
177
+ "Antigravity/Copilot IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → PolyRouter → response to Antigravity/Copilot": "Antigravity/Copilot IDE 請求 → DNS 重定向到 localhost:443 → MITM 代理攔截 → PolyRouter → 响應到 Antigravity/Copilot",
178
178
  "No API keys — create one in Keys page": "沒有 API 金鑰 — 在金鑰頁面中創建一個",
179
- "sk_9router (default)": "sk_9router(默認)",
179
+ "sk_polyrouter (default)": "sk_polyrouter(默認)",
180
180
  "Server started": "服務器已啟動",
181
181
  "Failed to start server": "啟動服務器失敗",
182
182
  "Server stopped — all DNS cleared": "服務器已停止 — 已清除所有 DNS",
@@ -9,7 +9,7 @@ const path = require("path");
9
9
  const fs = require("fs");
10
10
  const os = require("os");
11
11
 
12
- const packageName = process.env.UPDATER_PKG_NAME || "9router";
12
+ const packageName = process.env.UPDATER_PKG_NAME || "polyrouter";
13
13
  const port = parseInt(process.env.UPDATER_PORT || "20129", 10);
14
14
  const tailLines = parseInt(process.env.UPDATER_TAIL_LINES || "8", 10);
15
15
  const maxRetries = parseInt(process.env.UPDATER_RETRIES || "3", 10);
@@ -24,9 +24,9 @@ const appPort = parseInt(process.env.UPDATER_APP_PORT || "20128", 10);
24
24
  function getDataDir() {
25
25
  if (process.env.DATA_DIR) return process.env.DATA_DIR;
26
26
  if (process.platform === "win32") {
27
- return path.join(process.env.APPDATA || path.join(os.homedir(), "AppData", "Roaming"), "9router");
27
+ return path.join(process.env.APPDATA || path.join(os.homedir(), "AppData", "Roaming"), "polyrouter");
28
28
  }
29
- return path.join(os.homedir(), ".9router");
29
+ return path.join(os.homedir(), ".polyrouter");
30
30
  }
31
31
  const updateDir = path.join(getDataDir(), "update");
32
32
  try { fs.mkdirSync(updateDir, { recursive: true }); } catch { /* best effort */ }
@@ -1,4 +1,4 @@
1
- var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rr=F((nh,zn)=>{var yu=require("fs"),Fr=require("path"),qn=require("os"),_a="9router";function Hn(){return process.platform==="win32"?Fr.join(process.env.APPDATA||Fr.join(qn.homedir(),"AppData","Roaming"),_a):Fr.join(qn.homedir(),`.${_a}`)}function vu(){let e=process.env.DATA_DIR;if(!e)return Hn();try{return yu.mkdirSync(e,{recursive:!0}),e}catch(t){if(t?.code==="EACCES"||t?.code==="EPERM")return console.warn(`[DATA_DIR] '${e}' not writable \u2192 fallback ~/.${_a}`),Hn();throw t}}var Gn=vu(),mu=Fr.join(Gn,"mitm");zn.exports={DATA_DIR:Gn,MITM_DIR:mu}});var Er=F((ih,Yn)=>{var Qn=require("fs"),Cu=process.env.NODE_ENV==="development",Eu=(()=>{if(process.platform==="win32")return null;for(let e of["/usr/sbin/lsof","/usr/bin/lsof","/sbin/lsof"])try{return Qn.accessSync(e,Qn.constants.X_OK),e}catch{}return"lsof"})(),xu=["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","runtime.us-east-1.kiro.dev","api2.cursor.sh"],Su={antigravity:[":generateContent",":streamGenerateContent"],copilot:["/chat/completions","/v1/messages","/responses"],kiro:["/generateAssistantResponse"],cursor:["/BidiAppend","/RunSSE","/RunPoll","/Run"]},Tu={antigravity:{"gemini-default":"gemini-3.5-flash-low","gemini-3.5-flash-high":"gemini-3-flash-agent","gemini-3.5-flash-medium":"gemini-3.5-flash-low","gemini-3.5-flash-extra-low":"gemini-3.5-flash-extra-low","gemini-3.1-pro-high":"gemini-pro-agent","gemini-3-pro-high":"gemini-pro-agent","gemini-3-pro-low":"gemini-3.1-pro-low"}},Au={antigravity:[{match:/flash.*extra.*low|extra.*low.*flash|flash.*low|low.*flash/i,alias:"gemini-3.5-flash-extra-low"},{match:/flash.*medium|medium.*flash/i,alias:"gemini-3.5-flash-low"},{match:/flash.*agent|agent.*flash|flash/i,alias:"gemini-3-flash-agent"},{match:/pro.*low|low.*pro/i,alias:"gemini-3.1-pro-low"},{match:/gemini.*pro|pro.*gemini/i,alias:"gemini-pro-agent"},{match:/opus/i,alias:"claude-opus-4-6-thinking"},{match:/sonnet|claude/i,alias:"claude-sonnet-4-6"},{match:/gpt.*oss|oss/i,alias:"gpt-oss-120b-medium"}]},Iu={antigravity:[/^tab[_-]/i]},Bu=["recordCodeAssistMetrics","recordTrajectoryAnalytics","fetchAdminControls","listExperiments","fetchUserInfo"];function bu(e){let t=(e||"").split(":")[0];return t==="api.individual.githubcopilot.com"?"copilot":t==="daily-cloudcode-pa.googleapis.com"||t==="cloudcode-pa.googleapis.com"?"antigravity":t==="q.us-east-1.amazonaws.com"||t==="codewhisperer.us-east-1.amazonaws.com"||t==="runtime.us-east-1.kiro.dev"?"kiro":t==="api2.cursor.sh"?"cursor":null}Yn.exports={IS_DEV:Cu,LSOF_BIN:Eu,TARGET_HOSTS:xu,URL_PATTERNS:Su,MODEL_SYNONYMS:Tu,MODEL_PATTERNS:Au,MODEL_NO_MAP:Iu,LOG_BLACKLIST_URL_PARTS:Bu,getToolForHost:bu}});var Gt=F((sh,Xn)=>{var qt=require("fs"),Kr=require("path"),Na=require("zlib"),{DATA_DIR:_u}=rr(),{LOG_BLACKLIST_URL_PARTS:Nu}=Er();function $n(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}var wu=e=>console.log(`[${$n()}] [MITM] ${e}`),Ru=e=>console.error(`[${$n()}] \u274C [MITM] ${e}`),Ht=Kr.join(_u,"logs","mitm");qt.existsSync(Ht)||qt.mkdirSync(Ht,{recursive:!0});function Lu(){try{if(!qt.existsSync(Ht))return;for(let e of qt.readdirSync(Ht))try{qt.rmSync(Kr.join(Ht,e),{recursive:!0,force:!0})}catch{}}catch{}}var ku=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function jn(e,t=80){return String(e).replace(/[^a-zA-Z0-9]/g,"_").substring(0,t)}function Wn(e){return e?Nu.some(t=>e.includes(t)):!1}function Du(e,t){if(!e||e.length===0)return e;try{let a=(t||"").toLowerCase();if(a.includes("gzip"))return Na.gunzipSync(e);if(a.includes("br"))return Na.brotliDecompressSync(e);if(a.includes("deflate"))return Na.inflateSync(e)}catch{}return e}function Uu(e,t,a="raw"){if(Wn(e.url))return null;try{let r=new Date().toISOString().replace(/[:.]/g,"-"),n=jn((e.headers.host||"")+e.url),s=Kr.join(Ht,`${r}_${a}_${n}.req.json`),i=null;try{i=JSON.parse(t.toString())}catch{}return qt.writeFileSync(s,JSON.stringify({method:e.method,url:e.url,host:e.headers.host,headers:e.headers,body:i??t.toString("utf8")},null,2)),s}catch{return null}}function Pu(e,t="raw"){if(Wn(e.url))return null;let a=new Date().toISOString().replace(/[:.]/g,"-"),r=jn((e.headers.host||"")+e.url),n=Kr.join(Ht,`${a}_${t}_${r}.res.txt`),s=0,i={},o=[];return{writeHeader:(u,l)=>{s=u,i=l||{}},writeChunk:u=>{u!=null&&o.push(Buffer.isBuffer(u)?u:Buffer.from(u))},end:()=>{try{let u=Buffer.concat(o),l=i["content-encoding"]||i["Content-Encoding"],c=Du(u,l).toString("utf8");if(ku.test(c))return;let g={...i};delete g["content-encoding"],delete g["Content-Encoding"];let v=`STATUS: ${s}
1
+ var F=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var rr=F((nh,zn)=>{var yu=require("fs"),Fr=require("path"),qn=require("os"),_a="polyrouter";function Hn(){return process.platform==="win32"?Fr.join(process.env.APPDATA||Fr.join(qn.homedir(),"AppData","Roaming"),_a):Fr.join(qn.homedir(),`.${_a}`)}function vu(){let e=process.env.DATA_DIR;if(!e)return Hn();try{return yu.mkdirSync(e,{recursive:!0}),e}catch(t){if(t?.code==="EACCES"||t?.code==="EPERM")return console.warn(`[DATA_DIR] '${e}' not writable \u2192 fallback ~/.${_a}`),Hn();throw t}}var Gn=vu(),mu=Fr.join(Gn,"mitm");zn.exports={DATA_DIR:Gn,MITM_DIR:mu}});var Er=F((ih,Yn)=>{var Qn=require("fs"),Cu=process.env.NODE_ENV==="development",Eu=(()=>{if(process.platform==="win32")return null;for(let e of["/usr/sbin/lsof","/usr/bin/lsof","/sbin/lsof"])try{return Qn.accessSync(e,Qn.constants.X_OK),e}catch{}return"lsof"})(),xu=["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","runtime.us-east-1.kiro.dev","api2.cursor.sh"],Su={antigravity:[":generateContent",":streamGenerateContent"],copilot:["/chat/completions","/v1/messages","/responses"],kiro:["/generateAssistantResponse"],cursor:["/BidiAppend","/RunSSE","/RunPoll","/Run"]},Tu={antigravity:{"gemini-default":"gemini-3.5-flash-low","gemini-3.5-flash-high":"gemini-3-flash-agent","gemini-3.5-flash-medium":"gemini-3.5-flash-low","gemini-3.5-flash-extra-low":"gemini-3.5-flash-extra-low","gemini-3.1-pro-high":"gemini-pro-agent","gemini-3-pro-high":"gemini-pro-agent","gemini-3-pro-low":"gemini-3.1-pro-low"}},Au={antigravity:[{match:/flash.*extra.*low|extra.*low.*flash|flash.*low|low.*flash/i,alias:"gemini-3.5-flash-extra-low"},{match:/flash.*medium|medium.*flash/i,alias:"gemini-3.5-flash-low"},{match:/flash.*agent|agent.*flash|flash/i,alias:"gemini-3-flash-agent"},{match:/pro.*low|low.*pro/i,alias:"gemini-3.1-pro-low"},{match:/gemini.*pro|pro.*gemini/i,alias:"gemini-pro-agent"},{match:/opus/i,alias:"claude-opus-4-6-thinking"},{match:/sonnet|claude/i,alias:"claude-sonnet-4-6"},{match:/gpt.*oss|oss/i,alias:"gpt-oss-120b-medium"}]},Iu={antigravity:[/^tab[_-]/i]},Bu=["recordCodeAssistMetrics","recordTrajectoryAnalytics","fetchAdminControls","listExperiments","fetchUserInfo"];function bu(e){let t=(e||"").split(":")[0];return t==="api.individual.githubcopilot.com"?"copilot":t==="daily-cloudcode-pa.googleapis.com"||t==="cloudcode-pa.googleapis.com"?"antigravity":t==="q.us-east-1.amazonaws.com"||t==="codewhisperer.us-east-1.amazonaws.com"||t==="runtime.us-east-1.kiro.dev"?"kiro":t==="api2.cursor.sh"?"cursor":null}Yn.exports={IS_DEV:Cu,LSOF_BIN:Eu,TARGET_HOSTS:xu,URL_PATTERNS:Su,MODEL_SYNONYMS:Tu,MODEL_PATTERNS:Au,MODEL_NO_MAP:Iu,LOG_BLACKLIST_URL_PARTS:Bu,getToolForHost:bu}});var Gt=F((sh,Xn)=>{var qt=require("fs"),Kr=require("path"),Na=require("zlib"),{DATA_DIR:_u}=rr(),{LOG_BLACKLIST_URL_PARTS:Nu}=Er();function $n(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}var wu=e=>console.log(`[${$n()}] [MITM] ${e}`),Ru=e=>console.error(`[${$n()}] \u274C [MITM] ${e}`),Ht=Kr.join(_u,"logs","mitm");qt.existsSync(Ht)||qt.mkdirSync(Ht,{recursive:!0});function Lu(){try{if(!qt.existsSync(Ht))return;for(let e of qt.readdirSync(Ht))try{qt.rmSync(Kr.join(Ht,e),{recursive:!0,force:!0})}catch{}}catch{}}var ku=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function jn(e,t=80){return String(e).replace(/[^a-zA-Z0-9]/g,"_").substring(0,t)}function Wn(e){return e?Nu.some(t=>e.includes(t)):!1}function Du(e,t){if(!e||e.length===0)return e;try{let a=(t||"").toLowerCase();if(a.includes("gzip"))return Na.gunzipSync(e);if(a.includes("br"))return Na.brotliDecompressSync(e);if(a.includes("deflate"))return Na.inflateSync(e)}catch{}return e}function Uu(e,t,a="raw"){if(Wn(e.url))return null;try{let r=new Date().toISOString().replace(/[:.]/g,"-"),n=jn((e.headers.host||"")+e.url),s=Kr.join(Ht,`${r}_${a}_${n}.req.json`),i=null;try{i=JSON.parse(t.toString())}catch{}return qt.writeFileSync(s,JSON.stringify({method:e.method,url:e.url,host:e.headers.host,headers:e.headers,body:i??t.toString("utf8")},null,2)),s}catch{return null}}function Pu(e,t="raw"){if(Wn(e.url))return null;let a=new Date().toISOString().replace(/[:.]/g,"-"),r=jn((e.headers.host||"")+e.url),n=Kr.join(Ht,`${a}_${t}_${r}.res.txt`),s=0,i={},o=[];return{writeHeader:(u,l)=>{s=u,i=l||{}},writeChunk:u=>{u!=null&&o.push(Buffer.isBuffer(u)?u:Buffer.from(u))},end:()=>{try{let u=Buffer.concat(o),l=i["content-encoding"]||i["Content-Encoding"],c=Du(u,l).toString("utf8");if(ku.test(c))return;let g={...i};delete g["content-encoding"],delete g["Content-Encoding"];let v=`STATUS: ${s}
2
2
  HEADERS: ${JSON.stringify(g,null,2)}
3
3
  ---BODY---
4
4
  ${c}`;qt.writeFileSync(n,v)}catch{}},file:n}}Xn.exports={log:wu,err:Ru,dumpRequest:Uu,createResponseDumper:Pu,clearDumpDir:Lu}});var Y=F((oh,Jn)=>{Jn.exports={options:{usePureJavaScript:!1}}});var ti=F((uh,ei)=>{var wa={};ei.exports=wa;var Zn={};wa.encode=function(e,t,a){if(typeof t!="string")throw new TypeError('"alphabet" must be a string.');if(a!==void 0&&typeof a!="number")throw new TypeError('"maxline" must be a number.');var r="";if(!(e instanceof Uint8Array))r=Ou(e,t);else{var n=0,s=t.length,i=t.charAt(0),o=[0];for(n=0;n<e.length;++n){for(var u=0,l=e[n];u<o.length;++u)l+=o[u]<<8,o[u]=l%s,l=l/s|0;for(;l>0;)o.push(l%s),l=l/s|0}for(n=0;e[n]===0&&n<e.length-1;++n)r+=i;for(n=o.length-1;n>=0;--n)r+=t[o[n]]}if(a){var f=new RegExp(".{1,"+a+"}","g");r=r.match(f).join(`\r
@@ -22,7 +22,7 @@ ${c}`;qt.writeFileSync(n,v)}catch{}},file:n}}Xn.exports={log:wu,err:Ru,dumpReque
22
22
  Private-Lines: `+u+`\r
23
23
  `,s+=f;var S=va("putty-private-key-file-mac-key",t),A=Ce.util.createBuffer();vr(A,r),vr(A,n),vr(A,a),A.putInt32(i.length()),A.putBuffer(i),A.putInt32(l.length()),A.putBuffer(l);var B=Ce.hmac.create();return B.start("sha1",S),B.update(A.bytes()),s+=`\r
24
24
  Private-MAC: `+B.digest().toHex()+`\r
25
- `,s};ma.publicKeyToOpenSSH=function(e,t){var a="ssh-rsa";t=t||"";var r=Ce.util.createBuffer();return vr(r,a),Et(r,e.e),Et(r,e.n),a+" "+Ce.util.encode64(r.bytes())+" "+t};ma.privateKeyToOpenSSH=function(e,t){return t?Ce.pki.encryptRsaPrivateKey(e,t,{legacy:!0,algorithm:"aes128"}):Ce.pki.privateKeyToPem(e)};ma.getPublicKeyFingerprint=function(e,t){t=t||{};var a=t.md||Ce.md.md5.create(),r="ssh-rsa",n=Ce.util.createBuffer();vr(n,r),Et(n,e.e),Et(n,e.n),a.start(),a.update(n.getBytes());var s=a.digest();if(t.encoding==="hex"){var i=s.toHex();return t.delimiter?i.match(/.{2}/g).join(t.delimiter):i}else{if(t.encoding==="binary")return s.getBytes();if(t.encoding)throw new Error('Unknown encoding "'+t.encoding+'".')}return s};function Et(e,t){var a=t.toString(16);a[0]>="8"&&(a="00"+a);var r=Ce.util.hexToBytes(a);e.putInt32(r.length),e.putBytes(r)}function vr(e,t){e.putInt32(t.length),e.putString(t)}function va(){for(var e=Ce.md.sha1.create(),t=arguments.length,a=0;a<t;++a)e.update(arguments[a]);return e.digest()}});var po=F(($h,ho)=>{ho.exports=Y();wt();Ls();lt();qr();Ir();Ws();ir();eo();no();so();nn();Zr();Qt();Ja();un();lo();fn();en();Ga();sa();tt();Ya();co();yn();re()});var mo=F((jh,vo)=>{var go=require("path"),Xe=require("fs"),Je=po(),{MITM_DIR:Ca}=rr(),Ft=go.join(Ca,"rootCA.key"),Bt=go.join(Ca,"rootCA.crt");function yo(e){try{let t=Je.pki.certificateFromPem(Xe.readFileSync(e,"utf8")),a=new Date(Date.now()+720*60*60*1e3);return t.validity.notAfter<a}catch{return!0}}function Sc(){let e=Xe.existsSync(Ft)&&Xe.existsSync(Bt);if(e&&!yo(Bt))return console.log("\u2705 Root CA already exists"),{key:Ft,cert:Bt};if(e){console.log("\u{1F510} Root CA expired or expiring soon \u2014 regenerating...");try{Xe.unlinkSync(Ft)}catch{}try{Xe.unlinkSync(Bt)}catch{}}Xe.existsSync(Ca)||Xe.mkdirSync(Ca,{recursive:!0}),console.log("\u{1F510} Generating Root CA certificate...");let t=Je.pki.rsa.generateKeyPair(2048),a=Je.pki.createCertificate();a.publicKey=t.publicKey,a.serialNumber="01",a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.validity.notAfter.setFullYear(a.validity.notBefore.getFullYear()+10);let r=[{name:"commonName",value:"9Router MITM Root CA"},{name:"organizationName",value:"9Router"},{name:"countryName",value:"US"}];a.setSubject(r),a.setIssuer(r),a.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),a.sign(t.privateKey,Je.md.sha256.create());let n=Je.pki.privateKeyToPem(t.privateKey),s=Je.pki.certificateToPem(a);return Xe.writeFileSync(Ft,n),Xe.writeFileSync(Bt,s),console.log("\u2705 Root CA generated successfully"),{key:Ft,cert:Bt}}function Tc(){if(!Xe.existsSync(Ft)||!Xe.existsSync(Bt))throw new Error("Root CA not found. Generate it first.");let e=Xe.readFileSync(Ft,"utf8"),t=Xe.readFileSync(Bt,"utf8");return{key:Je.pki.privateKeyFromPem(e),cert:Je.pki.certificateFromPem(t)}}function Ac(e,t){let a=Je.pki.rsa.generateKeyPair(2048),r=Je.pki.createCertificate();return r.publicKey=a.publicKey,r.serialNumber=Math.floor(Math.random()*1e6).toString(),r.validity.notBefore=new Date,r.validity.notAfter=new Date,r.validity.notAfter.setFullYear(r.validity.notBefore.getFullYear()+1),r.setSubject([{name:"commonName",value:e}]),r.setIssuer(t.cert.subject.attributes),r.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:e},{type:2,value:`*.${e}`}]}]),r.sign(t.key,Je.md.sha256.create()),{key:Je.pki.privateKeyToPem(a.privateKey),cert:Je.pki.certificateToPem(r)}}vo.exports={generateRootCA:Sc,loadRootCA:Tc,generateLeafCert:Ac,isCertExpired:yo,ROOT_CA_CERT_PATH:Bt,ROOT_CA_KEY_PATH:Ft}});var Eo=F((Zh,Co)=>{var Wh=require("path"),Xh=require("fs"),{MITM_DIR:Jh}=rr(),{generateRootCA:Ic,loadRootCA:Bc,generateLeafCert:bc}=mo();function _c(){return Ic()}function Nc(e){try{let t=Bc(),a=bc(e,t);return{key:a.key,cert:a.cert}}catch(t){return console.error(`Failed to generate cert for ${e}:`,t.message),null}}Co.exports={generateCert:_c,getCertForDomain:Nc}});var Ao=F((ep,To)=>{var xo=require("fs"),wc=require("path"),{DATA_DIR:Rc}=rr(),So=wc.join(Rc,"mitm","aliases.json");function Lc(){try{return xo.existsSync(So)?JSON.parse(xo.readFileSync(So,"utf-8")):null}catch{return null}}function kc(e){return Lc()?.[e]||null}To.exports={getMitmAlias:kc}});var bo=F((tp,Bo)=>{"use strict";var mr="1.23.2";function Dc(e){return!e||typeof e!="object"||Array.isArray(e)?!1:String(e.ideName||"").toLowerCase()==="antigravity"||String(e.ideType||"").toUpperCase()==="ANTIGRAVITY"?!0:Object.prototype.hasOwnProperty.call(e,"ideVersion")}function Io(e,t){return typeof e!="string"||!e.includes("antigravity/")?e:e.replace(/antigravity\/[^\s]+/,`antigravity/${t}`)}function Uc(e,t){let a={...t},r=Io(a["user-agent"],mr),n=r!==a["user-agent"];n&&(a["user-agent"]=r);try{let s=JSON.parse(e.toString());return Dc(s?.metadata)?(s.metadata.ideVersion=mr,{bodyBuffer:Buffer.from(JSON.stringify(s)),headers:a,applied:!0,version:mr}):{bodyBuffer:e,headers:a,applied:n,version:mr}}catch{return{bodyBuffer:e,headers:a,applied:n,version:mr}}}Bo.exports={ANTIGRAVITY_IDE_VERSION:mr,applyAntigravityIdeVersionOverride:Uc,rewriteAntigravityUserAgent:Io}});var xa=F((ap,wo)=>{var{log:Ea,err:rp}=Gt(),_o="http://localhost:20128",Pc=String(process.env.MITM_ROUTER_BASE||_o).trim().replace(/\/+$/,"")||_o,No=process.env.ROUTER_API_KEY,Oc=new Set(["host","content-length","connection","transfer-encoding","content-type","authorization"]);async function Vc(e,t="/v1/chat/completions",a={}){let r={};for(let[s,i]of Object.entries(a))Oc.has(s.toLowerCase())||(r[s]=i);return await fetch(`${Pc}${t}`,{method:"POST",headers:{...r,"Content-Type":"application/json",...No&&{Authorization:`Bearer ${No}`}},body:JSON.stringify(e)})}async function Fc(e,t,a){let r=e.headers.get("content-type")||"application/json",n=e.status||200,s={"Content-Type":r,"Cache-Control":"no-cache",Connection:"keep-alive"};if(r.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(n,s),a&&a.writeHeader(e.status,Object.fromEntries(e.headers)),!e.body){let u=await e.text().catch(()=>"");a&&(a.writeChunk(u),a.end()),t.end(u);return}let i=e.body.getReader(),o=new TextDecoder;for(;;){let{done:u,value:l}=await i.read();if(u){a&&a.end(),t.end();break}a&&a.writeChunk(l),t.write(o.decode(l,{stream:!0}))}}async function Kc(e,t,a,r){let n=e.headers.get("content-type")||"application/json",s={"Content-Type":n,"Cache-Control":"no-cache",Connection:"keep-alive"};if(n.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(200,s),!e.body){t.end(await e.text().catch(()=>""));return}let i=e.body.getReader(),o=new TextDecoder("utf-8",{fatal:!1}),u="";for(;;){let{done:l,value:f}=await i.read();if(l)break;u+=o.decode(f,{stream:!0});let c=u.split(`
25
+ `,s};ma.publicKeyToOpenSSH=function(e,t){var a="ssh-rsa";t=t||"";var r=Ce.util.createBuffer();return vr(r,a),Et(r,e.e),Et(r,e.n),a+" "+Ce.util.encode64(r.bytes())+" "+t};ma.privateKeyToOpenSSH=function(e,t){return t?Ce.pki.encryptRsaPrivateKey(e,t,{legacy:!0,algorithm:"aes128"}):Ce.pki.privateKeyToPem(e)};ma.getPublicKeyFingerprint=function(e,t){t=t||{};var a=t.md||Ce.md.md5.create(),r="ssh-rsa",n=Ce.util.createBuffer();vr(n,r),Et(n,e.e),Et(n,e.n),a.start(),a.update(n.getBytes());var s=a.digest();if(t.encoding==="hex"){var i=s.toHex();return t.delimiter?i.match(/.{2}/g).join(t.delimiter):i}else{if(t.encoding==="binary")return s.getBytes();if(t.encoding)throw new Error('Unknown encoding "'+t.encoding+'".')}return s};function Et(e,t){var a=t.toString(16);a[0]>="8"&&(a="00"+a);var r=Ce.util.hexToBytes(a);e.putInt32(r.length),e.putBytes(r)}function vr(e,t){e.putInt32(t.length),e.putString(t)}function va(){for(var e=Ce.md.sha1.create(),t=arguments.length,a=0;a<t;++a)e.update(arguments[a]);return e.digest()}});var po=F(($h,ho)=>{ho.exports=Y();wt();Ls();lt();qr();Ir();Ws();ir();eo();no();so();nn();Zr();Qt();Ja();un();lo();fn();en();Ga();sa();tt();Ya();co();yn();re()});var mo=F((jh,vo)=>{var go=require("path"),Xe=require("fs"),Je=po(),{MITM_DIR:Ca}=rr(),Ft=go.join(Ca,"rootCA.key"),Bt=go.join(Ca,"rootCA.crt");function yo(e){try{let t=Je.pki.certificateFromPem(Xe.readFileSync(e,"utf8")),a=new Date(Date.now()+720*60*60*1e3);return t.validity.notAfter<a}catch{return!0}}function Sc(){let e=Xe.existsSync(Ft)&&Xe.existsSync(Bt);if(e&&!yo(Bt))return console.log("\u2705 Root CA already exists"),{key:Ft,cert:Bt};if(e){console.log("\u{1F510} Root CA expired or expiring soon \u2014 regenerating...");try{Xe.unlinkSync(Ft)}catch{}try{Xe.unlinkSync(Bt)}catch{}}Xe.existsSync(Ca)||Xe.mkdirSync(Ca,{recursive:!0}),console.log("\u{1F510} Generating Root CA certificate...");let t=Je.pki.rsa.generateKeyPair(2048),a=Je.pki.createCertificate();a.publicKey=t.publicKey,a.serialNumber="01",a.validity.notBefore=new Date,a.validity.notAfter=new Date,a.validity.notAfter.setFullYear(a.validity.notBefore.getFullYear()+10);let r=[{name:"commonName",value:"PolyRouter MITM Root CA"},{name:"organizationName",value:"PolyRouter"},{name:"countryName",value:"US"}];a.setSubject(r),a.setIssuer(r),a.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),a.sign(t.privateKey,Je.md.sha256.create());let n=Je.pki.privateKeyToPem(t.privateKey),s=Je.pki.certificateToPem(a);return Xe.writeFileSync(Ft,n),Xe.writeFileSync(Bt,s),console.log("\u2705 Root CA generated successfully"),{key:Ft,cert:Bt}}function Tc(){if(!Xe.existsSync(Ft)||!Xe.existsSync(Bt))throw new Error("Root CA not found. Generate it first.");let e=Xe.readFileSync(Ft,"utf8"),t=Xe.readFileSync(Bt,"utf8");return{key:Je.pki.privateKeyFromPem(e),cert:Je.pki.certificateFromPem(t)}}function Ac(e,t){let a=Je.pki.rsa.generateKeyPair(2048),r=Je.pki.createCertificate();return r.publicKey=a.publicKey,r.serialNumber=Math.floor(Math.random()*1e6).toString(),r.validity.notBefore=new Date,r.validity.notAfter=new Date,r.validity.notAfter.setFullYear(r.validity.notBefore.getFullYear()+1),r.setSubject([{name:"commonName",value:e}]),r.setIssuer(t.cert.subject.attributes),r.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:e},{type:2,value:`*.${e}`}]}]),r.sign(t.key,Je.md.sha256.create()),{key:Je.pki.privateKeyToPem(a.privateKey),cert:Je.pki.certificateToPem(r)}}vo.exports={generateRootCA:Sc,loadRootCA:Tc,generateLeafCert:Ac,isCertExpired:yo,ROOT_CA_CERT_PATH:Bt,ROOT_CA_KEY_PATH:Ft}});var Eo=F((Zh,Co)=>{var Wh=require("path"),Xh=require("fs"),{MITM_DIR:Jh}=rr(),{generateRootCA:Ic,loadRootCA:Bc,generateLeafCert:bc}=mo();function _c(){return Ic()}function Nc(e){try{let t=Bc(),a=bc(e,t);return{key:a.key,cert:a.cert}}catch(t){return console.error(`Failed to generate cert for ${e}:`,t.message),null}}Co.exports={generateCert:_c,getCertForDomain:Nc}});var Ao=F((ep,To)=>{var xo=require("fs"),wc=require("path"),{DATA_DIR:Rc}=rr(),So=wc.join(Rc,"mitm","aliases.json");function Lc(){try{return xo.existsSync(So)?JSON.parse(xo.readFileSync(So,"utf-8")):null}catch{return null}}function kc(e){return Lc()?.[e]||null}To.exports={getMitmAlias:kc}});var bo=F((tp,Bo)=>{"use strict";var mr="1.23.2";function Dc(e){return!e||typeof e!="object"||Array.isArray(e)?!1:String(e.ideName||"").toLowerCase()==="antigravity"||String(e.ideType||"").toUpperCase()==="ANTIGRAVITY"?!0:Object.prototype.hasOwnProperty.call(e,"ideVersion")}function Io(e,t){return typeof e!="string"||!e.includes("antigravity/")?e:e.replace(/antigravity\/[^\s]+/,`antigravity/${t}`)}function Uc(e,t){let a={...t},r=Io(a["user-agent"],mr),n=r!==a["user-agent"];n&&(a["user-agent"]=r);try{let s=JSON.parse(e.toString());return Dc(s?.metadata)?(s.metadata.ideVersion=mr,{bodyBuffer:Buffer.from(JSON.stringify(s)),headers:a,applied:!0,version:mr}):{bodyBuffer:e,headers:a,applied:n,version:mr}}catch{return{bodyBuffer:e,headers:a,applied:n,version:mr}}}Bo.exports={ANTIGRAVITY_IDE_VERSION:mr,applyAntigravityIdeVersionOverride:Uc,rewriteAntigravityUserAgent:Io}});var xa=F((ap,wo)=>{var{log:Ea,err:rp}=Gt(),_o="http://localhost:20128",Pc=String(process.env.MITM_ROUTER_BASE||_o).trim().replace(/\/+$/,"")||_o,No=process.env.ROUTER_API_KEY,Oc=new Set(["host","content-length","connection","transfer-encoding","content-type","authorization"]);async function Vc(e,t="/v1/chat/completions",a={}){let r={};for(let[s,i]of Object.entries(a))Oc.has(s.toLowerCase())||(r[s]=i);return await fetch(`${Pc}${t}`,{method:"POST",headers:{...r,"Content-Type":"application/json",...No&&{Authorization:`Bearer ${No}`}},body:JSON.stringify(e)})}async function Fc(e,t,a){let r=e.headers.get("content-type")||"application/json",n=e.status||200,s={"Content-Type":r,"Cache-Control":"no-cache",Connection:"keep-alive"};if(r.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(n,s),a&&a.writeHeader(e.status,Object.fromEntries(e.headers)),!e.body){let u=await e.text().catch(()=>"");a&&(a.writeChunk(u),a.end()),t.end(u);return}let i=e.body.getReader(),o=new TextDecoder;for(;;){let{done:u,value:l}=await i.read();if(u){a&&a.end(),t.end();break}a&&a.writeChunk(l),t.write(o.decode(l,{stream:!0}))}}async function Kc(e,t,a,r){let n=e.headers.get("content-type")||"application/json",s={"Content-Type":n,"Cache-Control":"no-cache",Connection:"keep-alive"};if(n.includes("text/event-stream")&&(s["X-Accel-Buffering"]="no"),t.writeHead(200,s),!e.body){t.end(await e.text().catch(()=>""));return}let i=e.body.getReader(),o=new TextDecoder("utf-8",{fatal:!1}),u="";for(;;){let{done:l,value:f}=await i.read();if(l)break;u+=o.decode(f,{stream:!0});let c=u.split(`
26
26
  `);u=c.pop()||"";for(let g of c){let v=g.trim();if(!v||!v.startsWith("data:"))continue;let y=v.slice(5).trim();if(y!=="[DONE]"){process.env.DEBUG_MITM&&Ea(`[SSE in] ${y.slice(0,200)}`);try{let x=JSON.parse(y),S=a(x,r);if(S!=null){let A=Array.isArray(S)?S:[S];for(let B of A){if(process.env.DEBUG_MITM){let b=B.length||B.byteLength||0;Ea(`[write binary frame] (${b}B) first 20B: ${Array.from(B.slice(0,20)).join(",")}`)}t.write(Buffer.from(B))}}}catch{}}}}try{let l=a(null,r);if(l!=null){let f=Array.isArray(l)?l:[l];for(let c of f)t.write(c)}}catch{}t.end()}async function Mc(e,t,a,r){let n={"Content-Type":"application/vnd.amazon.eventstream","Cache-Control":"no-cache",Connection:"keep-alive"};if(t.writeHead(200,n),!e.body){t.end(await e.text().catch(()=>""));return}let s=e.body.getReader(),i=new TextDecoder("utf-8",{fatal:!1}),o="";for(;;){let{done:u,value:l}=await s.read();if(u)break;o+=i.decode(l,{stream:!0});let f=o.split(`
27
27
  `);o=f.pop()||"";for(let c of f){let g=c.trim();if(!g||!g.startsWith("data:"))continue;let v=g.slice(5).trim();if(v!=="[DONE]"){process.env.DEBUG_MITM&&Ea(`[SSE in] ${v.slice(0,200)}`);try{let y=JSON.parse(v),x=a(y,r);if(x!=null){let S=Array.isArray(x)?x:[x];for(let A of S){if(process.env.DEBUG_MITM){let B=A.length||A.byteLength||0;Ea(`[write binary frame] (${B}B) first 20B: ${Array.from(A.slice(0,20)).join(",")}`)}t.write(Buffer.from(A))}}}catch{}}}}try{let u=a(null,r);if(u!=null){let l=Array.isArray(u)?u:[u];for(let f of l)t.write(f)}}catch{}t.end()}wo.exports={fetchRouter:Vc,pipeSSE:Fc,pipeTransformedSSE:Kc,pipeTransformedEventStream:Mc}});var Lo=F((np,Ro)=>{var{err:qc,createResponseDumper:Hc}=Gt(),{IS_DEV:Gc}=Er(),{fetchRouter:zc,pipeSSE:Qc}=xa();async function Yc(e,t,a,r){let n=Gc?Hc(e,"intercept-antigravity"):null,s=e.url.includes(":streamGenerateContent");try{let i=JSON.parse(a.toString());i.model&&(i.model=r);let o=await zc(i,"/v1/chat/completions",e.headers);await Qc(o,t,n)}catch(i){qc(`[antigravity] ${i.message}`),n&&(n.writeChunk(`
28
28
  [ERROR] ${i.message}
@@ -36,7 +36,7 @@ Private-MAC: `+B.digest().toHex()+`\r
36
36
  '-WindowStyle','Hidden','-EncodedCommand','${t}'
37
37
  ) -Verb RunAs -Wait -PassThru -WindowStyle Hidden;
38
38
  if ($proc.ExitCode -ne 0) { throw "Elevated command exited with code $($proc.ExitCode)" }
39
- `;return new Promise((r,n)=>{zo(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command ${$o(a)}`,{windowsHide:!0},(s,i,o)=>{if(s){let u=o||s.message;u.includes("canceled by the user")||u.includes("operation was canceled")?n(new Error("User canceled UAC prompt")):n(new Error(u))}else r(i)})})}jo.exports={isAdmin:Yo,runElevatedPowerShell:Ed,quotePs:$o}});var iu=F((hp,nu)=>{var{exec:fp,spawn:Xo,execSync:Or}=require("child_process"),_e=require("fs"),xd=require("path"),cp=require("os"),{log:Sa,err:Sd}=Gt(),{TOOL_HOSTS:Kt}=Go(),{runElevatedPowerShell:Jo,isAdmin:dp}=Wo();function Zo(e,t,a){let r=`${e}.9router.new`,n=`${e}.9router.bak`;try{_e.writeFileSync(r,a,"utf8");try{_e.unlinkSync(n)}catch{}_e.renameSync(e,n);try{_e.renameSync(r,e)}catch(s){try{_e.renameSync(n,e)}catch{_e.writeFileSync(e,t,"utf8")}throw s}try{_e.unlinkSync(n)}catch{}}finally{try{_e.unlinkSync(r)}catch{}}}var bt=process.platform==="win32",eu=process.platform==="darwin",Ze=bt?xd.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";function Ta(){if(bt)return!1;try{return Or("command -v sudo",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function tu(){if(bt||!Ta())return!0;try{return Or("sudo -n true",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function Td(){return!bt&&Ta()&&!tu()}function Vr(e,t){return new Promise((a,r)=>{let n=Ta(),s=n?Xo("sudo",["-S","sh","-c",e],{stdio:["pipe","pipe","pipe"],windowsHide:!0}):Xo("sh",["-c",e],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),i="",o="";s.stdout.on("data",u=>{i+=u}),s.stderr.on("data",u=>{o+=u}),s.on("close",u=>{u===0?a(i):r(new Error(o||`Exit code ${u}`))}),n&&(s.stdin.write(`${t}
39
+ `;return new Promise((r,n)=>{zo(`powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command ${$o(a)}`,{windowsHide:!0},(s,i,o)=>{if(s){let u=o||s.message;u.includes("canceled by the user")||u.includes("operation was canceled")?n(new Error("User canceled UAC prompt")):n(new Error(u))}else r(i)})})}jo.exports={isAdmin:Yo,runElevatedPowerShell:Ed,quotePs:$o}});var iu=F((hp,nu)=>{var{exec:fp,spawn:Xo,execSync:Or}=require("child_process"),_e=require("fs"),xd=require("path"),cp=require("os"),{log:Sa,err:Sd}=Gt(),{TOOL_HOSTS:Kt}=Go(),{runElevatedPowerShell:Jo,isAdmin:dp}=Wo();function Zo(e,t,a){let r=`${e}.polyrouter.new`,n=`${e}.polyrouter.bak`;try{_e.writeFileSync(r,a,"utf8");try{_e.unlinkSync(n)}catch{}_e.renameSync(e,n);try{_e.renameSync(r,e)}catch(s){try{_e.renameSync(n,e)}catch{_e.writeFileSync(e,t,"utf8")}throw s}try{_e.unlinkSync(n)}catch{}}finally{try{_e.unlinkSync(r)}catch{}}}var bt=process.platform==="win32",eu=process.platform==="darwin",Ze=bt?xd.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"):"/etc/hosts";function Ta(){if(bt)return!1;try{return Or("command -v sudo",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function tu(){if(bt||!Ta())return!0;try{return Or("sudo -n true",{stdio:"ignore",windowsHide:!0}),!0}catch{return!1}}function Td(){return!bt&&Ta()&&!tu()}function Vr(e,t){return new Promise((a,r)=>{let n=Ta(),s=n?Xo("sudo",["-S","sh","-c",e],{stdio:["pipe","pipe","pipe"],windowsHide:!0}):Xo("sh",["-c",e],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),i="",o="";s.stdout.on("data",u=>{i+=u}),s.stderr.on("data",u=>{o+=u}),s.on("close",u=>{u===0?a(i):r(new Error(o||`Exit code ${u}`))}),n&&(s.stdin.write(`${t}
40
40
  `),s.stdin.end())})}async function ru(e){bt||(eu?await Vr("dscacheutil -flushcache && killall -HUP mDNSResponder",e):await Vr("resolvectl flush-caches 2>/dev/null || true",e))}function Dn(e=null){try{let t=_e.readFileSync(Ze,"utf8");return e?t.includes(e):Kt.antigravity.every(a=>t.includes(a))}catch{return!1}}function Ad(){try{let e=_e.readFileSync(Ze,"utf8"),t={};for(let[a,r]of Object.entries(Kt))t[a]=r.every(n=>e.includes(n));return t}catch{return Object.fromEntries(Object.keys(Kt).map(e=>[e,!1]))}}async function Id(e,t){let a=Kt[e];if(!a)throw new Error(`Unknown tool: ${e}`);let r=a.filter(n=>!Dn(n));if(r.length===0){Sa(`\u{1F310} DNS ${e}: already active`);return}try{if(bt){let n=_e.readFileSync(Ze,"utf8"),s=n.replace(/[\r\n\s]+$/g,""),i=r.map(u=>`127.0.0.1 ${u}`).join(`\r
41
41
  `),o=`${s}\r
42
42
  ${i}\r
@@ -1,7 +1,7 @@
1
1
  const MAX_EVENT_BYTES = 256 * 1024;
2
2
 
3
3
  export const REALTIME_PATH = "/v1/realtime";
4
- export const REALTIME_PROTOCOL = "9router.realtime.voice.v1";
4
+ export const REALTIME_PROTOCOL = "polyrouter.realtime.voice.v1";
5
5
  // ChatGPT/Codex OAuth accounts use the realtime model exposed by the
6
6
  // reference OAuth bridge. Keep the public API model names as fallbacks.
7
7
  export const DEFAULT_REALTIME_MODEL = "gpt-realtime-2";
@@ -0,0 +1,156 @@
1
+ import crypto from "node:crypto";
2
+ import {
3
+ getOrCreateInstallationIdentity,
4
+ enqueueInstallationTelemetryEvent,
5
+ getPendingInstallationTelemetryEvents,
6
+ acknowledgeInstallationTelemetryEvent,
7
+ deferInstallationTelemetryEvent,
8
+ discardInstallationTelemetryEvent,
9
+ getNextInstallationTelemetryAttemptAt,
10
+ } from "@/lib/db/index.js";
11
+
12
+ const REQUEST_TIMEOUT_MS = 4_000;
13
+ const MAX_EVENTS_PER_FLUSH = 20;
14
+
15
+ function getConfig() {
16
+ const url = String(process.env.INSTALLATION_TELEMETRY_URL || "").trim();
17
+ const ingestToken = String(process.env.INSTALLATION_TELEMETRY_INGEST_TOKEN || "").trim();
18
+ const ipSalt = String(process.env.INSTALLATION_TELEMETRY_IP_SALT || "").trim();
19
+ if (!url || !ingestToken || !ipSalt) return null;
20
+
21
+ try {
22
+ const parsed = new URL(url);
23
+ if (parsed.protocol !== "https:" && parsed.hostname !== "localhost" && parsed.hostname !== "127.0.0.1") return null;
24
+ return { url: parsed.href, ingestToken, ipSalt };
25
+ } catch {
26
+ return null;
27
+ }
28
+ }
29
+
30
+ function getAppVersion() {
31
+ return process.env.npm_package_version || process.env.POLYROUTER_VERSION || null;
32
+ }
33
+
34
+ function hashIp(ip, salt) {
35
+ const normalized = typeof ip === "string" ? ip.trim().toLowerCase() : "";
36
+ if (!normalized || normalized === "unknown") return null;
37
+ return crypto.createHmac("sha256", salt).update(normalized).digest("hex");
38
+ }
39
+
40
+ async function sendEvent(config, installationId, event) {
41
+ const controller = new AbortController();
42
+ const timeout = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
43
+ try {
44
+ const response = await fetch(config.url, {
45
+ method: "POST",
46
+ headers: {
47
+ "Content-Type": "application/json",
48
+ Authorization: `Bearer ${config.ingestToken}`,
49
+ },
50
+ body: JSON.stringify({
51
+ installation_id: installationId,
52
+ event_id: event.eventId,
53
+ event_type: event.eventType,
54
+ occurred_at: event.occurredAt,
55
+ app_version: event.appVersion,
56
+ ...(event.ipHash ? { ip_hash: event.ipHash } : {}),
57
+ }),
58
+ signal: controller.signal,
59
+ });
60
+ return { ok: response.ok, status: response.status };
61
+ } finally {
62
+ clearTimeout(timeout);
63
+ }
64
+ }
65
+
66
+ let flushPromise = null;
67
+ let retryTimer = null;
68
+
69
+ function scheduleRetry(nextAttemptAt) {
70
+ if (retryTimer) clearTimeout(retryTimer);
71
+ retryTimer = null;
72
+ if (!nextAttemptAt) return;
73
+ const delay = Math.min(2 ** 31 - 1, Math.max(0, new Date(nextAttemptAt).getTime() - Date.now()));
74
+ retryTimer = setTimeout(() => {
75
+ retryTimer = null;
76
+ void flushInstallationTelemetry();
77
+ }, delay);
78
+ if (typeof retryTimer.unref === "function") retryTimer.unref();
79
+ }
80
+
81
+ export async function flushInstallationTelemetry() {
82
+ const config = getConfig();
83
+ if (!config) return { delivered: 0, disabled: true };
84
+ if (flushPromise) return flushPromise;
85
+
86
+ flushPromise = (async () => {
87
+ let delivered = 0;
88
+ try {
89
+ const identity = await getOrCreateInstallationIdentity();
90
+ const events = await getPendingInstallationTelemetryEvents(MAX_EVENTS_PER_FLUSH);
91
+ for (const event of events) {
92
+ try {
93
+ const result = await sendEvent(config, identity.installationId, event);
94
+ if (result.ok) {
95
+ await acknowledgeInstallationTelemetryEvent(event.eventId);
96
+ delivered += 1;
97
+ } else if (result.status >= 400 && result.status < 500 && result.status !== 429) {
98
+ await discardInstallationTelemetryEvent(event.eventId);
99
+ console.warn(`[Telemetry] Discarded ${event.eventType} event after HTTP ${result.status}; check telemetry configuration and event schema.`);
100
+ } else {
101
+ await deferInstallationTelemetryEvent(event.eventId, event.attempts + 1);
102
+ }
103
+ } catch {
104
+ await deferInstallationTelemetryEvent(event.eventId, event.attempts + 1);
105
+ console.warn(`[Telemetry] Deferred ${event.eventType} event after a delivery error; it will retry automatically.`);
106
+ }
107
+ }
108
+ } catch {
109
+ // Telemetry is intentionally fail-open: app startup and login must continue.
110
+ }
111
+ return { delivered, disabled: false };
112
+ })().finally(async () => {
113
+ flushPromise = null;
114
+ try {
115
+ scheduleRetry(await getNextInstallationTelemetryAttemptAt());
116
+ } catch {
117
+ // Queue inspection is best effort and must not affect application behavior.
118
+ }
119
+ });
120
+
121
+ return flushPromise;
122
+ }
123
+
124
+ export async function recordInstallationTelemetry(eventType, { ip } = {}) {
125
+ const config = getConfig();
126
+ if (!config) return { disabled: true };
127
+
128
+ try {
129
+ const identity = await getOrCreateInstallationIdentity();
130
+ const event = {
131
+ eventId: crypto.randomUUID(),
132
+ eventType,
133
+ occurredAt: new Date().toISOString(),
134
+ appVersion: getAppVersion(),
135
+ ipHash: hashIp(ip, config.ipSalt),
136
+ };
137
+ await enqueueInstallationTelemetryEvent(event);
138
+ void flushInstallationTelemetry();
139
+ return { installationId: identity.installationId, created: identity.created, disabled: false };
140
+ } catch {
141
+ return { disabled: false, queued: false };
142
+ }
143
+ }
144
+
145
+ export async function recordStartupTelemetry() {
146
+ try {
147
+ const identity = await getOrCreateInstallationIdentity();
148
+ if (!getConfig()) return { installationId: identity.installationId, created: identity.created, disabled: true };
149
+ if (identity.created) await recordInstallationTelemetry("installed");
150
+ return await recordInstallationTelemetry("startup");
151
+ } catch {
152
+ return { disabled: false, queued: false };
153
+ }
154
+ }
155
+
156
+ export const __test__ = { getConfig, hashIp };