zevairouter 1.0.271 → 1.1.0

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 (1383) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +5 -3
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
  6. package/cli/app/.next-cli-build/required-server-files.json +3 -1
  7. package/cli/app/.next-cli-build/routes-manifest.json +12 -0
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +10 -10
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +2 -2
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +3 -3
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  90. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error/page.js +2 -2
  93. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  99. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  100. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  101. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  102. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  103. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  104. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  105. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  106. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  109. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  110. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  111. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  112. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  113. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  114. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +3 -3
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/dashboard/media/videos/[id]/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/headroom/enable/route.js.nft.json +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  223. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  237. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  303. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-token/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/providers/codebuddy/discover-models/route.js +2 -2
  375. package/cli/app/.next-cli-build/server/app/api/providers/codebuddy/discover-models/route.js.nft.json +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/providers/route.js +2 -2
  379. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -51
  385. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  391. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  393. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  397. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  399. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  401. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
  403. package/cli/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  405. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  407. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  409. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  411. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  413. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  439. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  445. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  467. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route.js +3 -0
  483. package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route.js.nft.json +1 -0
  484. package/cli/app/.next-cli-build/server/app/api/usage/quota-stream/route_client-reference-manifest.js +1 -0
  485. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route.js +4 -0
  490. package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route.js.nft.json +1 -0
  491. package/cli/app/.next-cli-build/server/app/api/usage/routing-stream/route_client-reference-manifest.js +1 -0
  492. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  495. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  499. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  502. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  505. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  508. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  547. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  549. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  550. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  551. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  552. package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
  553. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  554. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  555. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  556. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  557. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  558. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  559. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  560. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
  561. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  562. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  563. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  564. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  565. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
  566. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  567. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
  568. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
  569. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  570. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  571. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  572. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  573. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  574. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  575. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  576. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  577. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  578. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  579. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  580. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  581. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  582. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  583. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  584. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  585. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  586. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  587. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  588. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  589. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  590. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  591. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  592. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  593. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  594. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  595. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  596. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  597. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  598. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  599. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  600. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +6 -6
  601. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  602. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  603. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  604. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  605. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +6 -6
  606. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  607. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +4 -4
  608. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +2 -2
  609. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  610. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  611. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  612. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  613. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  614. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  615. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  616. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  617. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  618. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  619. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  620. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  621. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  622. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  623. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  624. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  625. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  626. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  627. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  628. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  629. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  630. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  631. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  632. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  633. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  634. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  635. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  636. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  637. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  638. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  639. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  640. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  641. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +6 -6
  642. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  643. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  644. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  645. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  646. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +6 -6
  647. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  648. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +4 -4
  649. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +2 -2
  650. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  651. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  652. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  653. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  654. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  655. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  656. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  657. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  658. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  659. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  660. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  661. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  662. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  663. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  664. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  665. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  666. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  667. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  668. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  669. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  670. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  671. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  672. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  673. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  674. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  675. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  676. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  677. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  678. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  679. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  680. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  681. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  682. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  683. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  684. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  685. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  686. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  687. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  688. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  689. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  690. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  691. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  692. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  693. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  694. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  695. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  696. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  697. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  698. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  699. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  700. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  701. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  702. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  703. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  704. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  705. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  706. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  707. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  708. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  709. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  710. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  711. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  712. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  713. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  714. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings/pricing.segment.rsc +1 -1
  715. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard/settings.segment.rsc +1 -1
  716. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  717. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  718. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  719. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  720. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  721. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  722. package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  724. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  725. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  726. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  727. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  728. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  729. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  730. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  731. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  732. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  734. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  735. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  736. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  737. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  738. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  739. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  740. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  741. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  742. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  744. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  745. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  746. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  747. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  748. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  749. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  750. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  751. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  752. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  754. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  755. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  756. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  757. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  758. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  759. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  760. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  761. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  762. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  763. package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  764. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  765. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  766. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  767. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  768. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  769. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  770. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  771. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  772. package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
  773. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  775. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  776. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  777. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  778. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  779. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  780. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  781. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  782. package/cli/app/.next-cli-build/server/app/landing.rsc +5 -5
  783. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +5 -5
  784. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  785. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  786. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  787. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  788. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  789. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  790. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  791. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  792. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  793. package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
  794. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  795. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  796. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  797. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  798. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  799. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  801. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  802. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  803. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  804. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  805. package/cli/app/.next-cli-build/server/app/provider-icons/[provider]/route.js +2 -2
  806. package/cli/app/.next-cli-build/server/app/provider-icons/[provider]/route.js.nft.json +1 -1
  807. package/cli/app/.next-cli-build/server/app-paths-manifest.json +5 -3
  808. package/cli/app/.next-cli-build/server/chunks/1131.js +1 -1
  809. package/cli/app/.next-cli-build/server/chunks/1133.js +1 -0
  810. package/cli/app/.next-cli-build/server/chunks/1283.js +15 -0
  811. package/cli/app/.next-cli-build/server/chunks/1350.js +1 -1
  812. package/cli/app/.next-cli-build/server/chunks/1585.js +1 -0
  813. package/cli/app/.next-cli-build/server/chunks/1756.js +1 -0
  814. package/cli/app/.next-cli-build/server/chunks/220.js +1 -0
  815. package/cli/app/.next-cli-build/server/chunks/2238.js +1 -0
  816. package/cli/app/.next-cli-build/server/chunks/2442.js +1 -0
  817. package/cli/app/.next-cli-build/server/chunks/2456.js +1 -0
  818. package/cli/app/.next-cli-build/server/chunks/2557.js +1 -1
  819. package/cli/app/.next-cli-build/server/chunks/287.js +1 -0
  820. package/cli/app/.next-cli-build/server/chunks/{2732.js → 3016.js} +2 -2
  821. package/cli/app/.next-cli-build/server/chunks/3373.js +1 -0
  822. package/cli/app/.next-cli-build/server/chunks/3662.js +1 -0
  823. package/cli/app/.next-cli-build/server/chunks/3721.js +49 -0
  824. package/cli/app/.next-cli-build/server/chunks/3792.js +1 -0
  825. package/cli/app/.next-cli-build/server/chunks/3815.js +1 -1
  826. package/cli/app/.next-cli-build/server/chunks/3926.js +2 -0
  827. package/cli/app/.next-cli-build/server/chunks/3949.js +1 -1
  828. package/cli/app/.next-cli-build/server/chunks/3999.js +3 -3
  829. package/cli/app/.next-cli-build/server/chunks/40.js +1 -0
  830. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  831. package/cli/app/.next-cli-build/server/chunks/421.js +4 -0
  832. package/cli/app/.next-cli-build/server/chunks/4236.js +1 -0
  833. package/cli/app/.next-cli-build/server/chunks/4315.js +1 -0
  834. package/cli/app/.next-cli-build/server/chunks/4322.js +1 -0
  835. package/cli/app/.next-cli-build/server/chunks/437.js +1 -0
  836. package/cli/app/.next-cli-build/server/chunks/4645.js +1 -0
  837. package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
  838. package/cli/app/.next-cli-build/server/chunks/4721.js +2 -2
  839. package/cli/app/.next-cli-build/server/chunks/4827.js +1 -1
  840. package/cli/app/.next-cli-build/server/chunks/4897.js +1 -1
  841. package/cli/app/.next-cli-build/server/chunks/5019.js +1 -0
  842. package/cli/app/.next-cli-build/server/chunks/5024.js +1 -1
  843. package/cli/app/.next-cli-build/server/chunks/5330.js +35 -39
  844. package/cli/app/.next-cli-build/server/chunks/5434.js +1 -0
  845. package/cli/app/.next-cli-build/server/chunks/5436.js +1 -1
  846. package/cli/app/.next-cli-build/server/chunks/5752.js +4 -0
  847. package/cli/app/.next-cli-build/server/chunks/5754.js +1 -0
  848. package/cli/app/.next-cli-build/server/chunks/5936.js +1 -0
  849. package/cli/app/.next-cli-build/server/chunks/5949.js +11 -11
  850. package/cli/app/.next-cli-build/server/chunks/6182.js +49 -0
  851. package/cli/app/.next-cli-build/server/chunks/6200.js +1 -0
  852. package/cli/app/.next-cli-build/server/chunks/6476.js +1 -0
  853. package/cli/app/.next-cli-build/server/chunks/{3110.js → 6651.js} +6 -6
  854. package/cli/app/.next-cli-build/server/chunks/6802.js +1 -1
  855. package/cli/app/.next-cli-build/server/chunks/6843.js +2 -0
  856. package/cli/app/.next-cli-build/server/chunks/6936.js +15 -0
  857. package/cli/app/.next-cli-build/server/chunks/6951.js +1 -0
  858. package/cli/app/.next-cli-build/server/chunks/7170.js +1 -1
  859. package/cli/app/.next-cli-build/server/chunks/7319.js +60 -128
  860. package/cli/app/.next-cli-build/server/chunks/7432.js +1 -0
  861. package/cli/app/.next-cli-build/server/chunks/7568.js +1 -0
  862. package/cli/app/.next-cli-build/server/chunks/7582.js +51 -0
  863. package/cli/app/.next-cli-build/server/chunks/7611.js +1 -0
  864. package/cli/app/.next-cli-build/server/chunks/7634.js +1 -1
  865. package/cli/app/.next-cli-build/server/chunks/7875.js +1 -0
  866. package/cli/app/.next-cli-build/server/chunks/8028.js +1 -1
  867. package/cli/app/.next-cli-build/server/chunks/8136.js +1 -0
  868. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  869. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  870. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  871. package/cli/app/.next-cli-build/server/chunks/8491.js +1 -0
  872. package/cli/app/.next-cli-build/server/chunks/8590.js +1 -0
  873. package/cli/app/.next-cli-build/server/chunks/{3069.js → 8653.js} +1 -1
  874. package/cli/app/.next-cli-build/server/chunks/8655.js +4 -0
  875. package/cli/app/.next-cli-build/server/chunks/8895.js +15 -13
  876. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  877. package/cli/app/.next-cli-build/server/chunks/8910.js +2 -2
  878. package/cli/app/.next-cli-build/server/chunks/9445.js +1 -0
  879. package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
  880. package/cli/app/.next-cli-build/server/chunks/9539.js +1 -0
  881. package/cli/app/.next-cli-build/server/chunks/9835.js +1 -0
  882. package/cli/app/.next-cli-build/server/chunks/static/media/server.f66733f4.js +8 -0
  883. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  884. package/cli/app/.next-cli-build/server/middleware.js +3 -3
  885. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  886. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  887. package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  888. package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  889. package/cli/app/.next-cli-build/server/webpack-runtime.js +1 -1
  890. package/cli/app/.next-cli-build/static/C6i_Bn3fJrnsz4at-ntco/_buildManifest.js +1 -0
  891. package/cli/app/.next-cli-build/static/chunks/523-7f951d309a09f363.js +3 -0
  892. package/cli/app/.next-cli-build/static/chunks/5497-27b73ecf920843b1.js +7 -0
  893. package/cli/app/.next-cli-build/static/chunks/{620-014f7e265e6e9748.js → 620-ca95212890b67fc9.js} +1 -1
  894. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-489aca87c755610e.js +1 -0
  895. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-a8613adfc83b3096.js +1 -0
  896. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-15dd47ab818e675d.js → page-a096025e3edc5150.js} +9 -9
  897. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-ca3d31524c44540f.js +3 -0
  898. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-7b3b291fb9d2dc65.js +1 -0
  899. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-36f947b5449cdf6b.js +1 -0
  900. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-9fadcbba0c598e87.js +1 -0
  901. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-db8d22293b86486b.js +1 -0
  902. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-db8d22293b86486b.js +1 -0
  903. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-db8d22293b86486b.js +1 -0
  904. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-db8d22293b86486b.js +1 -0
  905. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-db8d22293b86486b.js +1 -0
  906. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-db8d22293b86486b.js +1 -0
  907. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-db8d22293b86486b.js +1 -0
  908. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-db8d22293b86486b.js +1 -0
  909. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-db8d22293b86486b.js +1 -0
  910. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-db8d22293b86486b.js +1 -0
  911. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-db8d22293b86486b.js +1 -0
  912. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-db8d22293b86486b.js +1 -0
  913. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-db8d22293b86486b.js +1 -0
  914. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-db8d22293b86486b.js +1 -0
  915. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-db8d22293b86486b.js +1 -0
  916. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-db8d22293b86486b.js +1 -0
  917. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-db8d22293b86486b.js +1 -0
  918. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-db8d22293b86486b.js +1 -0
  919. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-db8d22293b86486b.js +1 -0
  920. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-db8d22293b86486b.js +1 -0
  921. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-db8d22293b86486b.js +1 -0
  922. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-db8d22293b86486b.js +1 -0
  923. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-db8d22293b86486b.js +1 -0
  924. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-db8d22293b86486b.js +1 -0
  925. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-db8d22293b86486b.js +1 -0
  926. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-db8d22293b86486b.js +1 -0
  927. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-db8d22293b86486b.js +1 -0
  928. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-db8d22293b86486b.js +1 -0
  929. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-db8d22293b86486b.js +1 -0
  930. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-db8d22293b86486b.js +1 -0
  931. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-db8d22293b86486b.js +1 -0
  932. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-db8d22293b86486b.js +1 -0
  933. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-db8d22293b86486b.js +1 -0
  934. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-db8d22293b86486b.js +1 -0
  935. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-db8d22293b86486b.js +1 -0
  936. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-db8d22293b86486b.js +1 -0
  937. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-db8d22293b86486b.js +1 -0
  938. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-db8d22293b86486b.js +1 -0
  939. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-db8d22293b86486b.js +1 -0
  940. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-db8d22293b86486b.js +1 -0
  941. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-db8d22293b86486b.js +1 -0
  942. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-db8d22293b86486b.js +1 -0
  943. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-db8d22293b86486b.js +1 -0
  944. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-db8d22293b86486b.js +1 -0
  945. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-db8d22293b86486b.js +1 -0
  946. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-db8d22293b86486b.js +1 -0
  947. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-db8d22293b86486b.js +1 -0
  948. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-db8d22293b86486b.js +1 -0
  949. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-db8d22293b86486b.js +1 -0
  950. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-db8d22293b86486b.js +1 -0
  951. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-db8d22293b86486b.js +1 -0
  952. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-db8d22293b86486b.js +1 -0
  953. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-db8d22293b86486b.js +1 -0
  954. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-db8d22293b86486b.js +1 -0
  955. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-db8d22293b86486b.js +1 -0
  956. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-db8d22293b86486b.js +1 -0
  957. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-db8d22293b86486b.js +1 -0
  958. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-db8d22293b86486b.js +1 -0
  959. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-db8d22293b86486b.js +1 -0
  960. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-db8d22293b86486b.js +1 -0
  961. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-db8d22293b86486b.js +1 -0
  962. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-db8d22293b86486b.js +1 -0
  963. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-db8d22293b86486b.js +1 -0
  964. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-db8d22293b86486b.js +1 -0
  965. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-db8d22293b86486b.js +1 -0
  966. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-db8d22293b86486b.js +1 -0
  967. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-db8d22293b86486b.js +1 -0
  968. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-db8d22293b86486b.js +1 -0
  969. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-db8d22293b86486b.js +1 -0
  970. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-db8d22293b86486b.js +1 -0
  971. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  972. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  973. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  974. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  975. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-db8d22293b86486b.js +1 -0
  976. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  977. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  978. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  979. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  980. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-db8d22293b86486b.js +1 -0
  981. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  982. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  983. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  984. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  985. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-db8d22293b86486b.js +1 -0
  986. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-db8d22293b86486b.js +1 -0
  987. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-db8d22293b86486b.js +1 -0
  988. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  989. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  990. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  991. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  992. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-db8d22293b86486b.js +1 -0
  993. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-db8d22293b86486b.js +1 -0
  994. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-db8d22293b86486b.js +1 -0
  995. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-db8d22293b86486b.js +1 -0
  996. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-db8d22293b86486b.js +1 -0
  997. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-db8d22293b86486b.js +1 -0
  998. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-db8d22293b86486b.js +1 -0
  999. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  1000. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  1001. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  1002. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  1003. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-db8d22293b86486b.js +1 -0
  1004. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-db8d22293b86486b.js +1 -0
  1005. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-db8d22293b86486b.js +1 -0
  1006. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-db8d22293b86486b.js +1 -0
  1007. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-db8d22293b86486b.js +1 -0
  1008. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-db8d22293b86486b.js +1 -0
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-db8d22293b86486b.js +1 -0
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-db8d22293b86486b.js +1 -0
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-db8d22293b86486b.js +1 -0
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-db8d22293b86486b.js +1 -0
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-db8d22293b86486b.js +1 -0
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-db8d22293b86486b.js +1 -0
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-db8d22293b86486b.js +1 -0
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-db8d22293b86486b.js +1 -0
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-db8d22293b86486b.js +1 -0
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-db8d22293b86486b.js +1 -0
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-db8d22293b86486b.js +1 -0
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-db8d22293b86486b.js +1 -0
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-db8d22293b86486b.js +1 -0
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-db8d22293b86486b.js +1 -0
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-db8d22293b86486b.js +1 -0
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-db8d22293b86486b.js +1 -0
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-db8d22293b86486b.js +1 -0
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-db8d22293b86486b.js +1 -0
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-db8d22293b86486b.js +1 -0
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-db8d22293b86486b.js +1 -0
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-db8d22293b86486b.js +1 -0
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-db8d22293b86486b.js +1 -0
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-db8d22293b86486b.js +1 -0
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-db8d22293b86486b.js +1 -0
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-db8d22293b86486b.js +1 -0
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-db8d22293b86486b.js +1 -0
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-db8d22293b86486b.js +1 -0
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-db8d22293b86486b.js +1 -0
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-db8d22293b86486b.js +1 -0
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-db8d22293b86486b.js +1 -0
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-db8d22293b86486b.js +1 -0
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-db8d22293b86486b.js +1 -0
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-db8d22293b86486b.js +1 -0
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-db8d22293b86486b.js +1 -0
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-db8d22293b86486b.js +1 -0
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-db8d22293b86486b.js +1 -0
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-db8d22293b86486b.js +1 -0
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-db8d22293b86486b.js +1 -0
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-db8d22293b86486b.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-db8d22293b86486b.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-db8d22293b86486b.js +1 -0
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-db8d22293b86486b.js +1 -0
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-db8d22293b86486b.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-db8d22293b86486b.js +1 -0
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-db8d22293b86486b.js +1 -0
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-db8d22293b86486b.js +1 -0
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-db8d22293b86486b.js +1 -0
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-db8d22293b86486b.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-db8d22293b86486b.js +1 -0
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-db8d22293b86486b.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-db8d22293b86486b.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-db8d22293b86486b.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-db8d22293b86486b.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-db8d22293b86486b.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-db8d22293b86486b.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-db8d22293b86486b.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-db8d22293b86486b.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-db8d22293b86486b.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-db8d22293b86486b.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-db8d22293b86486b.js +1 -0
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-db8d22293b86486b.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-db8d22293b86486b.js +1 -0
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-db8d22293b86486b.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-db8d22293b86486b.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-db8d22293b86486b.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-db8d22293b86486b.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-db8d22293b86486b.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-db8d22293b86486b.js +1 -0
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-db8d22293b86486b.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-db8d22293b86486b.js +1 -0
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-db8d22293b86486b.js +1 -0
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-db8d22293b86486b.js +1 -0
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/usage/quota-stream/route-db8d22293b86486b.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-db8d22293b86486b.js +1 -0
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-db8d22293b86486b.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/usage/routing-stream/route-db8d22293b86486b.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-db8d22293b86486b.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-db8d22293b86486b.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-db8d22293b86486b.js +1 -0
  1092. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-db8d22293b86486b.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-db8d22293b86486b.js +1 -0
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-db8d22293b86486b.js +1 -0
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-db8d22293b86486b.js +1 -0
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-db8d22293b86486b.js +1 -0
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-db8d22293b86486b.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-db8d22293b86486b.js +1 -0
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-db8d22293b86486b.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-db8d22293b86486b.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-db8d22293b86486b.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-db8d22293b86486b.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-db8d22293b86486b.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-db8d22293b86486b.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-db8d22293b86486b.js +1 -0
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-db8d22293b86486b.js +1 -0
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-db8d22293b86486b.js +1 -0
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-db8d22293b86486b.js +1 -0
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-db8d22293b86486b.js +1 -0
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-db8d22293b86486b.js +1 -0
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-db8d22293b86486b.js +1 -0
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-db8d22293b86486b.js +1 -0
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-db8d22293b86486b.js +1 -0
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-db8d22293b86486b.js +1 -0
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-db8d22293b86486b.js +1 -0
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-db8d22293b86486b.js +1 -0
  1117. package/cli/app/.next-cli-build/static/chunks/app/landing/page-345d7bf34da86fee.js +1 -0
  1118. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-db8d22293b86486b.js +1 -0
  1119. package/cli/app/.next-cli-build/static/chunks/app/page-db8d22293b86486b.js +1 -0
  1120. package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-db8d22293b86486b.js +1 -0
  1121. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-db8d22293b86486b.js +1 -0
  1122. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-db8d22293b86486b.js +1 -0
  1123. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-db8d22293b86486b.js +1 -0
  1124. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-db8d22293b86486b.js +1 -0
  1125. package/cli/app/.next-cli-build/static/css/2259cb9ea5269549.css +1 -0
  1126. package/cli/app/.worktrees/v1-1-adaptive/.next-cli-build/standalone/src/lib/terminal/ptyBridge.py +163 -0
  1127. package/cli/app/.worktrees/v1-1-adaptive/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  1128. package/cli/app/.worktrees/v1-1-adaptive/src/lib/terminal/ptyBridge.py +163 -0
  1129. package/cli/app/CHANGELOG.md +32 -0
  1130. package/cli/app/cli/hooks/safeGlobalInstall.js +112 -37
  1131. package/cli/app/package.json +6 -1
  1132. package/cli/app/server.js +1 -1
  1133. package/cli/app/src/lib/alerter.js +13 -8
  1134. package/cli/hooks/safeGlobalInstall.js +112 -37
  1135. package/cli/package.json +1 -1
  1136. package/package.json +6 -1
  1137. package/cli/app/.next-cli-build/server/chunks/1051.js +0 -1
  1138. package/cli/app/.next-cli-build/server/chunks/2594.js +0 -1
  1139. package/cli/app/.next-cli-build/server/chunks/3743.js +0 -1
  1140. package/cli/app/.next-cli-build/server/chunks/3839.js +0 -1
  1141. package/cli/app/.next-cli-build/server/chunks/4177.js +0 -1
  1142. package/cli/app/.next-cli-build/server/chunks/5295.js +0 -51
  1143. package/cli/app/.next-cli-build/server/chunks/5307.js +0 -1
  1144. package/cli/app/.next-cli-build/server/chunks/7239.js +0 -63
  1145. package/cli/app/.next-cli-build/server/chunks/7688.js +0 -4
  1146. package/cli/app/.next-cli-build/server/chunks/7769.js +0 -1
  1147. package/cli/app/.next-cli-build/server/chunks/7828.js +0 -1
  1148. package/cli/app/.next-cli-build/server/chunks/8666.js +0 -1
  1149. package/cli/app/.next-cli-build/server/chunks/9484.js +0 -1
  1150. package/cli/app/.next-cli-build/server/chunks/9609.js +0 -1
  1151. package/cli/app/.next-cli-build/static/824D95QIGoN3BCMQNuqnq/_buildManifest.js +0 -1
  1152. package/cli/app/.next-cli-build/static/chunks/523-7fce1a9128358c23.js +0 -3
  1153. package/cli/app/.next-cli-build/static/chunks/5497-1f8d06cd65e1a031.js +0 -7
  1154. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-83d23a03d197fad2.js +0 -1
  1155. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-c3d7b126bbcdeaa2.js +0 -1
  1156. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-e68f446b9c94ade6.js +0 -3
  1157. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-aea189a918ed8a26.js +0 -1
  1158. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-c865ef51004e93fa.js +0 -1
  1159. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-dbfca64b83745c80.js +0 -1
  1160. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-7f1163bd918d92ca.js +0 -1
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-7f1163bd918d92ca.js +0 -1
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-7f1163bd918d92ca.js +0 -1
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-7f1163bd918d92ca.js +0 -1
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-7f1163bd918d92ca.js +0 -1
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-7f1163bd918d92ca.js +0 -1
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-7f1163bd918d92ca.js +0 -1
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-7f1163bd918d92ca.js +0 -1
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-7f1163bd918d92ca.js +0 -1
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-7f1163bd918d92ca.js +0 -1
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-7f1163bd918d92ca.js +0 -1
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-7f1163bd918d92ca.js +0 -1
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-7f1163bd918d92ca.js +0 -1
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-7f1163bd918d92ca.js +0 -1
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-7f1163bd918d92ca.js +0 -1
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-7f1163bd918d92ca.js +0 -1
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-7f1163bd918d92ca.js +0 -1
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-7f1163bd918d92ca.js +0 -1
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-7f1163bd918d92ca.js +0 -1
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-7f1163bd918d92ca.js +0 -1
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-7f1163bd918d92ca.js +0 -1
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-7f1163bd918d92ca.js +0 -1
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-7f1163bd918d92ca.js +0 -1
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-7f1163bd918d92ca.js +0 -1
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-7f1163bd918d92ca.js +0 -1
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-7f1163bd918d92ca.js +0 -1
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-7f1163bd918d92ca.js +0 -1
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-7f1163bd918d92ca.js +0 -1
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-7f1163bd918d92ca.js +0 -1
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-7f1163bd918d92ca.js +0 -1
  1190. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-7f1163bd918d92ca.js +0 -1
  1191. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-7f1163bd918d92ca.js +0 -1
  1192. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-7f1163bd918d92ca.js +0 -1
  1193. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-7f1163bd918d92ca.js +0 -1
  1194. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-7f1163bd918d92ca.js +0 -1
  1195. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-7f1163bd918d92ca.js +0 -1
  1196. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-7f1163bd918d92ca.js +0 -1
  1197. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-7f1163bd918d92ca.js +0 -1
  1198. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-7f1163bd918d92ca.js +0 -1
  1199. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-7f1163bd918d92ca.js +0 -1
  1200. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/videos/[id]/route-7f1163bd918d92ca.js +0 -1
  1201. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/enable/route-7f1163bd918d92ca.js +0 -1
  1202. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-7f1163bd918d92ca.js +0 -1
  1203. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-7f1163bd918d92ca.js +0 -1
  1204. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-7f1163bd918d92ca.js +0 -1
  1205. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-7f1163bd918d92ca.js +0 -1
  1206. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-7f1163bd918d92ca.js +0 -1
  1207. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-7f1163bd918d92ca.js +0 -1
  1208. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-7f1163bd918d92ca.js +0 -1
  1209. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-7f1163bd918d92ca.js +0 -1
  1210. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-7f1163bd918d92ca.js +0 -1
  1211. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-7f1163bd918d92ca.js +0 -1
  1212. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-7f1163bd918d92ca.js +0 -1
  1213. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-7f1163bd918d92ca.js +0 -1
  1214. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-7f1163bd918d92ca.js +0 -1
  1215. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-7f1163bd918d92ca.js +0 -1
  1216. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-7f1163bd918d92ca.js +0 -1
  1217. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-7f1163bd918d92ca.js +0 -1
  1218. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-7f1163bd918d92ca.js +0 -1
  1219. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-7f1163bd918d92ca.js +0 -1
  1220. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-7f1163bd918d92ca.js +0 -1
  1221. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-7f1163bd918d92ca.js +0 -1
  1222. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-7f1163bd918d92ca.js +0 -1
  1223. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-7f1163bd918d92ca.js +0 -1
  1224. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-7f1163bd918d92ca.js +0 -1
  1225. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-7f1163bd918d92ca.js +0 -1
  1226. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-7f1163bd918d92ca.js +0 -1
  1227. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-7f1163bd918d92ca.js +0 -1
  1228. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-7f1163bd918d92ca.js +0 -1
  1229. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-7f1163bd918d92ca.js +0 -1
  1230. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1231. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1232. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1233. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1234. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1235. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1236. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1237. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1238. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1239. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1240. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-7f1163bd918d92ca.js +0 -1
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-7f1163bd918d92ca.js +0 -1
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-7f1163bd918d92ca.js +0 -1
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-7f1163bd918d92ca.js +0 -1
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-7f1163bd918d92ca.js +0 -1
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-7f1163bd918d92ca.js +0 -1
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-7f1163bd918d92ca.js +0 -1
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-7f1163bd918d92ca.js +0 -1
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/grok-cli/bulk-token/route-7f1163bd918d92ca.js +0 -1
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-7f1163bd918d92ca.js +0 -1
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-7f1163bd918d92ca.js +0 -1
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-7f1163bd918d92ca.js +0 -1
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-7f1163bd918d92ca.js +0 -1
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-7f1163bd918d92ca.js +0 -1
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-7f1163bd918d92ca.js +0 -1
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-7f1163bd918d92ca.js +0 -1
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-7f1163bd918d92ca.js +0 -1
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-7f1163bd918d92ca.js +0 -1
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-7f1163bd918d92ca.js +0 -1
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-7f1163bd918d92ca.js +0 -1
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-7f1163bd918d92ca.js +0 -1
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-7f1163bd918d92ca.js +0 -1
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-7f1163bd918d92ca.js +0 -1
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-7f1163bd918d92ca.js +0 -1
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-7f1163bd918d92ca.js +0 -1
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-7f1163bd918d92ca.js +0 -1
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-7f1163bd918d92ca.js +0 -1
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-7f1163bd918d92ca.js +0 -1
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-7f1163bd918d92ca.js +0 -1
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-7f1163bd918d92ca.js +0 -1
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/providers/codebuddy/discover-models/route-7f1163bd918d92ca.js +0 -1
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-7f1163bd918d92ca.js +0 -1
  1292. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-7f1163bd918d92ca.js +0 -1
  1293. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-7f1163bd918d92ca.js +0 -1
  1294. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-7f1163bd918d92ca.js +0 -1
  1295. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-7f1163bd918d92ca.js +0 -1
  1296. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-7f1163bd918d92ca.js +0 -1
  1297. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-7f1163bd918d92ca.js +0 -1
  1298. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-7f1163bd918d92ca.js +0 -1
  1299. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-7f1163bd918d92ca.js +0 -1
  1300. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-7f1163bd918d92ca.js +0 -1
  1301. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-7f1163bd918d92ca.js +0 -1
  1302. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-7f1163bd918d92ca.js +0 -1
  1303. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-7f1163bd918d92ca.js +0 -1
  1304. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-7f1163bd918d92ca.js +0 -1
  1305. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-7f1163bd918d92ca.js +0 -1
  1306. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-7f1163bd918d92ca.js +0 -1
  1307. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-7f1163bd918d92ca.js +0 -1
  1308. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-7f1163bd918d92ca.js +0 -1
  1309. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-7f1163bd918d92ca.js +0 -1
  1310. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-7f1163bd918d92ca.js +0 -1
  1311. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-7f1163bd918d92ca.js +0 -1
  1312. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-7f1163bd918d92ca.js +0 -1
  1313. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-7f1163bd918d92ca.js +0 -1
  1314. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-7f1163bd918d92ca.js +0 -1
  1315. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-7f1163bd918d92ca.js +0 -1
  1316. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-7f1163bd918d92ca.js +0 -1
  1317. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-7f1163bd918d92ca.js +0 -1
  1318. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-7f1163bd918d92ca.js +0 -1
  1319. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-7f1163bd918d92ca.js +0 -1
  1320. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-7f1163bd918d92ca.js +0 -1
  1321. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-7f1163bd918d92ca.js +0 -1
  1322. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-7f1163bd918d92ca.js +0 -1
  1323. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-7f1163bd918d92ca.js +0 -1
  1324. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-7f1163bd918d92ca.js +0 -1
  1325. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-7f1163bd918d92ca.js +0 -1
  1326. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-7f1163bd918d92ca.js +0 -1
  1327. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-7f1163bd918d92ca.js +0 -1
  1328. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-7f1163bd918d92ca.js +0 -1
  1329. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-7f1163bd918d92ca.js +0 -1
  1330. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-7f1163bd918d92ca.js +0 -1
  1331. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-7f1163bd918d92ca.js +0 -1
  1332. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-7f1163bd918d92ca.js +0 -1
  1333. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-7f1163bd918d92ca.js +0 -1
  1334. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-7f1163bd918d92ca.js +0 -1
  1335. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-7f1163bd918d92ca.js +0 -1
  1336. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-7f1163bd918d92ca.js +0 -1
  1337. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-7f1163bd918d92ca.js +0 -1
  1338. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-7f1163bd918d92ca.js +0 -1
  1339. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-7f1163bd918d92ca.js +0 -1
  1340. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-7f1163bd918d92ca.js +0 -1
  1341. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-7f1163bd918d92ca.js +0 -1
  1342. package/cli/app/.next-cli-build/static/chunks/app/api/usage/logs/route-7f1163bd918d92ca.js +0 -1
  1343. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-7f1163bd918d92ca.js +0 -1
  1344. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-7f1163bd918d92ca.js +0 -1
  1345. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-7f1163bd918d92ca.js +0 -1
  1346. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-7f1163bd918d92ca.js +0 -1
  1347. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-7f1163bd918d92ca.js +0 -1
  1348. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-7f1163bd918d92ca.js +0 -1
  1349. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-7f1163bd918d92ca.js +0 -1
  1350. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-7f1163bd918d92ca.js +0 -1
  1351. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-7f1163bd918d92ca.js +0 -1
  1352. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-7f1163bd918d92ca.js +0 -1
  1353. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-7f1163bd918d92ca.js +0 -1
  1354. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-7f1163bd918d92ca.js +0 -1
  1355. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-7f1163bd918d92ca.js +0 -1
  1356. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-7f1163bd918d92ca.js +0 -1
  1357. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-7f1163bd918d92ca.js +0 -1
  1358. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-7f1163bd918d92ca.js +0 -1
  1359. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-7f1163bd918d92ca.js +0 -1
  1360. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-7f1163bd918d92ca.js +0 -1
  1361. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-7f1163bd918d92ca.js +0 -1
  1362. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-7f1163bd918d92ca.js +0 -1
  1363. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-7f1163bd918d92ca.js +0 -1
  1364. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-7f1163bd918d92ca.js +0 -1
  1365. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-7f1163bd918d92ca.js +0 -1
  1366. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-7f1163bd918d92ca.js +0 -1
  1367. package/cli/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-7f1163bd918d92ca.js +0 -1
  1368. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-7f1163bd918d92ca.js +0 -1
  1369. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-7f1163bd918d92ca.js +0 -1
  1370. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-7f1163bd918d92ca.js +0 -1
  1371. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-7f1163bd918d92ca.js +0 -1
  1372. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-7f1163bd918d92ca.js +0 -1
  1373. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-7f1163bd918d92ca.js +0 -1
  1374. package/cli/app/.next-cli-build/static/chunks/app/landing/page-30ffb960e68fba1a.js +0 -1
  1375. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-7f1163bd918d92ca.js +0 -1
  1376. package/cli/app/.next-cli-build/static/chunks/app/page-7f1163bd918d92ca.js +0 -1
  1377. package/cli/app/.next-cli-build/static/chunks/app/provider-icons/[provider]/route-7f1163bd918d92ca.js +0 -1
  1378. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-7f1163bd918d92ca.js +0 -1
  1379. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-7f1163bd918d92ca.js +0 -1
  1380. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-7f1163bd918d92ca.js +0 -1
  1381. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-7f1163bd918d92ca.js +0 -1
  1382. package/cli/app/.next-cli-build/static/css/d3a75038b243e398.css +0 -1
  1383. /package/cli/app/.next-cli-build/static/{824D95QIGoN3BCMQNuqnq → C6i_Bn3fJrnsz4at-ntco}/_ssgManifest.js +0 -0
@@ -0,0 +1,4 @@
1
+ "use strict";exports.id=421,exports.ids=[421],exports.modules={20421:(a,b,c)=>{c.r(b),c.d(b,{TAILSCALE_SOCKET:()=>v,getTailscaleFunnelUrl:()=>K,installTailscale:()=>L,isTailscaleInstalled:()=>E,isTailscaleLoggedIn:()=>G,isTailscaleRunning:()=>H,isTailscaleRunningStrict:()=>I,provisionCert:()=>V,startDaemonWithPassword:()=>R,startFunnel:()=>U,startLogin:()=>T,stopDaemon:()=>X,stopFunnel:()=>W});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h),j=c(55511),k=c.n(j),l=c(79646),m=c(28354),n=c(66936),o=c(49120);let p=(0,m.promisify)(l.exec),q=g().join(o.DATA_DIR,"bin"),r="darwin"===i().platform();i().platform();let s="win32"===i().platform(),t=g().join(q,s?"tailscale.exe":"tailscale"),u=g().join(o.DATA_DIR,"tailscale"),v=g().join(u,"tailscaled.sock"),w=s?[]:["--socket",v],x="C:\\Program Files\\Tailscale\\tailscale.exe",y=["/usr/local/bin/tailscale","/opt/homebrew/bin/tailscale","/usr/bin/tailscale"],z={value:void 0,fetchedAt:0,refreshing:!1},A={value:!1,fetchedAt:0,refreshing:!1},B={value:null,port:null,fetchedAt:0,refreshing:!1};function C(){return e().existsSync(t)?t:s&&e().existsSync(x)?x:!s&&y.find(a=>e().existsSync(a))||null}function D(){return Date.now()-z.fetchedAt>1e4&&(z.refreshing||(z.refreshing=!0,p(s?"where tailscale 2>nul":"which tailscale 2>/dev/null",{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{z.value=a.trim()||C()}).catch(()=>{z.value=C()}).finally(()=>{z.fetchedAt=Date.now(),z.refreshing=!1}))),void 0===z.value&&(e().existsSync(t)?z.value=t:s&&e().existsSync(x)?z.value=x:s?z.value=null:z.value=y.find(a=>e().existsSync(a))||null),z.value}function E(){return null!==D()}function F(...a){return[...w,...a]}function G(){let a=D();if(!a)return!1;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:M},timeout:5e3}),c=JSON.parse(b);return"Running"===c.BackendState&&c.Self?.Online===!0}catch(a){return!1}}function H(){return Date.now()-A.fetchedAt>1e4&&function(){if(A.refreshing)return;let a=D();if(!a){A.value=!1,A.fetchedAt=Date.now();return}A.refreshing=!0,p(`"${a}" ${w.join(" ")} funnel status --json`,{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{try{let b=JSON.parse(a);A.value=Object.keys(b.AllowFunnel||{}).length>0}catch{A.value=!1}}).catch(()=>{A.value=!1}).finally(()=>{A.fetchedAt=Date.now(),A.refreshing=!1})}(),A.value}function I(){let a=D();if(!a)return!1;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} funnel status --json`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"],timeout:1500}),c=JSON.parse(b),d=Object.keys(c.AllowFunnel||{}).length>0;return A.value=d,A.fetchedAt=Date.now(),d}catch{return!1}}function J(){let a=D();if(!a)return null;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,env:{...process.env,PATH:M},timeout:5e3}),c=JSON.parse(b),d=c.Self?.DNSName?.replace(/\.$/,"");return d?`https://${d}`:null}catch{return null}}function K(a){return(Date.now()-B.fetchedAt>1e4||B.port!==a)&&function(a){if(B.refreshing)return;let b=D();b&&(B.refreshing=!0,p(`"${b}" ${w.join(" ")} status --json`,{windowsHide:!0,timeout:1500}).then(({stdout:a})=>{try{let b=JSON.parse(a),c=b.Self?.DNSName?.replace(/\.$/,"");B.value=c?`https://${c}`:null}catch{}}).catch(()=>{}).finally(()=>{B.port=a,B.fetchedAt=Date.now(),B.refreshing=!1}))}(a),B.value}async function L(a,b,c){let d=c||(()=>{});return s?(await P(d),{success:!0}):(r?await N(a,d):await O(a,d),d("Starting daemon..."),await R(a),d("Logging in..."),T(b))}let M=`/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:${process.env.PATH||""}`;async function N(a,b){if(function(){try{return(0,l.execSync)("which brew",{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:M}}),!0}catch{return!1}}()){b("Installing via Homebrew..."),await new Promise((a,c)=>{let d=(0,l.spawn)("brew",["install","tailscale"],{stdio:["ignore","pipe","pipe"],windowsHide:!0,env:{...process.env,PATH:M}});d.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),d.on("close",b=>{0===b?a():c(Error(`brew install failed (code ${b})`))}),d.on("error",c)});return}let c=g().join(i().tmpdir(),"tailscale.pkg");b("Downloading Tailscale package..."),await new Promise((a,d)=>{let e=(0,l.spawn)("curl",["-fL","--progress-bar","https://pkgs.tailscale.com/stable/tailscale-latest.pkg","-o",c],{stdio:["ignore","pipe","pipe"],windowsHide:!0});e.stderr.on("data",a=>{let c=a.toString().trim();c&&b(c)}),e.on("close",b=>{0===b?a():d(Error("Download failed"))}),e.on("error",d)}),b("Installing package..."),await new Promise((d,e)=>{let f=(0,l.spawn)("sudo",["-S","installer","-pkg",c,"-target","/"],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),g="";f.stderr.on("data",a=>{g+=a.toString()}),f.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),f.on("close",a=>{try{(0,l.execSync)(`rm -f ${c}`,{stdio:"ignore",windowsHide:!0})}catch{}0===a?d():e(Error(g.includes("incorrect password")||g.includes("Sorry")?"Wrong sudo password":g||`Exit code ${a}`))}),f.on("error",e),f.stdin.write(`${a}
2
+ `),f.stdin.end()})}async function O(a,b){if("string"!=typeof a||a.includes("\n"))throw Error("Invalid sudo password");return b("Downloading install script..."),new Promise((c,d)=>{let f=(0,l.spawn)("curl",["-fsSL","https://tailscale.com/install.sh"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),h="",j="";f.stdout.on("data",a=>{h+=a.toString()}),f.stderr.on("data",a=>{j+=a.toString()}),f.on("exit",f=>{if(0!==f)return d(Error(`Failed to download install script: ${j}`));b("Running install script...");let m=g().join(i().tmpdir(),`tailscale-install-${k().randomBytes(8).toString("hex")}.sh`);try{e().writeFileSync(m,h,{mode:448})}catch(a){return d(Error(`Failed to write install script: ${a.message}`))}let n=()=>{try{e().unlinkSync(m)}catch{}},o=(0,l.spawn)("sudo",["-S","sh",m],{stdio:["pipe","pipe","pipe"],windowsHide:!0}),p="";o.stdout.on("data",a=>{let c=a.toString().trim();c&&b(c)}),o.stderr.on("data",a=>{p+=a.toString()}),o.on("close",a=>{n(),0===a?c():d(Error(p.includes("incorrect password")||p.includes("Sorry")?"Wrong sudo password":p||`Exit code ${a}`))}),o.on("error",a=>{n(),d(a)}),o.stdin.write(`${a}
3
+ `),o.stdin.end()}),f.on("error",d)})}async function P(a){let b=g().join(i().tmpdir(),"tailscale-setup.msi");a("Downloading Tailscale installer..."),await new Promise((c,d)=>{let e=(0,l.spawn)("curl.exe",["-L","-#","-o",b,"https://pkgs.tailscale.com/stable/tailscale-setup-latest-amd64.msi"],{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f="";e.stderr.on("data",b=>{let c=b.toString().match(/(\d+\.\d)%/);c&&c[1]!==f&&(f=c[1],a(`Downloading... ${f}%`))}),e.on("close",a=>0===a?c():d(Error("Download failed"))),e.on("error",d)}),a("Installing Tailscale (UAC prompt may appear)..."),await new Promise((c,d)=>{let f=`'/i','${b}','TS_NOLAUNCH=true','/quiet','/norestart'`,g=(0,l.spawn)("powershell",["-NoProfile","-NonInteractive","-Command",`Start-Process msiexec -ArgumentList ${f} -Verb RunAs -Wait`],{stdio:["ignore","pipe","pipe"],windowsHide:!0});g.stderr.on("data",b=>{let c=b.toString().trim();c&&a(c)}),g.on("close",a=>{try{e().unlinkSync(b)}catch{}0===a?c():d(Error(`msiexec failed (code ${a})`))}),g.on("error",d)}),a("Verifying installation...");let c=Date.now();for(;Date.now()-c<1e4;){if(e().existsSync(x))return void a("Installation complete.");await new Promise(a=>setTimeout(a,1e3))}throw Error("Installation finished but tailscale.exe not found")}async function Q(a){try{if(!e().existsSync(a))return void e().mkdirSync(a,{recursive:!0});let b=process.getuid(),c=process.getgid();if(!(()=>{let c=[a];for(;c.length;){let a=c.pop();try{let d=e().statSync(a);if(d.uid!==b)return!0;if(d.isDirectory())for(let b of e().readdirSync(a))c.push(g().join(a,b))}catch{}}return!1})())return;try{(0,l.execSync)(`chown -R ${b}:${c} "${a}"`,{stdio:"ignore",timeout:3e3})}catch{try{(0,l.execSync)(`sudo -n chown -R ${b}:${c} "${a}"`,{stdio:"ignore",timeout:3e3})}catch{}}}catch{}}async function R(a){if(s){let a=D();console.log("[Tailscale] win: net start Tailscale");try{(0,l.execSync)("net start Tailscale",{stdio:"ignore",windowsHide:!0,timeout:1e4})}catch{}if(!a)return;for(let b=0;b<20;b++){try{let c=(0,l.execSync)(`"${a}" status --json`,{encoding:"utf8",windowsHide:!0,timeout:2e3}),d=JSON.parse(c);if(d.BackendState&&"NoState"!==d.BackendState)return void console.log(`[Tailscale] win: BackendState=${d.BackendState} after ${500*b}ms`)}catch{}await new Promise(a=>setTimeout(a,500))}console.log("[Tailscale] win: BackendState still NoState after poll");return}let b=!!a,c=function(){try{let a=(0,l.execSync)(`pgrep -af "tailscaled.*${v}"`,{encoding:"utf8",timeout:2e3}).trim();if(!a)return null;return!a.includes("--tun=userspace-networking")}catch{return null}}();if(null!==c&&c===b)try{let a=D()||"tailscale";(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{stdio:"ignore",windowsHide:!0,env:{...process.env,PATH:M},timeout:3e3});return}catch{}try{(0,l.execSync)(`pkill -9 -f "tailscaled.*${v}"`,{stdio:"ignore",timeout:3e3})}catch{}if(a)try{await (0,n.execWithPassword)(`pkill -9 -f "tailscaled.*${v}"`,a)}catch{}else try{(0,l.execSync)(`sudo -n pkill -9 -f "tailscaled.*${v}"`,{stdio:"ignore",timeout:3e3})}catch{}await new Promise(a=>setTimeout(a,1500)),await Q(u);let d=r?"/usr/local/bin/tailscaled":"tailscaled",e=[`--socket=${v}`,`--statedir=${u}`];if(b||e.push("--tun=userspace-networking"),b){let b=(0,l.spawn)("sudo",["-S",d,...e],{detached:!0,stdio:["pipe","ignore","ignore"],cwd:i().tmpdir(),env:{...process.env,PATH:M}});b.stdin.write(`${a}
4
+ `),b.stdin.end(),b.unref()}else(0,l.spawn)(d,e,{detached:!0,stdio:"ignore",cwd:i().tmpdir(),env:{...process.env,PATH:M}}).unref();await new Promise(a=>setTimeout(a,3e3))}function S(){let a=D();if(!a)return null;try{let b=(0,l.execSync)(`"${a}" ${w.join(" ")} status --json`,{encoding:"utf8",windowsHide:!0,timeout:2e3}),c=JSON.parse(b);if(c.AuthURL)return c.AuthURL;return null}catch{return null}}function T(a){let b=D();return b?new Promise((c,d)=>{if(R("").catch(()=>{}),G())return void c({alreadyLoggedIn:!0});let e=F("up","--accept-routes");a&&e.push(`--hostname=${a}`);let f=(0,l.spawn)(b,e,{stdio:["ignore","pipe","pipe"],detached:!0,windowsHide:!0}),g=!1,h="",i=a=>{let b=a.match(/https:\/\/login\.tailscale\.com\/a\/[a-zA-Z0-9]+/);return b?b[0]:null},j=(a,b)=>{g||(g=!0,clearTimeout(m),clearInterval(k),console.log(`[Tailscale] login authUrl detected (${b})`),f.unref(),c({authUrl:a}))},k=setInterval(()=>{if(g)return;let a=S();a&&j(a,"status")},500),m=setTimeout(()=>{if(g)return;g=!0,clearInterval(k),f.unref();let a=i(h)||S();a?c({authUrl:a}):d(Error("tailscale up timed out without auth URL"))},15e3),n=a=>{let b=i(h+=a.toString());b&&j(b,"stdout")};f.stdout.on("data",n),f.stderr.on("data",n),f.on("error",a=>{g||(g=!0,clearTimeout(m),clearInterval(k),console.error(`[Tailscale] login spawn error: ${a.message}`),d(a))}),f.on("exit",a=>{if(g)return;console.log(`[Tailscale] login exit code=${a}`);let b=i(h)||S();if(b)return void j(b,"exit");if(G()){g=!0,clearTimeout(m),clearInterval(k),c({alreadyLoggedIn:!0});return}})}):Promise.reject(Error("Tailscale not installed"))}async function U(a){let b=D();if(!b)throw Error("Tailscale not installed");try{(0,l.execSync)(`"${b}" ${w.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}return new Promise((c,d)=>{let e=(0,l.spawn)(b,F("funnel","--bg",`${a}`),{stdio:["ignore","pipe","pipe"],windowsHide:!0}),f=!1,g="",h=setTimeout(()=>{if(f)return;f=!0;let b=J()||K(a);b?c({tunnelUrl:b}):d(Error(`Tailscale funnel timed out: ${g.trim()||"no output"}`))},3e4),i=!1,j=a=>{if((g+=a.toString()).includes("Funnel is not enabled")&&(i=!0),i&&!f){let a=g.match(/https:\/\/login\.tailscale\.com\/[^\s]+/);if(a){f=!0,clearTimeout(h),e.kill(),c({funnelNotEnabled:!0,enableUrl:a[0]});return}}let b=J();b&&!f&&(f=!0,clearTimeout(h),c({tunnelUrl:b}))};e.stdout.on("data",j),e.stderr.on("data",j),e.on("exit",b=>{if(f)return;f=!0,clearTimeout(h),console.log(`[Tailscale] funnel exit code=${b} output="${g.trim().slice(0,200)}"`);let e=J()||K(a);e?c({tunnelUrl:e}):d(Error(`tailscale funnel failed (code ${b}): ${g.trim()}`))}),e.on("error",a=>{f||(f=!0,clearTimeout(h),d(a))})})}async function V(a){let b=D();if(!b||!a)return;let c=g().join(u,"certs");e().mkdirSync(c,{recursive:!0});let d=g().join(c,`${a}.crt`),f=g().join(c,`${a}.key`);try{await p(`"${b}" ${w.join(" ")} cert --cert-file "${d}" --key-file "${f}" "${a}"`,{windowsHide:!0,env:{...process.env,PATH:M},timeout:3e4}),console.log(`[Tailscale] cert provisioned for ${a}`)}catch(a){console.warn(`[Tailscale] cert provision failed (non-fatal): ${a.message}`)}}function W(){let a=D();if(a)try{(0,l.execSync)(`"${a}" ${w.join(" ")} funnel --bg reset`,{stdio:"ignore",windowsHide:!0})}catch(a){}}async function X(a){try{(0,l.execSync)("pkill -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}try{(0,l.execSync)("pgrep -x tailscaled",{stdio:"ignore",windowsHide:!0,timeout:2e3})}catch{return}if(!s)try{await (0,n.execWithPassword)("pkill -x tailscaled",a||"")}catch{}try{e().existsSync(v)&&e().unlinkSync(v)}catch{}}}};
@@ -0,0 +1 @@
1
+ exports.id=4236,exports.ids=[4236,4720,9445,9539],exports.modules={12866:(a,b,c)=>{"use strict";c.d(b,{$:()=>f,t:()=>g});var d=c(47774),e=c(16064);async function f(a){if(!a)return!1;try{new URL(a)}catch{return!1}try{return(await (0,d.hd)(`${a}/api/health`,{cache:"no-store",signal:AbortSignal.timeout(e.U.fetchTimeoutMs)})).ok}catch{return!1}}async function g(a,b={cancelled:!1}){let c=Date.now();for(;Date.now()-c<e.U.timeoutMs;){if(b.cancelled)throw Error("cancelled");if(await f(a))return!0;await new Promise(a=>setTimeout(a,e.U.intervalMs))}throw Error(`Health check timeout after ${e.U.timeoutMs}ms`)}},15246:(a,b,c)=>{"use strict";c.d(b,{A1:()=>g.installTailscale,C7:()=>h.C7,Dd:()=>e.getDownloadStatus,H4:()=>f.getTailscaleStatus,Jv:()=>d.getTunnelStatus,Rg:()=>d.disableTunnel,Z2:()=>g.TAILSCALE_SOCKET,a$:()=>g.isTailscaleLoggedIn,cb:()=>d.enableTunnel,jd:()=>h.jd,mh:()=>f.enableTailscale,rH:()=>f.disableTailscale,xh:()=>g.isTailscaleInstalled});var d=c(69539),e=c(10437);c(12866);var f=c(32442),g=c(20421);c(47680);var h=c(10251);c(69445)},16064:(a,b,c)=>{"use strict";c.d(b,{U:()=>d,Z:()=>e});let d={intervalMs:2e3,timeoutMs:6e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3},e=process.env.TUNNEL_WORKER_URL||"https://abc-tunnel.us"},32442:(a,b,c)=>{"use strict";c.r(b),c.d(b,{disableTailscale:()=>m,enableTailscale:()=>l,getTailscaleService:()=>i,getTailscaleStatus:()=>n,isTailscaleReconnecting:()=>j});var d=c(10251),e=c(20421),f=c(47680),g=c(89718);let h={cancelToken:{cancelled:!1},spawnInProgress:!1,lastRestartAt:0,activeLocalPort:null};function i(){return h}function j(){return h.spawnInProgress}function k(a){if(a.cancelled)throw Error("tailscale cancelled")}async function l(a=1997){console.log(`[Tailscale] enable start (port=${a})`),h.cancelToken={cancelled:!1},h.activeLocalPort=a,h.spawnInProgress=!0;let b=h.cancelToken;try{let h,{getCachedPassword:i,loadEncryptedPassword:j,initDbHooks:l}=await Promise.all([c.e(7568),c.e(6182),c.e(5754)]).then(c.t.bind(c,96182,23));l(g.mt,g.Xx);let m=i()||await j()||"";await (0,e.startDaemonWithPassword)(m),console.log("[Tailscale] daemon ready"),k(b);let n=(0,d.C7)(),o=n?.shortId||(0,d.jd)(),p=(0,e.isTailscaleLoggedIn)();if(console.log(`[Tailscale] loggedIn=${p}`),!p){let a=await (0,e.startLogin)(o);if(a.authUrl)return console.log(`[Tailscale] needs login, authUrl=${a.authUrl}`),{success:!1,needsLogin:!0,authUrl:a.authUrl};console.log("[Tailscale] login resolved alreadyLoggedIn")}k(b),(0,e.stopFunnel)();try{console.log("[Tailscale] starting funnel"),h=await (0,e.startFunnel)(a)}catch(a){if(console.error(`[Tailscale] funnel error: ${a.message}`),/NoState|unexpected state|not logged in|Logged ?out|NeedsLogin/i.test(a.message||"")){console.log("[Tailscale] retry via startLogin");let a=await (0,e.startLogin)(o);if(a.authUrl)return{success:!1,needsLogin:!0,authUrl:a.authUrl}}throw a}if(k(b),h.funnelNotEnabled)return console.log(`[Tailscale] funnel not enabled, enableUrl=${h.enableUrl}`),{success:!1,funnelNotEnabled:!0,enableUrl:h.enableUrl};if(!(0,e.isTailscaleLoggedIn)()||!(0,e.isTailscaleRunningStrict)())return console.error("[Tailscale] strict probe failed (device removed?)"),(0,e.stopFunnel)(),{success:!1,error:"Tailscale not connected. Device may have been removed. Please re-login."};await (0,g.Xx)({tailscaleEnabled:!0,tailscaleUrl:h.tunnelUrl}),console.log(`[Tailscale] funnel up: ${h.tunnelUrl}`);let q=new URL(h.tunnelUrl).hostname;await (0,e.provisionCert)(q);let r=!1;try{await (0,f.t)(h.tunnelUrl,b),r=!0}catch(a){if(!a.message.startsWith("Health check timeout"))throw a;console.warn("[Tailscale] health check timed out, will retry via watchdog")}return console.log(`[Tailscale] enable success (reachable=${r})`),{success:!0,tunnelUrl:h.tunnelUrl}}catch(a){throw console.error(`[Tailscale] enable error: ${a.message}`),a}finally{h.spawnInProgress=!1}}async function m(){return console.log("[Tailscale] disable"),h.cancelToken.cancelled=!0,(0,e.stopFunnel)(),await (0,g.Xx)({tailscaleEnabled:!1,tailscaleUrl:""}),{success:!0}}async function n(){let a=await (0,g.mt)(),b=!0===a.tailscaleEnabled,c=a.tailscaleUrl||"",d=!!b&&(0,e.isTailscaleLoggedIn)(),f=!!d&&(0,e.isTailscaleRunning)();return{enabled:b&&f,settingsEnabled:b,tunnelUrl:c,running:f,loggedIn:d}}},47293:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},47680:(a,b,c)=>{"use strict";c.d(b,{t:()=>f});var d=c(47774);async function e(a){if(!a)return!1;try{new URL(a)}catch{return!1}try{return(await (0,d.hd)(`${a}/api/health`,{cache:"no-store",signal:AbortSignal.timeout(8e3)})).ok}catch{return!1}}async function f(a,b={cancelled:!1}){let c=Date.now();for(;Date.now()-c<18e4;){if(b.cancelled)throw Error("cancelled");if(await e(a))return!0;await new Promise(a=>setTimeout(a,2e3))}throw Error("Health check timeout after 180000ms")}},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},69445:(a,b,c)=>{"use strict";c.r(b),c.d(b,{checkInternet:()=>f});var d=c(91645),e=c.n(d);function f(){return new Promise(a=>{let b=new(e()).Socket,c=!1,d=d=>{if(!c){c=!0;try{b.destroy()}catch{}a(d)}};b.setTimeout(3e3),b.once("connect",()=>d(!0)),b.once("timeout",()=>d(!1)),b.once("error",()=>d(!1));try{b.connect(443,"1.1.1.1")}catch{d(!1)}})}},69539:(a,b,c)=>{"use strict";c.r(b),c.d(b,{disableTunnel:()=>s,enableTunnel:()=>r,getTunnelService:()=>k,getTunnelStatus:()=>t,isTunnelManuallyDisabled:()=>l,isTunnelReconnecting:()=>m,setTunnelUnexpectedExitCallback:()=>o});var d=c(10251),e=c(10437),f=c(24489),g=c(12866),h=c(16064),i=c(89718);let j={cancelToken:{cancelled:!1},spawnInProgress:!1,lastRestartAt:0,activeLocalPort:null};function k(){return j}function l(){return j.cancelToken.cancelled}function m(){return j.spawnInProgress}let n=null;function o(a){n=a}async function p(a,b){await fetch(`${h.Z}/api/tunnel/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortId:a,tunnelUrl:b})})}function q(a){if(a.cancelled)throw Error("tunnel cancelled")}async function r(a=1997){console.log(`[Tunnel] enable start (port=${a})`),j.cancelToken={cancelled:!1},j.activeLocalPort=a,j.spawnInProgress=!0;let b=j.cancelToken;try{if((0,e.isCloudflaredRunning)()){let a=(0,d.C7)();if(a?.tunnelUrl&&a?.shortId){let b=`https://r${a.shortId}.abc-tunnel.us`,[c,d]=await Promise.all([(0,g.$)(a.tunnelUrl),(0,g.$)(b)]);if(c&&d)return console.log(`[Tunnel] already running, reuse: ${a.tunnelUrl}`),{success:!0,tunnelUrl:a.tunnelUrl,shortId:a.shortId,publicUrl:b,alreadyRunning:!0};console.log(`[Tunnel] stale (direct=${c} public=${d}), respawn`)}}(0,e.killCloudflared)(a),console.log("[Tunnel] killed existing cloudflared"),q(b);let c=(0,d.C7)(),f=c?.shortId||(0,d.jd)(),h=async a=>{b.cancelled||(console.log(`[Tunnel] url updated: ${a}`),await p(f,a),(0,d.LZ)({shortId:f,tunnelUrl:a}),await (0,i.Xx)({tunnelEnabled:!0,tunnelUrl:a}))};(0,e.setUnexpectedExitHandler)(()=>{console.warn("[Tunnel] cloudflared exited unexpectedly, scheduling respawn"),n&&n()});let{tunnelUrl:j}=await (0,e.spawnQuickTunnel)(a,h);console.log(`[Tunnel] spawned: ${j}`),q(b);let k=`https://r${f}.abc-tunnel.us`;await p(f,j),(0,d.LZ)({shortId:f,tunnelUrl:j}),await (0,i.Xx)({tunnelEnabled:!0,tunnelUrl:j}),console.log(`[Tunnel] registered shortId=${f} publicUrl=${k}`);let l=!1;try{await (0,g.t)(k,b),l=!0,console.log("[Tunnel] public URL healthy")}catch(a){if(!a.message.startsWith("Health check timeout"))throw a;console.warn("[Tunnel] public URL health check timed out; continuing while routing propagates")}return await (0,g.$)(j)?console.log("[Tunnel] direct URL healthy"):console.warn("[Tunnel] direct URL not reachable yet, continuing via publicUrl"),console.log(`[Tunnel] enable success (publicReachable=${l})`),{success:!0,tunnelUrl:j,shortId:f,publicUrl:k}}catch(a){throw/cloudflared killed|tunnel cancelled/.test(a.message)||console.error(`[Tunnel] enable error: ${a.message}`),a}finally{j.spawnInProgress=!1}}async function s(){console.log("[Tunnel] disable"),j.cancelToken.cancelled=!0,(0,e.setUnexpectedExitHandler)(null);try{(0,e.killCloudflared)(j.activeLocalPort)}catch(a){console.warn(`[Tunnel] kill warn: ${a.message}`)}(0,f.r4)();let a=(0,d.C7)();return a&&(0,d.LZ)({shortId:a.shortId,tunnelUrl:null}),await (0,i.Xx)({tunnelEnabled:!1,tunnelUrl:""}),j.spawnInProgress=!1,j.activeLocalPort=null,{success:!0}}async function t(){let a=!0===(await (0,i.mt)()).tunnelEnabled,b=(0,d.C7)(),c=b?.shortId||"",f=c?`https://r${c}.abc-tunnel.us`:"",g=b?.tunnelUrl||"",h=!!a&&(0,e.isCloudflaredRunning)();return{enabled:a&&h,settingsEnabled:a,tunnelUrl:g,shortId:c,publicUrl:f,running:h}}},78335:()=>{},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,Iu:()=>d.Iu,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,Kg:()=>d.Kg,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,ME:()=>d.ME,Mc:()=>d.Mc,NR:()=>d.NR,Op:()=>d.Op,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uH:()=>d.uH,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)},96487:()=>{}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=4315,exports.ids=[4315],exports.modules={2636:(a,b,c)=>{c.d(b,{e:()=>function a(b){if(!b||"object"!=typeof b)return b;if(Array.isArray(b)){for(let c of b)a(c);return b}if(b.properties&&"object"==typeof b.properties&&!Array.isArray(b.properties)){let a=new Map,c=new Set(Object.keys(b.properties).filter(a=>d.test(a)));for(let e of Object.keys(b.properties))d.test(e)||a.set(e,function(a,b){let c=a.replace(/[^a-zA-Z0-9_.-]/g,"_").slice(0,64);0===c.length&&(c="_");let d=c,e=1;for(;b.has(d);){let a=`_${e++}`;d=c.slice(0,64-a.length)+a}return b.add(d),d}(e,c));for(let[c,d]of a)b.properties[d]=b.properties[c],delete b.properties[c];a.size>0&&Array.isArray(b.required)&&(b.required=b.required.map(b=>a.get(b)||b))}for(let c of Object.values(b))c&&"object"==typeof c&&a(c);return b}});let d=/^[a-zA-Z0-9_.-]{1,64}$/},38160:(a,b,c)=>{c.d(b,{Ou:()=>k,eG:()=>i,gQ:()=>j});var d=c(75924);let e=new Map,f=new Map,g=null;function h(a){return"string"==typeof a?a.trim()||null:a&&"object"==typeof a&&"string"==typeof a.id&&a.id.trim()||null}async function i(a,b,c={}){if(!a||!b)return null;let d=h(c.preferredProjectId),g=e.get(a);if(g&&Date.now()-g.fetchedAt<36e5&&(!d||d===g.projectId))return g.projectId;let j=d?`${a}::${d}`:a;if(f.has(j))return f.get(j).promise;let k=new AbortController,m=(async()=>{try{let c=await l(b,k.signal,{preferredProjectId:d});if(c)return e.set(a,{projectId:c,fetchedAt:Date.now()}),c;return console.warn("[ProjectId] could not fetch projectId for connection",a.slice(0,8)),null}catch(a){return console.warn(`[ProjectId] Error fetching project ID: ${a.message}`),null}finally{f.delete(j)}})();return f.set(j,{promise:m,controller:k,startedAt:Date.now()}),m}async function j(a,b={}){if(!a)return{projectId:null,tierId:null,requiresUserProject:!1,error:"missing access token"};try{return await m(a,void 0,b)}catch(a){return{projectId:null,tierId:null,requiresUserProject:!1,error:a?.message||String(a)}}}function k(a){e.delete(a)}async function l(a,b,c={}){return(await m(a,b,c)).projectId}async function m(a,b,c={}){let e=h(c.preferredProjectId),f=await fetch(d.nZ.loadCodeAssist,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify({metadata:d.zv}),signal:b});if(!f.ok){let a=await f.text().catch(()=>"");throw Error(`loadCodeAssist failed: HTTP ${f.status} ${a.slice(0,200)}`)}let g=await f.json(),i=function(a){if(!a)return null;if("string"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.trim();if(b)return b}if(a.cloudaicompanionProject&&"object"==typeof a.cloudaicompanionProject){let b=a.cloudaicompanionProject.id;if("string"==typeof b&&b.trim())return b.trim()}return null}(g);if(i)return{projectId:i,tierId:o(g).tierId||null,requiresUserProject:!1,loadRaw:g};let j=o(g),k=j.tierId||"free-tier";if(j.userDefined)return e?{projectId:await n(a,k,b,e)||e,tierId:k,requiresUserProject:!0,loadRaw:g,error:void 0}:(console.warn("[ProjectId] GSuite/DASHER has no free-tier project from loadCodeAssist; caller should reuse a stored/peer managed project id."),{projectId:null,tierId:k,requiresUserProject:!0,loadRaw:g,error:"no managed project on account; use stored or peer projectId"});let l=await n(a,k,b,null);return{projectId:l,tierId:k,requiresUserProject:!1,loadRaw:g,error:l?void 0:"onboardUser did not return a project id"}}async function n(a,b,c,e=null){console.log(`[ProjectId] Onboarding user with tier: ${b}`+(e?` project=${e}`:""));let f={tierId:b,metadata:d.zv};e&&(f.cloudaicompanionProject=e);for(let b=1;b<=5&&!c?.aborted;b++){let g=new AbortController,h=setTimeout(()=>g.abort(),3e4),i=()=>g.abort();c?.addEventListener("abort",i);try{let c=await fetch(d.nZ.onboardUser,{method:"POST",headers:{...d.Ic,Authorization:`Bearer ${a}`},body:JSON.stringify(f),signal:g.signal});if(clearTimeout(h),!c.ok){let a=await c.text().catch(()=>"");throw Error(`onboardUser HTTP ${c.status}: ${a.slice(0,200)}`)}let i=await c.json();if(!0===i.done){let a=function(a){if(!a?.response)return null;let b=a.response.cloudaicompanionProject;if("string"==typeof b){let a=b.trim();if(a)return a}if(b&&"object"==typeof b){let a=b.id;if("string"==typeof a&&a.trim())return a.trim()}return null}(i);if(a)return console.log(`[ProjectId] Successfully onboarded, project ID: ${a}`),a;if(e)return console.log(`[ProjectId] onboard done without id; using preferred project ${e}`),e;throw Error("onboardUser done but no project_id in response")}console.log(`[ProjectId] Onboard attempt ${b}/5: not done yet, waiting...`),await new Promise(a=>setTimeout(a,2e3))}catch(a){if(clearTimeout(h),"AbortError"===a.name){if(console.warn(`[ProjectId] onboardUser attempt ${b} aborted (timeout or connection removed)`),c?.aborted)return null;continue}if(5===b)return console.warn(`[ProjectId] onboardUser failed after 5 attempts: ${a.message}`),null;console.warn(`[ProjectId] onboardUser attempt ${b} failed: ${a.message}, retrying...`),await new Promise(a=>setTimeout(a,2e3))}finally{clearTimeout(h),c?.removeEventListener("abort",i)}}return null}function o(a){let b=null,c=!1;if(a?.currentTier?.id&&"string"==typeof a.currentTier.id&&(b=a.currentTier.id.trim(),c=!!a.currentTier.userDefinedCloudaicompanionProject),Array.isArray(a?.allowedTiers)){for(let d of a.allowedTiers)if(d&&"object"==typeof d&&!0===d.isDefault&&d.id){b=String(d.id).trim(),c=!!d.userDefinedCloudaicompanionProject;break}if(!b){let d=a.allowedTiers.find(a=>a?.id==="free-tier");d?(b="free-tier",c=!!d.userDefinedCloudaicompanionProject):a.allowedTiers[0]?.id&&(b=String(a.allowedTiers[0].id).trim(),c=!!a.allowedTiers[0].userDefinedCloudaicompanionProject)}}return"free-tier"===b&&(c=!1),{tierId:b,userDefined:c}}g=setInterval(()=>{try{let a=Date.now();for(let[b,c]of e)(!c||a-c.fetchedAt>=36e5)&&e.delete(b);for(let[b,c]of f){if(!c||"number"!=typeof c.startedAt){f.delete(b);continue}if(a-c.startedAt>12e4){try{c.controller.abort()}catch(a){}f.delete(b)}}}catch(a){console.warn("[ProjectId] cleanup sweep error:",a?.message??a)}},6e5),g?.unref?.()},43659:(a,b,c)=>{c.d(b,{A1:()=>g,lR:()=>i,wO:()=>h,yj:()=>e,zL:()=>f});var d=c(3662);function e(a,b){let c;return new Response(JSON.stringify((c=d.LY[a]||(a>=500?{type:"server_error",code:"internal_server_error"}:{type:"invalid_request_error",code:""}),{error:{message:b||d.O[a]||"An error occurred",type:c.type,code:c.code}})),{status:a,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}async function f(a,b=null){let c="";try{c=await a.text()}catch{c=""}if(b&&"function"==typeof b.parseError)try{let e=b.parseError(a,c);if(e&&"object"==typeof e){let b=e.message||d.O[a.status]||`Upstream error: ${a.status}`,{status:c,message:f,...g}=e;return{statusCode:c||a.status,message:b,...g}}}catch{}let e="";try{let a=JSON.parse(c);e=a.error?.message||a.message||a.error||c}catch{e=c}let g=("string"==typeof e?e:JSON.stringify(e))||d.O[a.status]||`Upstream error: ${a.status}`;return{statusCode:a.status,message:g}}function g(a,b,c,d=null){return{success:!1,status:a,error:b,resetsAtMs:c,...d&&"object"==typeof d?{failureMetadata:d}:{},response:e(a,b)}}function h(a,b,c,d){let e=Math.max(Math.ceil((new Date(c).getTime()-Date.now())/1e3),1);return new Response(JSON.stringify({error:{message:`${b} (${d})`}}),{status:a,headers:{"Content-Type":"application/json","Retry-After":String(e)}})}function i(a,b,c,d){let e=d||a.code||"FETCH_FAILED",f=a.message||"Unknown error",g=a.cause?.code,h=a.cause?.message,i=g||h?` (cause: ${[g,h].filter(Boolean).join(": ")})`:"";return`[${e}]: ${f}${i}`}},47593:(a,b,c)=>{c.d(b,{KZ:()=>j,S6:()=>g,Yr:()=>n,f6:()=>k,fc:()=>f,kU:()=>h,pT:()=>i,w_:()=>l});var d=c(2636);let e=["minLength","maxLength","exclusiveMinimum","exclusiveMaximum","pattern","minItems","maxItems","format","default","examples","$schema","$defs","definitions","const","$ref","$comment","additionalProperties","propertyNames","patternProperties","enumDescriptions","anyOf","oneOf","allOf","not","dependencies","dependentSchemas","dependentRequired","title","if","then","else","contentMediaType","contentEncoding","cornerRadius","fillColor","fontFamily","fontSize","fontWeight","gap","padding","strokeColor","strokeThickness","textColor"],f=[{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"OFF"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"OFF"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"OFF"},{category:"HARM_CATEGORY_HARASSMENT",threshold:"OFF"},{category:"HARM_CATEGORY_CIVIC_INTEGRITY",threshold:"OFF"}];function g(a){let b=[];if("string"==typeof a)b.push({text:a});else if(Array.isArray(a)){for(let c of a)if("text"===c.type)b.push({text:c.text});else if("image_url"===c.type&&c.image_url?.url?.startsWith("data:")){let a=c.image_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if("image_url"===c.type&&c.image_url?.url&&(c.image_url.url.startsWith("http://")||c.image_url.url.startsWith("https://")))b.push({fileData:{fileUri:c.image_url.url,mimeType:"image/*"}});else if("input_audio"===c.type&&c.input_audio?.data){let a=c.input_audio.format||"wav",d="mp3"===a?"audio/mpeg":`audio/${a}`;b.push({inlineData:{mime_type:d,data:c.input_audio.data}})}else if("audio_url"===c.type&&c.audio_url?.url?.startsWith("data:")){let a=c.audio_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}}return b}function h(a){return"string"==typeof a?a:Array.isArray(a)?a.filter(a=>"text"===a.type).map(a=>a.text).join(""):""}function i(a){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return null}}function j(){return`agent-${crypto.randomUUID()}`}function k(){return crypto.randomUUID()+Date.now().toString()}function l(){let a=["useful","bright","swift","calm","bold"],b=["fuze","wave","spark","flow","core"],c=a[Math.floor(Math.random()*a.length)],d=b[Math.floor(Math.random()*b.length)];return`${c}-${d}-${crypto.randomUUID().slice(0,5)}`}function m(a){let b=0,c=-1;for(let d=0;d<a.length;d++){let e=a[d],f=0,g=e.type;"object"===g||e.properties?f=3:"array"===g||e.items?f=2:g&&"null"!==g&&(f=1),f>c&&(c=f,b=d)}return b}function n(a){return a&&"object"==typeof a&&(!function a(b){if(b&&"object"==typeof b)for(let c of(void 0===b.const||b.enum||(b.enum=[b.const],delete b.const),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.enum&&Array.isArray(b.enum)&&(b.enum=b.enum.map(a=>String(a)),b.type||(b.type="string")),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b){if(b.allOf&&Array.isArray(b.allOf)){let a={};for(let c of b.allOf)if(c.properties&&(a.properties||(a.properties={}),Object.assign(a.properties,c.properties)),c.required&&Array.isArray(c.required))for(let b of(a.required||(a.required=[]),c.required))a.required.includes(b)||a.required.push(b);delete b.allOf,a.properties&&(b.properties={...b.properties,...a.properties}),a.required&&(b.required=[...b.required||[],...a.required])}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.anyOf&&Array.isArray(b.anyOf)&&b.anyOf.length>0){let a=b.anyOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=m(a),d=a[c];delete b.anyOf,Object.assign(b,d)}}if(b.oneOf&&Array.isArray(b.oneOf)&&b.oneOf.length>0){let a=b.oneOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=m(a),d=a[c];delete b.oneOf,Object.assign(b,d)}}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.type&&Array.isArray(b.type)){let a=b.type.filter(a=>"null"!==a);b.type=a.length>0?a[0]:"string"}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.properties&&!b.type&&(b.type="object"),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b,c){if(b&&"object"==typeof b){if(Array.isArray(b)){for(let d of b)a(d,c);return}for(let d of Object.keys(b)){if(c.includes(d)||d.startsWith("x-")){delete b[d];continue}let e=b[d];e&&"object"==typeof e&&a(e,c)}}}(a,e),!function a(b){if(b&&"object"==typeof b){if(b.required&&Array.isArray(b.required)&&b.properties){let a=b.required.filter(a=>Object.prototype.hasOwnProperty.call(b.properties,a));0===a.length?delete b.required:b.required=a}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),(0,d.e)(a),!function a(b){if(b&&"object"==typeof b)for(let c of("object"!==b.type||b.properties&&0!==Object.keys(b.properties).length||(b.properties={reason:{type:"string",description:"Brief explanation of why you are calling this tool"}},b.required=["reason"]),Object.values(b)))c&&"object"==typeof c&&a(c)}(a)),a}},74177:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{PY:()=>J,exchangeTokens:()=>G,extractCodexAccountInfo:()=>s,kP:()=>F,pollForToken:()=>I,requestDeviceCode:()=>H,sO:()=>E});var e=c(48895),f=c(55511),g=c.n(f),h=c(38160),i=c(13808),j=c(92990),k=c(73159),l=c(49804),m=a([e]);e=(m.then?(await m)():m)[0];let K=null;function n(a,b){let c,d=String(a||"").trim();if(!d)throw Error(`xai discovery ${b} is empty`);try{c=new URL(d)}catch(a){throw Error(`xai discovery ${b} is invalid: ${a.message}`)}if("https:"!==c.protocol)throw Error(`xai discovery ${b} must use https: ${d}`);let e=c.hostname.toLowerCase().trim();if("x.ai"!==e&&!e.endsWith(".x.ai"))throw Error(`xai discovery ${b} host ${e} is not on x.ai`);return d}async function o(){if(K)return K;try{let a=await fetch(k.oT.discoveryUrl,{headers:{Accept:"application/json"}});if(a.ok){let b=await a.json();return K={authorizeUrl:n(b.authorization_endpoint,"authorization_endpoint"),tokenUrl:n(b.token_endpoint,"token_endpoint")}}}catch{}return K={authorizeUrl:k.oT.authorizeUrl,tokenUrl:k.oT.tokenUrl}}function p(a){if(!a||"string"!=typeof a)return;let b=a.split(".");if(3===b.length)try{let a=b[1].replace(/-/g,"+").replace(/_/g,"/"),c=(L-a.length%L)%L,d=Buffer.from(a+"=".repeat(c),"base64").toString("utf8"),e=JSON.parse(d);return e.email||e.preferred_username||e.sub||void 0}catch{return}}let L=4;function q(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(L-c.length%L)%L,e=c+"=".repeat(d);return JSON.parse(Buffer.from(e,"base64").toString("utf8"))}catch{return null}}function r(a){let b=q(a);if(b)return b.email||b.preferred_username||b.sub||void 0}function s(a){let b=q(a);if(!b)return{};let c=b["https://api.openai.com/auth"]||{};return{email:b.email,chatgptAccountId:c.chatgpt_account_id||b.account_id,chatgptPlanType:c.chatgpt_plan_type||b.plan_type}}async function t(a){let b=await a.text();try{return b?JSON.parse(b):{}}catch{return{error:"invalid_response",error_description:b.slice(0,500)}}}async function u(a){let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:a.clientId})}),c=await t(b);if(!b.ok)throw Error(`Codex device code request failed: ${c.error_description||c.error||b.status}`);if(!c.device_auth_id||!c.user_code)throw Error("Codex device code response is missing the device id or user code");let d=c.expires_at?Math.max(1,Math.floor((new Date(c.expires_at).getTime()-Date.now())/1e3)):900;return{...c,device_code:c.device_auth_id,verification_uri:a.deviceVerificationUrl,interval:Number.parseInt(c.interval,10)||5,expires_in:d}}async function v(a,b,c,d){let e=d?._codexUserCode||d?.userCode||d?.user_code;if(!e)return{ok:!1,data:{error:"missing_user_code",error_description:"Codex device authorization is missing the user code"}};let f=await fetch(a.deviceTokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({device_auth_id:b,user_code:e})}),g=await t(f),h=403===f.status||404===f.status||"authorization_pending"===g.error;return{ok:f.ok||h,pending:h,data:g}}function w(a,b){for(let c of b){let b=a;for(let a of c){if(null==b||"object"!=typeof b){b=void 0;break}b=b[a]}if("string"==typeof b&&b.trim())return b.trim();if("number"==typeof b)return String(b)}return null}async function x(a){let b=JSON.stringify({loginTraceID:a,login_trace_id:a}),c="no successful response";for(let a of j.SK.loginGuidanceUrls)try{let d=await fetch(a,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":j.SK.userAgent},body:b});if(!d.ok){c=`${a} HTTP ${d.status}`;continue}let e=await d.json(),f=w(e,[["Result","LoginHost"],["Result","loginHost"],["Result","LoginURL"],["result","loginHost"],["data","Result","LoginHost"],["data","loginHost"],["LoginHost"],["loginHost"]]);if(f)return f;c=`${a} missing LoginHost`}catch(b){c=`${a} ${b.message}`}throw Error(`Trae GetLoginGuidance failed: ${c}`)}function y(){return[...j.SK.apiOrigins]}async function z(a,b){let c=JSON.stringify({ClientID:j.SK.clientId,RefreshToken:a,ClientSecret:j.SK.clientSecret,UserID:""}),d="no successful response";for(let e of y()){let f=`${e.replace(/\/$/,"")}${j.SK.exchangeTokenPath}`;try{let e,g={Accept:"application/json","Content-Type":"application/json","User-Agent":j.SK.userAgent};b&&(g["x-cloudide-token"]=b);let h=await fetch(f,{method:"POST",headers:g,body:c}),i=await h.text();if(!h.ok){d=`${f} HTTP ${h.status}`;continue}try{e=JSON.parse(i)}catch{d=`${f} invalid JSON`;continue}let k=w(e,[["Result","AccessToken"],["Result","accessToken"],["result","access_token"],["accessToken"]]);if(!k){let a=w(e,[["message"],["msg"],["error"],["Result","Message"]])||"missing AccessToken";d=`${f} ${a}`;continue}return{accessToken:k,refreshToken:w(e,[["Result","RefreshToken"],["result","refresh_token"],["refreshToken"]])||a,expiresIn:null,expiresAt:w(e,[["Result","ExpiresAt"],["Result","expiresAt"],["result","expires_at"],["expiresAt"]])}}catch(a){d=`${f} ${a.message}`}}throw Error(`Trae ExchangeToken failed: ${d}`)}async function A(a){for(let b of y()){let c=`${b.replace(/\/$/,"")}${j.SK.getUserInfoPath}`;try{let b=await fetch(c,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":j.SK.userAgent,"x-cloudide-token":a},body:JSON.stringify({})});if(!b.ok)continue;let d=await b.json();return{email:w(d,[["Result","NonPlainTextEmail"],["Result","Email"],["Result","email"],["email"],["data","email"]]),name:w(d,[["Result","ScreenName"],["Result","Nickname"],["Result","Name"],["result","nickname"],["nickname"],["name"]]),aiRegion:w(d,[["Result","AIRegion"],["Result","aiRegion"],["aiRegion"]]),region:w(d,[["Result","Region"],["Result","region"],["region"]]),tenant:w(d,[["Result","TenantID"],["Result","tenantId"],["tenantId"]]),userId:w(d,[["Result","UserID"],["Result","userId"],["userId"]])}}catch{}}return{email:null,name:null}}let M={config:j.SK,flowType:"authorization_code",callbackPath:j.SK.callbackPath,prepareConfig:async a=>{let b=g().randomUUID(),c=await x(b);return{...a,loginTraceID:b,loginHost:c}},buildAuthUrl:(a,b,c)=>{var d;let e,f,h={plugin_version:j.SK.defaultPluginVersion,machine_id:g().randomUUID(),device_id:j.SK.defaultDeviceId,x_device_brand:"unknown",x_device_type:"unknown",x_os_version:"unknown",x_env:"",x_app_version:j.SK.defaultAppVersion,x_app_type:j.SK.defaultAppType},i=a.loginTraceID||c;return d=a.loginHost,(e=new URL(d.startsWith("http")?d:`https://${d.replace(/^\/+/,"")}`)).pathname=j.SK.authorizationPath,(f=new URLSearchParams).set("login_version","1"),f.set("auth_from","trae"),f.set("login_channel","native_ide"),f.set("plugin_version",h.plugin_version),f.set("auth_type","local"),f.set("client_id",j.SK.clientId),f.set("redirect","0"),f.set("login_trace_id",i),f.set("auth_callback_url",b),f.set("machine_id",h.machine_id),f.set("device_id",h.device_id),f.set("x_device_id",h.device_id),f.set("x_machine_id",h.machine_id),f.set("x_device_brand",h.x_device_brand),f.set("x_device_type",h.x_device_type),f.set("x_os_version",h.x_os_version),f.set("x_env",h.x_env),f.set("x_app_version",h.x_app_version),f.set("x_app_type",h.x_app_type),e.search=f.toString(),e.toString()},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!(/[?=&]/.test(c)&&(c.includes("refreshToken")||c.includes("refresh_token"))))return{accessToken:c.replace(/^(Cloud-IDE-JWT|Bearer)\s+/i,""),refreshToken:null,expiresIn:24*j.SK.tokenLifetimeDays*3600,_authMethod:"imported"};let{refreshToken:d,cloudideToken:e}=function(a){let b=String(a||"").trim(),c=b;b.includes("?")&&(c=b.slice(b.indexOf("?")+1)),b.startsWith("#")&&(c=b.slice(1));let d=Object.fromEntries(new URLSearchParams(c)),e=a=>{for(let b of a){let a=d[b];if(a&&String(a).trim())return String(a).trim()}return null},f=e(["error","error_code","errorCode"]);if(f){let a=e(["error_description","error_desc","message"]);throw Error(a?`Trae auth failed: ${f} (${a})`:`Trae auth failed: ${f}`)}let g=e(["refreshToken","refresh_token","RefreshToken"]);if(!g)throw Error("Trae callback missing refreshToken");let h=e(["loginHost","login_host","LoginHost","host","consoleHost"]);if(!h)throw Error("Trae callback missing loginHost");let i=e(["x-cloudide-token","xCloudideToken","accessToken","access_token","token"]);return{refreshToken:g,loginHost:h,cloudideToken:i}}(c);return{...await z(d,e),_authMethod:"oauth"}},postExchange:async a=>({userInfo:await A(a.accessToken)}),mapTokens:(a,b)=>{let c,d=a.expiresIn||(a.expiresAt?Math.max(60,Number(a.expiresAt)-Math.floor(Date.now()/1e3)):24*j.SK.tokenLifetimeDays*3600),e=b?.userInfo||{},f=e.aiRegion||"US-East";return{accessToken:a.accessToken,refreshToken:a.refreshToken,expiresIn:d,email:e.email||void 0,displayName:e.name||void 0,providerSpecificData:{authMethod:a._authMethod||"oauth",aiRegion:f,region:e.region||f,tenant:e.tenant||"marscode",userId:e.userId||"",scope:(c=(f||"").toLowerCase(),"sg"===c||c.includes("singapore")?"marscode-sg":"cn"===c||c.includes("cn")||c.includes("china")?"marscode-cn":"marscode-us"),webId:"",bizUserId:"",userUniqueId:"",appLanguage:"en",appVersion:j.SK.defaultAppVersion,userRegion:"SG"===f?"SG":"US",userIdentity:"Free"}}}};async function B(a,b,c){let d=`${a.replace(/\/$/,"")}${b}`,e=await fetch(d,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":j.eD.userAgent},body:JSON.stringify(c)}),f=await e.text();if(!e.ok)throw Error(`Windsurf ${b} HTTP ${e.status}: ${f.slice(0,200)}`);try{return JSON.parse(f)}catch{throw Error(`Windsurf ${b} invalid JSON`)}}async function C(a){let b=await B(j.eD.registerApiBaseUrl,j.eD.registerPath,{firebase_id_token:a}),c=w(b,[["apiKey"],["api_key"]]);if(!c)throw Error("Windsurf RegisterUser missing apiKey");let d=w(b,[["apiServerUrl"],["api_server_url"]])||j.eD.defaultApiServerUrl,e=w(b,[["name"]]);return{apiKey:c,apiServerUrl:d,name:e}}async function D(a,b){try{let c=await B(a,j.eD.oneTimeAuthPath,{firebaseIdToken:b}),d=w(c,[["authToken"],["auth_token"]]);if(!d)return{email:null,name:null};let e=await B(a,j.eD.currentUserPath,{authToken:d,includeSubscription:!0}),f=e.user||e;return{email:w(f,[["email"]]),name:w(f,[["name"]])}}catch{return{email:null,name:null}}}let N={config:j.eD,flowType:"authorization_code",callbackPath:j.eD.callbackPath,buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({response_type:"token",client_id:a.clientId,redirect_uri:b,state:c,prompt:"login",redirect_parameters_type:"query",workflow:"onboarding"});return`${a.authBaseUrl}${a.signInPath}?${d.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=String(b||"").trim();if(!(f.includes("?")||f.includes("access_token="))){let b=f.replace(/^Bearer\s+/i,"");if(b.startsWith("sk-ws-"))return{accessToken:b,refreshToken:null,expiresIn:null,apiServerUrl:a.defaultApiServerUrl,firebaseIdToken:null,_authMethod:"imported"};let c=await C(b);return{accessToken:c.apiKey,refreshToken:null,expiresIn:null,apiServerUrl:c.apiServerUrl,firebaseIdToken:b,_authMethod:"imported"}}let{firebaseIdToken:g}=function(a,b){let c=String(a||"").trim(),d=c;c.includes("?")&&(d=c.slice(c.indexOf("?")+1)),c.startsWith("#")&&(d=c.slice(1));let e=Object.fromEntries(new URLSearchParams(d)),f=a=>{for(let b of a){let a=e[b];if(a&&String(a).trim())return String(a).trim()}return null},g=f(["error"]);if(g){let a=f(["error_description"]);throw Error(a?`Windsurf auth failed: ${g} (${a})`:`Windsurf auth failed: ${g}`)}let h=f(["access_token","token"]);if(!h)throw Error("Windsurf callback missing access_token");let i=f(["state"]);if(b&&i&&i!==b)throw Error("Windsurf callback state mismatch");return{firebaseIdToken:h}}(f,e),h=await C(g);return{accessToken:h.apiKey,refreshToken:null,expiresIn:null,apiServerUrl:h.apiServerUrl,firebaseIdToken:g,_authMethod:"oauth"}},postExchange:async a=>a.firebaseIdToken?{userInfo:await D(a.apiServerUrl,a.firebaseIdToken)}:{userInfo:{email:null,name:null}},mapTokens:(a,b)=>({accessToken:a.accessToken,refreshToken:null,expiresIn:null,email:b?.userInfo?.email||void 0,displayName:b?.userInfo?.name||void 0,providerSpecificData:{authMethod:a._authMethod||"oauth",apiServerUrl:a.apiServerUrl,firebaseIdToken:a.firebaseIdToken}})},O={config:j.RY,flowType:"authorization_code",callbackPath:"/",prepareConfig:async(a,b)=>{let c=Number(b?.nativeAppPort)||j.RY.defaultNativeAppPort,d=(0,l.le)(a,{nativeAppPort:c});return{...a,...d}},buildAuthUrl:a=>a.authUrl,exchangeToken:async(a,b,c,d)=>{let{userId:e,encryptedAccessToken:f}=(0,l.Q_)(b);return{accessToken:(0,l.Wc)(f,d),userId:e,systemId:a.systemId}},postExchange:async a=>{let b={accessToken:a.accessToken,providerSpecificData:{userId:a.userId,systemId:a.systemId}},c=null;try{c=await (0,l.qJ)(b,{config:j.RY})}catch{}let d=(0,l.k9)(b,c);return{userInfo:c,organizationId:d,email:c?.email||null,name:c?.name||c?.display_name||null}},mapTokens:(a,b)=>({accessToken:a.accessToken,refreshToken:null,expiresIn:null,email:b?.email||void 0,displayName:b?.name||void 0,providerSpecificData:{authMethod:"oauth",userId:a.userId,systemId:a.systemId,organizationId:b?.organizationId||""}})},P={trae:M,windsurf:N,zed:O,claude:{config:j.OV,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d)=>{let e=new URLSearchParams({code:"true",client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c});return`${a.authorizeUrl}?${e.toString()}`},exchangeToken:async(a,b,c,d,e)=>{let f=b,g="";if(f.includes("#")){let a=f.split("#");f=a[0],g=a[1]||""}let h=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({code:f,state:g||e,grant_type:"authorization_code",client_id:a.clientId,redirect_uri:c,code_verifier:d})});if(!h.ok){let a=await h.text();throw Error(`Token exchange failed: ${a}`)}return await h.json()},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope})},codex:{config:j.DI,flowType:"authorization_code_pkce",fixedPort:1455,callbackPath:"/auth/callback",requestDeviceCode:u,pollToken:v,buildAuthUrl:(a,b,c,d)=>{let e={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,...a.extraParams,state:c},f=Object.entries(e).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${f}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b=s(a.id_token),c={accessToken:a.access_token,refreshToken:a.refresh_token,idToken:a.id_token,expiresIn:a.expires_in,lastRefreshAt:new Date().toISOString()},d=b.email||r(a.access_token);return d&&(c.email=d),(b.chatgptAccountId||b.chatgptPlanType)&&(c.providerSpecificData={chatgptAccountId:b.chatgptAccountId,chatgptPlanType:b.chatgptPlanType}),c}},xai:{config:k.oT,flowType:"authorization_code_pkce",fixedPort:k.oT.loopbackPort,callbackPath:k.oT.callbackPath,pkceVerifierBytes:k.Ue,prepareConfig:async a=>{let b=await o();return{...a,authorizeUrl:b.authorizeUrl,tokenUrl:b.tokenUrl}},buildAuthUrl:(a,b,c,d)=>{let e=g().randomBytes(16).toString("hex"),f={response_type:"code",client_id:a.clientId,redirect_uri:b,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod,state:c,nonce:e,plan:"generic",referrer:"cli-proxy-api"},h=Object.entries(f).map(([a,b])=>`${a}=${encodeURIComponent(b)}`).join("&");return`${a.authorizeUrl}?${h}`},exchangeToken:async(a,b,c,d)=>{let e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,code:b,redirect_uri:c,code_verifier:d})});if(!e.ok){let a=await e.text();throw Error(`xAI token exchange failed: ${a}`)}return await e.json()},mapTokens:a=>{let b={accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope},c=p(a.id_token);return c&&(b.email=c),a.id_token&&(b.providerSpecificData={idToken:a.id_token}),b}},"gemini-cli":{config:j.LT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await fetch(`${j.LT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`}}),c=b.ok?await b.json():{},d="";try{let b=await fetch("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${a.access_token}`,"Content-Type":"application/json"},body:JSON.stringify({metadata:(0,j.cD)(),mode:1})});if(b.ok){let a=await b.json();d=a.cloudaicompanionProject?.id||a.cloudaicompanionProject||""}}catch(a){console.log("Failed to fetch project ID:",a)}return{userInfo:c,projectId:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},antigravity:{config:j.YT,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({client_id:a.clientId,response_type:"code",redirect_uri:b,scope:a.scopes.join(" "),state:c,access_type:"offline",prompt:"consent"});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"authorization_code",client_id:a.clientId,client_secret:a.clientSecret,code:b,redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Token exchange failed: ${a}`)}return await d.json()},postExchange:async a=>{let b=await fetch(`${j.YT.userInfoUrl}?alt=json`,{headers:{Authorization:`Bearer ${a.access_token}`,"x-request-source":"local"}}),c=b.ok?await b.json():{},d=process.env.ANTIGRAVITY_GCP_PROJECT||process.env.ZEVAI_ANTIGRAVITY_GCP_PROJECT||"",e="";try{let b=await Promise.race([(0,h.gQ)(a.access_token,{preferredProjectId:d||null}),new Promise(a=>setTimeout(()=>a({projectId:null,error:"project resolve timed out"}),2e4))]);(e=b.projectId||d||"")||!b.error||console.warn("[Antigravity OAuth] project resolve:",b.error)}catch(a){console.warn("[Antigravity OAuth] project resolve failed:",a?.message||a)}return{userInfo:c,projectId:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,email:b?.userInfo?.email,projectId:b?.projectId})},iflow:{config:j.ZL,flowType:"authorization_code",buildAuthUrl:(a,b,c)=>{let d=new URLSearchParams({loginMethod:a.extraParams.loginMethod,type:a.extraParams.type,redirect:b,state:c,client_id:a.clientId});return`${a.authorizeUrl}?${d.toString()}`},exchangeToken:async(a,b,c)=>{let d=Buffer.from(`${a.clientId}:${a.clientSecret}`).toString("base64"),e=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${d}`},body:new URLSearchParams({grant_type:"authorization_code",code:b,redirect_uri:c,client_id:a.clientId,client_secret:a.clientSecret})});if(!e.ok){let a=await e.text();throw Error(`Token exchange failed: ${a}`)}return await e.json()},postExchange:async a=>{let b=await fetch(`${j.ZL.userInfoUrl}?accessToken=${encodeURIComponent(a.access_token)}`,{headers:{Accept:"application/json"}});if(!b.ok){let a=await b.text();throw Error(`Failed to fetch user info: ${a}`)}let c=await b.json();if(!c.success)throw Error(`User info request failed: ${c.message||"Unknown error"}`);let d=c.data||{};if(!d.apiKey||""===d.apiKey.trim())throw Error("Empty API key returned from iFlow");if(!(d.email?.trim()||d.phone?.trim()))throw Error("Missing account email/phone in user info");return{userInfo:d}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,apiKey:b?.userInfo?.apiKey,email:b?.userInfo?.email||b?.userInfo?.phone,displayName:b?.userInfo?.nickname||b?.userInfo?.name})},qoder:{config:j.hF,flowType:"device_code",requestDeviceCode:async a=>{let{QoderService:b}=await c.e(1531).then(c.bind(c,91531)),d=new b().initiateDeviceFlow();return{device_code:d.nonce,user_code:d.nonce.slice(0,8).toUpperCase(),verification_uri:a.loginUrl,verification_uri_complete:d.verificationUriComplete,expires_in:300,interval:2,codeVerifier:d.codeVerifier,_qoderNonce:d.nonce,_qoderMachineId:d.machineId}},pollToken:async(a,b,d,e)=>{let f,{QoderService:g}=await c.e(1531).then(c.bind(c,91531)),h=new g,i=b||e?._qoderNonce,j=d||e?._qoderVerifier;if(!i||!j)return{ok:!1,data:{error:"invalid_request",error_description:"Missing nonce/verifier"}};try{f=await h.pollDeviceToken({nonce:i,codeVerifier:j})}catch(a){return{ok:!1,data:{error:"poll_failed",error_description:a.message}}}if("pending"===f.status)return{ok:!1,data:{error:"authorization_pending"}};let k=await h.fetchUserInfo(f.accessToken),l=Math.floor((f.expireTime-Date.now())/1e3),m=Math.max(86400,l);return{ok:!0,data:{access_token:f.accessToken,refresh_token:f.refreshToken,expires_in:m,_qoderUserId:f.userId,_qoderMachineId:e?._qoderMachineId||"",_qoderName:k.name,_qoderEmail:k.email,_qoderOrganizationId:k.organizationId}}},mapTokens:a=>{let b=(a._qoderEmail||"").trim(),c=(a._qoderName||"").trim()||null,d=a._qoderUserId||"",e=b||(d?`qoder-user-${d}`:null);return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,email:e,displayName:c,providerSpecificData:{authMethod:"device",userId:d,machineId:a._qoderMachineId||"",organizationId:a._qoderOrganizationId||""}}}},qwen:{config:j.Hp,flowType:"device_code",requestDeviceCode:async(a,b)=>{let c=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scope,code_challenge:b,code_challenge_method:a.codeChallengeMethod})});if(!c.ok){let a=await c.text();throw Error(`Device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b,c)=>{let d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b,code_verifier:c})});return{ok:d.ok,data:await d.json()}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{resourceUrl:a.resource_url}})},github:{config:j.Nu,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,scope:a.scopes})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}return await b.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId,device_code:b,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},postExchange:async a=>{let b=await fetch(j.Nu.copilotTokenUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":j.Nu.apiVersion,"User-Agent":j.Nu.userAgent}}),c=b.ok?await b.json():{},d=await fetch(j.Nu.userInfoUrl,{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","X-GitHub-Api-Version":j.Nu.apiVersion,"User-Agent":j.Nu.userAgent}}),e=d.ok?await d.json():{};return{copilotToken:c,userInfo:e}},mapTokens:(a,b)=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,providerSpecificData:{copilotToken:b?.copilotToken?.token,copilotTokenExpiresAt:b?.copilotToken?.expires_at,githubUserId:b?.userInfo?.id,githubLogin:b?.userInfo?.login,githubName:b?.userInfo?.name,githubEmail:b?.userInfo?.email}})},kiro:{config:j.Tx,flowType:"device_code",requestDeviceCode:async(a,b,c={})=>{let d=("string"==typeof c.region?c.region.trim():"")||"us-east-1",e=("string"==typeof c.startUrl?c.startUrl.trim():"")||a.startUrl,f="idc"===c.authMethod?"idc":"builder-id",g=`https://oidc.${d}.amazonaws.com/client/register`,h=`https://oidc.${d}.amazonaws.com/device_authorization`,i=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientName:a.clientName,clientType:a.clientType,scopes:a.scopes,grantTypes:a.grantTypes,issuerUrl:a.issuerUrl})});if(!i.ok){let a=await i.text();throw Error(`Client registration failed: ${a}`)}let j=await i.json(),k=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:j.clientId,clientSecret:j.clientSecret,startUrl:e})});if(!k.ok){let a=await k.text();throw Error(`Device authorization failed: ${a}`)}let l=await k.json();return{device_code:l.deviceCode,user_code:l.userCode,verification_uri:l.verificationUri,verification_uri_complete:l.verificationUriComplete,expires_in:l.expiresIn,interval:l.interval||5,_clientId:j.clientId,_clientSecret:j.clientSecret,_region:d,_authMethod:f,_startUrl:e}},pollToken:async(a,b,c,d)=>{let e,f=d?._region||"us-east-1",g=`https://oidc.${f}.amazonaws.com/token`,h=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:d?._clientId,clientSecret:d?._clientSecret,deviceCode:b,grantType:"urn:ietf:params:oauth:grant-type:device_code"})});try{e=await h.json()}catch(b){let a=await h.text();e={error:"invalid_response",error_description:a}}return e.accessToken?{ok:!0,data:{access_token:e.accessToken,refresh_token:e.refreshToken,expires_in:e.expiresIn,profile_arn:e?.profileArn||null,_clientId:d?._clientId,_clientSecret:d?._clientSecret,_region:d?._region,_authMethod:d?._authMethod,_startUrl:d?._startUrl}}:{ok:!1,data:{error:e.error||"authorization_pending",error_description:e.error_description||e.message}}},mapTokens:a=>{let b=r(a.access_token);return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,email:b,providerSpecificData:{profileArn:a?.profile_arn||null,clientId:a._clientId,clientSecret:a._clientSecret,region:a._region||"us-east-1",authMethod:a._authMethod||"builder-id",startUrl:a._startUrl||j.Tx.startUrl}}}},cursor:{config:j.WN,flowType:"import_token",mapTokens:a=>({accessToken:a.accessToken,refreshToken:null,expiresIn:a.expiresIn||86400,providerSpecificData:{machineId:a.machineId,authMethod:"imported"}})},"kimi-coding":{config:j.t,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({client_id:a.clientId})});if(!b.ok){let a=await b.text();throw Error(`Device code request failed: ${a}`)}let c=await b.json();return{device_code:c.device_code,user_code:c.user_code,verification_uri:c.verification_uri||"https://www.kimi.com/code/authorize_device",verification_uri_complete:c.verification_uri_complete||`https://www.kimi.com/code/authorize_device?user_code=${c.user_code}`,expires_in:c.expires_in,interval:c.interval||5}},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",client_id:a.clientId,device_code:b})});try{c=await d.json()}catch(b){let a=await d.text();c={error:"invalid_response",error_description:a}}return{ok:d.ok,data:c}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in})},kilocode:{config:j.MZ,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(a.initiateUrl,{method:"POST",headers:{"Content-Type":"application/json"}});if(!b.ok){if(429===b.status)throw Error("Too many pending authorization requests. Please try again later.");let a=await b.text();throw Error(`Device auth initiation failed: ${a}`)}let c=await b.json();return{device_code:c.code,user_code:c.code,verification_uri:c.verificationUrl,verification_uri_complete:c.verificationUrl,expires_in:c.expiresIn||300,interval:3}},pollToken:async(a,b)=>{let c=await fetch(`${a.pollUrlBase}/${b}`);if(202===c.status)return{ok:!1,data:{error:"authorization_pending"}};if(403===c.status)return{ok:!1,data:{error:"access_denied",error_description:"Authorization denied by user"}};if(410===c.status)return{ok:!1,data:{error:"expired_token",error_description:"Authorization code expired"}};if(!c.ok)return{ok:!1,data:{error:"poll_failed",error_description:`Poll failed: ${c.status}`}};let d=await c.json();if("approved"===d.status&&d.token){let b=null;try{let c=await fetch(`${a.apiBaseUrl}/api/profile`,{headers:{Authorization:`Bearer ${d.token}`}});if(c.ok){let a=await c.json();b=a.organizations?.[0]?.id||null}}catch{}return{ok:!0,data:{access_token:d.token,_userEmail:d.userEmail,_orgId:b}}}return{ok:!1,data:{error:"authorization_pending"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:null,expiresIn:null,email:a._userEmail,...a._orgId?{providerSpecificData:{orgId:a._orgId}}:{}})},cline:{config:j.lB,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(f){let d=await fetch(a.tokenExchangeUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!d.ok){let a=await d.text();throw Error(`Cline token exchange failed: ${a}`)}let e=await d.json();return{access_token:e.data?.accessToken||e.accessToken,refresh_token:e.data?.refreshToken||e.refreshToken,email:e.data?.userInfo?.email||"",expires_at:e.data?.expiresAt||e.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},clinepass:{config:j.w1,flowType:"authorization_code",buildAuthUrl:(a,b)=>{let c=new URLSearchParams({client_type:"extension",callback_url:b,redirect_uri:b});return`${a.authorizeUrl}?${c.toString()}`},exchangeToken:async(a,b,c)=>{try{let a=b,c=4-a.length%4;4!==c&&(a+="=".repeat(c));let d=Buffer.from(a,"base64").toString("utf-8"),e=d.lastIndexOf("}");if(-1===e)throw Error("No JSON found in decoded code");let f=JSON.parse(d.substring(0,e+1));return{access_token:f.accessToken,refresh_token:f.refreshToken,email:f.email,firstName:f.firstName,lastName:f.lastName,expires_at:f.expiresAt}}catch(g){let d=a.tokenUrl||a.tokenExchangeUrl,e=await fetch(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",code:b,client_type:"extension",redirect_uri:c})});if(!e.ok){let a=await e.text();throw Error(`ClinePass token exchange failed: ${a}`)}let f=await e.json();return{access_token:f.data?.accessToken||f.accessToken,refresh_token:f.data?.refreshToken||f.refreshToken,email:f.data?.userInfo?.email||"",expires_at:f.data?.expiresAt||f.expiresAt}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_at?Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3):3600,email:a.email,providerSpecificData:{firstName:a.firstName,lastName:a.lastName}})},"grok-cli":{config:j.qp,flowType:"device_code",requestDeviceCode:async a=>{let b=new URLSearchParams({client_id:a.clientId,scope:a.scope});a.referrer&&b.set("referrer",a.referrer);let c=await fetch(a.deviceCodeUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","User-Agent":"grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)"},body:b});if(!c.ok){let a=await c.text();throw Error(`Grok CLI device code request failed: ${a}`)}return await c.json()},pollToken:async(a,b)=>{let c,d=await fetch(a.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json","User-Agent":"grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:b,client_id:a.clientId})});try{c=await d.json()}catch{let a=await d.text();c={error:"invalid_response",error_description:a}}let e=c?.error==="authorization_pending"||c?.error==="slow_down";return{ok:d.ok||e,data:c}},postExchange:async a=>{try{let b=await fetch("https://cli-chat-proxy.grok.com/v1/user",{headers:{Authorization:`Bearer ${a.access_token}`,Accept:"application/json","User-Agent":"grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)","x-xai-token-auth":"xai-grok-cli","x-grok-client-version":"0.2.93"}});if(b.ok)return{user:await b.json()}}catch{}return{user:null}},mapTokens:(a,b)=>{let c=p(a.id_token)||r(a.access_token)||b?.user?.email||null,d=b?.user?.userId||b?.user?.principalId||null,e=[b?.user?.firstName,b?.user?.lastName].filter(Boolean).join(" ").trim()||null;return{accessToken:a.access_token,refreshToken:a.refresh_token||null,expiresIn:a.expires_in,scope:a.scope,email:c||void 0,displayName:e||void 0,providerSpecificData:{authMethod:"device_code",idToken:a.id_token||null,email:c||null,userId:d,hasGrokCodeAccess:b?.user?.hasGrokCodeAccess??null,subscriptionTier:b?.user?.subscriptionTier??null}}}},kimchi:{config:j.Td,flowType:"browser_token",buildAuthUrl:(a,b,c)=>{let d=(a.webAppUrl||"https://app.kimchi.dev").replace(/\/+$/,""),e=new URLSearchParams({callback:b,state:c});return`${d}/cli-auth?${e.toString()}`},exchangeToken:async(a,b)=>{let c=String(b||"").trim();if(!c)throw Error("Missing Kimchi token");let d=a.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",e=await fetch(d,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});if(!e.ok)throw Error(`Kimchi token validation failed: ${e.status}`);let f={};if(a.userInfoUrl)try{let b=await fetch(a.userInfoUrl,{method:"GET",headers:{Accept:"application/json",Authorization:`Bearer ${c}`}});b.ok&&(f=await b.json())}catch{f={}}return{access_token:c,token_type:"Bearer",_kimchiUser:f}},mapTokens:a=>{let b=a._kimchiUser||{},c=b.id?String(b.id):"",d=b.username||"",e=b.email||(c?`kimchi-user-${c}`:null);return{accessToken:a.access_token,refreshToken:null,email:e,displayName:b.name||d||null,providerSpecificData:{authMethod:"browser_token",userId:c,username:d}}}},gitlab:{config:j.f7,flowType:"authorization_code_pkce",buildAuthUrl:(a,b,c,d,e={})=>{let f=e.baseUrl||a.defaultBaseUrl,g=e.clientId||"",h=new URLSearchParams({client_id:g,redirect_uri:b,response_type:"code",state:c,scope:a.scope,code_challenge:d,code_challenge_method:a.codeChallengeMethod});return`${f}${a.authorizeUrlPath}?${h.toString()}`},exchangeToken:async(a,b,c,d,e,f={})=>{let g=f.baseUrl||a.defaultBaseUrl,h=f.clientId||"",i=f.clientSecret||"",j=new URLSearchParams({client_id:h,grant_type:"authorization_code",code:b,redirect_uri:c,code_verifier:d});i&&j.set("client_secret",i);let k=await fetch(`${g}${a.tokenUrlPath}`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:j.toString()});if(!k.ok)throw Error(`GitLab token exchange failed: ${await k.text()}`);let l=await k.json(),m=await fetch(`${g}${a.userInfoUrlPath}`,{headers:{Authorization:`Bearer ${l.access_token}`}}),n=m.ok?await m.json():{};return{...l,_user:n,_baseUrl:g,_clientId:h}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in,scope:a.scope,providerSpecificData:{username:a._user?.username||"",email:a._user?.email||a._user?.public_email||"",name:a._user?.name||"",baseUrl:a._baseUrl,clientId:a._clientId,authKind:"oauth"}})},codebuddy:{config:j.Nl,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":a.domain,"X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=new URL(a.tokenUrl);c.searchParams.set("state",b);let d=await fetch(c.toString(),{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":a.domain,"X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"}});if(!d.ok){let a=await d.text().catch(()=>"");return{ok:!1,data:{error:"request_failed",error_description:a||`${d.status} ${d.statusText}`}}}let e=await d.json();return 0===e.code&&e.data?.accessToken?{ok:!0,data:{access_token:e.data.accessToken,refresh_token:e.data.refreshToken||"",token_type:e.data.tokenType||"Bearer",expires_in:e.data.expiresIn,expires_at:e.data.expiresAt,refresh_expires_in:e.data.refreshExpiresIn,refresh_expires_at:e.data.refreshExpiresAt,domain:e.data.domain||a.domain,raw:e.data}}:11217===e.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:e.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||(a.expires_at?Math.max(1,Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3)):86400),providerSpecificData:{domain:a.domain||j.Nl.domain,refreshExpiresIn:a.refresh_expires_in,refreshExpiresAt:a.refresh_expires_at,tokenType:a.token_type||"Bearer",rawAuth:a.raw}})},"codebuddy-cn":{config:j.ne,flowType:"device_code",requestDeviceCode:async a=>{let b=await fetch(`${a.stateUrl}?platform=${a.platform}`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":a.domain,"X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"},body:"{}"});if(!b.ok)throw Error(`CodeBuddy CN state request failed: ${await b.text()}`);let c=await b.json();if(0!==c.code||!c.data?.state||!c.data?.authUrl)throw Error(`CodeBuddy CN state error: ${c.msg||"missing state/authUrl"}`);return{device_code:c.data.state,verification_uri:c.data.authUrl,user_code:"",interval:a.pollInterval/1e3,_isCodeBuddy:!0}},pollToken:async(a,b)=>{let c=new URL(a.tokenUrl);c.searchParams.set("state",b);let d=await fetch(c.toString(),{method:"GET",headers:{Accept:"application/json","User-Agent":a.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":a.domain,"X-No-Authorization":"true","X-No-User-Id":"true","X-No-Enterprise-Id":"true","X-No-Department-Info":"true","X-Product":"SaaS"}});if(!d.ok){let a=await d.text().catch(()=>"");return{ok:!1,data:{error:"request_failed",error_description:a||`${d.status} ${d.statusText}`}}}let e=await d.json();return 0===e.code&&e.data?.accessToken?{ok:!0,data:{access_token:e.data.accessToken,refresh_token:e.data.refreshToken||"",token_type:e.data.tokenType||"Bearer",expires_in:e.data.expiresIn,expires_at:e.data.expiresAt,refresh_expires_in:e.data.refreshExpiresIn,refresh_expires_at:e.data.refreshExpiresAt,domain:e.data.domain||a.domain,raw:e.data}}:11217===e.code?{ok:!0,data:{error:"authorization_pending"}}:{ok:!1,data:{error:e.msg||"unknown_error"}}},mapTokens:a=>({accessToken:a.access_token,refreshToken:a.refresh_token,expiresIn:a.expires_in||(a.expires_at?Math.max(1,Math.floor((new Date(a.expires_at).getTime()-Date.now())/1e3)):86400),providerSpecificData:{domain:a.domain||j.ne.domain,refreshExpiresIn:a.refresh_expires_in,refreshExpiresAt:a.refresh_expires_at,tokenType:a.token_type||"Bearer",rawAuth:a.raw}})}};function E(a){let b=P[a];if(!b)throw Error(`Unknown provider: ${a}`);return b}async function F(a,b,c){let d=E(a),e=d.prepareConfig?await d.prepareConfig(d.config,c||{}):d.config,{codeVerifier:f,codeChallenge:g,state:h}=(0,i.lz)(d.pkceVerifierBytes),j=e.loginTraceID||h,k=e.privateKeyVerifier||f;return{authUrl:"device_code"===d.flowType?null:"authorization_code_pkce"===d.flowType?d.buildAuthUrl(e,b,j,g,c||{}):d.buildAuthUrl(e,b,j,void 0,c||{}),state:j,codeVerifier:k,codeChallenge:g,redirectUri:b,flowType:d.flowType,fixedPort:d.fixedPort,callbackPath:d.callbackPath||"/callback"}}async function G(a,b,c,d,e,f){let g=E(a),h=g.prepareConfig?await g.prepareConfig(g.config,f||{}):g.config,i=await g.exchangeToken(h,b,c,d,e,f||{}),j=null;return g.postExchange&&(j=await g.postExchange(i)),g.mapTokens(i,j)}async function H(a,b,c){let d=E(a);if("codex"!==a&&"device_code"!==d.flowType)throw Error(`Provider ${a} does not support device code flow`);return await d.requestDeviceCode(d.config,b,c||{})}async function I(a,b,c,d){let e=E(a);if("codex"!==a&&"device_code"!==e.flowType)throw Error(`Provider ${a} does not support device code flow`);let f=await e.pollToken(e.config,b,c,d);if("codex"===a){if(f.pending)return{success:!1,error:"authorization_pending",errorDescription:"Waiting for Codex authorization",pending:!0};if(!f.ok)return{success:!1,error:f.data.error||"device_authorization_failed",errorDescription:f.data.error_description||f.data.message};let a=f.data.authorization_code,b=f.data.code_verifier;if(!a||!b)return{success:!1,error:"invalid_device_response",errorDescription:"Codex device authorization did not return an authorization code"};try{let c=await G("codex",a,e.config.deviceRedirectUri,b);return{success:!0,tokens:c}}catch(a){return{success:!1,error:"token_exchange_failed",errorDescription:a.message}}}if(f.ok)if(f.data.access_token){let a=null;return e.postExchange&&(a=await e.postExchange(f.data)),{success:!0,tokens:e.mapTokens(f.data,a)}}else if("authorization_pending"===f.data.error||"slow_down"===f.data.error)return{success:!1,error:f.data.error,errorDescription:f.data.error_description||f.data.message,pending:"authorization_pending"===f.data.error};else return{success:!1,error:f.data.error||"no_access_token",errorDescription:f.data.error_description||f.data.message||"No access token received"};return{success:!1,error:f.data.error,errorDescription:f.data.error_description}}P.kimi=P["kimi-coding"];let Q=!1;async function J(){if(!Q){Q=!0;try{let{getProviderConnections:a,updateProviderConnection:b}=await Promise.resolve().then(c.bind(c,89718));for(let c of(await a()).filter(a=>{if("codex"!==a.provider||"oauth"!==a.authType||!a.idToken)return!1;let b=!!a.email,c=!!a.providerSpecificData?.chatgptAccountId;return!b||!c})){let a=s(c.idToken);if(!a.email&&!a.chatgptAccountId)continue;let d={};!c.email&&a.email&&(d.email=a.email),(a.chatgptAccountId||a.chatgptPlanType)&&(d.providerSpecificData={...c.providerSpecificData||{},chatgptAccountId:a.chatgptAccountId,chatgptPlanType:a.chatgptPlanType}),Object.keys(d).length&&await b(c.id,d)}}catch(a){Q=!1,console.log("backfillCodexEmails failed:",a?.message||a)}}}d()}catch(a){d(a)}})}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=4322,exports.ids=[40,4322],exports.modules={40040:(a,b,c)=>{c.r(b),c.d(b,{ensureCloudflared:()=>A,getDownloadStatus:()=>y,isCloudflaredRunning:()=>J,killCloudflared:()=>I,setUnexpectedExitHandler:()=>F,spawnCloudflared:()=>G,spawnQuickTunnel:()=>H});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(55591),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(78420),n=c(53859);let o=g().join(n.n,"bin"),p="cloudflared",q="win32"===k().platform(),r=q?`${p}.exe`:p,s=g().join(o,r),t="http2",u=new Set(["http2","quic","auto"]),v={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe",ia32:"cloudflared-windows-386.exe",arm64:"cloudflared-windows-386.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}},w={darwin:"cloudflared-darwin-amd64.tgz",win32:"cloudflared-windows-386.exe",linux:"cloudflared-linux-amd64"},x={downloading:!1,progress:0};function y(){return{downloading:x.downloading,progress:x.progress}}let z=null;async function A(){return z||(z=B().finally(()=>{z=null}))}async function B(){e().existsSync(o)||e().mkdirSync(o,{recursive:!0});let a=`${s}.tmp`;if(e().existsSync(a))try{e().unlinkSync(a)}catch{}if(e().existsSync(s))if(function(a){try{if(e().statSync(a).size<1048576)return!1;let b=e().openSync(a,"r"),c=Buffer.alloc(4);e().readSync(b,c,0,4,0),e().closeSync(b);let d=c.toString("hex");if(q)return d.startsWith("4d5a");if("darwin"===k().platform())return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");return d.startsWith("7f454c46")}catch{return!1}}(s))return q||e().chmodSync(s,"755"),s;else console.log("[cloudflared] Invalid binary detected, re-downloading..."),e().unlinkSync(s);let b=function(){let a=k().platform(),b=k().arch(),c=v[a];if(!c)throw Error(`Unsupported platform: ${a}`);let d=c[b]||w[a];return`https://github.com/cloudflare/cloudflared/releases/latest/download/${d}`}(),c=b.endsWith(".tgz"),d=c?g().join(o,"cloudflared.tgz.tmp"):a;return await function a(b,c){return new Promise((d,f)=>{let g=e().createWriteStream(c);i().get(b,b=>{if([301,302,303,307,308].includes(b.statusCode)){g.close(),e().unlinkSync(c),a(b.headers.location,c).then(d).catch(f);return}if(200!==b.statusCode){g.close(),e().unlinkSync(c),f(Error(`Download failed with status ${b.statusCode}`));return}let h=parseInt(b.headers["content-length"],10)||0,i=0;x.downloading=!0,x.progress=0,b.on("data",a=>{i+=a.length,h>0&&(x.progress=Math.round(i/h*100))}),b.pipe(g),g.on("finish",()=>{x.downloading=!1,x.progress=100,g.close(()=>d(c))}),g.on("error",a=>{x.downloading=!1,x.progress=0,g.close(),e().unlinkSync(c),f(a)})}).on("error",a=>{x.downloading=!1,x.progress=0,g.close(),e().existsSync(c)&&e().unlinkSync(c),f(a)})})}(b,d),c?((0,l.execSync)(`tar -xzf "${d}" -C "${o}"`,{stdio:"pipe",windowsHide:!0}),e().unlinkSync(d)):e().renameSync(d,s),q||e().chmodSync(s,"755"),s}let C=null,D=null,E=!1;function F(a){D=a}async function G(a){let b=await A(),c=(0,l.spawn)(b,["tunnel","run","--dns-resolver-addrs","1.1.1.1:53","--token",a],{detached:!1,windowsHide:!0,cwd:k().tmpdir(),stdio:["ignore","pipe","pipe"]});return C=c,(0,m.xS)(c.pid),new Promise((a,b)=>{let d=0,e=!1,f=setTimeout(()=>{e=!0,a(c)},9e4),g=b=>{let g=b.toString().match(/Registered tunnel connection/g);g&&(d+=g.length)>=4&&!e&&(e=!0,clearTimeout(f),a(c))};c.stdout.on("data",g),c.stderr.on("data",g),c.on("error",a=>{e||(e=!0,clearTimeout(f),b(a))}),c.on("exit",(a,d)=>{C=null,(0,m.r4)();let g=e;if(!e){e=!0,clearTimeout(f);let d="";c.stderr&&!c.stderr.destroyed&&(d=" Check cloudflared logs for details."),1===a?b(Error(`cloudflared exited with code ${a}${d} Ensure your tunnel token is valid and network is reachable.`)):2===a?b(Error(`cloudflared exited with code ${a}${d} Check if required arguments are correct.`)):b(Error(`cloudflared exited with code ${a}${d}`));return}if(E){E=!1;return}g&&D&&D()})})}async function H(a,b){let c=await A(),d=e().mkdtempSync(g().join(k().tmpdir(),"cloudflared-quick-")),f=g().join(d,"config.yml");e().writeFileSync(f,"# quick-tunnel config placeholder\n","utf8");let h=!1,i=()=>{if(!h){h=!0;try{e().rmSync(d,{recursive:!0,force:!0})}catch(a){}}},j=String(process.env.TUNNEL_TRANSPORT_PROTOCOL||process.env.CLOUDFLARED_PROTOCOL||t).trim().toLowerCase(),n=u.has(j)?j:t,o=(0,l.spawn)(c,["tunnel","--url",`http://127.0.0.1:${a}`,"--config",f,"--no-autoupdate","--retries","99"],{detached:!1,windowsHide:!0,cwd:k().tmpdir(),env:{...process.env,TUNNEL_TRANSPORT_PROTOCOL:n},stdio:["ignore","pipe","pipe"]});return C=o,(0,m.xS)(o.pid),new Promise((c,d)=>{let e=!1,f="",g=setTimeout(()=>{e||(e=!0,i(),d(Error(`Quick tunnel timed out. Last log: ${f.slice(-800)||"(empty)"}`)))},9e4),h=null,j=a=>{let d=a.toString();f=(f+d).slice(-4e3);let j=function(a){let b=[];for(let c of a.matchAll(/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi)){let a=c[1];"api"!==a&&b.push(`https://${a}.trycloudflare.com`)}return b.length?b[b.length-1]:null}(d);if(j){if(!e){e=!0,h=j,clearTimeout(g),i(),console.log(`[Tunnel] cloudflared URL: ${j}`),c({child:o,tunnelUrl:j});return}j!==h&&(console.log(`[Tunnel] cloudflared URL changed: ${j}`),h=j,b&&b(j))}};o.stdout.on("data",j),o.stderr.on("data",j),o.on("error",a=>{e||(e=!0,clearTimeout(g),i(),d(a))}),o.on("exit",(b,c)=>{if(C=null,(0,m.r4)(),E){E=!1,clearTimeout(g),i(),e||(e=!0,d(Error("cloudflared killed")));return}if(console.log(`[Tunnel] cloudflared exit code=${b} signal=${c}`),!e){e=!0,clearTimeout(g),i();let c=f.slice(-600).trim()||"(empty)";1===b?d(Error(`cloudflared quick tunnel exited (code 1). Common causes: (1) outbound port 7844 (TCP/UDP) blocked, (2) TryCloudflare service issue, (3) cannot reach 127.0.0.1:${a}, (4) protocol (http2/quic) blocked by network. Last log: ${c}`)):2===b?d(Error(`cloudflared exited (code 2). Bad arguments. Last log: ${c}`)):d(Error(`cloudflared exited (code ${b}). Last log: ${c}`));return}D&&D(),i()})})}function I(a){let b=!!C,c=!1;if(C){try{C.kill()}catch(a){}C=null}let d=(0,m.Cr)();if(d){try{process.kill(d),c=!0}catch(a){}(0,m.r4)()}if(a)try{if(q){let b=`Get-CimInstance Win32_Process -Filter \\"Name='cloudflared.exe'\\" | Where-Object { $_.CommandLine -match ':${a}(\\D|$)' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }`;(0,l.execSync)(`powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command "${b}"`,{stdio:"ignore",windowsHide:!0})}else(0,l.execSync)(`pkill -f "cloudflared.*:${a}([^0-9]|$)" 2>/dev/null || true`,{stdio:"ignore",windowsHide:!0})}catch(a){}E=b||c}function J(){let a=(0,m.Cr)();if(!a)return!1;try{return process.kill(a,0),!0}catch(a){return!1}}},54322:(a,b,c)=>{c.r(b),c.d(b,{disableTunnel:()=>u,enableTunnel:()=>t,getTunnelService:()=>m,getTunnelStatus:()=>v,isTunnelManuallyDisabled:()=>n,isTunnelReconnecting:()=>o,setTunnelUnexpectedExitCallback:()=>q});var d=c(96006),e=c(40040),f=c(78420),g=c(3433);let h=process.env.TUNNEL_WORKER_URL||"https://abc-tunnel.us";async function i(a){if(!a)return!1;try{new URL(a)}catch{return!1}try{return(await (0,g.hd)(`${a}/api/health`,{cache:"no-store",signal:AbortSignal.timeout(5e3)})).ok}catch{return!1}}async function j(a,b={cancelled:!1}){let c=Date.now();for(;Date.now()-c<6e4;){if(b.cancelled)throw Error("cancelled");if(await i(a))return!0;await new Promise(a=>setTimeout(a,2e3))}throw Error("Health check timeout after 60000ms")}var k=c(70321);let l={cancelToken:{cancelled:!1},spawnInProgress:!1,lastRestartAt:0,activeLocalPort:null};function m(){return l}function n(){return l.cancelToken.cancelled}function o(){return l.spawnInProgress}let p=null;function q(a){p=a}async function r(a,b){await fetch(`${h}/api/tunnel/register`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({shortId:a,tunnelUrl:b})})}function s(a){if(a.cancelled)throw Error("tunnel cancelled")}async function t(a=1997){console.log(`[Tunnel] enable start (port=${a})`),l.cancelToken={cancelled:!1},l.activeLocalPort=a,l.spawnInProgress=!0;let b=l.cancelToken;try{if((0,e.isCloudflaredRunning)()){let a=(0,d.C7)();if(a?.tunnelUrl&&a?.shortId){let b=`https://r${a.shortId}.abc-tunnel.us`,[c,d]=await Promise.all([i(a.tunnelUrl),i(b)]);if(c&&d)return console.log(`[Tunnel] already running, reuse: ${a.tunnelUrl}`),{success:!0,tunnelUrl:a.tunnelUrl,shortId:a.shortId,publicUrl:b,alreadyRunning:!0};console.log(`[Tunnel] stale (direct=${c} public=${d}), respawn`)}}(0,e.killCloudflared)(a),console.log("[Tunnel] killed existing cloudflared"),s(b);let c=(0,d.C7)(),f=c?.shortId||(0,d.jd)(),g=async a=>{b.cancelled||(console.log(`[Tunnel] url updated: ${a}`),await r(f,a),(0,d.LZ)({shortId:f,tunnelUrl:a}),await (0,k.Xx)({tunnelEnabled:!0,tunnelUrl:a}))};(0,e.setUnexpectedExitHandler)(()=>{console.warn("[Tunnel] cloudflared exited unexpectedly, scheduling respawn"),p&&p()});let{tunnelUrl:h}=await (0,e.spawnQuickTunnel)(a,g);console.log(`[Tunnel] spawned: ${h}`),s(b);let l=`https://r${f}.abc-tunnel.us`;await r(f,h),(0,d.LZ)({shortId:f,tunnelUrl:h}),await (0,k.Xx)({tunnelEnabled:!0,tunnelUrl:h}),console.log(`[Tunnel] registered shortId=${f} publicUrl=${l}`);let m=!1;try{await j(l,b),m=!0,console.log("[Tunnel] public URL healthy")}catch(a){if(!a.message.startsWith("Health check timeout"))throw a;console.warn("[Tunnel] public URL health check timed out; continuing while routing propagates")}return await i(h)?console.log("[Tunnel] direct URL healthy"):console.warn("[Tunnel] direct URL not reachable yet, continuing via publicUrl"),console.log(`[Tunnel] enable success (publicReachable=${m})`),{success:!0,tunnelUrl:h,shortId:f,publicUrl:l}}catch(a){throw/cloudflared killed|tunnel cancelled/.test(a.message)||console.error(`[Tunnel] enable error: ${a.message}`),a}finally{l.spawnInProgress=!1}}async function u(){console.log("[Tunnel] disable"),l.cancelToken.cancelled=!0,(0,e.setUnexpectedExitHandler)(null);try{(0,e.killCloudflared)(l.activeLocalPort)}catch(a){console.warn(`[Tunnel] kill warn: ${a.message}`)}(0,f.r4)();let a=(0,d.C7)();return a&&(0,d.LZ)({shortId:a.shortId,tunnelUrl:null}),await (0,k.Xx)({tunnelEnabled:!1,tunnelUrl:""}),l.spawnInProgress=!1,l.activeLocalPort=null,{success:!0}}async function v(){let a=!0===(await (0,k.mt)()).tunnelEnabled,b=(0,d.C7)(),c=b?.shortId||"",f=c?`https://r${c}.abc-tunnel.us`:"",g=b?.tunnelUrl||"",h=!!a&&(0,e.isCloudflaredRunning)();return{enabled:a&&h,settingsEnabled:a,tunnelUrl:g,shortId:c,publicUrl:f,running:h}}},78420:(a,b,c)=>{c.d(b,{Cr:()=>k,r4:()=>l,xS:()=>j});var d=c(33873),e=c.n(d),f=c(96006),g=c(78445);let h=e().join(f.Xk,"cloudflared.pid"),i=/cloudflared/i;function j(a){(0,f.ew)(),(0,g.writePidFile)(h,a,{kind:"cloudflared"})}function k(){return(0,g.resolveVerifiedPid)(h,{commandPattern:i}).pid}function l(){(0,g.removePidFile)(h)}},78445:(a,b,c)=>{let d=c(29021),{execFileSync:e}=c(79646),f="win32"===process.platform,g="linux"===process.platform;function h(a){return Number.isInteger(a)&&a>0&&a<=4194304}function i(a,b){try{return e(a,b,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3,windowsHide:!0})}catch{return null}}function j(a,b){if("string"!=typeof a||/[\r\n]/.test(a.trim()))return null;let c=a.trim(),d=c.indexOf(" ("),e=c.lastIndexOf(") ");if(d<1||e<=d+2||Number(c.slice(0,d))!==b)return null;let f=c.slice(e+2).split(/\s+/),g=f[19];return f.length<20||!/^\d+$/.test(g)?null:g}function k(a){if(!h(a))return null;if(g){let b=null;try{b=d.readFileSync(`/proc/${a}/stat`,"utf8")}catch{return null}let c=j(b,a);return c?`${a}:${c}`:null}if(f){let b=String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-Process -Id ${a} -ErrorAction Stop).StartTime.Ticks`])||"").trim();return/^\d+$/.test(b)?`${a}:${b}`:null}let b=String(i("ps",["-o","lstart=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());if(1!==b.length)return null;let c=b[0].trim();return c?`${a}:${c}`:null}function l(a){if(!h(a))return null;if(f)return String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${a}").CommandLine`])||"").trim()||null;let b=String(i("ps",["-o","command=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());return 1!==b.length?null:b[0].trim()||null}function m(a){if(!h(a))return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code||"EACCES"===a.code}}function n(a){let b;try{b=d.readFileSync(a,"utf8").trim()}catch{return null}if(!b)return null;if(/^\d+$/.test(b)){let a=Number(b);return h(a)?{pid:a,startToken:null,kind:null,legacy:!0}:null}try{let a=JSON.parse(b),c=Number(a?.pid);if(!h(c))return null;return{pid:c,startToken:"string"==typeof a.startToken&&a.startToken?a.startToken:null,kind:"string"==typeof a.kind?a.kind:null,legacy:!1}}catch{return null}}a.exports={isValidPid:h,isProcessAlive:m,readProcessStartToken:k,readProcessCommand:l,writePidFile:function(a,b,{kind:c="process"}={}){let e=Number(b);if(!h(e))return!1;let f={v:1,kind:c,pid:e,startToken:k(e),platform:process.platform,writtenAt:new Date().toISOString()};try{let b=`${a}.${process.pid}.tmp`;return d.writeFileSync(b,JSON.stringify(f)),d.renameSync(b,a),!0}catch{return!1}},readPidFile:n,resolveVerifiedPid:function(a,{commandPattern:b=null}={}){let c=n(a);if(!c)return{pid:null,reason:"no_pid_file"};if(!m(c.pid))return{pid:null,reason:"not_running",pidFileStale:!0};let d=k(c.pid);if(c.startToken)return d?d!==c.startToken?{pid:null,reason:"pid_recycled",pidFileStale:!0}:{pid:c.pid,reason:"verified_start_token"}:{pid:null,reason:"identity_unreadable"};if(!b)return{pid:null,reason:"identity_unverifiable"};let e=l(c.pid);return e?b.test(e)?{pid:c.pid,reason:"verified_command"}:{pid:null,reason:"command_mismatch",pidFileStale:!0}:{pid:null,reason:"identity_unreadable"}},removePidFile:function(a){try{d.rmSync(a,{force:!0})}catch{}},parseLinuxStartTime:j}},96006:(a,b,c)=>{c.d(b,{C7:()=>m,LZ:()=>n,Xk:()=>i,ew:()=>l,jd:()=>o});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(53859);let i=g().join(h.n,"tunnel"),j=g().join(i,"state.json"),k="abcdefghijklmnpqrstuvwxyz23456789";function l(){e().existsSync(i)||e().mkdirSync(i,{recursive:!0})}function m(){try{if(e().existsSync(j))return JSON.parse(e().readFileSync(j,"utf8"))}catch{}return null}function n(a){l(),e().writeFileSync(j,JSON.stringify(a,null,2))}function o(){let a="";for(let b=0;b<6;b++)a+=k.charAt(Math.floor(Math.random()*k.length));return a}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=437,exports.ids=[437,3373,5754],exports.modules={10251:(a,b,c)=>{c.d(b,{C7:()=>m,LZ:()=>n,Xk:()=>i,ew:()=>l,jd:()=>o});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(49120);let i=g().join(h.DATA_DIR,"tunnel"),j=g().join(i,"state.json"),k="abcdefghijklmnpqrstuvwxyz23456789";function l(){e().existsSync(i)||e().mkdirSync(i,{recursive:!0})}function m(){try{if(e().existsSync(j))return JSON.parse(e().readFileSync(j,"utf8"))}catch{}return null}function n(a){l(),e().writeFileSync(j,JSON.stringify(a,null,2))}function o(){let a="";for(let b=0;b<6;b++)a+=k.charAt(Math.floor(Math.random()*k.length));return a}},10437:(a,b,c)=>{c.r(b),c.d(b,{ensureCloudflared:()=>A,getDownloadStatus:()=>y,isCloudflaredRunning:()=>J,killCloudflared:()=>I,setUnexpectedExitHandler:()=>F,spawnCloudflared:()=>G,spawnQuickTunnel:()=>H});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(55591),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(24489),n=c(49120);let o=g().join(n.DATA_DIR,"bin"),p="cloudflared",q="win32"===k().platform(),r=q?`${p}.exe`:p,s=g().join(o,r),t="http2",u=new Set(["http2","quic","auto"]),v={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe",ia32:"cloudflared-windows-386.exe",arm64:"cloudflared-windows-386.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}},w={darwin:"cloudflared-darwin-amd64.tgz",win32:"cloudflared-windows-386.exe",linux:"cloudflared-linux-amd64"},x={downloading:!1,progress:0};function y(){return{downloading:x.downloading,progress:x.progress}}let z=null;async function A(){return z||(z=B().finally(()=>{z=null}))}async function B(){e().existsSync(o)||e().mkdirSync(o,{recursive:!0});let a=`${s}.tmp`;if(e().existsSync(a))try{e().unlinkSync(a)}catch{}if(e().existsSync(s))if(function(a){try{if(e().statSync(a).size<1048576)return!1;let b=e().openSync(a,"r"),c=Buffer.alloc(4);e().readSync(b,c,0,4,0),e().closeSync(b);let d=c.toString("hex");if(q)return d.startsWith("4d5a");if("darwin"===k().platform())return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");return d.startsWith("7f454c46")}catch{return!1}}(s))return q||e().chmodSync(s,"755"),s;else console.log("[cloudflared] Invalid binary detected, re-downloading..."),e().unlinkSync(s);let b=function(){let a=k().platform(),b=k().arch(),c=v[a];if(!c)throw Error(`Unsupported platform: ${a}`);let d=c[b]||w[a];return`https://github.com/cloudflare/cloudflared/releases/latest/download/${d}`}(),c=b.endsWith(".tgz"),d=c?g().join(o,"cloudflared.tgz.tmp"):a;return await function a(b,c){return new Promise((d,f)=>{let g=e().createWriteStream(c);i().get(b,b=>{if([301,302,303,307,308].includes(b.statusCode)){g.close(),e().unlinkSync(c),a(b.headers.location,c).then(d).catch(f);return}if(200!==b.statusCode){g.close(),e().unlinkSync(c),f(Error(`Download failed with status ${b.statusCode}`));return}let h=parseInt(b.headers["content-length"],10)||0,i=0;x.downloading=!0,x.progress=0,b.on("data",a=>{i+=a.length,h>0&&(x.progress=Math.round(i/h*100))}),b.pipe(g),g.on("finish",()=>{x.downloading=!1,x.progress=100,g.close(()=>d(c))}),g.on("error",a=>{x.downloading=!1,x.progress=0,g.close(),e().unlinkSync(c),f(a)})}).on("error",a=>{x.downloading=!1,x.progress=0,g.close(),e().existsSync(c)&&e().unlinkSync(c),f(a)})})}(b,d),c?((0,l.execSync)(`tar -xzf "${d}" -C "${o}"`,{stdio:"pipe",windowsHide:!0}),e().unlinkSync(d)):e().renameSync(d,s),q||e().chmodSync(s,"755"),s}let C=null,D=null,E=!1;function F(a){D=a}async function G(a){let b=await A(),c=(0,l.spawn)(b,["tunnel","run","--dns-resolver-addrs","1.1.1.1:53","--token",a],{detached:!1,windowsHide:!0,cwd:k().tmpdir(),stdio:["ignore","pipe","pipe"]});return C=c,(0,m.xS)(c.pid),new Promise((a,b)=>{let d=0,e=!1,f=setTimeout(()=>{e=!0,a(c)},9e4),g=b=>{let g=b.toString().match(/Registered tunnel connection/g);g&&(d+=g.length)>=4&&!e&&(e=!0,clearTimeout(f),a(c))};c.stdout.on("data",g),c.stderr.on("data",g),c.on("error",a=>{e||(e=!0,clearTimeout(f),b(a))}),c.on("exit",(a,d)=>{C=null,(0,m.r4)();let g=e;if(!e){e=!0,clearTimeout(f);let d="";c.stderr&&!c.stderr.destroyed&&(d=" Check cloudflared logs for details."),1===a?b(Error(`cloudflared exited with code ${a}${d} Ensure your tunnel token is valid and network is reachable.`)):2===a?b(Error(`cloudflared exited with code ${a}${d} Check if required arguments are correct.`)):b(Error(`cloudflared exited with code ${a}${d}`));return}if(E){E=!1;return}g&&D&&D()})})}async function H(a,b){let c=await A(),d=e().mkdtempSync(g().join(k().tmpdir(),"cloudflared-quick-")),f=g().join(d,"config.yml");e().writeFileSync(f,"# quick-tunnel config placeholder\n","utf8");let h=!1,i=()=>{if(!h){h=!0;try{e().rmSync(d,{recursive:!0,force:!0})}catch(a){}}},j=String(process.env.TUNNEL_TRANSPORT_PROTOCOL||process.env.CLOUDFLARED_PROTOCOL||t).trim().toLowerCase(),n=u.has(j)?j:t,o=(0,l.spawn)(c,["tunnel","--url",`http://127.0.0.1:${a}`,"--config",f,"--no-autoupdate","--retries","99"],{detached:!1,windowsHide:!0,cwd:k().tmpdir(),env:{...process.env,TUNNEL_TRANSPORT_PROTOCOL:n},stdio:["ignore","pipe","pipe"]});return C=o,(0,m.xS)(o.pid),new Promise((c,d)=>{let e=!1,f="",g=setTimeout(()=>{e||(e=!0,i(),d(Error(`Quick tunnel timed out. Last log: ${f.slice(-800)||"(empty)"}`)))},9e4),h=null,j=a=>{let d=a.toString();f=(f+d).slice(-4e3);let j=function(a){let b=[];for(let c of a.matchAll(/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi)){let a=c[1];"api"!==a&&b.push(`https://${a}.trycloudflare.com`)}return b.length?b[b.length-1]:null}(d);if(j){if(!e){e=!0,h=j,clearTimeout(g),i(),console.log(`[Tunnel] cloudflared URL: ${j}`),c({child:o,tunnelUrl:j});return}j!==h&&(console.log(`[Tunnel] cloudflared URL changed: ${j}`),h=j,b&&b(j))}};o.stdout.on("data",j),o.stderr.on("data",j),o.on("error",a=>{e||(e=!0,clearTimeout(g),i(),d(a))}),o.on("exit",(b,c)=>{if(C=null,(0,m.r4)(),E){E=!1,clearTimeout(g),i(),e||(e=!0,d(Error("cloudflared killed")));return}if(console.log(`[Tunnel] cloudflared exit code=${b} signal=${c}`),!e){e=!0,clearTimeout(g),i();let c=f.slice(-600).trim()||"(empty)";1===b?d(Error(`cloudflared quick tunnel exited (code 1). Common causes: (1) outbound port 7844 (TCP/UDP) blocked, (2) TryCloudflare service issue, (3) cannot reach 127.0.0.1:${a}, (4) protocol (http2/quic) blocked by network. Last log: ${c}`)):2===b?d(Error(`cloudflared exited (code 2). Bad arguments. Last log: ${c}`)):d(Error(`cloudflared exited (code ${b}). Last log: ${c}`));return}D&&D(),i()})})}function I(a){let b=!!C,c=!1;if(C){try{C.kill()}catch(a){}C=null}let d=(0,m.Cr)();if(d){try{process.kill(d),c=!0}catch(a){}(0,m.r4)()}if(a)try{if(q){let b=`Get-CimInstance Win32_Process -Filter \\"Name='cloudflared.exe'\\" | Where-Object { $_.CommandLine -match ':${a}(\\D|$)' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }`;(0,l.execSync)(`powershell -NoProfile -NonInteractive -WindowStyle Hidden -Command "${b}"`,{stdio:"ignore",windowsHide:!0})}else(0,l.execSync)(`pkill -f "cloudflared.*:${a}([^0-9]|$)" 2>/dev/null || true`,{stdio:"ignore",windowsHide:!0})}catch(a){}E=b||c}function J(){let a=(0,m.Cr)();if(!a)return!1;try{return process.kill(a,0),!0}catch(a){return!1}}},15754:(a,b,c)=>{let d=c(29021),{execFileSync:e}=c(79646),f="win32"===process.platform,g="linux"===process.platform;function h(a){return Number.isInteger(a)&&a>0&&a<=4194304}function i(a,b){try{return e(a,b,{encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:5e3,windowsHide:!0})}catch{return null}}function j(a,b){if("string"!=typeof a||/[\r\n]/.test(a.trim()))return null;let c=a.trim(),d=c.indexOf(" ("),e=c.lastIndexOf(") ");if(d<1||e<=d+2||Number(c.slice(0,d))!==b)return null;let f=c.slice(e+2).split(/\s+/),g=f[19];return f.length<20||!/^\d+$/.test(g)?null:g}function k(a){if(!h(a))return null;if(g){let b=null;try{b=d.readFileSync(`/proc/${a}/stat`,"utf8")}catch{return null}let c=j(b,a);return c?`${a}:${c}`:null}if(f){let b=String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-Process -Id ${a} -ErrorAction Stop).StartTime.Ticks`])||"").trim();return/^\d+$/.test(b)?`${a}:${b}`:null}let b=String(i("ps",["-o","lstart=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());if(1!==b.length)return null;let c=b[0].trim();return c?`${a}:${c}`:null}function l(a){if(!h(a))return null;if(f)return String(i("powershell",["-NonInteractive","-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${a}").CommandLine`])||"").trim()||null;let b=String(i("ps",["-o","command=","-p",String(a)])||"").split(/\r?\n/).filter(a=>a.trim());return 1!==b.length?null:b[0].trim()||null}function m(a){if(!h(a))return!1;try{return process.kill(a,0),!0}catch(a){return"EPERM"===a.code||"EACCES"===a.code}}function n(a){let b;try{b=d.readFileSync(a,"utf8").trim()}catch{return null}if(!b)return null;if(/^\d+$/.test(b)){let a=Number(b);return h(a)?{pid:a,startToken:null,kind:null,legacy:!0}:null}try{let a=JSON.parse(b),c=Number(a?.pid);if(!h(c))return null;return{pid:c,startToken:"string"==typeof a.startToken&&a.startToken?a.startToken:null,kind:"string"==typeof a.kind?a.kind:null,legacy:!1}}catch{return null}}a.exports={isValidPid:h,isProcessAlive:m,readProcessStartToken:k,readProcessCommand:l,writePidFile:function(a,b,{kind:c="process"}={}){let e=Number(b);if(!h(e))return!1;let f={v:1,kind:c,pid:e,startToken:k(e),platform:process.platform,writtenAt:new Date().toISOString()};try{let b=`${a}.${process.pid}.tmp`;return d.writeFileSync(b,JSON.stringify(f)),d.renameSync(b,a),!0}catch{return!1}},readPidFile:n,resolveVerifiedPid:function(a,{commandPattern:b=null}={}){let c=n(a);if(!c)return{pid:null,reason:"no_pid_file"};if(!m(c.pid))return{pid:null,reason:"not_running",pidFileStale:!0};let d=k(c.pid);if(c.startToken)return d?d!==c.startToken?{pid:null,reason:"pid_recycled",pidFileStale:!0}:{pid:c.pid,reason:"verified_start_token"}:{pid:null,reason:"identity_unreadable"};if(!b)return{pid:null,reason:"identity_unverifiable"};let e=l(c.pid);return e?b.test(e)?{pid:c.pid,reason:"verified_command"}:{pid:null,reason:"command_mismatch",pidFileStale:!0}:{pid:null,reason:"identity_unreadable"}},removePidFile:function(a){try{d.rmSync(a,{force:!0})}catch{}},parseLinuxStartTime:j}},24489:(a,b,c)=>{c.d(b,{Cr:()=>k,r4:()=>l,xS:()=>j});var d=c(33873),e=c.n(d),f=c(10251),g=c(15754);let h=e().join(f.Xk,"cloudflared.pid"),i=/cloudflared/i;function j(a){(0,f.ew)(),(0,g.writePidFile)(h,a,{kind:"cloudflared"})}function k(){return(0,g.resolveVerifiedPid)(h,{commandPattern:i}).pid}function l(){(0,g.removePidFile)(h)}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=4645,exports.ids=[4645],exports.modules={64645:(a,b,c)=>{c.r(b),c.d(b,{NETWORK_CHECK_INTERVAL_MS:()=>g,NETWORK_SETTLE_MS:()=>e,RESTART_COOLDOWN_MS:()=>d,VIRTUAL_IFACE_REGEX:()=>h,WATCHDOG_INTERVAL_MS:()=>f});let d=12e4,e=2500,f=6e4,g=5e3,h=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i}};
@@ -1 +1 @@
1
- "use strict";exports.id=4720,exports.ids=[4720],exports.modules={47293:(a,b,c)=>{c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,Iu:()=>d.Iu,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,Kg:()=>d.Kg,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,ME:()=>d.ME,Mc:()=>d.Mc,NR:()=>d.NR,Op:()=>d.Op,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)}};
1
+ "use strict";exports.id=4720,exports.ids=[4720],exports.modules={47293:(a,b,c)=>{c.d(b,{A:()=>f});let d=new Uint8Array(16);var e=c(50122);let f=function(a,b,c){return b||a||!crypto.randomUUID?function(a,b,c){let f=(a=a||{}).random??a.rng?.()??crypto.getRandomValues(d);if(f.length<16)throw Error("Random bytes length must be >= 16");if(f[6]=15&f[6]|64,f[8]=63&f[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=f[a];return b}return(0,e.k)(f)}(a,b,c):crypto.randomUUID()}},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,Iu:()=>d.Iu,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,Kg:()=>d.Kg,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,ME:()=>d.ME,Mc:()=>d.Mc,NR:()=>d.NR,Op:()=>d.Op,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uH:()=>d.uH,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(93999)}};
@@ -1,3 +1,3 @@
1
- exports.id=4721,exports.ids=[4721],exports.modules={43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>k});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377);let j=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function k({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)([]),[p,q]=(0,e.useState)(!0),[r,s]=(0,e.useState)(!1),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(null),[D,E]=(0,e.useState)(null),[F,G]=(0,e.useState)(()=>new Set),[H,I]=(0,e.useState)(()=>({})),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!0),[N,O]=(0,e.useState)(!0),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!0),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)(!1),[X,Y]=(0,e.useState)(""),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(""),[ad,ae]=(0,e.useState)(null),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)(!1),[aj,ak]=(0,e.useState)(!1),[al,am]=(0,e.useState)(!1),[an,ao]=(0,e.useState)(""),[ap,aq]=(0,e.useState)(!1),[ar,as]=(0,e.useState)(""),[at,au]=(0,e.useState)(null),[av,aw]=(0,e.useState)(""),[ax,ay]=(0,e.useState)(""),[az,aA]=(0,e.useState)(null),[aB,aC]=(0,e.useState)(!1),[aD,aE]=(0,e.useState)([]),[aF,aG]=(0,e.useState)(""),[aH,aI]=(0,e.useState)(!1),[aJ,aK]=(0,e.useState)(!1),[aL,aM]=(0,e.useState)(!1),aN=(0,e.useRef)(null),aO=(0,e.useRef)(0),aP=(0,e.useRef)(0);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[aQ,aR]=(0,e.useState)(!1),[aS,aT]=(0,e.useState)(!1),[aU,aV]=(0,e.useState)(!1),{copied:aW,copy:aX}=(0,i.C)(),aY=!L||!N,aZ=L?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=5&&d(!1))},[]);let a$=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&Q(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},a_=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&K(a)}catch(a){console.log("Error updating requireApiKey:",a)}},a0=async()=>{try{let[a,b]=await Promise.all([fetch("/api/keys"),fetch("/api/providers")]),[d,e]=await Promise.all([a.json(),b.json()]);a.ok&&c(d.keys||[]),b.ok&&g(e.connections||[])}catch(a){console.log("Error fetching data:",a)}finally{q(!1)}},a1=async(a,...b)=>{let c=()=>aO.current===a;aa(!0),ac("Waiting for tunnel ready...");let d=b.filter(Boolean).map(a=>`${a}/api/health`),e=Date.now();for(;Date.now()-e<3e5;){if(await new Promise(a=>setTimeout(a,2e3)),!c())return!1;let a=await Promise.any(d.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1);if(!c())return!1;if(a)return U(!0),aa(!1),ac(""),!0;if((Date.now()-e)%1e4<2e3)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return ae({type:"error",message:"Tunnel process stopped unexpectedly."}),aa(!1),ac(""),!1}}catch{}}return ae({type:"error",message:"Tunnel created but not reachable. Please try again."}),aa(!1),ac(""),!1},a2=async()=>{ag(!1);let a=aO.current+1;aO.current=a;let b=()=>aO.current===a;aa(!0),ae(null),ac("Creating tunnel...");let c=!0;(async()=>{for(;c&&b();){try{let a=await fetch("/api/tunnel/status");if(a.ok){let d=await a.json();d.download?.downloading?ac(`Downloading cloudflared... ${d.download.progress}%`):c&&b()&&ac("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let d=await fetch("/api/tunnel/enable",{method:"POST"});c=!1;let e=await d.json();if(!b())return;if(!d.ok)return void ae({type:"error",message:e.error||"Failed to enable tunnel"});let f=e.tunnelUrl;if(!f)return void ae({type:"error",message:"No tunnel URL returned"});Y(f),$(e.publicUrl||""),await a1(a,e.publicUrl,f)}catch(a){b()&&ae({type:"error",message:a.message})}finally{c=!1,b()&&(aa(!1),ac(""))}},a3=async()=>{aa(!0),ae(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(U(!1),Y(""),ai(!1),ae({type:"success",message:"Tunnel disabled"})):ae({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){ae({type:"error",message:a.message})}finally{aa(!1)}},a4=async()=>{aA(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return aA(b.installed),b}}catch{}return aA(!1),{installed:!1}},a5=async()=>{aC(!0),au(null),aE([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aF})});if(aG(""),!a.ok){let b=await a.json().catch(()=>({}));throw Error(b.error||`Install failed (${a.status})`)}let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aE(a=>[...a.slice(-50),d.message]);else if("done"===c){aA(!0),aC(!1),aK(!1),a9();return}else"error"===c&&au({type:"error",message:d.error||"Install failed"})}}}catch(a){au({type:"error",message:a.message})}finally{aC(!1)}},a6=async(a,b)=>{let c=()=>aP.current===a;as("Waiting for Tailscale ready...");let d=`${b}/api/health`,e=Date.now();for(;Date.now()-e<3e5&&(await new Promise(a=>setTimeout(a,2e3)),c());)try{let a=await fetch(d,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}return!1},a7=(a,b)=>{aw(a),ay(b)},a8=()=>{aw(""),ay("")},a9=async()=>{aK(!1);let a=aP.current+1;aP.current=a;let b=()=>aP.current===a;aI(!0),aq(!0),au(null),as("Connecting..."),a8();try{let c=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await c.json();if(!b())return;if(c.ok&&d.success){ao(d.tunnelUrl||"");let c=await a6(a,d.tunnelUrl);if(!b())return;ak(!0),au(c?null:{type:"warning",message:"Connected but not reachable yet."});return}if(d.needsLogin&&d.authUrl){a7(d.authUrl,"Open Login Page"),as('Login required — click "Open Login Page" to continue');for(let c=0;c<40;c++){if(await new Promise(a=>setTimeout(a,3e3)),!b())return;try{let c=await fetch("/api/tunnel/tailscale-check");if(c.ok&&(await c.json()).loggedIn){a8(),as("Starting funnel...");let c=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await c.json();if(!b())return;if(c.ok&&d.success){ao(d.tunnelUrl||"");let c=await a6(a,d.tunnelUrl);if(!b())return;ak(!0),au(c?null:{type:"warning",message:"Connected but not reachable yet."})}else d.funnelNotEnabled&&d.enableUrl?await ba(a,d.enableUrl):au({type:"error",message:d.error||"Failed to start funnel"});return}}catch{}}a8(),au({type:"error",message:"Login timed out. Please try again."});return}if(d.funnelNotEnabled&&d.enableUrl)return void await ba(a,d.enableUrl);au({type:"error",message:d.error||"Failed to connect"})}catch(a){b()&&au({type:"error",message:a.message})}finally{b()&&(aq(!1),aI(!1),as(""),a8())}},ba=async(a,b)=>{let c=()=>aP.current===a;a7(b,"Open Funnel Settings"),as('Click "Open Funnel Settings" to enable Funnel...');for(let b=0;b<40;b++){if(await new Promise(a=>setTimeout(a,3e3)),!c())return;try{let b=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await b.json();if(!c())return;if(b.ok&&d.success){a8(),ao(d.tunnelUrl||"");let b=await a6(a,d.tunnelUrl);if(!c())return;ak(!0),au(b?null:{type:"warning",message:"Connected but not reachable yet."});return}if(d.funnelNotEnabled)continue;if(d.error){a8(),au({type:"error",message:d.error});return}}catch{}}a8(),au({type:"error",message:"Timed out waiting for Funnel to be enabled."})},bb=async()=>{aq(!0),au(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(ak(!1),ao(""),aM(!1),au({type:"success",message:"Tailscale disabled"})):au({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){au({type:"error",message:a.message})}finally{aq(!1)}},bc=async()=>{au(null),aE([]);let a=await a4();a?.installed&&a?.hasCachedPassword?a9():aK(!0)},bd=async a=>{if(a.preventDefault(),t.trim()&&!z){A("create"),C(null);try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:t})}),b=await a.json();if(!a.ok)throw Error(b.error||`Failed to create key (${a.status})`);w(b.key),b.id&&b.key&&I(a=>({...a,[b.id]:b.key})),await a0(),u(""),s(!1),C({type:"success",message:"API key created"})}catch(a){C({type:"error",message:a.message})}finally{A(null)}}},be=async(a,b)=>{if(!z){A(`toggle:${a}`),C(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})});if(!d.ok)throw Error(`Failed to update key (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c)),C({type:"success",message:"API key updated"})}catch(a){C({type:"error",message:a.message})}finally{A(null)}}},bf=async(a,b,d)=>{if(z)return;let e=""===d?0:Math.max(0,Number(d)||0);A(`budget:${a}`),C(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[b]:e})});if(!d.ok)throw Error(`Failed to update budget (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,[b]:e}:c)),C({type:"success",message:"Budget updated"})}catch(a){C({type:"error",message:a.message})}finally{A(null)}},bg=async()=>{if(!D||z)return;let{keyId:a,selected:b}=D,d=[...b];A(`connections:${a}`),C(null);try{let b=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedConnectionIds:d})}),e=await b.json().catch(()=>({}));if(!b.ok)throw Error(e.error||`Failed to update provider access (${b.status})`);c(b=>b.map(b=>b.id===a?{...b,allowedConnectionIds:d}:b)),E(null),C({type:"success",message:"Provider access updated"})}catch(a){C({type:"error",message:a.message})}finally{A(null)}},bh=async a=>{if(H[a])return H[a];let b=await fetch(`/api/keys/${a}?reveal=1`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||`Failed to reveal key (${b.status})`);let d=c.key?.key||c.key;if("string"!=typeof d||!d)throw Error("Key secret is not available");return I(b=>({...b,[a]:d})),d},bi=async a=>{if(F.has(a))return void G(b=>{let c=new Set(b);return c.delete(a),c});try{await bh(a),G(b=>{let c=new Set(b);return c.add(a),c}),C(null)}catch(a){C({type:"error",message:a.message})}},bj=async a=>{try{let b=await bh(a);aX(b,a),C(null)}catch(a){C({type:"error",message:a.message})}},[bk,bl]=(0,e.useState)("/v1");if(p)return(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]});let bm={local_url:"Local endpoint",tunnel_url:"Cloudflare Tunnel endpoint",ts_url:"Tailscale endpoint"}[aW]||"",bn=f.reduce((a,b)=>{let c=b.provider||"other";return a[c]||(a[c]=[]),a[c].push(b),a},{});return(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsxs)(h.Zp,{padding:"none",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-t-[13px] border-b border-border-subtle bg-linear-to-r from-primary/[0.07] via-primary/[0.025] to-transparent px-4 py-4 sm:px-5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-[22px] text-primary ring-1 ring-primary/15",children:"terminal"}),(0,d.jsx)(h.w,{title:"API Endpoint",description:"Choose how local and remote clients connect to Zevai Router.",className:"flex-1"})]}),(0,d.jsxs)("div",{className:"p-4 sm:p-5",children:[(0,d.jsx)("div",{"aria-live":"polite",className:"sr-only",children:bm?`${bm}: Copied to clipboard`:""}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(l,{label:"Local",url:bk,copyId:"local_url",copied:aW,onCopy:aX}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${T?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),T&&!_&&V?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{"aria-label":"Cloudflare Tunnel endpoint URL",value:`${Z||X}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aX(`${Z||X}/v1`,"tunnel_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":"Copy Cloudflare Tunnel endpoint URL",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===aW?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>ai(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!T||_||V?_?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ab||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{aO.current+=1,aa(!1),ac("")},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):ad?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),ad.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>ag(!0),children:"Enable"})]}):R?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>S(!1),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>{aY?ae({type:"error",message:`Security required: ${aZ}`}):J?ag(!0):ae({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aQ?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>ai(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${aj?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),aj&&!ap&&al?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{"aria-label":"Tailscale endpoint URL",value:`${an}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aX(`${an}/v1`,"ts_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":"Copy Tailscale endpoint URL",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===aW?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aM(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!aj||ap||al?ap||aH?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ar||"Connecting..."]}),av&&(0,d.jsx)(h.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(av,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:ax||"Open"}),(0,d.jsx)("button",{onClick:()=>{aP.current+=1,aq(!1),aI(!1),as(""),a8()},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):at?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),at.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",className:"min-h-11 sm:min-h-8",onClick:bc,children:"Enable"})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{aY?au({type:"error",message:`Security required: ${aZ}`}):bc()},className:"min-h-11 sm:min-h-8",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aS?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aM(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),aY&&!T&&!aj&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(o,{message:aZ,action:{label:"Open settings",href:"/dashboard/profile"}})}),(T||aj)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!J&&(0,d.jsx)(o,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!L||!N)&&(0,d.jsx)(o,{message:L?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:L?"Change password":"Enable",href:"/dashboard/profile"}})]}),(T||aj)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(h.lM,{touchTarget:!0,label:"Allow dashboard access via tunnel",checked:P,onChange:()=>a$(!P)}),(0,d.jsx)(n,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsxs)(h.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-[21px] text-primary ring-1 ring-primary/15",children:"vpn_key"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Keys"}),(0,d.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-0.5 text-[10px] font-semibold text-text-muted ring-1 ring-border-subtle",children:[b.length," ",1===b.length?"key":"keys"]})]}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Control authentication and spending per client."})]})]}),b.length>0&&(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),className:"w-full sm:w-auto",children:"Create Key"})]}),B&&(0,d.jsx)(h.Gi,{tone:B.type,className:"mb-4",children:B.message}),(0,d.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-xl border border-primary/15 bg-primary/[0.045] p-4 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface text-[17px] text-primary ring-1 ring-border-subtle",children:"shield_lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"mt-0.5 text-sm text-text-muted",children:"Reject requests that do not include a valid client key."})]})]}),(0,d.jsx)("div",{className:"shrink-0 self-end sm:self-auto",children:(0,d.jsx)(h.lM,{touchTarget:!0,label:"Require API key",checked:J,onChange:()=>a_(!J)})})]}),aU&&!J&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(o,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsx)(h.pp,{icon:"vpn_key",title:"No API keys yet",description:"Create a key to authenticate clients and control their access.",action:(0,d.jsx)(h.$n,{icon:"add",onClick:()=>s(!0),children:"Create Key"})}):(0,d.jsx)("div",{className:"grid grid-cols-1 gap-3 lg:grid-cols-2",children:b.map(a=>{var b,e;return(0,d.jsxs)("div",{className:`group flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-xl border border-border-subtle bg-surface-2/25 p-4 transition-[border-color,box-shadow,opacity] hover:border-primary/20 hover:shadow-[0_14px_28px_-26px_rgba(15,23,42,0.65)] ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 min-w-0",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono truncate max-w-[min(100%,28rem)]",children:(b=a,F.has(b.id)&&H[b.id]?H[b.id]:b.maskedKey||((e=b.key)?e.length>8?e.slice(0,8)+"...":e:"")||"••••••••")}),(0,d.jsx)("button",{type:"button",onClick:()=>bi(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:F.has(a.id)?"Hide key":"Show key","aria-label":F.has(a.id)?"Hide API key":"Show API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:F.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{type:"button",onClick:()=>bj(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:"Copy key","aria-label":"Copy API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:aW===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Daily $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:z===`budget:${a.id}`,defaultValue:a.budgetDaily||0,onBlur:b=>bf(a.id,"budgetDaily",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Daily budget cap in USD (0 = unlimited)"},`daily-${a.budgetDaily||0}`)]}),(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Monthly $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:z===`budget:${a.id}`,defaultValue:a.budgetMonthly||0,onBlur:b=>bf(a.id,"budgetMonthly",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Monthly budget cap in USD (0 = unlimited)"},`monthly-${a.budgetMonthly||0}`)]}),(0,d.jsxs)("button",{type:"button",disabled:z===`connections:${a.id}`,onClick:()=>{E({keyId:a.id,keyName:a.name,selected:new Set(a.allowedConnectionIds||[])})},className:"inline-flex min-h-8 items-center gap-1.5 rounded-lg border border-border bg-surface px-2.5 py-1 text-[11px] font-medium text-text-muted transition-colors hover:border-primary/40 hover:text-primary disabled:opacity-50",title:"Restrict this API key to selected provider connections",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[15px]",children:"account_tree"}),(a.allowedConnectionIds||[]).length>0?`${a.allowedConnectionIds.length} connection${1===a.allowedConnectionIds.length?"":"s"}`:"All connections"]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-11 items-center justify-center sm:size-auto",children:(0,d.jsx)(h.lM,{size:"sm",touchTarget:!0,disabled:z===`toggle:${a.id}`,checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?y({title:"Pause API Key",message:`Pause API key "${a.name}"?
1
+ exports.id=4721,exports.ids=[4721],exports.modules={43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(50412),i=c(50377),j=c(39888),k=c(42964);let l=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function m({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)([]),[r,s]=(0,e.useState)(!0),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)(null),[B,C]=(0,e.useState)(null),[D,E]=(0,e.useState)(null),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(()=>new Set),[J,K]=(0,e.useState)(()=>({})),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!0),[P,Q]=(0,e.useState)(!0),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(!0),[V,W]=(0,e.useState)(!1),[X,Y]=(0,e.useState)(!1),[Z,$]=(0,e.useState)(""),[_,aa]=(0,e.useState)(""),[ab,ac]=(0,e.useState)(!1),[ad,ae]=(0,e.useState)(""),[af,ag]=(0,e.useState)(null),[ah,ai]=(0,e.useState)(!1),[aj,ak]=(0,e.useState)(!1),[al,am]=(0,e.useState)(!1),[an,ao]=(0,e.useState)(!1),[ap,aq]=(0,e.useState)(""),[ar,as]=(0,e.useState)(!1),[at,au]=(0,e.useState)(""),[av,aw]=(0,e.useState)(null),[ax,ay]=(0,e.useState)(""),[az,aA]=(0,e.useState)(""),[aB,aC]=(0,e.useState)(null),[aD,aE]=(0,e.useState)(!1),[aF,aG]=(0,e.useState)([]),[aH,aI]=(0,e.useState)(""),[aJ,aK]=(0,e.useState)(!1),[aL,aM]=(0,e.useState)(!1),[aN,aO]=(0,e.useState)(!1),aP=(0,e.useRef)(null),aQ=(0,e.useRef)(0),aR=(0,e.useRef)(0);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[aS,aT]=(0,e.useState)(!1),[aU,aV]=(0,e.useState)(!1),[aW,aX]=(0,e.useState)(!1),{copied:aY,copy:aZ}=(0,i.C)(),a$=!N||!P,a_=N?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=5&&d(!1))},[]);let a0=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&S(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},a1=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&M(a)}catch(a){console.log("Error updating requireApiKey:",a)}},a2=async()=>{try{let[a,b]=await Promise.all([fetch("/api/keys"),(0,j.b7)("providers:list",k.t7)]),d=await a.json();a.ok&&c(d.keys||[]),g(b.connections||[])}catch(a){console.log("Error fetching data:",a)}finally{s(!1)}},a3=async(a,...b)=>{let c=()=>aQ.current===a;ac(!0),ae("Waiting for tunnel ready...");let d=b.filter(Boolean).map(a=>`${a}/api/health`),e=Date.now();for(;Date.now()-e<3e5;){if(await new Promise(a=>setTimeout(a,2e3)),!c())return!1;let a=await Promise.any(d.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1);if(!c())return!1;if(a)return W(!0),ac(!1),ae(""),!0;if((Date.now()-e)%1e4<2e3)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return ag({type:"error",message:"Tunnel process stopped unexpectedly."}),ac(!1),ae(""),!1}}catch{}}return ag({type:"error",message:"Tunnel created but not reachable. Please try again."}),ac(!1),ae(""),!1},a4=async()=>{ai(!1);let a=aQ.current+1;aQ.current=a;let b=()=>aQ.current===a;ac(!0),ag(null),ae("Creating tunnel...");let c=!0;(async()=>{for(;c&&b();){try{let a=await fetch("/api/tunnel/status");if(a.ok){let d=await a.json();d.download?.downloading?ae(`Downloading cloudflared... ${d.download.progress}%`):c&&b()&&ae("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let d=await fetch("/api/tunnel/enable",{method:"POST"});c=!1;let e=await d.json();if(!b())return;if(!d.ok)return void ag({type:"error",message:e.error||"Failed to enable tunnel"});let f=e.tunnelUrl;if(!f)return void ag({type:"error",message:"No tunnel URL returned"});$(f),aa(e.publicUrl||""),await a3(a,e.publicUrl,f)}catch(a){b()&&ag({type:"error",message:a.message})}finally{c=!1,b()&&(ac(!1),ae(""))}},a5=async()=>{ac(!0),ag(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(W(!1),$(""),ak(!1),ag({type:"success",message:"Tunnel disabled"})):ag({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){ag({type:"error",message:a.message})}finally{ac(!1)}},a6=async()=>{aC(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return aC(b.installed),b}}catch{}return aC(!1),{installed:!1}},a7=async()=>{aE(!0),aw(null),aG([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aH})});if(aI(""),!a.ok){let b=await a.json().catch(()=>({}));throw Error(b.error||`Install failed (${a.status})`)}let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aG(a=>[...a.slice(-50),d.message]);else if("done"===c){aC(!0),aE(!1),aM(!1),bb();return}else"error"===c&&aw({type:"error",message:d.error||"Install failed"})}}}catch(a){aw({type:"error",message:a.message})}finally{aE(!1)}},a8=async(a,b)=>{let c=()=>aR.current===a;au("Waiting for Tailscale ready...");let d=`${b}/api/health`,e=Date.now();for(;Date.now()-e<3e5&&(await new Promise(a=>setTimeout(a,2e3)),c());)try{let a=await fetch(d,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}return!1},a9=(a,b)=>{ay(a),aA(b)},ba=()=>{ay(""),aA("")},bb=async()=>{aM(!1);let a=aR.current+1;aR.current=a;let b=()=>aR.current===a;aK(!0),as(!0),aw(null),au("Connecting..."),ba();try{let c=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await c.json();if(!b())return;if(c.ok&&d.success){aq(d.tunnelUrl||"");let c=await a8(a,d.tunnelUrl);if(!b())return;am(!0),aw(c?null:{type:"warning",message:"Connected but not reachable yet."});return}if(d.needsLogin&&d.authUrl){a9(d.authUrl,"Open Login Page"),au('Login required — click "Open Login Page" to continue');for(let c=0;c<40;c++){if(await new Promise(a=>setTimeout(a,3e3)),!b())return;try{let c=await fetch("/api/tunnel/tailscale-check");if(c.ok&&(await c.json()).loggedIn){ba(),au("Starting funnel...");let c=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await c.json();if(!b())return;if(c.ok&&d.success){aq(d.tunnelUrl||"");let c=await a8(a,d.tunnelUrl);if(!b())return;am(!0),aw(c?null:{type:"warning",message:"Connected but not reachable yet."})}else d.funnelNotEnabled&&d.enableUrl?await bc(a,d.enableUrl):aw({type:"error",message:d.error||"Failed to start funnel"});return}}catch{}}ba(),aw({type:"error",message:"Login timed out. Please try again."});return}if(d.funnelNotEnabled&&d.enableUrl)return void await bc(a,d.enableUrl);aw({type:"error",message:d.error||"Failed to connect"})}catch(a){b()&&aw({type:"error",message:a.message})}finally{b()&&(as(!1),aK(!1),au(""),ba())}},bc=async(a,b)=>{let c=()=>aR.current===a;a9(b,"Open Funnel Settings"),au('Click "Open Funnel Settings" to enable Funnel...');for(let b=0;b<40;b++){if(await new Promise(a=>setTimeout(a,3e3)),!c())return;try{let b=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),d=await b.json();if(!c())return;if(b.ok&&d.success){ba(),aq(d.tunnelUrl||"");let b=await a8(a,d.tunnelUrl);if(!c())return;am(!0),aw(b?null:{type:"warning",message:"Connected but not reachable yet."});return}if(d.funnelNotEnabled)continue;if(d.error){ba(),aw({type:"error",message:d.error});return}}catch{}}ba(),aw({type:"error",message:"Timed out waiting for Funnel to be enabled."})},bd=async()=>{as(!0),aw(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(am(!1),aq(""),aO(!1),aw({type:"success",message:"Tailscale disabled"})):aw({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){aw({type:"error",message:a.message})}finally{as(!1)}},be=async()=>{aw(null),aG([]);let a=await a6();a?.installed&&a?.hasCachedPassword?bb():aM(!0)},bf=async a=>{if(a.preventDefault(),v.trim()&&!B){C("create"),E(null);try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:v})}),b=await a.json();if(!a.ok)throw Error(b.error||`Failed to create key (${a.status})`);y(b.key),b.id&&b.key&&K(a=>({...a,[b.id]:b.key})),await a2(),w(""),u(!1),E({type:"success",message:"API key created"})}catch(a){E({type:"error",message:a.message})}finally{C(null)}}},bg=async(a,b)=>{if(!B){C(`toggle:${a}`),E(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})});if(!d.ok)throw Error(`Failed to update key (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c)),E({type:"success",message:"API key updated"})}catch(a){E({type:"error",message:a.message})}finally{C(null)}}},bh=async(a,b,d)=>{if(B)return;let e=""===d?0:Math.max(0,Number(d)||0);C(`budget:${a}`),E(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[b]:e})});if(!d.ok)throw Error(`Failed to update budget (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,[b]:e}:c)),E({type:"success",message:"Budget updated"})}catch(a){E({type:"error",message:a.message})}finally{C(null)}},bi=async()=>{if(!F||B)return;let{keyId:a,selected:b}=F,d=[...b];C(`connections:${a}`),E(null);try{let b=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({allowedConnectionIds:d})}),e=await b.json().catch(()=>({}));if(!b.ok)throw Error(e.error||`Failed to update provider access (${b.status})`);c(b=>b.map(b=>b.id===a?{...b,allowedConnectionIds:d}:b)),G(null),E({type:"success",message:"Provider access updated"})}catch(a){E({type:"error",message:a.message})}finally{C(null)}},bj=async a=>{if(J[a])return J[a];let b=await fetch(`/api/keys/${a}?reveal=1`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||`Failed to reveal key (${b.status})`);let d=c.key?.key||c.key;if("string"!=typeof d||!d)throw Error("Key secret is not available");return K(b=>({...b,[a]:d})),d},bk=async a=>{if(H.has(a))return void I(b=>{let c=new Set(b);return c.delete(a),c});try{await bj(a),I(b=>{let c=new Set(b);return c.add(a),c}),E(null)}catch(a){E({type:"error",message:a.message})}},bl=async a=>{try{let b=await bj(a);aZ(b,a),E(null)}catch(a){E({type:"error",message:a.message})}},[bm,bn]=(0,e.useState)("/v1");if(r)return(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsx)(h.Qv,{}),(0,d.jsx)(h.Qv,{})]});let bo={local_url:"Local endpoint",tunnel_url:"Cloudflare Tunnel endpoint",ts_url:"Tailscale endpoint"}[aY]||"",bp=f.reduce((a,b)=>{let c=b.provider||"other";return a[c]||(a[c]=[]),a[c].push(b),a},{});return(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsxs)(h.Zp,{padding:"none",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-t-[13px] border-b border-border-subtle bg-linear-to-r from-primary/[0.07] via-primary/[0.025] to-transparent px-4 py-4 sm:px-5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-[22px] text-primary ring-1 ring-primary/15",children:"terminal"}),(0,d.jsx)(h.w,{title:"API Endpoint",description:"Choose how local and remote clients connect to Zevai Router.",className:"flex-1"})]}),(0,d.jsxs)("div",{className:"p-4 sm:p-5",children:[(0,d.jsx)("div",{"aria-live":"polite",className:"sr-only",children:bo?`${bo}: Copied to clipboard`:""}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(n,{label:"Local",url:bm,copyId:"local_url",copied:aY,onCopy:aZ}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${V?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),V&&!ab&&X?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{"aria-label":"Cloudflare Tunnel endpoint URL",value:`${_||Z}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aZ(`${_||Z}/v1`,"tunnel_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":"Copy Cloudflare Tunnel endpoint URL",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===aY?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>ak(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!V||ab||X?ab?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ad||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{aQ.current+=1,ac(!1),ae("")},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):af?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),af.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>ai(!0),children:"Enable"})]}):T?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>U(!1),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>{a$?ag({type:"error",message:`Security required: ${a_}`}):L?ai(!0):ag({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aS?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>ak(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${al?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),al&&!ar&&an?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(h.pd,{"aria-label":"Tailscale endpoint URL",value:`${ap}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aZ(`${ap}/v1`,"ts_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":"Copy Tailscale endpoint URL",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===aY?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aO(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!al||ar||an?ar||aJ?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),at||"Connecting..."]}),ax&&(0,d.jsx)(h.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(ax,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:az||"Open"}),(0,d.jsx)("button",{onClick:()=>{aR.current+=1,as(!1),aK(!1),au(""),ba()},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):av?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),av.message]}),(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",className:"min-h-11 sm:min-h-8",onClick:be,children:"Enable"})]}):(0,d.jsx)(h.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{a$?aw({type:"error",message:`Security required: ${a_}`}):be()},className:"min-h-11 sm:min-h-8",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aU?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aO(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),a$&&!V&&!al&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(q,{message:a_,action:{label:"Open settings",href:"/dashboard/profile"}})}),(V||al)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!L&&(0,d.jsx)(q,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!N||!P)&&(0,d.jsx)(q,{message:N?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:N?"Change password":"Enable",href:"/dashboard/profile"}})]}),(V||al)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(h.lM,{touchTarget:!0,label:"Allow dashboard access via tunnel",checked:R,onChange:()=>a0(!R)}),(0,d.jsx)(p,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsxs)(h.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-[21px] text-primary ring-1 ring-primary/15",children:"vpn_key"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Keys"}),(0,d.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-0.5 text-[10px] font-semibold text-text-muted ring-1 ring-border-subtle",children:[b.length," ",1===b.length?"key":"keys"]})]}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Control authentication and spending per client."})]})]}),b.length>0&&(0,d.jsx)(h.$n,{icon:"add",onClick:()=>u(!0),className:"w-full sm:w-auto",children:"Create Key"})]}),D&&(0,d.jsx)(h.Gi,{tone:D.type,className:"mb-4",children:D.message}),(0,d.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-xl border border-primary/15 bg-primary/[0.045] p-4 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface text-[17px] text-primary ring-1 ring-border-subtle",children:"shield_lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"mt-0.5 text-sm text-text-muted",children:"Reject requests that do not include a valid client key."})]})]}),(0,d.jsx)("div",{className:"shrink-0 self-end sm:self-auto",children:(0,d.jsx)(h.lM,{touchTarget:!0,label:"Require API key",checked:L,onChange:()=>a1(!L)})})]}),aW&&!L&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(q,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsx)(h.pp,{icon:"vpn_key",title:"No API keys yet",description:"Create a key to authenticate clients and control their access.",action:(0,d.jsx)(h.$n,{icon:"add",onClick:()=>u(!0),children:"Create Key"})}):(0,d.jsx)("div",{className:"grid grid-cols-1 gap-3 lg:grid-cols-2",children:b.map(a=>{var b,e;return(0,d.jsxs)("div",{className:`group flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-xl border border-border-subtle bg-surface-2/25 p-4 transition-[border-color,box-shadow,opacity] hover:border-primary/20 hover:shadow-[0_14px_28px_-26px_rgba(15,23,42,0.65)] ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 min-w-0",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono truncate max-w-[min(100%,28rem)]",children:(b=a,H.has(b.id)&&J[b.id]?J[b.id]:b.maskedKey||((e=b.key)?e.length>8?e.slice(0,8)+"...":e:"")||"••••••••")}),(0,d.jsx)("button",{type:"button",onClick:()=>bk(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:H.has(a.id)?"Hide key":"Show key","aria-label":H.has(a.id)?"Hide API key":"Show API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:H.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{type:"button",onClick:()=>bl(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:"Copy key","aria-label":"Copy API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:aY===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Daily $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:B===`budget:${a.id}`,defaultValue:a.budgetDaily||0,onBlur:b=>bh(a.id,"budgetDaily",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Daily budget cap in USD (0 = unlimited)"},`daily-${a.budgetDaily||0}`)]}),(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Monthly $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:B===`budget:${a.id}`,defaultValue:a.budgetMonthly||0,onBlur:b=>bh(a.id,"budgetMonthly",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Monthly budget cap in USD (0 = unlimited)"},`monthly-${a.budgetMonthly||0}`)]}),(0,d.jsxs)("button",{type:"button",disabled:B===`connections:${a.id}`,onClick:()=>{G({keyId:a.id,keyName:a.name,selected:new Set(a.allowedConnectionIds||[])})},className:"inline-flex min-h-8 items-center gap-1.5 rounded-lg border border-border bg-surface px-2.5 py-1 text-[11px] font-medium text-text-muted transition-colors hover:border-primary/40 hover:text-primary disabled:opacity-50",title:"Restrict this API key to selected provider connections",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[15px]",children:"account_tree"}),(a.allowedConnectionIds||[]).length>0?`${a.allowedConnectionIds.length} connection${1===a.allowedConnectionIds.length?"":"s"}`:"All connections"]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-11 items-center justify-center sm:size-auto",children:(0,d.jsx)(h.lM,{size:"sm",touchTarget:!0,disabled:B===`toggle:${a.id}`,checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?A({title:"Pause API Key",message:`Pause API key "${a.name}"?
2
2
 
3
- This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{y(null),be(a.id,b)}}):be(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:z===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!z&&y({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{y(null),A(`delete:${b}`),C(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),G(a=>{let c=new Set(a);return c.delete(b),c}),I(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),C({type:"success",message:"API key deleted"})}catch(a){C({type:"error",message:a.message})}finally{A(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(h.aF,{isOpen:!!D,title:"Provider Access",onClose:()=>{z?.startsWith("connections:")||E(null)},children:D&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-primary/15 bg-primary/[0.045] p-3",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:D.keyName}),(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Empty selection keeps the current unrestricted behavior. Once selected, routing, fallback, and combos can only use these connections."})]}),0===f.length?(0,d.jsx)("p",{className:"rounded-xl border border-dashed border-border p-5 text-center text-sm text-text-muted",children:"No provider connections are configured yet."}):(0,d.jsx)("div",{className:"max-h-[min(28rem,60vh)] space-y-3 overflow-y-auto pr-1",children:Object.entries(bn).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-xl border border-border-subtle bg-surface-2/25 p-3",children:[(0,d.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-text-muted",children:a}),(0,d.jsx)("div",{className:"space-y-1.5",children:b.map(a=>{let b=D.selected.has(a.id),c=a.displayName||a.name||a.email||a.id;return(0,d.jsxs)("label",{className:"flex min-h-11 cursor-pointer items-center gap-3 rounded-lg px-2 py-1.5 transition-colors hover:bg-surface",children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:()=>{var b;return b=a.id,void E(a=>{if(!a)return a;let c=new Set(a.selected);return c.has(b)?c.delete(b):c.add(b),{...a,selected:c}})},className:"size-4 accent-primary"}),(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-sm text-text-main",children:c}),(0,d.jsx)("span",{className:"block truncate font-mono text-[10px] text-text-muted",children:a.id})]}),!1===a.isActive&&(0,d.jsx)("span",{className:"rounded-full bg-orange-500/10 px-2 py-0.5 text-[10px] text-orange-500",children:"Paused"})]},a.id)})})]},a))}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{fullWidth:!0,onClick:bg,disabled:z===`connections:${D.keyId}`,children:z===`connections:${D.keyId}`?"Saving...":"Save access"}),(0,d.jsx)(h.$n,{fullWidth:!0,variant:"ghost",disabled:z===`connections:${D.keyId}`,onClick:()=>E(null),children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:r,title:"Create API Key",onClose:()=>{s(!1),u("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:bd,children:[(0,d.jsx)(h.pd,{label:"Key Name",value:t,onChange:a=>u(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{type:"submit",fullWidth:!0,disabled:!t.trim()||"create"===z,children:"create"===z?"Creating...":"Create"}),(0,d.jsx)(h.$n,{type:"button",onClick:()=>{s(!1),u("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!v,title:"API Key Created",onClose:()=>w(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:v||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===aW?"check":"content_copy",onClick:()=>aX(v,"created_key"),children:"created_key"===aW?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>w(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:af,title:"Enable Tunnel",onClose:()=>ag(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter 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."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:j.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a2,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>ag(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:ah,title:"Disable Tunnel",onClose:()=>!_&&ai(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a3,fullWidth:!0,disabled:_,variant:"danger",children:_?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>ai(!1),variant:"ghost",fullWidth:!0,disabled:_,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:aJ,title:"Tailscale Funnel",onClose:()=>{aB||(aK(!1),aG(""),au(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===az&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===az&&!aB&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a5,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(h.$n,{onClick:()=>aK(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aB&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aD.length>0&&(0,d.jsx)("div",{ref:aN,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aD.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===az&&!aB&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>a9(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>aK(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),at&&(0,d.jsx)(m,{status:at})]})}),(0,d.jsx)(h.aF,{isOpen:aL,title:"Disable Tailscale",onClose:()=>!ap&&aM(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bb,fullWidth:!0,disabled:ap,variant:"danger",children:ap?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>aM(!1),variant:"ghost",fullWidth:!0,disabled:ap,children:"Cancel"})]})]})}),(0,d.jsx)(h.uo,{isOpen:!!x,onClose:()=>y(null),onConfirm:x?.onConfirm,title:x?.title||"Confirm",message:x?.message,variant:"danger"})]})}function l({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:i}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(h.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),i]})}function m({status:a,className:b=""}){return(0,d.jsx)(h.Gi,{tone:a.type,className:b,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function n({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function o({message:a,action:b}){return(0,d.jsx)(h.Gi,{tone:"warning",action:b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label}),children:a})}k.propTypes={machineId:g().string.isRequired}},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};
3
+ This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{A(null),bg(a.id,b)}}):bg(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:B===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!B&&A({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{A(null),C(`delete:${b}`),E(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),I(a=>{let c=new Set(a);return c.delete(b),c}),K(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),E({type:"success",message:"API key deleted"})}catch(a){E({type:"error",message:a.message})}finally{C(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(h.aF,{isOpen:!!F,title:"Provider Access",onClose:()=>{B?.startsWith("connections:")||G(null)},children:F&&(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"rounded-xl border border-primary/15 bg-primary/[0.045] p-3",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:F.keyName}),(0,d.jsx)("p",{className:"mt-1 text-xs text-text-muted",children:"Empty selection keeps the current unrestricted behavior. Once selected, routing, fallback, and combos can only use these connections."})]}),0===f.length?(0,d.jsx)("p",{className:"rounded-xl border border-dashed border-border p-5 text-center text-sm text-text-muted",children:"No provider connections are configured yet."}):(0,d.jsx)("div",{className:"max-h-[min(28rem,60vh)] space-y-3 overflow-y-auto pr-1",children:Object.entries(bp).map(([a,b])=>(0,d.jsxs)("div",{className:"rounded-xl border border-border-subtle bg-surface-2/25 p-3",children:[(0,d.jsx)("p",{className:"mb-2 text-xs font-semibold uppercase tracking-wide text-text-muted",children:a}),(0,d.jsx)("div",{className:"space-y-1.5",children:b.map(a=>{let b=F.selected.has(a.id),c=a.displayName||a.name||a.email||a.id;return(0,d.jsxs)("label",{className:"flex min-h-11 cursor-pointer items-center gap-3 rounded-lg px-2 py-1.5 transition-colors hover:bg-surface",children:[(0,d.jsx)("input",{type:"checkbox",checked:b,onChange:()=>{var b;return b=a.id,void G(a=>{if(!a)return a;let c=new Set(a.selected);return c.has(b)?c.delete(b):c.add(b),{...a,selected:c}})},className:"size-4 accent-primary"}),(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-sm text-text-main",children:c}),(0,d.jsx)("span",{className:"block truncate font-mono text-[10px] text-text-muted",children:a.id})]}),!1===a.isActive&&(0,d.jsx)("span",{className:"rounded-full bg-orange-500/10 px-2 py-0.5 text-[10px] text-orange-500",children:"Paused"})]},a.id)})})]},a))}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{fullWidth:!0,onClick:bi,disabled:B===`connections:${F.keyId}`,children:B===`connections:${F.keyId}`?"Saving...":"Save access"}),(0,d.jsx)(h.$n,{fullWidth:!0,variant:"ghost",disabled:B===`connections:${F.keyId}`,onClick:()=>G(null),children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:t,title:"Create API Key",onClose:()=>{u(!1),w("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:bf,children:[(0,d.jsx)(h.pd,{label:"Key Name",value:v,onChange:a=>w(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{type:"submit",fullWidth:!0,disabled:!v.trim()||"create"===B,children:"create"===B?"Creating...":"Create"}),(0,d.jsx)(h.$n,{type:"button",onClick:()=>{u(!1),w("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:!!x,title:"API Key Created",onClose:()=>y(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.pd,{value:x||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(h.$n,{variant:"secondary",icon:"created_key"===aY?"check":"content_copy",onClick:()=>aZ(x,"created_key"),children:"created_key"===aY?"Copied!":"Copy"})]}),(0,d.jsx)(h.$n,{onClick:()=>y(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(h.aF,{isOpen:ah,title:"Enable Tunnel",onClose:()=>ai(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter 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."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a4,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(h.$n,{onClick:()=>ai(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:aj,title:"Disable Tunnel",onClose:()=>!ab&&ak(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a5,fullWidth:!0,disabled:ab,variant:"danger",children:ab?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>ak(!1),variant:"ghost",fullWidth:!0,disabled:ab,children:"Cancel"})]})]})}),(0,d.jsx)(h.aF,{isOpen:aL,title:"Tailscale Funnel",onClose:()=>{aD||(aM(!1),aI(""),aw(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aB&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aB&&!aD&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:a7,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(h.$n,{onClick:()=>aM(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aD&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aF.length>0&&(0,d.jsx)("div",{ref:aP,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aF.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aB&&!aD&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:()=>bb(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(h.$n,{onClick:()=>aM(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),av&&(0,d.jsx)(o,{status:av})]})}),(0,d.jsx)(h.aF,{isOpen:aN,title:"Disable Tailscale",onClose:()=>!ar&&aO(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.$n,{onClick:bd,fullWidth:!0,disabled:ar,variant:"danger",children:ar?"Disabling...":"Disable"}),(0,d.jsx)(h.$n,{onClick:()=>aO(!1),variant:"ghost",fullWidth:!0,disabled:ar,children:"Cancel"})]})]})}),(0,d.jsx)(h.uo,{isOpen:!!z,onClose:()=>A(null),onConfirm:z?.onConfirm,title:z?.title||"Confirm",message:z?.message,variant:"danger"})]})}function n({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:i}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(h.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),i]})}function o({status:a,className:b=""}){return(0,d.jsx)(h.Gi,{tone:a.type,className:b,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function p({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function q({message:a,action:b}){return(0,d.jsx)(h.Gi,{tone:"warning",action:b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label}),children:a})}m.propTypes={machineId:g().string.isRequired}},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};