zevairouter 1.0.153 → 1.0.155

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 (2314) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/DOCKER.md +403 -0
  3. package/README.md +49 -22
  4. package/README.zh-CN.md +18 -11
  5. package/cli/LICENSE +1 -22
  6. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  7. package/cli/app/.next-cli-build/app-path-routes-manifest.json +13 -11
  8. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  9. package/cli/app/.next-cli-build/required-server-files.json +4 -4
  10. package/cli/app/.next-cli-build/routes-manifest.json +14 -0
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +19 -19
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +4 -4
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +4 -4
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  90. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  99. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  101. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  103. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  104. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  110. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +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/start/route_client-reference-manifest.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  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/claude-settings/route_client-reference-manifest.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  187. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -0
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -0
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -0
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -0
  211. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -0
  212. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -0
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  274. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  487. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  508. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  556. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +3 -5
  616. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -4
  637. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  683. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  685. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  687. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  688. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  692. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  694. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  704. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  714. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  724. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  734. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  744. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  754. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  765. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  775. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  785. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  795. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  816. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  826. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  836. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  846. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  869. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  879. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  889. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  890. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  891. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  898. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  899. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  905. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  907. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  909. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  910. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  914. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  916. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  918. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  919. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  920. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  921. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  922. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  923. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  925. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  927. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  928. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  929. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  932. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  933. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  934. package/cli/app/.next-cli-build/server/app-paths-manifest.json +13 -11
  935. package/cli/app/.next-cli-build/server/chunks/1188.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/2557.js +1 -0
  938. package/cli/app/.next-cli-build/server/chunks/2732.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
  940. package/cli/app/.next-cli-build/server/chunks/3110.js +9 -8
  941. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/318.js +11 -9
  943. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  944. package/cli/app/.next-cli-build/server/chunks/3579.js +1 -1
  945. package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
  946. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  947. package/cli/app/.next-cli-build/server/chunks/4229.js +1 -1
  948. package/cli/app/.next-cli-build/server/chunks/4404.js +1 -1
  949. package/cli/app/.next-cli-build/server/chunks/4470.js +1 -1
  950. package/cli/app/.next-cli-build/server/chunks/4566.js +1 -1
  951. package/cli/app/.next-cli-build/server/chunks/4632.js +1 -1
  952. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  953. package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
  954. package/cli/app/.next-cli-build/server/chunks/4739.js +1 -1
  955. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  956. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
  957. package/cli/app/.next-cli-build/server/chunks/507.js +1 -1
  958. package/cli/app/.next-cli-build/server/chunks/5236.js +1 -1
  959. package/cli/app/.next-cli-build/server/chunks/5258.js +1 -1
  960. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  961. package/cli/app/.next-cli-build/server/chunks/5436.js +4 -0
  962. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  963. package/cli/app/.next-cli-build/server/chunks/5949.js +13 -12
  964. package/cli/app/.next-cli-build/server/chunks/6036.js +1 -1
  965. package/cli/app/.next-cli-build/server/chunks/698.js +1 -1
  966. package/cli/app/.next-cli-build/server/chunks/7239.js +1 -1
  967. package/cli/app/.next-cli-build/server/chunks/7965.js +1 -1
  968. package/cli/app/.next-cli-build/server/chunks/8028.js +1 -0
  969. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  970. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  971. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  972. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  973. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -1
  974. package/cli/app/.next-cli-build/server/chunks/877.js +24 -0
  975. package/cli/app/.next-cli-build/server/chunks/8895.js +7 -7
  976. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  977. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  978. package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
  979. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  980. package/cli/app/.next-cli-build/server/functions-config-manifest.json +4 -0
  981. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  982. package/cli/app/.next-cli-build/server/middleware.js +4 -4
  983. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  984. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  985. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  986. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  987. package/cli/app/.next-cli-build/static/chunks/5497-f1e851d6feffa7c0.js +7 -0
  988. package/cli/app/.next-cli-build/static/chunks/620-90911eeb765ca4bd.js +1 -0
  989. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-da4bf4d40037f090.js +1 -0
  990. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-19f56d717383fbf9.js +1 -0
  991. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-59c81d5cf13456ba.js +59 -0
  992. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-4c46f9cac4765fc5.js +4 -0
  993. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-57c4b3a5e8b61f18.js +1 -0
  994. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-bdcc38dc8f8c5619.js +1 -0
  995. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b4f4b88642bbe60d.js +3 -0
  996. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-16d3736170202fcd.js +4 -0
  997. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-3e2009fdd918191b.js +1 -0
  998. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-6062386d726c38dd.js +1 -0
  999. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-203b0a53f7406968.js +1 -0
  1000. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-f29633932d5ddd5a.js +1 -0
  1001. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-f29633932d5ddd5a.js +1 -0
  1002. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f29633932d5ddd5a.js +1 -0
  1003. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f29633932d5ddd5a.js +1 -0
  1004. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f29633932d5ddd5a.js +1 -0
  1005. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f29633932d5ddd5a.js +1 -0
  1006. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-f29633932d5ddd5a.js +1 -0
  1007. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-f29633932d5ddd5a.js +1 -0
  1008. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-f29633932d5ddd5a.js +1 -0
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f29633932d5ddd5a.js +1 -0
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f29633932d5ddd5a.js +1 -0
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f29633932d5ddd5a.js +1 -0
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f29633932d5ddd5a.js +1 -0
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f29633932d5ddd5a.js +1 -0
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-f29633932d5ddd5a.js +1 -0
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f29633932d5ddd5a.js +1 -0
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f29633932d5ddd5a.js +1 -0
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f29633932d5ddd5a.js +1 -0
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f29633932d5ddd5a.js +1 -0
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f29633932d5ddd5a.js +1 -0
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f29633932d5ddd5a.js +1 -0
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f29633932d5ddd5a.js +1 -0
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f29633932d5ddd5a.js +1 -0
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f29633932d5ddd5a.js +1 -0
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f29633932d5ddd5a.js +1 -0
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f29633932d5ddd5a.js +1 -0
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f29633932d5ddd5a.js +1 -0
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f29633932d5ddd5a.js +1 -0
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-f29633932d5ddd5a.js +1 -0
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-f29633932d5ddd5a.js +1 -0
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-f29633932d5ddd5a.js +1 -0
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-f29633932d5ddd5a.js +1 -0
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-f29633932d5ddd5a.js +1 -0
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-f29633932d5ddd5a.js +1 -0
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-f29633932d5ddd5a.js +1 -0
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-f29633932d5ddd5a.js +1 -0
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-f29633932d5ddd5a.js +1 -0
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f29633932d5ddd5a.js +1 -0
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f29633932d5ddd5a.js +1 -0
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f29633932d5ddd5a.js +1 -0
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-f29633932d5ddd5a.js +1 -0
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-f29633932d5ddd5a.js +1 -0
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-f29633932d5ddd5a.js +1 -0
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-f29633932d5ddd5a.js +1 -0
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f29633932d5ddd5a.js +1 -0
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-f29633932d5ddd5a.js +1 -0
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-f29633932d5ddd5a.js +1 -0
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f29633932d5ddd5a.js +1 -0
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f29633932d5ddd5a.js +1 -0
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f29633932d5ddd5a.js +1 -0
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f29633932d5ddd5a.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f29633932d5ddd5a.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f29633932d5ddd5a.js +1 -0
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f29633932d5ddd5a.js +1 -0
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-f29633932d5ddd5a.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-f29633932d5ddd5a.js +1 -0
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-f29633932d5ddd5a.js +1 -0
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-f29633932d5ddd5a.js +1 -0
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f29633932d5ddd5a.js +1 -0
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-f29633932d5ddd5a.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-f29633932d5ddd5a.js +1 -0
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f29633932d5ddd5a.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f29633932d5ddd5a.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f29633932d5ddd5a.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f29633932d5ddd5a.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f29633932d5ddd5a.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f29633932d5ddd5a.js +1 -0
  1092. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f29633932d5ddd5a.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f29633932d5ddd5a.js +1 -0
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f29633932d5ddd5a.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f29633932d5ddd5a.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-f29633932d5ddd5a.js +1 -0
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f29633932d5ddd5a.js +1 -0
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f29633932d5ddd5a.js +1 -0
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f29633932d5ddd5a.js +1 -0
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f29633932d5ddd5a.js +1 -0
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f29633932d5ddd5a.js +1 -0
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f29633932d5ddd5a.js +1 -0
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-f29633932d5ddd5a.js +1 -0
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-f29633932d5ddd5a.js +1 -0
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f29633932d5ddd5a.js +1 -0
  1117. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-f29633932d5ddd5a.js +1 -0
  1118. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f29633932d5ddd5a.js +1 -0
  1119. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f29633932d5ddd5a.js +1 -0
  1120. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f29633932d5ddd5a.js +1 -0
  1121. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f29633932d5ddd5a.js +1 -0
  1122. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1123. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f29633932d5ddd5a.js +1 -0
  1124. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f29633932d5ddd5a.js +1 -0
  1125. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f29633932d5ddd5a.js +1 -0
  1126. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f29633932d5ddd5a.js +1 -0
  1127. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-f29633932d5ddd5a.js +1 -0
  1128. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-f29633932d5ddd5a.js +1 -0
  1129. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-f29633932d5ddd5a.js +1 -0
  1130. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-f29633932d5ddd5a.js +1 -0
  1131. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-f29633932d5ddd5a.js +1 -0
  1132. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-f29633932d5ddd5a.js +1 -0
  1133. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-f29633932d5ddd5a.js +1 -0
  1134. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-f29633932d5ddd5a.js +1 -0
  1135. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f29633932d5ddd5a.js +1 -0
  1136. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f29633932d5ddd5a.js +1 -0
  1137. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-f29633932d5ddd5a.js +1 -0
  1138. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-f29633932d5ddd5a.js +1 -0
  1139. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-f29633932d5ddd5a.js +1 -0
  1140. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-f29633932d5ddd5a.js +1 -0
  1141. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-f29633932d5ddd5a.js +1 -0
  1142. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-f29633932d5ddd5a.js +1 -0
  1143. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-f29633932d5ddd5a.js +1 -0
  1144. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-f29633932d5ddd5a.js +1 -0
  1145. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-f29633932d5ddd5a.js +1 -0
  1146. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-f29633932d5ddd5a.js +1 -0
  1147. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-f29633932d5ddd5a.js +1 -0
  1148. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f29633932d5ddd5a.js +1 -0
  1149. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f29633932d5ddd5a.js +1 -0
  1150. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-f29633932d5ddd5a.js +1 -0
  1151. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-f29633932d5ddd5a.js +1 -0
  1152. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-f29633932d5ddd5a.js +1 -0
  1153. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f29633932d5ddd5a.js +1 -0
  1154. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f29633932d5ddd5a.js +1 -0
  1155. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f29633932d5ddd5a.js +1 -0
  1156. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f29633932d5ddd5a.js +1 -0
  1157. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f29633932d5ddd5a.js +1 -0
  1158. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f29633932d5ddd5a.js +1 -0
  1159. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f29633932d5ddd5a.js +1 -0
  1160. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f29633932d5ddd5a.js +1 -0
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f29633932d5ddd5a.js +1 -0
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-f29633932d5ddd5a.js +1 -0
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f29633932d5ddd5a.js +1 -0
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-f29633932d5ddd5a.js +1 -0
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f29633932d5ddd5a.js +1 -0
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f29633932d5ddd5a.js +1 -0
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f29633932d5ddd5a.js +1 -0
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f29633932d5ddd5a.js +1 -0
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f29633932d5ddd5a.js +1 -0
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f29633932d5ddd5a.js +1 -0
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f29633932d5ddd5a.js +1 -0
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f29633932d5ddd5a.js +1 -0
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f29633932d5ddd5a.js +1 -0
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f29633932d5ddd5a.js +1 -0
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f29633932d5ddd5a.js +1 -0
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f29633932d5ddd5a.js +1 -0
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f29633932d5ddd5a.js +1 -0
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f29633932d5ddd5a.js +1 -0
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f29633932d5ddd5a.js +1 -0
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-f29633932d5ddd5a.js +1 -0
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f29633932d5ddd5a.js +1 -0
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f29633932d5ddd5a.js +1 -0
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-f29633932d5ddd5a.js +1 -0
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-f29633932d5ddd5a.js +1 -0
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f29633932d5ddd5a.js +1 -0
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f29633932d5ddd5a.js +1 -0
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f29633932d5ddd5a.js +1 -0
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-f29633932d5ddd5a.js +1 -0
  1190. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f29633932d5ddd5a.js +1 -0
  1191. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-f29633932d5ddd5a.js +1 -0
  1192. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  1193. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f29633932d5ddd5a.js +1 -0
  1194. package/cli/app/.next-cli-build/static/chunks/app/page-f29633932d5ddd5a.js +1 -0
  1195. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f29633932d5ddd5a.js +1 -0
  1196. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f29633932d5ddd5a.js +1 -0
  1197. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f29633932d5ddd5a.js +1 -0
  1198. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f29633932d5ddd5a.js +1 -0
  1199. package/cli/app/.next-cli-build/static/sRgS_5eNahHOIlOLEqVvI/_buildManifest.js +1 -0
  1200. package/cli/app/CHANGELOG.md +47 -0
  1201. package/cli/app/cli/hooks/postinstall.js +82 -50
  1202. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  1203. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  1204. package/cli/app/cli/hooks/streamCommand.js +63 -0
  1205. package/cli/app/package.json +46 -37
  1206. package/cli/app/server.js +1 -1
  1207. package/cli/app/src/lib/db/adapters/betterSqliteAdapter.js +6 -3
  1208. package/cli/app/src/lib/db/adapters/bunSqliteAdapter.js +4 -2
  1209. package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +4 -2
  1210. package/cli/app/src/lib/db/adapters/sqljsAdapter.js +84 -27
  1211. package/cli/app/src/lib/db/maintenance.js +6 -0
  1212. package/cli/cli.js +708 -248
  1213. package/cli/hooks/postinstall.js +82 -50
  1214. package/cli/hooks/safeGlobalInstall.js +178 -10
  1215. package/cli/hooks/startupRuntime.js +31 -0
  1216. package/cli/hooks/streamCommand.js +63 -0
  1217. package/cli/package.json +6 -5
  1218. package/cli/src/cli/api/client.js +3 -1
  1219. package/cli/src/cli/systemdEnv.js +93 -0
  1220. package/cli/src/cli/tray/autostart.js +55 -21
  1221. package/cli/src/cli/tray/tray.js +1 -1
  1222. package/cli/src/cli/updateRuntimeState.js +976 -0
  1223. package/package.json +46 -37
  1224. package/scripts/start-standalone.mjs +24 -15
  1225. package/cli/app/.next-cli-build/server/chunks/5024.js +0 -1
  1226. package/cli/app/.next-cli-build/server/chunks/601.js +0 -24
  1227. package/cli/app/.next-cli-build/static/chunks/5497-8d0ec2995dc0a392.js +0 -7
  1228. package/cli/app/.next-cli-build/static/chunks/620-abc3c4ad8fcc220a.js +0 -1
  1229. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-f16310d2b403445e.js +0 -1
  1230. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-27b7575d0d2d59fa.js +0 -1
  1231. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-a35d16eda369d68e.js +0 -59
  1232. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-e7989e6397c3cd28.js +0 -4
  1233. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-81eaa9fe75830559.js +0 -1
  1234. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-ceb414eddc31fbfc.js +0 -1
  1235. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4f6f0b7c3b3da037.js +0 -3
  1236. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-9e3ac0e62a8bba94.js +0 -4
  1237. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-579bf915396efc69.js +0 -1
  1238. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-bc3ada97fab644b3.js +0 -1
  1239. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-59c5060c7f023ab8.js +0 -1
  1240. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-915c9a5b78eafa55.js +0 -1
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-915c9a5b78eafa55.js +0 -1
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-915c9a5b78eafa55.js +0 -1
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-915c9a5b78eafa55.js +0 -1
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-915c9a5b78eafa55.js +0 -1
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-915c9a5b78eafa55.js +0 -1
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-915c9a5b78eafa55.js +0 -1
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-915c9a5b78eafa55.js +0 -1
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-915c9a5b78eafa55.js +0 -1
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-915c9a5b78eafa55.js +0 -1
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-915c9a5b78eafa55.js +0 -1
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-915c9a5b78eafa55.js +0 -1
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-915c9a5b78eafa55.js +0 -1
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-915c9a5b78eafa55.js +0 -1
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-915c9a5b78eafa55.js +0 -1
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-915c9a5b78eafa55.js +0 -1
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-915c9a5b78eafa55.js +0 -1
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-915c9a5b78eafa55.js +0 -1
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-915c9a5b78eafa55.js +0 -1
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-915c9a5b78eafa55.js +0 -1
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-915c9a5b78eafa55.js +0 -1
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-915c9a5b78eafa55.js +0 -1
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-915c9a5b78eafa55.js +0 -1
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-915c9a5b78eafa55.js +0 -1
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-915c9a5b78eafa55.js +0 -1
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-915c9a5b78eafa55.js +0 -1
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-915c9a5b78eafa55.js +0 -1
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-915c9a5b78eafa55.js +0 -1
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-915c9a5b78eafa55.js +0 -1
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-915c9a5b78eafa55.js +0 -1
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-915c9a5b78eafa55.js +0 -1
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-915c9a5b78eafa55.js +0 -1
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-915c9a5b78eafa55.js +0 -1
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-915c9a5b78eafa55.js +0 -1
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-915c9a5b78eafa55.js +0 -1
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-915c9a5b78eafa55.js +0 -1
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-915c9a5b78eafa55.js +0 -1
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-915c9a5b78eafa55.js +0 -1
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-915c9a5b78eafa55.js +0 -1
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-915c9a5b78eafa55.js +0 -1
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-915c9a5b78eafa55.js +0 -1
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-915c9a5b78eafa55.js +0 -1
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-915c9a5b78eafa55.js +0 -1
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-915c9a5b78eafa55.js +0 -1
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-915c9a5b78eafa55.js +0 -1
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-915c9a5b78eafa55.js +0 -1
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-915c9a5b78eafa55.js +0 -1
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-915c9a5b78eafa55.js +0 -1
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-915c9a5b78eafa55.js +0 -1
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-915c9a5b78eafa55.js +0 -1
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-915c9a5b78eafa55.js +0 -1
  1292. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-915c9a5b78eafa55.js +0 -1
  1293. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-915c9a5b78eafa55.js +0 -1
  1294. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-915c9a5b78eafa55.js +0 -1
  1295. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-915c9a5b78eafa55.js +0 -1
  1296. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-915c9a5b78eafa55.js +0 -1
  1297. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-915c9a5b78eafa55.js +0 -1
  1298. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-915c9a5b78eafa55.js +0 -1
  1299. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-915c9a5b78eafa55.js +0 -1
  1300. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-915c9a5b78eafa55.js +0 -1
  1301. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1302. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1303. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1304. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1305. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1306. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1307. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1308. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1309. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1310. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1311. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1312. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1313. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1314. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1315. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1316. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1317. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1318. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1319. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1320. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1321. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1322. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1323. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1324. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1325. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-915c9a5b78eafa55.js +0 -1
  1326. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-915c9a5b78eafa55.js +0 -1
  1327. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-915c9a5b78eafa55.js +0 -1
  1328. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-915c9a5b78eafa55.js +0 -1
  1329. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-915c9a5b78eafa55.js +0 -1
  1330. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-915c9a5b78eafa55.js +0 -1
  1331. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1332. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1333. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1334. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1335. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1336. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-915c9a5b78eafa55.js +0 -1
  1337. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-915c9a5b78eafa55.js +0 -1
  1338. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-915c9a5b78eafa55.js +0 -1
  1339. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1340. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1341. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1342. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1343. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1344. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-915c9a5b78eafa55.js +0 -1
  1345. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-915c9a5b78eafa55.js +0 -1
  1346. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-915c9a5b78eafa55.js +0 -1
  1347. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-915c9a5b78eafa55.js +0 -1
  1348. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-915c9a5b78eafa55.js +0 -1
  1349. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-915c9a5b78eafa55.js +0 -1
  1350. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1351. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-915c9a5b78eafa55.js +0 -1
  1352. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-915c9a5b78eafa55.js +0 -1
  1353. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-915c9a5b78eafa55.js +0 -1
  1354. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-915c9a5b78eafa55.js +0 -1
  1355. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-915c9a5b78eafa55.js +0 -1
  1356. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-915c9a5b78eafa55.js +0 -1
  1357. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-915c9a5b78eafa55.js +0 -1
  1358. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-915c9a5b78eafa55.js +0 -1
  1359. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-915c9a5b78eafa55.js +0 -1
  1360. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1361. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-915c9a5b78eafa55.js +0 -1
  1362. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-915c9a5b78eafa55.js +0 -1
  1363. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-915c9a5b78eafa55.js +0 -1
  1364. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-915c9a5b78eafa55.js +0 -1
  1365. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-915c9a5b78eafa55.js +0 -1
  1366. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-915c9a5b78eafa55.js +0 -1
  1367. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-915c9a5b78eafa55.js +0 -1
  1368. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-915c9a5b78eafa55.js +0 -1
  1369. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-915c9a5b78eafa55.js +0 -1
  1370. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-915c9a5b78eafa55.js +0 -1
  1371. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-915c9a5b78eafa55.js +0 -1
  1372. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-915c9a5b78eafa55.js +0 -1
  1373. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-915c9a5b78eafa55.js +0 -1
  1374. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-915c9a5b78eafa55.js +0 -1
  1375. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-915c9a5b78eafa55.js +0 -1
  1376. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-915c9a5b78eafa55.js +0 -1
  1377. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-915c9a5b78eafa55.js +0 -1
  1378. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-915c9a5b78eafa55.js +0 -1
  1379. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-915c9a5b78eafa55.js +0 -1
  1380. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-915c9a5b78eafa55.js +0 -1
  1381. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-915c9a5b78eafa55.js +0 -1
  1382. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-915c9a5b78eafa55.js +0 -1
  1383. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-915c9a5b78eafa55.js +0 -1
  1384. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-915c9a5b78eafa55.js +0 -1
  1385. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-915c9a5b78eafa55.js +0 -1
  1386. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-915c9a5b78eafa55.js +0 -1
  1387. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-915c9a5b78eafa55.js +0 -1
  1388. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-915c9a5b78eafa55.js +0 -1
  1389. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-915c9a5b78eafa55.js +0 -1
  1390. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-915c9a5b78eafa55.js +0 -1
  1391. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-915c9a5b78eafa55.js +0 -1
  1392. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-915c9a5b78eafa55.js +0 -1
  1393. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-915c9a5b78eafa55.js +0 -1
  1394. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-915c9a5b78eafa55.js +0 -1
  1395. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-915c9a5b78eafa55.js +0 -1
  1396. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-915c9a5b78eafa55.js +0 -1
  1397. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-915c9a5b78eafa55.js +0 -1
  1398. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-915c9a5b78eafa55.js +0 -1
  1399. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-915c9a5b78eafa55.js +0 -1
  1400. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-915c9a5b78eafa55.js +0 -1
  1401. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-915c9a5b78eafa55.js +0 -1
  1402. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-915c9a5b78eafa55.js +0 -1
  1403. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-915c9a5b78eafa55.js +0 -1
  1404. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-915c9a5b78eafa55.js +0 -1
  1405. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-915c9a5b78eafa55.js +0 -1
  1406. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-915c9a5b78eafa55.js +0 -1
  1407. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-915c9a5b78eafa55.js +0 -1
  1408. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-915c9a5b78eafa55.js +0 -1
  1409. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-915c9a5b78eafa55.js +0 -1
  1410. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-915c9a5b78eafa55.js +0 -1
  1411. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-915c9a5b78eafa55.js +0 -1
  1412. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1413. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-915c9a5b78eafa55.js +0 -1
  1414. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-915c9a5b78eafa55.js +0 -1
  1415. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-915c9a5b78eafa55.js +0 -1
  1416. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-915c9a5b78eafa55.js +0 -1
  1417. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-915c9a5b78eafa55.js +0 -1
  1418. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-915c9a5b78eafa55.js +0 -1
  1419. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-915c9a5b78eafa55.js +0 -1
  1420. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-915c9a5b78eafa55.js +0 -1
  1421. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-915c9a5b78eafa55.js +0 -1
  1422. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-915c9a5b78eafa55.js +0 -1
  1423. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-915c9a5b78eafa55.js +0 -1
  1424. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-915c9a5b78eafa55.js +0 -1
  1425. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-915c9a5b78eafa55.js +0 -1
  1426. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-915c9a5b78eafa55.js +0 -1
  1427. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-915c9a5b78eafa55.js +0 -1
  1428. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-915c9a5b78eafa55.js +0 -1
  1429. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-915c9a5b78eafa55.js +0 -1
  1430. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  1431. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-915c9a5b78eafa55.js +0 -1
  1432. package/cli/app/.next-cli-build/static/chunks/app/page-915c9a5b78eafa55.js +0 -1
  1433. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-915c9a5b78eafa55.js +0 -1
  1434. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-915c9a5b78eafa55.js +0 -1
  1435. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-915c9a5b78eafa55.js +0 -1
  1436. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-915c9a5b78eafa55.js +0 -1
  1437. package/cli/app/.next-cli-build/static/gQ1kqTy9hoyJ5eXUJs8MC/_buildManifest.js +0 -1
  1438. package/i18n/README.ja-JP.md +0 -34
  1439. package/i18n/README.ru.md +0 -34
  1440. package/i18n/README.vi.md +0 -34
  1441. package/i18n/README.zh-CN.md +0 -34
  1442. package/images/screenshots/automation.png +0 -0
  1443. package/images/screenshots/endpoint.png +0 -0
  1444. package/images/screenshots/playground.png +0 -0
  1445. package/images/screenshots/providers.png +0 -0
  1446. package/images/screenshots/usage.png +0 -0
  1447. package/images/zevairouter.png +0 -0
  1448. package/jsconfig.json +0 -12
  1449. package/next.config.mjs +0 -96
  1450. package/open-sse/config/appConstants.js +0 -230
  1451. package/open-sse/config/codexInstructions.js +0 -119
  1452. package/open-sse/config/constants.js +0 -4
  1453. package/open-sse/config/defaultThinkingSignature.js +0 -12
  1454. package/open-sse/config/errorConfig.js +0 -92
  1455. package/open-sse/config/googleTtsLanguages.js +0 -62
  1456. package/open-sse/config/kiroConstants.js +0 -360
  1457. package/open-sse/config/models.js +0 -13
  1458. package/open-sse/config/ollamaModels.js +0 -19
  1459. package/open-sse/config/providerModels.js +0 -1058
  1460. package/open-sse/config/providers.js +0 -543
  1461. package/open-sse/config/runtimeConfig.js +0 -72
  1462. package/open-sse/config/ttsModels.js +0 -129
  1463. package/open-sse/context/injectContext.js +0 -82
  1464. package/open-sse/executors/antigravity.js +0 -605
  1465. package/open-sse/executors/autoclaw.js +0 -121
  1466. package/open-sse/executors/azure.js +0 -57
  1467. package/open-sse/executors/base.js +0 -221
  1468. package/open-sse/executors/codebuddy-cn.js +0 -31
  1469. package/open-sse/executors/codex.js +0 -484
  1470. package/open-sse/executors/commandcode.js +0 -88
  1471. package/open-sse/executors/cursor.js +0 -795
  1472. package/open-sse/executors/default.js +0 -532
  1473. package/open-sse/executors/gemini-cli.js +0 -89
  1474. package/open-sse/executors/github.js +0 -379
  1475. package/open-sse/executors/grok-cli.js +0 -397
  1476. package/open-sse/executors/grok-web.js +0 -345
  1477. package/open-sse/executors/iflow.js +0 -108
  1478. package/open-sse/executors/index.js +0 -92
  1479. package/open-sse/executors/kimchi.js +0 -123
  1480. package/open-sse/executors/kiro.js +0 -508
  1481. package/open-sse/executors/mimo-free.js +0 -156
  1482. package/open-sse/executors/ollama-local.js +0 -14
  1483. package/open-sse/executors/opencode-go.js +0 -41
  1484. package/open-sse/executors/opencode.js +0 -32
  1485. package/open-sse/executors/perplexity-web.js +0 -507
  1486. package/open-sse/executors/qoder.js +0 -468
  1487. package/open-sse/executors/qwen.js +0 -129
  1488. package/open-sse/executors/vertex.js +0 -131
  1489. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1490. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -233
  1491. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1492. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -245
  1493. package/open-sse/handlers/chatCore/streamingHandler.js +0 -103
  1494. package/open-sse/handlers/chatCore.js +0 -383
  1495. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1496. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1497. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1498. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1499. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1500. package/open-sse/handlers/embeddingsCore.js +0 -126
  1501. package/open-sse/handlers/fetch/index.js +0 -237
  1502. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1503. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1504. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1505. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1506. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1507. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1508. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1509. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1510. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1511. package/open-sse/handlers/imageProviders/index.js +0 -40
  1512. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1513. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1514. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1515. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1516. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1517. package/open-sse/handlers/responsesHandler.js +0 -111
  1518. package/open-sse/handlers/search/callers.js +0 -371
  1519. package/open-sse/handlers/search/chatSearch.js +0 -409
  1520. package/open-sse/handlers/search/index.js +0 -201
  1521. package/open-sse/handlers/search/normalizers.js +0 -223
  1522. package/open-sse/handlers/sttCore.js +0 -194
  1523. package/open-sse/handlers/ttsCore.js +0 -74
  1524. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1525. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1526. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1527. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1528. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1529. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1530. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1531. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1532. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1533. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1534. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1535. package/open-sse/index.js +0 -82
  1536. package/open-sse/rtk/applyFilter.js +0 -15
  1537. package/open-sse/rtk/autodetect.js +0 -111
  1538. package/open-sse/rtk/caveman.js +0 -100
  1539. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1540. package/open-sse/rtk/constants.js +0 -55
  1541. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1542. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1543. package/open-sse/rtk/filters/find.js +0 -49
  1544. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1545. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1546. package/open-sse/rtk/filters/grep.js +0 -48
  1547. package/open-sse/rtk/filters/ls.js +0 -79
  1548. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1549. package/open-sse/rtk/filters/searchList.js +0 -52
  1550. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1551. package/open-sse/rtk/filters/tree.js +0 -32
  1552. package/open-sse/rtk/headroom.js +0 -348
  1553. package/open-sse/rtk/index.js +0 -155
  1554. package/open-sse/rtk/ponytail.js +0 -91
  1555. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1556. package/open-sse/rtk/pxpipe.js +0 -104
  1557. package/open-sse/rtk/registry.js +0 -38
  1558. package/open-sse/services/accountFallback.js +0 -349
  1559. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1560. package/open-sse/services/antigravityIdentity.js +0 -115
  1561. package/open-sse/services/antigravityObfuscation.js +0 -92
  1562. package/open-sse/services/clinepassModels.js +0 -63
  1563. package/open-sse/services/combo.js +0 -189
  1564. package/open-sse/services/compact.js +0 -71
  1565. package/open-sse/services/copilotModels.js +0 -155
  1566. package/open-sse/services/kimchiModels.js +0 -176
  1567. package/open-sse/services/kiroModels.js +0 -320
  1568. package/open-sse/services/model.js +0 -281
  1569. package/open-sse/services/oauthCredentialManager.js +0 -151
  1570. package/open-sse/services/projectId.js +0 -463
  1571. package/open-sse/services/provider.js +0 -356
  1572. package/open-sse/services/qoderModels.js +0 -216
  1573. package/open-sse/services/tokenRefresh.js +0 -949
  1574. package/open-sse/services/usage.js +0 -2415
  1575. package/open-sse/transformer/responsesTransformer.js +0 -439
  1576. package/open-sse/transformer/streamToJsonConverter.js +0 -107
  1577. package/open-sse/translator/formats.js +0 -36
  1578. package/open-sse/translator/helpers/claudeHelper.js +0 -216
  1579. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1580. package/open-sse/translator/helpers/imageHelper.js +0 -34
  1581. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1582. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1583. package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
  1584. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1585. package/open-sse/translator/index.js +0 -251
  1586. package/open-sse/translator/request/antigravity-to-openai.js +0 -229
  1587. package/open-sse/translator/request/claude-to-openai.js +0 -232
  1588. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1589. package/open-sse/translator/request/openai-responses.js +0 -318
  1590. package/open-sse/translator/request/openai-to-claude.js +0 -401
  1591. package/open-sse/translator/request/openai-to-commandcode.js +0 -170
  1592. package/open-sse/translator/request/openai-to-cursor.js +0 -183
  1593. package/open-sse/translator/request/openai-to-gemini.js +0 -476
  1594. package/open-sse/translator/request/openai-to-kiro.js +0 -629
  1595. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1596. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1597. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1598. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1599. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1600. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1601. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1602. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1603. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1604. package/open-sse/translator/response/openai-responses.js +0 -590
  1605. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1606. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1607. package/open-sse/utils/bypassHandler.js +0 -298
  1608. package/open-sse/utils/claudeCloaking.js +0 -155
  1609. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1610. package/open-sse/utils/clientDetector.js +0 -64
  1611. package/open-sse/utils/cursorChecksum.js +0 -152
  1612. package/open-sse/utils/cursorProtobuf.js +0 -907
  1613. package/open-sse/utils/debugLog.js +0 -14
  1614. package/open-sse/utils/error.js +0 -147
  1615. package/open-sse/utils/ollamaTransform.js +0 -85
  1616. package/open-sse/utils/proxyFetch.js +0 -369
  1617. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1618. package/open-sse/utils/requestLogger.js +0 -251
  1619. package/open-sse/utils/responsesStreamHelpers.js +0 -49
  1620. package/open-sse/utils/sessionManager.js +0 -231
  1621. package/open-sse/utils/stream.js +0 -480
  1622. package/open-sse/utils/streamHandler.js +0 -262
  1623. package/open-sse/utils/streamHelpers.js +0 -122
  1624. package/open-sse/utils/thinkingSuffix.js +0 -64
  1625. package/open-sse/utils/toolDeduper.js +0 -49
  1626. package/open-sse/utils/usageTracking.js +0 -351
  1627. package/postcss.config.mjs +0 -12
  1628. package/public/favicon.svg +0 -16
  1629. package/public/file.svg +0 -1
  1630. package/public/globe.svg +0 -1
  1631. package/public/i18n/literals/ar.json +0 -195
  1632. package/public/i18n/literals/bn.json +0 -195
  1633. package/public/i18n/literals/cs.json +0 -195
  1634. package/public/i18n/literals/da.json +0 -195
  1635. package/public/i18n/literals/de.json +0 -195
  1636. package/public/i18n/literals/el.json +0 -195
  1637. package/public/i18n/literals/es.json +0 -195
  1638. package/public/i18n/literals/fi.json +0 -195
  1639. package/public/i18n/literals/fr.json +0 -195
  1640. package/public/i18n/literals/he.json +0 -195
  1641. package/public/i18n/literals/hi.json +0 -195
  1642. package/public/i18n/literals/hu.json +0 -195
  1643. package/public/i18n/literals/id.json +0 -195
  1644. package/public/i18n/literals/it.json +0 -195
  1645. package/public/i18n/literals/ja.json +0 -195
  1646. package/public/i18n/literals/ko.json +0 -195
  1647. package/public/i18n/literals/nl.json +0 -195
  1648. package/public/i18n/literals/no.json +0 -195
  1649. package/public/i18n/literals/pl.json +0 -195
  1650. package/public/i18n/literals/pt-BR.json +0 -195
  1651. package/public/i18n/literals/pt-PT.json +0 -195
  1652. package/public/i18n/literals/ro.json +0 -195
  1653. package/public/i18n/literals/ru.json +0 -195
  1654. package/public/i18n/literals/sv.json +0 -195
  1655. package/public/i18n/literals/th.json +0 -195
  1656. package/public/i18n/literals/tl.json +0 -195
  1657. package/public/i18n/literals/tr.json +0 -195
  1658. package/public/i18n/literals/uk.json +0 -195
  1659. package/public/i18n/literals/ur.json +0 -195
  1660. package/public/i18n/literals/vi.json +0 -195
  1661. package/public/i18n/literals/zh-CN.json +0 -772
  1662. package/public/i18n/literals/zh-TW.json +0 -195
  1663. package/public/icons/discord.svg +0 -4
  1664. package/public/icons/icon-192.svg +0 -16
  1665. package/public/icons/icon-512.svg +0 -16
  1666. package/public/next.svg +0 -1
  1667. package/public/providers/alicode-intl.png +0 -0
  1668. package/public/providers/alicode.png +0 -0
  1669. package/public/providers/amp.png +0 -0
  1670. package/public/providers/anthropic-m.png +0 -0
  1671. package/public/providers/anthropic.png +0 -0
  1672. package/public/providers/antigravity.png +0 -0
  1673. package/public/providers/assemblyai.png +0 -0
  1674. package/public/providers/autoclaw.png +0 -0
  1675. package/public/providers/aws-polly.png +0 -0
  1676. package/public/providers/azure.png +0 -0
  1677. package/public/providers/black-forest-labs.png +0 -0
  1678. package/public/providers/blackbox.png +0 -0
  1679. package/public/providers/brave-search.png +0 -0
  1680. package/public/providers/byteplus.png +0 -0
  1681. package/public/providers/cartesia.png +0 -0
  1682. package/public/providers/cerebras.png +0 -0
  1683. package/public/providers/chutes.png +0 -0
  1684. package/public/providers/claude.png +0 -0
  1685. package/public/providers/cline.png +0 -0
  1686. package/public/providers/clinepass.png +0 -0
  1687. package/public/providers/cloudflare-ai.png +0 -0
  1688. package/public/providers/codebuddy-cn.png +0 -0
  1689. package/public/providers/codebuddy.png +0 -0
  1690. package/public/providers/codebuddy.svg +0 -37
  1691. package/public/providers/codex.png +0 -0
  1692. package/public/providers/cohere.png +0 -0
  1693. package/public/providers/comfyui.png +0 -0
  1694. package/public/providers/commandcode.png +0 -0
  1695. package/public/providers/continue.png +0 -0
  1696. package/public/providers/copilot.png +0 -0
  1697. package/public/providers/coqui.png +0 -0
  1698. package/public/providers/cursor.png +0 -0
  1699. package/public/providers/deepgram.png +0 -0
  1700. package/public/providers/deepseek-tui.png +0 -0
  1701. package/public/providers/deepseek.png +0 -0
  1702. package/public/providers/droid.png +0 -0
  1703. package/public/providers/edge-tts.png +0 -0
  1704. package/public/providers/elevenlabs.png +0 -0
  1705. package/public/providers/exa.png +0 -0
  1706. package/public/providers/fal-ai.png +0 -0
  1707. package/public/providers/firecrawl.png +0 -0
  1708. package/public/providers/fireworks.png +0 -0
  1709. package/public/providers/gemini-cli.png +0 -0
  1710. package/public/providers/gemini.png +0 -0
  1711. package/public/providers/github.png +0 -0
  1712. package/public/providers/glm-cn.png +0 -0
  1713. package/public/providers/glm.png +0 -0
  1714. package/public/providers/google-pse.png +0 -0
  1715. package/public/providers/google-tts.png +0 -0
  1716. package/public/providers/grok-cli.png +0 -0
  1717. package/public/providers/grok-web.png +0 -0
  1718. package/public/providers/groq.png +0 -0
  1719. package/public/providers/hermes.png +0 -0
  1720. package/public/providers/huggingface.png +0 -0
  1721. package/public/providers/hyperbolic.png +0 -0
  1722. package/public/providers/iflow.png +0 -0
  1723. package/public/providers/inworld.png +0 -0
  1724. package/public/providers/jcode.png +0 -0
  1725. package/public/providers/jina-ai.png +0 -0
  1726. package/public/providers/jina-reader.png +0 -0
  1727. package/public/providers/kilocode.png +0 -0
  1728. package/public/providers/kimchi.png +0 -0
  1729. package/public/providers/kimchi.svg +0 -4
  1730. package/public/providers/kimi-coding.png +0 -0
  1731. package/public/providers/kimi.png +0 -0
  1732. package/public/providers/kiro.png +0 -0
  1733. package/public/providers/linkup.png +0 -0
  1734. package/public/providers/local-device.png +0 -0
  1735. package/public/providers/mimo-free.png +0 -0
  1736. package/public/providers/minimax-cn.png +0 -0
  1737. package/public/providers/minimax.png +0 -0
  1738. package/public/providers/mistral.png +0 -0
  1739. package/public/providers/nanobanana.png +0 -0
  1740. package/public/providers/nebius.png +0 -0
  1741. package/public/providers/nvidia.png +0 -0
  1742. package/public/providers/oai-cc.png +0 -0
  1743. package/public/providers/oai-r.png +0 -0
  1744. package/public/providers/ollama-local.png +0 -0
  1745. package/public/providers/ollama.png +0 -0
  1746. package/public/providers/openai.png +0 -0
  1747. package/public/providers/openclaw.png +0 -0
  1748. package/public/providers/opencode-go.png +0 -0
  1749. package/public/providers/opencode.png +0 -0
  1750. package/public/providers/openrouter.png +0 -0
  1751. package/public/providers/perplexity-agent.png +0 -0
  1752. package/public/providers/perplexity-web.png +0 -0
  1753. package/public/providers/perplexity.png +0 -0
  1754. package/public/providers/playht.png +0 -0
  1755. package/public/providers/qoder.png +0 -0
  1756. package/public/providers/qwen.png +0 -0
  1757. package/public/providers/recraft.png +0 -0
  1758. package/public/providers/roo.png +0 -0
  1759. package/public/providers/runwayml.png +0 -0
  1760. package/public/providers/sdwebui.png +0 -0
  1761. package/public/providers/searchapi.png +0 -0
  1762. package/public/providers/searxng.png +0 -0
  1763. package/public/providers/serper.png +0 -0
  1764. package/public/providers/siliconflow.png +0 -0
  1765. package/public/providers/stability-ai.png +0 -0
  1766. package/public/providers/tavily.png +0 -0
  1767. package/public/providers/together.png +0 -0
  1768. package/public/providers/topaz.png +0 -0
  1769. package/public/providers/tortoise.png +0 -0
  1770. package/public/providers/vertex-partner.png +0 -0
  1771. package/public/providers/vertex.png +0 -0
  1772. package/public/providers/volcengine-ark.png +0 -0
  1773. package/public/providers/voyage-ai.png +0 -0
  1774. package/public/providers/xai.png +0 -0
  1775. package/public/providers/xiaomi-mimo.png +0 -0
  1776. package/public/providers/xiaomi-tokenplan.png +0 -0
  1777. package/public/providers/youcom.png +0 -0
  1778. package/public/sw.js +0 -22
  1779. package/public/vercel.svg +0 -1
  1780. package/public/window.svg +0 -1
  1781. package/scripts/translate-readme.js +0 -201
  1782. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1783. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1784. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1785. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -77
  1786. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1787. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1788. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1789. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1790. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1791. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1792. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1793. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1794. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1795. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1796. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1797. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1798. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1799. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1800. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1801. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1802. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1803. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1804. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1805. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1806. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1807. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1808. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1809. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1810. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1811. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1812. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1813. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1814. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1815. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1816. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1817. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1818. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1819. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1913
  1820. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1821. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1822. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1823. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1824. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1825. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1826. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1827. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1828. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1829. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1830. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1831. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -318
  1832. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1833. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1834. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1835. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1836. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2171
  1837. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1838. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -499
  1839. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1840. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1841. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1842. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1843. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1095
  1844. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1845. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1846. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1847. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1848. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1849. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1850. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1851. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1852. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1853. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1854. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1855. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1856. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1569
  1857. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1858. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1859. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -435
  1860. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1861. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1862. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1863. package/src/app/(dashboard)/layout.js +0 -6
  1864. package/src/app/api/auth/login/route.js +0 -76
  1865. package/src/app/api/auth/logout/route.js +0 -14
  1866. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1867. package/src/app/api/auth/oidc/start/route.js +0 -52
  1868. package/src/app/api/auth/oidc/test/route.js +0 -86
  1869. package/src/app/api/auth/status/route.js +0 -45
  1870. package/src/app/api/cache/stats/route.js +0 -13
  1871. package/src/app/api/changelog/route.js +0 -48
  1872. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1873. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1874. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1875. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1876. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1877. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1878. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1879. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1880. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1881. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1882. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1883. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1884. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1885. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1886. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1887. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1888. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1889. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1890. package/src/app/api/combos/[id]/route.js +0 -81
  1891. package/src/app/api/combos/route.js +0 -48
  1892. package/src/app/api/context/[id]/route.js +0 -35
  1893. package/src/app/api/context/bulk/route.js +0 -25
  1894. package/src/app/api/context/route.js +0 -33
  1895. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1896. package/src/app/api/headroom/extras/route.js +0 -46
  1897. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1898. package/src/app/api/headroom/restart/route.js +0 -35
  1899. package/src/app/api/headroom/start/route.js +0 -35
  1900. package/src/app/api/headroom/status/route.js +0 -18
  1901. package/src/app/api/headroom/stop/route.js +0 -14
  1902. package/src/app/api/health/ready/route.js +0 -21
  1903. package/src/app/api/health/route.js +0 -15
  1904. package/src/app/api/init/route.js +0 -12
  1905. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1906. package/src/app/api/keys/[id]/route.js +0 -69
  1907. package/src/app/api/keys/route.js +0 -42
  1908. package/src/app/api/locale/route.js +0 -30
  1909. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1910. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1911. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1912. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1913. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1914. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1915. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1916. package/src/app/api/metrics/route.js +0 -32
  1917. package/src/app/api/models/alias/route.js +0 -53
  1918. package/src/app/api/models/availability/route.js +0 -103
  1919. package/src/app/api/models/custom/route.js +0 -48
  1920. package/src/app/api/models/disabled/route.js +0 -50
  1921. package/src/app/api/models/route.js +0 -68
  1922. package/src/app/api/models/test/ping.js +0 -191
  1923. package/src/app/api/models/test/route.js +0 -14
  1924. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1925. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1926. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1927. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1928. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1929. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1930. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1931. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1932. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1933. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1934. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1935. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1936. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1937. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1938. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1939. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1940. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1941. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1942. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1943. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1944. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1945. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1946. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1947. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1948. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1949. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1950. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1951. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1952. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1953. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1954. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1955. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1956. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1957. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1958. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1959. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1960. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1961. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1962. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1963. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1964. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1965. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1966. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1967. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1968. package/src/app/api/pricing/route.js +0 -134
  1969. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1970. package/src/app/api/provider-nodes/route.js +0 -104
  1971. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1972. package/src/app/api/providers/[id]/models/route.js +0 -605
  1973. package/src/app/api/providers/[id]/route.js +0 -189
  1974. package/src/app/api/providers/[id]/test/route.js +0 -23
  1975. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1976. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1977. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1978. package/src/app/api/providers/client/route.js +0 -134
  1979. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1980. package/src/app/api/providers/route.js +0 -207
  1981. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1982. package/src/app/api/providers/suggested-models/route.js +0 -33
  1983. package/src/app/api/providers/test-batch/route.js +0 -131
  1984. package/src/app/api/providers/validate/route.js +0 -637
  1985. package/src/app/api/proxy-pools/[id]/route.js +0 -123
  1986. package/src/app/api/proxy-pools/[id]/test/route.js +0 -70
  1987. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1988. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1989. package/src/app/api/proxy-pools/route.js +0 -93
  1990. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1991. package/src/app/api/pxpipe/health/route.js +0 -16
  1992. package/src/app/api/pxpipe/install/route.js +0 -20
  1993. package/src/app/api/pxpipe/logs/route.js +0 -21
  1994. package/src/app/api/pxpipe/restart/route.js +0 -16
  1995. package/src/app/api/pxpipe/start/route.js +0 -26
  1996. package/src/app/api/pxpipe/stats/route.js +0 -17
  1997. package/src/app/api/pxpipe/status/route.js +0 -21
  1998. package/src/app/api/pxpipe/stop/route.js +0 -16
  1999. package/src/app/api/settings/database/route.js +0 -36
  2000. package/src/app/api/settings/proxy-test/route.js +0 -23
  2001. package/src/app/api/settings/require-login/route.js +0 -15
  2002. package/src/app/api/settings/route.js +0 -115
  2003. package/src/app/api/shutdown/route.js +0 -24
  2004. package/src/app/api/tags/route.js +0 -18
  2005. package/src/app/api/terminal/auth/setup/route.js +0 -72
  2006. package/src/app/api/terminal/auth/status/route.js +0 -27
  2007. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  2008. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  2009. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  2010. package/src/app/api/terminal/session/[id]/route.js +0 -37
  2011. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  2012. package/src/app/api/terminal/session/route.js +0 -30
  2013. package/src/app/api/translator/console-logs/route.js +0 -24
  2014. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  2015. package/src/app/api/translator/load/route.js +0 -45
  2016. package/src/app/api/translator/save/route.js +0 -44
  2017. package/src/app/api/translator/send/route.js +0 -94
  2018. package/src/app/api/translator/translate/route.js +0 -90
  2019. package/src/app/api/tunnel/disable/route.js +0 -12
  2020. package/src/app/api/tunnel/enable/route.js +0 -16
  2021. package/src/app/api/tunnel/status/route.js +0 -13
  2022. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  2023. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  2024. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  2025. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  2026. package/src/app/api/usage/[connectionId]/route.js +0 -40
  2027. package/src/app/api/usage/aggregate/route.js +0 -120
  2028. package/src/app/api/usage/chart/route.js +0 -21
  2029. package/src/app/api/usage/history/route.js +0 -12
  2030. package/src/app/api/usage/logs/route.js +0 -12
  2031. package/src/app/api/usage/providers/route.js +0 -42
  2032. package/src/app/api/usage/request-details/route.js +0 -57
  2033. package/src/app/api/usage/request-logs/route.js +0 -13
  2034. package/src/app/api/usage/stats/route.js +0 -23
  2035. package/src/app/api/usage/stream/route.js +0 -79
  2036. package/src/app/api/v1/api/chat/route.js +0 -37
  2037. package/src/app/api/v1/audio/speech/route.js +0 -16
  2038. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  2039. package/src/app/api/v1/audio/voices/route.js +0 -68
  2040. package/src/app/api/v1/chat/completions/route.js +0 -35
  2041. package/src/app/api/v1/embeddings/route.js +0 -21
  2042. package/src/app/api/v1/images/generations/route.js +0 -16
  2043. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  2044. package/src/app/api/v1/messages/route.js +0 -36
  2045. package/src/app/api/v1/models/[kind]/route.js +0 -55
  2046. package/src/app/api/v1/models/info/route.js +0 -110
  2047. package/src/app/api/v1/models/route.js +0 -497
  2048. package/src/app/api/v1/responses/compact/route.js +0 -37
  2049. package/src/app/api/v1/responses/route.js +0 -30
  2050. package/src/app/api/v1/route.js +0 -1
  2051. package/src/app/api/v1/search/route.js +0 -21
  2052. package/src/app/api/v1/web/fetch/route.js +0 -21
  2053. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  2054. package/src/app/api/v1beta/models/route.js +0 -44
  2055. package/src/app/api/version/route.js +0 -198
  2056. package/src/app/api/version/shutdown/route.js +0 -15
  2057. package/src/app/api/version/update/route.js +0 -21
  2058. package/src/app/callback/page.js +0 -149
  2059. package/src/app/dashboard/settings/pricing/page.js +0 -174
  2060. package/src/app/globals.css +0 -659
  2061. package/src/app/landing/components/AnimatedBackground.js +0 -57
  2062. package/src/app/landing/components/Features.js +0 -133
  2063. package/src/app/landing/components/FlowAnimation.js +0 -175
  2064. package/src/app/landing/components/Footer.js +0 -61
  2065. package/src/app/landing/components/GetStarted.js +0 -97
  2066. package/src/app/landing/components/HeroSection.js +0 -72
  2067. package/src/app/landing/components/HowItWorks.js +0 -66
  2068. package/src/app/landing/components/Navigation.js +0 -77
  2069. package/src/app/landing/page.js +0 -106
  2070. package/src/app/layout.js +0 -48
  2071. package/src/app/login/page.js +0 -197
  2072. package/src/app/manifest.js +0 -30
  2073. package/src/app/page.js +0 -5
  2074. package/src/dashboardGuard.js +0 -288
  2075. package/src/i18n/RuntimeI18nProvider.js +0 -27
  2076. package/src/i18n/config.js +0 -146
  2077. package/src/i18n/runtime.js +0 -162
  2078. package/src/lib/alerter.js +0 -122
  2079. package/src/lib/appUpdater.js +0 -204
  2080. package/src/lib/auth/dashboardSession.js +0 -68
  2081. package/src/lib/auth/loginLimiter.js +0 -52
  2082. package/src/lib/auth/oidc.js +0 -303
  2083. package/src/lib/auth/terminalSession.js +0 -88
  2084. package/src/lib/autoclaw/constants.js +0 -63
  2085. package/src/lib/consoleLogBuffer.js +0 -79
  2086. package/src/lib/dataDir.js +0 -29
  2087. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -55
  2088. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -63
  2089. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -84
  2090. package/src/lib/db/adapters/sqljsAdapter.js +0 -150
  2091. package/src/lib/db/backup.js +0 -36
  2092. package/src/lib/db/dataDirMigration.js +0 -52
  2093. package/src/lib/db/driver.js +0 -111
  2094. package/src/lib/db/helpers/jsonCol.js +0 -9
  2095. package/src/lib/db/helpers/kvStore.js +0 -39
  2096. package/src/lib/db/helpers/metaStore.js +0 -22
  2097. package/src/lib/db/index.js +0 -218
  2098. package/src/lib/db/maintenance.js +0 -72
  2099. package/src/lib/db/migrate.js +0 -295
  2100. package/src/lib/db/migrations/001-initial.js +0 -17
  2101. package/src/lib/db/migrations/index.js +0 -10
  2102. package/src/lib/db/paths.js +0 -21
  2103. package/src/lib/db/repos/aliasRepo.js +0 -62
  2104. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  2105. package/src/lib/db/repos/combosRepo.js +0 -73
  2106. package/src/lib/db/repos/connectionsRepo.js +0 -247
  2107. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  2108. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  2109. package/src/lib/db/repos/nodesRepo.js +0 -95
  2110. package/src/lib/db/repos/pricingRepo.js +0 -108
  2111. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  2112. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  2113. package/src/lib/db/repos/requestDetailsRepo.js +0 -249
  2114. package/src/lib/db/repos/settingsRepo.js +0 -118
  2115. package/src/lib/db/repos/usageRepo.js +0 -796
  2116. package/src/lib/db/schema.js +0 -193
  2117. package/src/lib/db/version.js +0 -21
  2118. package/src/lib/disabledModelsDb.js +0 -4
  2119. package/src/lib/headroom/detect.js +0 -192
  2120. package/src/lib/headroom/process.js +0 -260
  2121. package/src/lib/localDb.js +0 -26
  2122. package/src/lib/mcp/stdioSseBridge.js +0 -198
  2123. package/src/lib/mitmAliasCache.js +0 -46
  2124. package/src/lib/network/connectionProxy.js +0 -187
  2125. package/src/lib/network/initOutboundProxy.js +0 -25
  2126. package/src/lib/network/outboundProxy.js +0 -82
  2127. package/src/lib/network/proxyTest.js +0 -91
  2128. package/src/lib/oauth/constants/oauth.js +0 -337
  2129. package/src/lib/oauth/constants/xai.js +0 -61
  2130. package/src/lib/oauth/providers.js +0 -1821
  2131. package/src/lib/oauth/services/antigravity.js +0 -321
  2132. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  2133. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  2134. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -646
  2135. package/src/lib/oauth/services/claude.js +0 -136
  2136. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  2137. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  2138. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  2139. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -1878
  2140. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1234
  2141. package/src/lib/oauth/services/codex.js +0 -144
  2142. package/src/lib/oauth/services/cursor.js +0 -179
  2143. package/src/lib/oauth/services/displayEnv.js +0 -134
  2144. package/src/lib/oauth/services/fiveSimClient.js +0 -370
  2145. package/src/lib/oauth/services/gemini.js +0 -240
  2146. package/src/lib/oauth/services/github.js +0 -225
  2147. package/src/lib/oauth/services/googleAutomation.js +0 -9
  2148. package/src/lib/oauth/services/iflow.js +0 -202
  2149. package/src/lib/oauth/services/index.js +0 -17
  2150. package/src/lib/oauth/services/kiro.js +0 -334
  2151. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1389
  2152. package/src/lib/oauth/services/kiroConnections.js +0 -93
  2153. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  2154. package/src/lib/oauth/services/oauth.js +0 -157
  2155. package/src/lib/oauth/services/openai.js +0 -123
  2156. package/src/lib/oauth/services/proxyUtils.js +0 -26
  2157. package/src/lib/oauth/services/qoder.js +0 -233
  2158. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  2159. package/src/lib/oauth/services/qwen.js +0 -170
  2160. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  2161. package/src/lib/oauth/services/tempmailClient.js +0 -288
  2162. package/src/lib/oauth/services/xai.js +0 -238
  2163. package/src/lib/oauth/utils/banner.js +0 -63
  2164. package/src/lib/oauth/utils/pkce.js +0 -39
  2165. package/src/lib/oauth/utils/server.js +0 -415
  2166. package/src/lib/oauth/utils/ui.js +0 -48
  2167. package/src/lib/providerNormalization.js +0 -45
  2168. package/src/lib/pxpipe/events.js +0 -125
  2169. package/src/lib/pxpipe/install.js +0 -123
  2170. package/src/lib/pxpipe/loader.js +0 -70
  2171. package/src/lib/pxpipe/service.js +0 -49
  2172. package/src/lib/qoder/constants.js +0 -64
  2173. package/src/lib/qoder/cosy.js +0 -175
  2174. package/src/lib/qoder/encoding.js +0 -55
  2175. package/src/lib/requestDetailsDb.js +0 -4
  2176. package/src/lib/responseCache.js +0 -159
  2177. package/src/lib/safeFetch.js +0 -70
  2178. package/src/lib/systemSpecs.js +0 -167
  2179. package/src/lib/terminal/ptyBridge.py +0 -163
  2180. package/src/lib/terminal/sessionManager.js +0 -434
  2181. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  2182. package/src/lib/tunnel/cloudflare/config.js +0 -9
  2183. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  2184. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  2185. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  2186. package/src/lib/tunnel/index.js +0 -48
  2187. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  2188. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  2189. package/src/lib/tunnel/shared/state.js +0 -41
  2190. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  2191. package/src/lib/tunnel/tailscale/config.js +0 -7
  2192. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  2193. package/src/lib/tunnel/tailscale/manager.js +0 -129
  2194. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  2195. package/src/lib/updater/updater.js +0 -327
  2196. package/src/lib/usage/fetcher.js +0 -208
  2197. package/src/lib/usage/quotaRefresh.js +0 -71
  2198. package/src/lib/usage/quotaService.js +0 -154
  2199. package/src/lib/usageDb.js +0 -7
  2200. package/src/mitm/antigravityIdeVersion.js +0 -50
  2201. package/src/mitm/cert/generate.js +0 -32
  2202. package/src/mitm/cert/install.js +0 -274
  2203. package/src/mitm/cert/rootCA.js +0 -173
  2204. package/src/mitm/config.js +0 -87
  2205. package/src/mitm/dbReader.js +0 -22
  2206. package/src/mitm/dns/dnsConfig.js +0 -266
  2207. package/src/mitm/handlers/antigravity.js +0 -33
  2208. package/src/mitm/handlers/base.js +0 -226
  2209. package/src/mitm/handlers/copilot.js +0 -35
  2210. package/src/mitm/handlers/cursor.js +0 -15
  2211. package/src/mitm/handlers/kiro.js +0 -533
  2212. package/src/mitm/logger.js +0 -106
  2213. package/src/mitm/manager.js +0 -862
  2214. package/src/mitm/paths.js +0 -32
  2215. package/src/mitm/server.js +0 -447
  2216. package/src/mitm/winElevated.js +0 -81
  2217. package/src/models/index.js +0 -38
  2218. package/src/proxy.js +0 -5
  2219. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  2220. package/src/shared/components/Avatar.js +0 -88
  2221. package/src/shared/components/Badge.js +0 -54
  2222. package/src/shared/components/BulkAccountAutomationModal.js +0 -644
  2223. package/src/shared/components/Button.js +0 -57
  2224. package/src/shared/components/Card.js +0 -116
  2225. package/src/shared/components/ChangelogModal.js +0 -108
  2226. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -565
  2227. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  2228. package/src/shared/components/ComboFormModal.js +0 -176
  2229. package/src/shared/components/CursorAuthModal.js +0 -213
  2230. package/src/shared/components/Drawer.js +0 -82
  2231. package/src/shared/components/EditConnectionModal.js +0 -287
  2232. package/src/shared/components/Footer.js +0 -132
  2233. package/src/shared/components/GitLabAuthModal.js +0 -194
  2234. package/src/shared/components/Header.js +0 -399
  2235. package/src/shared/components/HeaderLanguage.js +0 -48
  2236. package/src/shared/components/HeaderMenu.js +0 -127
  2237. package/src/shared/components/IFlowCookieModal.js +0 -132
  2238. package/src/shared/components/Input.js +0 -76
  2239. package/src/shared/components/KiroAuthModal.js +0 -1172
  2240. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  2241. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  2242. package/src/shared/components/LanguageSwitcher.js +0 -192
  2243. package/src/shared/components/Loading.js +0 -75
  2244. package/src/shared/components/ManualConfigModal.js +0 -44
  2245. package/src/shared/components/McpMarketplaceModal.js +0 -255
  2246. package/src/shared/components/Modal.js +0 -193
  2247. package/src/shared/components/ModelSelectModal.js +0 -547
  2248. package/src/shared/components/NoAuthProxyCard.js +0 -134
  2249. package/src/shared/components/OAuthModal.js +0 -709
  2250. package/src/shared/components/Pagination.js +0 -150
  2251. package/src/shared/components/PricingModal.js +0 -209
  2252. package/src/shared/components/ProviderIcon.js +0 -68
  2253. package/src/shared/components/ProviderInfoCard.js +0 -82
  2254. package/src/shared/components/RequestLogger.js +0 -122
  2255. package/src/shared/components/SegmentedControl.js +0 -53
  2256. package/src/shared/components/Select.js +0 -67
  2257. package/src/shared/components/Sidebar.js +0 -486
  2258. package/src/shared/components/ThemeProvider.js +0 -15
  2259. package/src/shared/components/ThemeToggle.js +0 -42
  2260. package/src/shared/components/Toggle.js +0 -95
  2261. package/src/shared/components/Tooltip.js +0 -25
  2262. package/src/shared/components/UsageStats.js +0 -574
  2263. package/src/shared/components/index.js +0 -46
  2264. package/src/shared/components/layouts/AuthLayout.js +0 -29
  2265. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  2266. package/src/shared/components/layouts/index.js +0 -4
  2267. package/src/shared/constants/automationProviders.js +0 -23
  2268. package/src/shared/constants/cliTools.js +0 -397
  2269. package/src/shared/constants/colors.js +0 -77
  2270. package/src/shared/constants/config.js +0 -98
  2271. package/src/shared/constants/coworkPlugins.js +0 -75
  2272. package/src/shared/constants/index.js +0 -4
  2273. package/src/shared/constants/locales.js +0 -36
  2274. package/src/shared/constants/mitmToolHosts.js +0 -12
  2275. package/src/shared/constants/models.js +0 -38
  2276. package/src/shared/constants/pricing.js +0 -311
  2277. package/src/shared/constants/providers.js +0 -450
  2278. package/src/shared/constants/ttsProviders.js +0 -138
  2279. package/src/shared/hooks/index.js +0 -2
  2280. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  2281. package/src/shared/hooks/useTheme.js +0 -60
  2282. package/src/shared/services/bootstrap.js +0 -12
  2283. package/src/shared/services/initializeApp.js +0 -277
  2284. package/src/shared/utils/api.js +0 -93
  2285. package/src/shared/utils/apiKey.js +0 -98
  2286. package/src/shared/utils/clineAuth.js +0 -37
  2287. package/src/shared/utils/cn.js +0 -11
  2288. package/src/shared/utils/codexCliConfig.js +0 -44
  2289. package/src/shared/utils/connectionStatus.js +0 -162
  2290. package/src/shared/utils/index.js +0 -40
  2291. package/src/shared/utils/machine.js +0 -6
  2292. package/src/shared/utils/machineId.js +0 -66
  2293. package/src/shared/utils/providerModelsFetcher.js +0 -30
  2294. package/src/sse/handlers/chat.js +0 -436
  2295. package/src/sse/handlers/embeddings.js +0 -141
  2296. package/src/sse/handlers/fetch.js +0 -213
  2297. package/src/sse/handlers/imageGeneration.js +0 -142
  2298. package/src/sse/handlers/search.js +0 -206
  2299. package/src/sse/handlers/stt.js +0 -88
  2300. package/src/sse/handlers/tts.js +0 -114
  2301. package/src/sse/services/auth.js +0 -537
  2302. package/src/sse/services/codexGateway.js +0 -215
  2303. package/src/sse/services/model.js +0 -99
  2304. package/src/sse/services/tokenRefresh.js +0 -319
  2305. package/src/sse/utils/logger.js +0 -75
  2306. package/src/store/headerSearchStore.js +0 -19
  2307. package/src/store/index.js +0 -6
  2308. package/src/store/notificationStore.js +0 -45
  2309. package/src/store/providerStore.js +0 -55
  2310. package/src/store/settingsStore.js +0 -51
  2311. package/src/store/themeStore.js +0 -54
  2312. package/src/store/userStore.js +0 -20
  2313. package/start.sh +0 -4
  2314. /package/cli/app/.next-cli-build/static/{gQ1kqTy9hoyJ5eXUJs8MC → sRgS_5eNahHOIlOLEqVvI}/_ssgManifest.js +0 -0
@@ -1,2587 +0,0 @@
1
- const DEFAULT_SHORT_TIMEOUT_MS = 90_000;
2
- const DEFAULT_MANUAL_TIMEOUT_MS = 15 * 60_000;
3
-
4
- // Comma-separated CSS selector. Includes Google's stable ID, mobile/legacy form
5
- // names, and aria-label fallbacks for English + Indonesian. Multi-language
6
- // aria-label support matters because Google renders the form in the user's
7
- // browser locale (so "Email or phone" becomes "Email atau nomor telepon" for
8
- // id-ID accounts and similar for other locales).
9
- export const EMAIL_INPUT_SELECTOR = [
10
- 'input[type="email"]',
11
- 'input[autocomplete="username"]',
12
- 'input#identifierId',
13
- 'input[name="identifier"]',
14
- 'input[name="Email"]',
15
- 'input[type="text"][autofocus]',
16
- 'input[aria-label*="Email" i]',
17
- 'input[aria-label*="email" i]',
18
- 'input[aria-label*="phone" i]',
19
- 'input[aria-label*="telepon" i]',
20
- ].join(", ");
21
-
22
- export const PASSWORD_INPUT_SELECTOR = [
23
- 'input[type="password"]',
24
- 'input[name="Passwd"]',
25
- 'input[name="password"]',
26
- 'input[aria-label*="Password" i]',
27
- 'input[aria-label*="password" i]',
28
- 'input[aria-label*="Sandi" i]',
29
- 'input[aria-label*="kata sandi" i]',
30
- ].join(", ");
31
-
32
- const NEXT_BUTTON_SELECTORS = [
33
- 'button:has-text("Next")',
34
- 'button:has-text("Berikutnya")',
35
- 'button:has-text("Continue")',
36
- 'div[role="button"]:has-text("Next")',
37
- 'div[role="button"]:has-text("Berikutnya")',
38
- '#identifierNext button',
39
- '#passwordNext button',
40
- ];
41
-
42
- const APPROVE_BUTTON_SELECTORS = [
43
- '#submit_approve_access',
44
- '#submit_approve_access button',
45
- '#confirm',
46
- 'form#tos_form input[type="submit"]',
47
- 'button[jsname]:has-text("Allow")',
48
- 'button:has-text("Allow")',
49
- '[role="button"]:has-text("Allow")',
50
- 'input[type="submit"][value="Allow"]',
51
- 'input[type="button"][value="Allow"]',
52
- 'button[jsname]:has-text("Izinkan")',
53
- 'button:has-text("Izinkan")',
54
- '[role="button"]:has-text("Izinkan")',
55
- 'button:has-text("Continue")',
56
- 'button:has-text("Next")',
57
- 'button:has-text("Yes")',
58
- 'button:has-text("Accept")',
59
- 'button:has-text("Lanjutkan")',
60
- 'button:has-text("Berikutnya")',
61
- 'button:has-text("Setuju")',
62
- 'button:has-text("Saya mengerti")',
63
- 'button:has-text("Oke")',
64
- 'button:has-text("OK")',
65
- 'button:has-text("Got it")',
66
- 'button:has-text("I understand")',
67
- 'div[role="button"]:has-text("Continue")',
68
- 'div[role="button"]:has-text("Next")',
69
- 'div[role="button"]:has-text("Allow")',
70
- 'div[role="button"]:has-text("Lanjutkan")',
71
- 'div[role="button"]:has-text("Berikutnya")',
72
- 'div[role="button"]:has-text("Izinkan")',
73
- 'div[role="button"]:has-text("Setuju")',
74
- 'div[role="button"]:has-text("Saya mengerti")',
75
- 'div[role="button"]:has-text("Oke")',
76
- 'div[role="button"]:has-text("OK")',
77
- 'div[role="button"]:has-text("Got it")',
78
- 'div[role="button"]:has-text("I understand")',
79
- 'input[type="button"][value="Saya mengerti"]',
80
- 'input[type="submit"][value="Saya mengerti"]',
81
- ];
82
-
83
- const SKIP_BUTTON_SELECTORS = [
84
- 'button:has-text("Skip")',
85
- 'button:has-text("Lewati")',
86
- 'button:has-text("Not now")',
87
- 'button:has-text("Bukan sekarang")',
88
- 'button:has-text("No thanks")',
89
- 'button:has-text("Tidak sekarang")',
90
- 'div[role="button"]:has-text("Skip")',
91
- 'div[role="button"]:has-text("Not now")',
92
- ];
93
-
94
- const GOOGLE_LOGIN_BUTTON_SELECTORS = [
95
- '#social-google',
96
- 'a#social-google',
97
- 'a:has-text("Sign up with Google")',
98
- 'a:has-text("Log in with Google")',
99
- 'a:has-text("Login with Google")',
100
- 'a:has-text("Continue with Google")',
101
- 'a:has-text("Sign in with Google")',
102
- 'button:has-text("Sign up with Google")',
103
- 'button:has-text("Log in with Google")',
104
- 'button:has-text("Login with Google")',
105
- 'button:has-text("Continue with Google")',
106
- 'button:has-text("Sign in with Google")',
107
- // Cloudflare dash: visible label is just "Google", aria is "Continue with Google"
108
- 'button[aria-label*="Continue with Google" i]',
109
- 'button[aria-label*="Google" i]',
110
- 'button:has-text("Google")',
111
- 'a:has-text("Google")',
112
- 'div[role="button"]:has-text("Continue with Google")',
113
- 'div[role="button"]:has-text("Login with Google")',
114
- 'div[role="button"]:has-text("Google")',
115
- 'span:has-text("Continue with Google")',
116
- 'span:has-text("Login with Google")',
117
- 'span:has-text("Google")',
118
- '[aria-label*="Google" i]',
119
- '[data-provider*="google" i]',
120
- // xAI / Grok device + account pages
121
- 'button:has-text("Login with Google")',
122
- 'button:has-text("Continue with Google")',
123
- '[data-testid*="google" i]',
124
- ];
125
-
126
- /** OneTrust / cookie walls that block the first Google click (Cloudflare login). */
127
- const COOKIE_DISMISS_SELECTORS = [
128
- '#onetrust-accept-btn-handler',
129
- '#onetrust-reject-all-handler',
130
- '#accept-recommended-btn-handler',
131
- 'button:has-text("Allow All")',
132
- 'button:has-text("Reject All")',
133
- 'button:has-text("Accept All")',
134
- 'button:has-text("Accept all")',
135
- 'button:has-text("Confirm My Choices")',
136
- ];
137
-
138
- const TERMS_CHECKBOX_SELECTORS = [
139
- '#agree-policy-account',
140
- '#agree-policy',
141
- '#agree-policy-sso',
142
- 'input[type="checkbox"][id*="agree" i]',
143
- 'input[type="checkbox"][name*="agree" i]',
144
- 'input[type="checkbox"][id*="policy" i]',
145
- 'input[type="checkbox"][name*="policy" i]',
146
- 'input[type="checkbox"][id*="terms" i]',
147
- 'input[type="checkbox"][name*="terms" i]',
148
- '.login-checkbox input[type="checkbox"]',
149
- '[class*="checkbox"] input[type="checkbox"]',
150
- '[class*="agree"] input[type="checkbox"]',
151
- 'input[type="checkbox"]',
152
- ];
153
-
154
- const PRIVACY_CONFIRM_BUTTON_SELECTORS = [
155
- '.ui-dialog button:has-text("Confirm")',
156
- 'dialog button:has-text("Confirm")',
157
- 'button:has-text("Confirm")',
158
- 'button:has-text("I agree")',
159
- 'button:has-text("Agree")',
160
- 'button:has-text("\u540c\u610f")',
161
- 'button:has-text("\u786e\u8ba4")',
162
- ];
163
-
164
- const PROVIDER_ONBOARDING_ACTION_SELECTORS = [
165
- 'button:has-text("Continue")',
166
- '[role="button"]:has-text("Continue")',
167
- 'button:has-text("Get started")',
168
- 'button:has-text("GET STARTED")',
169
- 'input[type="submit"][value="GET STARTED"]',
170
- 'button:has-text("Start")',
171
- 'button:has-text("Confirm")',
172
- 'button:has-text("Done")',
173
- 'button:has-text("Next")',
174
- 'button:has-text("Skip")',
175
- 'button:has-text("Not now")',
176
- 'button:has-text("Save")',
177
- 'button:has-text("Create")',
178
- 'button:has-text("Enter")',
179
- 'button:has-text("Launch")',
180
- 'button:has-text("Use CodeBuddy")',
181
- 'button:has-text("Go to CodeBuddy")',
182
- ];
183
-
184
- const PROVIDER_REGION_TRIGGER_SELECTORS = [
185
- 'select',
186
- '[role="combobox"]',
187
- '.page-region [role="combobox"]',
188
- '.page-region .t-select',
189
- '.page-region [class*="t-select"]',
190
- '.page-region [class*="select"]',
191
- '.page-region input[placeholder]',
192
- 'button:has-text("Region")',
193
- '[role="button"]:has-text("Region")',
194
- 'button:has-text("Select region")',
195
- '[role="button"]:has-text("Select region")',
196
- 'button:has-text("Data region")',
197
- '[aria-label*="region" i]',
198
- '[placeholder*="region" i]',
199
- ];
200
-
201
- const PROVIDER_REGION_OPTION_SELECTORS = [
202
- 'text=/^Indonesia$/i',
203
- 'text=/^ID$/i',
204
- 'text=/^Singapore$/i',
205
- 'text=/^SG$/i',
206
- 'text=/^Japan$/i',
207
- 'text=/^JP$/i',
208
- 'text=/^Thailand$/i',
209
- 'text=/^TH$/i',
210
- 'text=/^Global$/i',
211
- 'text=/^International$/i',
212
- 'text=/^United States$/i',
213
- 'text=/^US$/i',
214
- 'text=/^Asia Pacific$/i',
215
- 'text=/^Hong Kong$/i',
216
- 'text=/^Default$/i',
217
- ];
218
-
219
- const PROVIDER_ONBOARDING_INPUT_DEFAULTS = [
220
- { selector: 'input[name*="workspace" i]', value: "Default" },
221
- { selector: 'input[placeholder*="workspace" i]', value: "Default" },
222
- { selector: 'input[name*="team" i]', value: "Default" },
223
- { selector: 'input[placeholder*="team" i]', value: "Default" },
224
- { selector: 'input[name*="name" i]', value: "Default" },
225
- { selector: 'input[placeholder*="name" i]', value: "Default" },
226
- ];
227
-
228
- const INVALID_CREDENTIAL_MARKERS = [
229
- "wrong password",
230
- "incorrect password",
231
- "couldn't find your google account",
232
- "couldn\u2019t find your google account",
233
- "enter a valid email",
234
- "couldn\u2019t sign you in",
235
- "couldn't sign you in",
236
- "invalid email or password",
237
- "password is incorrect",
238
- ];
239
-
240
- const MANUAL_ASSIST_MARKERS = [
241
- "2-step verification",
242
- "2-step verification required",
243
- "verify it\u2019s you",
244
- "verify it's you",
245
- "check your phone",
246
- "confirm it\u2019s you",
247
- "confirm it's you",
248
- "recovery email",
249
- "recovery phone",
250
- "suspicious sign-in prevented",
251
- "unusual activity detected",
252
- "captcha",
253
- "i'm not a robot",
254
- "im not a robot",
255
- "not a robot",
256
- "recaptcha",
257
- "select all images",
258
- "select all squares",
259
- "try again later",
260
- "browser or app may not be secure",
261
- "try using a different browser",
262
- "couldn\u2019t sign you in",
263
- "couldn't sign you in",
264
- "this browser or app may not be secure",
265
- ];
266
-
267
- const RESTRICTED_ACCOUNT_MARKERS = [
268
- "restricted",
269
- "account has been restricted",
270
- "account is restricted",
271
- "account has been suspended",
272
- "account is suspended",
273
- "account has been disabled",
274
- "account is disabled",
275
- "account has been banned",
276
- "account is banned",
277
- "access denied",
278
- "account blocked",
279
- "your account has been",
280
- "violation of terms",
281
- "terms of service violation",
282
- "temporarily locked",
283
- "permanently locked",
284
- "account locked",
285
- "akun dibatasi",
286
- "akun diblokir",
287
- "akun ditangguhkan",
288
- ];
289
-
290
- const GOOGLE_ONBOARDING_MARKERS = [
291
- "welcome to your new google account",
292
- "selamat datang di akun google baru anda",
293
- "welcome to your new account",
294
- "selamat datang di akun baru",
295
- "privacy and terms",
296
- "privasi dan persyaratan",
297
- "personalize your google services",
298
- "personalisasikan layanan google anda",
299
- "add recovery phone",
300
- "tambahkan nomor telepon pemulihan",
301
- "choose your settings",
302
- "pilih setelan anda",
303
- ];
304
-
305
- const GOOGLE_WORKSPACE_WELCOME_MARKERS = [
306
- "welcome to your new account",
307
- "selamat datang di akun baru",
308
- "your administrator decides which",
309
- "administrator anda memutuskan layanan",
310
- "your organisation administrator manages",
311
- "your organization administrator manages",
312
- ];
313
-
314
- const KIRO_CALLBACK_PREFIX = "kiro://kiro.kiroAgent/authenticate-success";
315
-
316
- function parseCallbackUrl(rawUrl) {
317
- if (!rawUrl || !rawUrl.startsWith(KIRO_CALLBACK_PREFIX)) return null;
318
-
319
- const queryIndex = rawUrl.indexOf("?");
320
- const params = new URLSearchParams(queryIndex >= 0 ? rawUrl.slice(queryIndex + 1) : "");
321
- const code = params.get("code");
322
- const state = params.get("state");
323
-
324
- if (!code) return null;
325
-
326
- return {
327
- callbackUrl: rawUrl,
328
- code,
329
- state,
330
- };
331
- }
332
-
333
- function getInteractionScopes(page) {
334
- const frames = typeof page.frames === "function" ? page.frames() : [];
335
- return [page, ...frames.filter((frame) => frame !== page.mainFrame?.())];
336
- }
337
-
338
- async function clickFirstVisible(page, selectors) {
339
- for (const scope of getInteractionScopes(page)) {
340
- for (const selector of selectors) {
341
- const locator = scope.locator(selector).first();
342
- const count = await locator.count().catch(() => 0);
343
- if (!count) continue;
344
-
345
- const visible = await locator.isVisible().catch(() => false);
346
- if (!visible) continue;
347
-
348
- await locator.click({ timeout: 5_000 }).catch(() => null);
349
- return true;
350
- }
351
- }
352
-
353
- return false;
354
- }
355
-
356
- async function clickFirstActionable(page, selectors) {
357
- for (const scope of getInteractionScopes(page)) {
358
- for (const selector of selectors) {
359
- const locator = scope.locator(selector).first();
360
- const count = await locator.count().catch(() => 0);
361
- if (!count) continue;
362
-
363
- await locator.scrollIntoViewIfNeeded().catch(() => null);
364
-
365
- const visible = await locator.isVisible().catch(() => false);
366
- if (!visible) continue;
367
-
368
- const enabled = await locator.isEnabled().catch(() => true);
369
- if (!enabled) continue;
370
-
371
- const clicked = await locator.click({ timeout: 5_000 }).then(() => true).catch(() => false);
372
- if (clicked) return true;
373
- }
374
- }
375
-
376
- return false;
377
- }
378
-
379
- async function checkFirstVisible(page, selectors) {
380
- for (const scope of getInteractionScopes(page)) {
381
- for (const selector of selectors) {
382
- const locator = scope.locator(selector).first();
383
- const count = await locator.count().catch(() => 0);
384
- if (!count) continue;
385
-
386
- const checked = await locator.isChecked().catch(() => false);
387
- if (checked) return true;
388
-
389
- const visible = await locator.isVisible().catch(() => false);
390
- const didCheck = visible
391
- ? await locator.check({ force: true, timeout: 5_000 }).then(() => true).catch(() => false)
392
- : false;
393
- if (didCheck) return true;
394
-
395
- const clicked = visible
396
- ? await locator.click({ force: true, timeout: 5_000 }).then(() => true).catch(() => false)
397
- : false;
398
- if (clicked) return true;
399
-
400
- const domChecked = await scope.evaluate((candidateSelector) => {
401
- const input = document.querySelector(candidateSelector);
402
- if (!(input instanceof HTMLInputElement)) return false;
403
- input.checked = true;
404
- input.dispatchEvent(new Event("input", { bubbles: true }));
405
- input.dispatchEvent(new Event("change", { bubbles: true }));
406
- return input.checked;
407
- }, selector).catch(() => false);
408
- if (domChecked) return true;
409
- }
410
- }
411
-
412
- return false;
413
- }
414
-
415
- async function getFirstVisibleLocator(page, selector) {
416
- for (const scope of getInteractionScopes(page)) {
417
- const locator = scope.locator(selector).first();
418
- const count = await locator.count().catch(() => 0);
419
- if (!count) continue;
420
-
421
- const visible = await locator.isVisible().catch(() => false);
422
- if (!visible) continue;
423
-
424
- return locator;
425
- }
426
-
427
- return null;
428
- }
429
-
430
- async function waitForFirstVisibleLocator(page, selector, { timeout = 15_000, pollInterval = 150 } = {}) {
431
- const deadline = Date.now() + timeout;
432
- while (Date.now() < deadline) {
433
- const found = await getFirstVisibleLocator(page, selector);
434
- if (found) return found;
435
- const remaining = deadline - Date.now();
436
- if (remaining <= 0) break;
437
- await new Promise((r) => setTimeout(r, Math.min(pollInterval, remaining)));
438
- }
439
- return null;
440
- }
441
-
442
- /** Tiny yield only — never use multi-second sleeps for “maybe page will load”. */
443
- function yieldMs(ms = 50) {
444
- return new Promise((r) => setTimeout(r, ms));
445
- }
446
-
447
- /**
448
- * Wait until a condition is true, polling fast. Replaces fixed sleep after clicks.
449
- * @returns {Promise<boolean>} true if condition met before timeout
450
- */
451
- async function waitUntil(checkFn, { timeout = 8_000, interval = 100 } = {}) {
452
- const deadline = Date.now() + timeout;
453
- while (Date.now() < deadline) {
454
- try {
455
- if (await checkFn()) return true;
456
- } catch {
457
- /* retry */
458
- }
459
- await yieldMs(interval);
460
- }
461
- return false;
462
- }
463
-
464
- function isGoogleHostname(url) {
465
- try {
466
- const host = new URL(url).hostname;
467
- return host === "accounts.google.com"
468
- || host.endsWith(".accounts.google.com")
469
- || /^accounts\.google\./i.test(host);
470
- } catch {
471
- return false;
472
- }
473
- }
474
-
475
- /** After navigation/click: wait for URL change or next UI, not a fixed sleep. */
476
- async function waitForPageAdvance(page, {
477
- fromUrl = "",
478
- urlMatch = null,
479
- selector = null,
480
- timeout = 8_000,
481
- } = {}) {
482
- const startUrl = fromUrl || page.url?.() || "";
483
- return waitUntil(async () => {
484
- const url = page.url?.() || "";
485
- if (urlMatch) {
486
- if (typeof urlMatch === "function" && urlMatch(url)) return true;
487
- if (urlMatch instanceof RegExp && urlMatch.test(url)) return true;
488
- }
489
- if (url && url !== startUrl && !url.startsWith("about:")) return true;
490
- if (selector) {
491
- const found = await getFirstVisibleLocator(page, selector);
492
- if (found) return true;
493
- }
494
- return false;
495
- }, { timeout, interval: 80 });
496
- }
497
-
498
- async function fillInputResilient(locator, value, { timeout = 15_000 } = {}) {
499
- if (!locator || value == null) return false;
500
-
501
- // Prefer fill() first (fast); slow type is only a fallback for React
502
- // controlled fields that reject programmatic fill.
503
- try {
504
- await locator.click({ timeout: 3_000 });
505
- } catch {
506
- /* noop */
507
- }
508
- try {
509
- await locator.fill(String(value), { timeout: Math.min(timeout, 8_000) });
510
- const observed = await locator.inputValue().catch(() => "");
511
- if (observed === value) return true;
512
- } catch {
513
- /* fall through to typed input */
514
- }
515
-
516
- try {
517
- await locator.fill("", { timeout: 2_000 });
518
- } catch {
519
- /* noop */
520
- }
521
- try {
522
- // Light humanization only if fill failed — 15–35ms/key (was 40–120ms).
523
- const delay = Math.floor(15 + Math.random() * 20);
524
- await locator.type(String(value), { delay, timeout });
525
- } catch {
526
- try {
527
- await locator.fill(String(value), { timeout });
528
- } catch {
529
- return false;
530
- }
531
- }
532
-
533
- let observed = "";
534
- try {
535
- observed = await locator.inputValue();
536
- } catch {
537
- observed = "";
538
- }
539
- return observed === value;
540
- }
541
-
542
- function parseSelectorList(selector) {
543
- return String(selector || "")
544
- .split(",")
545
- .map((s) => s.trim())
546
- .filter(Boolean);
547
- }
548
-
549
- async function readPageText(page) {
550
- const chunks = [];
551
- for (const scope of getInteractionScopes(page)) {
552
- try {
553
- chunks.push(await scope.evaluate(() => document.body?.innerText || ""));
554
- } catch {
555
- // Cross-origin frames can be unreadable; ignore them.
556
- }
557
- }
558
- return chunks.join("\n");
559
- }
560
-
561
- function includesAny(text, markers) {
562
- const normalized = String(text || "").toLowerCase();
563
- return markers.some((marker) => normalized.includes(marker));
564
- }
565
-
566
- function isGoogleAuthPage(page) {
567
- try {
568
- const url = new URL(page.url());
569
- return url.hostname === "accounts.google.com"
570
- || url.hostname.endsWith(".accounts.google.com")
571
- || /^accounts\.google\./i.test(url.hostname);
572
- } catch {
573
- return false;
574
- }
575
- }
576
-
577
- /** Fast bulk path: skip multi-second sleeps (Grok, Cloudflare, etc.). */
578
- function isGrokish(serviceLabel) {
579
- return /grok|cloudflare/i.test(String(serviceLabel || ""));
580
- }
581
-
582
- function isCloudflareLoginUrl(url) {
583
- try {
584
- const u = new URL(url || "");
585
- return u.hostname === "dash.cloudflare.com" && u.pathname.includes("/login");
586
- } catch {
587
- return false;
588
- }
589
- }
590
-
591
- async function dismissCookieBanners(page, reportStep) {
592
- // Cookie / OneTrust modals steal the first clicks (CF login shows "Allow All").
593
- // Fast path: one scan — must stay cheap because the main automation loop
594
- // calls this on every tick (dashboard harvest must not burn 2s here).
595
- for (const selector of COOKIE_DISMISS_SELECTORS) {
596
- try {
597
- const loc = page.locator(selector).first();
598
- if (await loc.isVisible({ timeout: 100 }).catch(() => false)) {
599
- // noWaitAfter: banner click must not wait on any incidental navigation
600
- await loc.click({ timeout: 2_000, noWaitAfter: true }).catch(() => null);
601
- reportStep?.("dismissing_cookies", "Dismissed cookie / privacy banner");
602
- return true;
603
- }
604
- } catch {
605
- /* next */
606
- }
607
- }
608
- const viaApi = await page.evaluate(() => {
609
- try {
610
- if (typeof window.OneTrust?.AllowAll === "function") {
611
- const banner = document.querySelector(
612
- "#onetrust-banner-sdk, #onetrust-consent-sdk, #onetrust-accept-btn-handler",
613
- );
614
- // Only invoke when a banner is actually present — AllowAll on every
615
- // loop tick is wasteful and can re-open consent UI.
616
- if (!banner) return false;
617
- window.OneTrust.AllowAll();
618
- return true;
619
- }
620
- const btn = document.querySelector("#onetrust-accept-btn-handler");
621
- if (btn && btn.offsetParent !== null) {
622
- btn.click();
623
- return true;
624
- }
625
- } catch {
626
- /* ignore */
627
- }
628
- return false;
629
- }).catch(() => false);
630
- if (viaApi) {
631
- reportStep?.("dismissing_cookies", "Dismissed cookie / privacy banner");
632
- return true;
633
- }
634
- return false;
635
- }
636
-
637
- // Google bounces flagged (headless) browsers:
638
- // - myaccount.google.com/not-supported
639
- // - accounts.google.com/v3/signin/rejected ("This browser or app may not be secure")
640
- // - about.google drift after consent
641
- function isBlockedBrowserPage(page) {
642
- try {
643
- const url = new URL(page.url());
644
- if (url.pathname.startsWith("/not-supported")) return true;
645
- if (url.pathname.includes("/signin/rejected")) return true;
646
- if (url.pathname.includes("/rejected")) return true;
647
- if (url.hostname === "about.google" || url.hostname.endsWith(".about.google")) return true;
648
- } catch {
649
- // fall through to body text
650
- }
651
- return false;
652
- }
653
-
654
- async function isBlockedBrowser(page) {
655
- if (isBlockedBrowserPage(page)) return true;
656
- const text = await readPageText(page).catch(() => "");
657
- return includesAny(text, [
658
- "browser or app may not be secure",
659
- "try using a different browser",
660
- "couldn't sign you in",
661
- "couldn\u2019t sign you in",
662
- "this browser or app may not be secure",
663
- "browser is not secure",
664
- ]);
665
- }
666
-
667
- /**
668
- * Hook successPromise so interstitial waits can exit as soon as the OAuth
669
- * callback (kiro://) is captured on the network — even while the main frame
670
- * stays parked on blank SetSID.
671
- */
672
- function attachSuccessSettledFlag(successPromise) {
673
- if (!successPromise || typeof successPromise.then !== "function") return;
674
- if (successPromise.__zevaiSettledHooked) return;
675
- successPromise.__zevaiSettledHooked = true;
676
- successPromise.then(
677
- () => { successPromise.__zevaiSettled = true; },
678
- () => { successPromise.__zevaiSettled = true; },
679
- );
680
- }
681
-
682
- function isSuccessSettled(successPromise) {
683
- return Boolean(successPromise && successPromise.__zevaiSettled);
684
- }
685
-
686
- /**
687
- * Google often parks on intermediate pages with empty body after password/consent:
688
- * accounts.google.com(.xx)/accounts/SetSID
689
- * AccountChooser, continue, challenge handoffs
690
- *
691
- * Do NOT force-navigate consent/idpresponse from here — that aborts the natural
692
- * network hop that emits Location: kiro://. Wait for auto-redirect / AccountChooser
693
- * UI, and bail early when successPromise already settled (CDP/page listeners).
694
- *
695
- * @returns {boolean} true if still on an interstitial when maxWaitMs elapsed
696
- */
697
- async function waitThroughGoogleInterstitials(page, reportStep, { maxWaitMs = 20_000, successPromise = null } = {}) {
698
- const start = Date.now();
699
- let lastUrl = "";
700
- attachSuccessSettledFlag(successPromise);
701
-
702
- while (Date.now() - start < maxWaitMs) {
703
- if (isSuccessSettled(successPromise)) {
704
- reportStep?.("waiting_google_redirect", "OAuth callback already received — leaving interstitial wait");
705
- return false;
706
- }
707
-
708
- const url = page.url?.() || "";
709
- const body = String(await readPageText(page).catch(() => "")).trim();
710
- const isSetSid = /\/accounts\/SetSID/i.test(url);
711
- const isChooser = /\/AccountChooser/i.test(url);
712
- const isEmpty = body.length < 30;
713
- const isInterstitial = isSetSid || (isEmpty && /accounts\.google\./i.test(url));
714
-
715
- if (!isInterstitial && !isChooser) return false;
716
-
717
- if (url !== lastUrl) {
718
- reportStep?.(
719
- "waiting_google_redirect",
720
- `Waiting for Google redirect (url=${url.slice(0, 120)} empty=${isEmpty})`,
721
- );
722
- lastUrl = url;
723
- }
724
-
725
- // Account chooser: click first account row if present
726
- if (isChooser) {
727
- const clicked = await clickFirstActionable(page, [
728
- 'div[data-identifier]',
729
- 'div[data-email]',
730
- 'li[data-identifier]',
731
- 'div[role="link"]',
732
- 'div[role="button"]',
733
- ]);
734
- if (clicked) {
735
- reportStep?.("selecting_google_account", "Selected account from Google AccountChooser");
736
- await waitForPageAdvance(page, { timeout: 5_000 });
737
- continue;
738
- }
739
- }
740
-
741
- const waiters = [
742
- page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: 3_000 }).catch(() => null),
743
- // Cap idle wait low — exit as soon as URL/body changes or success settles.
744
- yieldMs(400),
745
- ];
746
- if (successPromise && !isSuccessSettled(successPromise)) {
747
- waiters.push(successPromise.then(() => null).catch(() => null));
748
- }
749
- await Promise.race(waiters);
750
- }
751
- return true;
752
- }
753
-
754
- function isProviderPage(page) {
755
- try {
756
- const url = new URL(page.url());
757
- const host = url.hostname || "";
758
- return /codebuddy\.(ai|cn)$/.test(host)
759
- || host.endsWith(".codebuddy.ai")
760
- || host.endsWith(".codebuddy.cn")
761
- // xAI / Grok CLI device authorization + account host
762
- || host === "accounts.x.ai"
763
- || host === "auth.x.ai"
764
- || host.endsWith(".x.ai")
765
- || host === "grok.com"
766
- || host.endsWith(".grok.com")
767
- // Cloudflare dashboard (Workers AI bulk)
768
- || host === "dash.cloudflare.com"
769
- || host.endsWith(".cloudflare.com");
770
- } catch {
771
- return false;
772
- }
773
- }
774
-
775
- async function handleGoogleConsent(page, reportStep) {
776
- if (!isGoogleAuthPage(page)) return false;
777
-
778
- const text = await readPageText(page);
779
- const looksLikeConsent = /wants to access|ingin mengakses|akses ke akun google|allow/i.test(text);
780
- if (!looksLikeConsent) return false;
781
-
782
- await page.evaluate(() => {
783
- const root = document.scrollingElement || document.documentElement || document.body;
784
- if (root) root.scrollTop = root.scrollHeight;
785
- window.scrollTo(0, document.body?.scrollHeight || document.documentElement?.scrollHeight || 0);
786
- }).catch(() => null);
787
- await page.waitForTimeout(300);
788
-
789
- const clickedApprove = await clickFirstActionable(page, APPROVE_BUTTON_SELECTORS);
790
- if (clickedApprove) {
791
- reportStep("approving_google_consent", "Approving Google OAuth consent");
792
- await page.waitForTimeout(1000);
793
- return true;
794
- }
795
-
796
- return false;
797
- }
798
-
799
- async function handleGoogleOnboarding(page, pageText) {
800
- const text = String(pageText || "");
801
- if (!includesAny(text, GOOGLE_ONBOARDING_MARKERS)) {
802
- return false;
803
- }
804
-
805
- await page.evaluate(() => {
806
- const root = document.scrollingElement || document.documentElement || document.body;
807
- if (root) root.scrollTop = root.scrollHeight;
808
- window.scrollTo(0, document.body?.scrollHeight || document.documentElement?.scrollHeight || 0);
809
- }).catch(() => null);
810
- await page.waitForTimeout(500);
811
-
812
- // Workspace welcome ("Welcome to your new account" for @domain.com) has
813
- // only one valid action: the primary "I understand" button. There is no
814
- // skip option \u2014 clicking nothing leaves the worker stuck polling forever
815
- // while the headless tab sits on the consent screen. Prioritise the
816
- // primary action selector before the generic skip pass so we don't fall
817
- // through to a non-existent "Not now" link.
818
- if (includesAny(text, GOOGLE_WORKSPACE_WELCOME_MARKERS)) {
819
- const acknowledged = await clickFirstActionable(page, APPROVE_BUTTON_SELECTORS);
820
- if (acknowledged) {
821
- await page.waitForTimeout(700);
822
- return true;
823
- }
824
- const submittedFromDom = await page.evaluate(() => {
825
- const candidates = [
826
- document.getElementById("confirm"),
827
- document.querySelector('form#tos_form input[type="submit"]'),
828
- document.querySelector('input[type="submit"][value="Saya mengerti"]'),
829
- document.querySelector('input[type="submit"][value="I understand"]'),
830
- ].filter(Boolean);
831
- const btn = candidates[0];
832
- if (!btn) return false;
833
- btn.scrollIntoView({ block: "center" });
834
- btn.click();
835
- return true;
836
- }).catch(() => false);
837
- if (submittedFromDom) {
838
- await page.waitForTimeout(800);
839
- return true;
840
- }
841
- const formSubmitted = await page.evaluate(() => {
842
- const form = document.getElementById("tos_form");
843
- if (!form) return false;
844
- form.submit();
845
- return true;
846
- }).catch(() => false);
847
- if (formSubmitted) {
848
- await page.waitForTimeout(800);
849
- return true;
850
- }
851
- }
852
-
853
- const clickedSkip = await clickFirstActionable(page, SKIP_BUTTON_SELECTORS);
854
- if (clickedSkip) {
855
- await page.waitForTimeout(700);
856
- return true;
857
- }
858
-
859
- const clickedContinue = await clickFirstActionable(page, APPROVE_BUTTON_SELECTORS);
860
- if (clickedContinue) {
861
- await page.waitForTimeout(700);
862
- return true;
863
- }
864
-
865
- return false;
866
- }
867
-
868
- async function selectNativeRegionOption(page) {
869
- const preferred = /global|international|singapore|united states|^us$|asia|hong kong|default/i;
870
-
871
- for (const scope of getInteractionScopes(page)) {
872
- const selects = scope.locator("select");
873
- const count = await selects.count().catch(() => 0);
874
- for (let index = 0; index < count; index += 1) {
875
- const select = selects.nth(index);
876
- const visible = await select.isVisible().catch(() => false);
877
- const enabled = await select.isEnabled().catch(() => true);
878
- if (!visible || !enabled) continue;
879
-
880
- const value = await select.evaluate((element, patternSource) => {
881
- const matcher = new RegExp(patternSource, "i");
882
- const options = [...element.options].filter((option) => !option.disabled && option.value !== "");
883
- const preferredOption = options.find((option) => matcher.test(`${option.label} ${option.textContent} ${option.value}`));
884
- return (preferredOption || options[0])?.value || "";
885
- }, preferred.source).catch(() => "");
886
-
887
- if (!value) continue;
888
- const selected = await select.selectOption(value).then(() => true).catch(() => false);
889
- if (selected) return true;
890
- }
891
- }
892
-
893
- return false;
894
- }
895
-
896
- async function fillProviderOnboardingDefaults(page) {
897
- let filled = false;
898
-
899
- for (const scope of getInteractionScopes(page)) {
900
- for (const { selector, value } of PROVIDER_ONBOARDING_INPUT_DEFAULTS) {
901
- const locator = scope.locator(selector).first();
902
- const count = await locator.count().catch(() => 0);
903
- if (!count) continue;
904
-
905
- const visible = await locator.isVisible().catch(() => false);
906
- const enabled = await locator.isEnabled().catch(() => true);
907
- if (!visible || !enabled) continue;
908
-
909
- const currentValue = await locator.inputValue().catch(() => "");
910
- if (currentValue) continue;
911
-
912
- const didFill = await locator.fill(value, { timeout: 5_000 }).then(() => true).catch(() => false);
913
- if (didFill) filled = true;
914
- }
915
- }
916
-
917
- return filled;
918
- }
919
-
920
- async function clickLocatorCenter(page, locator) {
921
- await locator.scrollIntoViewIfNeeded().catch(() => null);
922
- const visible = await locator.isVisible().catch(() => false);
923
- const enabled = await locator.isEnabled().catch(() => true);
924
- if (!visible || !enabled) return false;
925
-
926
- const box = await locator.boundingBox().catch(() => null);
927
- if (!box || box.width <= 0 || box.height <= 0) return false;
928
-
929
- const x = box.x + box.width / 2;
930
- const y = box.y + box.height / 2;
931
- await page.mouse.move(x, y);
932
- await page.mouse.down();
933
- await page.mouse.up();
934
- return true;
935
- }
936
-
937
- async function clickVisibleLocatorByText(page, selector, patterns) {
938
- for (const scope of getInteractionScopes(page)) {
939
- const locators = scope.locator(selector);
940
- const count = Math.min(await locators.count().catch(() => 0), 80);
941
- const candidates = [];
942
-
943
- for (let index = 0; index < count; index += 1) {
944
- const locator = locators.nth(index);
945
- const visible = await locator.isVisible().catch(() => false);
946
- if (!visible) continue;
947
-
948
- const text = (await locator.innerText({ timeout: 1_000 }).catch(() => "")
949
- || await locator.textContent({ timeout: 1_000 }).catch(() => "")
950
- || "").trim();
951
- if (!text) continue;
952
- candidates.push({ locator, text });
953
- }
954
-
955
- for (const pattern of patterns) {
956
- const candidate = candidates.find((item) => pattern.test(item.text));
957
- if (!candidate) continue;
958
- const clicked = await clickLocatorCenter(page, candidate.locator).catch(() => false);
959
- if (clicked) return candidate.text;
960
- }
961
-
962
- if (candidates[0]) {
963
- const clicked = await clickLocatorCenter(page, candidates[0].locator).catch(() => false);
964
- if (clicked) return candidates[0].text;
965
- }
966
- }
967
-
968
- return "";
969
- }
970
-
971
- async function clickFirstVisibleLocatorCenter(page, selectors) {
972
- for (const scope of getInteractionScopes(page)) {
973
- for (const selector of selectors) {
974
- const locators = scope.locator(selector);
975
- const count = Math.min(await locators.count().catch(() => 0), 20);
976
- for (let index = 0; index < count; index += 1) {
977
- const locator = locators.nth(index);
978
- const clicked = await clickLocatorCenter(page, locator).catch(() => false);
979
- if (clicked) return true;
980
- }
981
- }
982
- }
983
-
984
- return false;
985
- }
986
-
987
- async function handleCodeBuddyRegionPageViaApi(page, reportStep) {
988
- if (!isProviderPage(page) || isGoogleAuthPage(page)) return false;
989
-
990
- const result = await page.evaluate(async () => {
991
- const bodyText = document.body?.innerText || "";
992
- const looksLikeRegionPage = document.querySelector(".page-region")
993
- || /select\s+region|region|country|area|get started|complete/i.test(bodyText);
994
- if (!looksLikeRegionPage) return null;
995
-
996
- try {
997
- const response = await fetch("https://www.codebuddy.ai/console/login/account", {
998
- method: "POST",
999
- credentials: "include",
1000
- headers: {
1001
- accept: "application/json, text/plain, */*",
1002
- "content-type": "application/json",
1003
- "x-requested-with": "XMLHttpRequest",
1004
- "x-domain": window.location.hostname || "www.codebuddy.ai",
1005
- },
1006
- referrer: "https://www.codebuddy.ai/register/user/complete",
1007
- body: JSON.stringify({
1008
- attributes: {
1009
- countryCode: ["62"],
1010
- countryFullName: ["Indonesia"],
1011
- countryName: ["ID"],
1012
- },
1013
- }),
1014
- });
1015
-
1016
- const text = await response.text().catch(() => "");
1017
- let data = null;
1018
- try {
1019
- data = text ? JSON.parse(text) : null;
1020
- } catch {
1021
- data = { raw: text };
1022
- }
1023
-
1024
- if (response.ok && (!data || data.code === 0 || data.code === 200 || typeof data.code === "undefined")) {
1025
- return { action: "submitted_via_api" };
1026
- }
1027
-
1028
- return {
1029
- action: "api_failed",
1030
- status: response.status,
1031
- code: data?.code,
1032
- message: data?.msg || data?.message || text || `HTTP ${response.status}`,
1033
- };
1034
- } catch (error) {
1035
- return {
1036
- action: "api_failed",
1037
- message: error?.message || "region submit request failed",
1038
- };
1039
- }
1040
- }).catch(() => null);
1041
-
1042
- if (!result?.action) return false;
1043
-
1044
- if (result.action === "submitted_via_api") {
1045
- reportStep("submitting_codebuddy_region", "Submitted CodeBuddy region via account API");
1046
- await page.waitForTimeout(1500);
1047
- return true;
1048
- }
1049
-
1050
- reportStep(
1051
- "codebuddy_region_api_failed",
1052
- result.message
1053
- ? `CodeBuddy region API submit failed: ${result.message}`
1054
- : "CodeBuddy region API submit failed"
1055
- );
1056
- return false;
1057
- }
1058
-
1059
- async function handleCodeBuddyRegionPageWithMouse(page, reportStep) {
1060
- if (!isProviderPage(page) || isGoogleAuthPage(page)) return false;
1061
-
1062
- const isRegionPage = await page.locator(".page-region").first().count().then(Boolean).catch(() => false);
1063
- if (!isRegionPage) return false;
1064
-
1065
- const optionPatterns = [
1066
- /indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,
1067
- /singapore|^sg$|\u65b0\u52a0\u5761/i,
1068
- /japan|^jp$|\u65e5\u672c/i,
1069
- /thailand|^th$|\u6cf0\u56fd/i,
1070
- /global|international|default/i,
1071
- ];
1072
-
1073
- const submitClicked = await clickFirstVisibleLocatorCenter(page, [
1074
- ".page-region [class*='28B894']",
1075
- ".page-region button:has-text('Get started')",
1076
- ".page-region button:has-text('Start')",
1077
- ".page-region button:has-text('Submit')",
1078
- ".page-region button:has-text('Continue')",
1079
- ".page-region [role='button']:has-text('Get started')",
1080
- ".page-region [role='button']:has-text('Start')",
1081
- ".page-region [role='button']:has-text('Submit')",
1082
- ".page-region [role='button']:has-text('Continue')",
1083
- ]);
1084
- if (submitClicked) {
1085
- reportStep("submitting_codebuddy_region", "Submitted CodeBuddy region selection");
1086
- await page.waitForTimeout(1200);
1087
- return true;
1088
- }
1089
-
1090
- const visibleOption = await clickVisibleLocatorByText(
1091
- page,
1092
- "ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",
1093
- optionPatterns
1094
- );
1095
- if (visibleOption) {
1096
- reportStep("selecting_codebuddy_region", `Selected CodeBuddy region: ${visibleOption}`);
1097
- await page.waitForTimeout(900);
1098
- return true;
1099
- }
1100
-
1101
- const opened = await clickFirstVisibleLocatorCenter(page, [
1102
- ".page-region .t-select",
1103
- ".page-region [class*='t-select']",
1104
- ".page-region [role='combobox']",
1105
- ".page-region input[placeholder]",
1106
- ".page-region [class*='select']",
1107
- ".page-region [class*='cursor-pointer']",
1108
- ]);
1109
- if (!opened) return false;
1110
-
1111
- reportStep("opening_codebuddy_region_selector", "Opening CodeBuddy region selector");
1112
- await page.waitForTimeout(600);
1113
-
1114
- const openedOption = await clickVisibleLocatorByText(
1115
- page,
1116
- "ul.dropdown-section li, .dropdown-section li, [role='option'], .t-select-option, [class*='option']",
1117
- optionPatterns
1118
- );
1119
- if (openedOption) {
1120
- reportStep("selecting_codebuddy_region", `Selected CodeBuddy region: ${openedOption}`);
1121
- await page.waitForTimeout(900);
1122
- }
1123
-
1124
- return true;
1125
- }
1126
-
1127
- async function handleCodeBuddyRegionPage(page, reportStep) {
1128
- if (!isProviderPage(page) || isGoogleAuthPage(page)) return false;
1129
-
1130
- const handledViaApi = await handleCodeBuddyRegionPageViaApi(page, reportStep);
1131
- if (handledViaApi) return true;
1132
-
1133
- const handledWithMouse = await handleCodeBuddyRegionPageWithMouse(page, reportStep);
1134
- if (handledWithMouse) return true;
1135
-
1136
- for (const scope of getInteractionScopes(page)) {
1137
- const result = await scope.evaluate(() => {
1138
- const visible = (element) => {
1139
- if (!(element instanceof HTMLElement)) return false;
1140
- const style = window.getComputedStyle(element);
1141
- if (style.visibility === "hidden" || style.display === "none" || Number(style.opacity) === 0) return false;
1142
- const rect = element.getBoundingClientRect();
1143
- return rect.width > 0 && rect.height > 0;
1144
- };
1145
-
1146
- const root = document.querySelector(".page-region");
1147
- const bodyText = document.body?.innerText || "";
1148
- const looksLikeRegionPage = root
1149
- || /select\s+region|region|country|area|get started|complete/i.test(bodyText);
1150
- if (!looksLikeRegionPage) return null;
1151
-
1152
- const clickElement = (element) => {
1153
- element.scrollIntoView({ block: "center", inline: "center" });
1154
- for (const type of ["pointerdown", "mousedown", "pointerup", "mouseup", "click"]) {
1155
- element.dispatchEvent(new MouseEvent(type, {
1156
- bubbles: true,
1157
- cancelable: true,
1158
- view: window,
1159
- buttons: type.endsWith("down") ? 1 : 0,
1160
- }));
1161
- }
1162
- };
1163
-
1164
- const optionPatterns = [
1165
- /indonesia|^id$|\u5370\u5ea6\u5c3c\u897f\u4e9a/i,
1166
- /singapore|^sg$|\u65b0\u52a0\u5761/i,
1167
- /japan|^jp$|\u65e5\u672c/i,
1168
- /thailand|^th$|\u6cf0\u56fd/i,
1169
- /global|international|default/i,
1170
- ];
1171
-
1172
- const searchRoot = root || document.body;
1173
- const submitSelectors = [
1174
- "button",
1175
- "[role='button']",
1176
- "input[type='submit']",
1177
- ".t-button",
1178
- "[class*='button']",
1179
- "[class*='28B894']",
1180
- ];
1181
- const submitButtons = [...searchRoot.querySelectorAll(submitSelectors.join(","))]
1182
- .filter(visible)
1183
- .filter((element) => {
1184
- const text = `${element.innerText || ""} ${element.getAttribute("aria-label") || ""} ${element.getAttribute("value") || ""}`;
1185
- const className = element.getAttribute("class") || "";
1186
- return /submit|start|continue|confirm|done|get started|complete|\u5b8c\u6210|\u5f00\u59cb|\u786e\u5b9a|\u4e0b\u4e00\u6b65/i.test(text)
1187
- || className.includes("28B894");
1188
- });
1189
-
1190
- if (submitButtons.length) {
1191
- clickElement(submitButtons[0]);
1192
- return { action: "submitted" };
1193
- }
1194
-
1195
- const optionSelectors = [
1196
- "ul.dropdown-section li",
1197
- ".dropdown-section li",
1198
- "[role='option']",
1199
- ".t-select-option",
1200
- "[class*='option']",
1201
- "[class*='dropdown'] li",
1202
- ];
1203
- const options = [...document.querySelectorAll(optionSelectors.join(","))]
1204
- .filter(visible)
1205
- .filter((element) => (element.innerText || element.textContent || "").trim());
1206
-
1207
- if (options.length) {
1208
- const option = optionPatterns
1209
- .map((pattern) => options.find((element) => pattern.test((element.innerText || element.textContent || "").trim())))
1210
- .find(Boolean) || options[0];
1211
- const label = (option.innerText || option.textContent || "").trim();
1212
- clickElement(option);
1213
- return { action: "selected", label };
1214
- }
1215
-
1216
- const controlSelectors = [
1217
- "[role='combobox']",
1218
- ".t-select",
1219
- "[class*='t-select']",
1220
- "[class*='select']",
1221
- "input[placeholder]",
1222
- ".text-sm",
1223
- "[class*='cursor-pointer']",
1224
- ];
1225
- const controls = [...searchRoot.querySelectorAll(controlSelectors.join(","))]
1226
- .filter(visible)
1227
- .filter((element) => {
1228
- const text = `${element.innerText || ""} ${element.getAttribute("placeholder") || ""} ${element.getAttribute("aria-label") || ""}`;
1229
- return /region|country|area|select|placeholder|\u5730\u533a|\u56fd\u5bb6|\u9009\u62e9/i.test(text)
1230
- || element.matches?.(".t-select,[class*='t-select'],input[placeholder],[class*='select']");
1231
- });
1232
-
1233
- if (controls.length) {
1234
- clickElement(controls[0]);
1235
- return { action: "opened" };
1236
- }
1237
-
1238
- return null;
1239
- }).catch(() => null);
1240
-
1241
- if (!result?.action) continue;
1242
-
1243
- if (result.action === "selected") {
1244
- reportStep("selecting_codebuddy_region", `Selected CodeBuddy region${result.label ? `: ${result.label}` : ""}`);
1245
- await page.waitForTimeout(700);
1246
- return true;
1247
- }
1248
-
1249
- if (result.action === "submitted") {
1250
- reportStep("submitting_codebuddy_region", "Submitted CodeBuddy region selection");
1251
- await page.waitForTimeout(1200);
1252
- return true;
1253
- }
1254
-
1255
- reportStep("opening_codebuddy_region_selector", "Opening CodeBuddy region selector");
1256
- await page.waitForTimeout(700);
1257
- return true;
1258
- }
1259
-
1260
- return false;
1261
- }
1262
-
1263
- async function handleCodeBuddyStartedAuthorization(page, reportStep) {
1264
- if (!isProviderPage(page) || isGoogleAuthPage(page)) return false;
1265
-
1266
- const result = await page.evaluate(async () => {
1267
- const url = new URL(window.location.href);
1268
- if (!/\/started\/?$/.test(url.pathname)) return null;
1269
-
1270
- const platform = url.searchParams.get("platform") || "CLI";
1271
- const state = url.searchParams.get("state");
1272
- if (!state) return null;
1273
-
1274
- const domains = [window.location.hostname || "www.codebuddy.ai"].filter(Boolean);
1275
- for (const domain of [...new Set(domains)]) {
1276
- const authUrl = new URL("/console/auth/login", window.location.origin);
1277
- authUrl.searchParams.set("platform", platform);
1278
- authUrl.searchParams.set("state", state);
1279
- authUrl.searchParams.set("domain", domain);
1280
-
1281
- try {
1282
- const response = await fetch(authUrl.toString(), {
1283
- method: "GET",
1284
- credentials: "include",
1285
- redirect: "manual",
1286
- headers: {
1287
- "x-requested-with": "XMLHttpRequest",
1288
- "X-Domain": domain,
1289
- },
1290
- });
1291
- if (response.type === "opaqueredirect" || (response.status >= 300 && response.status < 400)) {
1292
- return { action: "attempted", domain, message: "redirected" };
1293
- }
1294
- const text = await response.text();
1295
- let data = null;
1296
- try {
1297
- data = text ? JSON.parse(text) : null;
1298
- } catch {
1299
- data = { raw: text };
1300
- }
1301
- if (response.ok && (!data || data.code === 0 || data.code === 200 || typeof data.code === "undefined")) {
1302
- return { action: "authorized", domain };
1303
- }
1304
- if (response.ok) {
1305
- return { action: "attempted", domain, code: data?.code, message: data?.msg || data?.message || "" };
1306
- }
1307
- } catch (error) {
1308
- // Try the next domain variant.
1309
- }
1310
- }
1311
-
1312
- return { action: "failed" };
1313
- }).catch(() => null);
1314
-
1315
- if (!result?.action || result.action === "failed") return false;
1316
-
1317
- if (result.action === "authorized") {
1318
- reportStep("authorizing_codebuddy_cli_state", "Authorized CodeBuddy CLI login state");
1319
- await page.waitForTimeout(1200);
1320
- return true;
1321
- }
1322
-
1323
- reportStep(
1324
- "authorizing_codebuddy_cli_state",
1325
- result.message
1326
- ? `Attempted CodeBuddy CLI login state authorization: ${result.message}`
1327
- : "Attempted CodeBuddy CLI login state authorization"
1328
- );
1329
- await page.waitForTimeout(1200);
1330
- return true;
1331
- }
1332
-
1333
- async function providerHasGoogleLogin(page) {
1334
- try {
1335
- for (const name of [/continue with google/i, /sign in with google/i, /sign up with google/i, /^google$/i]) {
1336
- const btn = page.getByRole("button", { name }).first();
1337
- if (await btn.isVisible({ timeout: 300 }).catch(() => false)) return true;
1338
- const link = page.getByRole("link", { name }).first();
1339
- if (await link.isVisible({ timeout: 200 }).catch(() => false)) return true;
1340
- }
1341
- } catch {
1342
- /* ignore */
1343
- }
1344
- for (const selector of GOOGLE_LOGIN_BUTTON_SELECTORS) {
1345
- try {
1346
- const loc = page.locator(selector).first();
1347
- if (await loc.isVisible({ timeout: 200 }).catch(() => false)) return true;
1348
- } catch {
1349
- /* next */
1350
- }
1351
- }
1352
- return false;
1353
- }
1354
-
1355
- function isXaiProviderPage(page) {
1356
- try {
1357
- const host = new URL(page.url()).hostname || "";
1358
- return host === "accounts.x.ai" || host === "auth.x.ai" || host.endsWith(".x.ai")
1359
- || host === "grok.com" || host.endsWith(".grok.com");
1360
- } catch {
1361
- return false;
1362
- }
1363
- }
1364
-
1365
- async function handleProviderOnboarding(page, reportStep, serviceLabel) {
1366
- if (!isProviderPage(page) || isGoogleAuthPage(page)) return false;
1367
-
1368
- const confirmedPrivacy = await clickFirstActionable(page, PRIVACY_CONFIRM_BUTTON_SELECTORS);
1369
- if (confirmedPrivacy) {
1370
- reportStep("accepting_provider_privacy_dialog", `Confirmed ${serviceLabel} privacy or terms dialog`);
1371
- await page.waitForTimeout(800);
1372
- return true;
1373
- }
1374
-
1375
- const handledCodeBuddyStarted = await handleCodeBuddyStartedAuthorization(page, reportStep);
1376
- if (handledCodeBuddyStarted) {
1377
- return true;
1378
- }
1379
-
1380
- const handledCodeBuddyRegion = await handleCodeBuddyRegionPage(page, reportStep);
1381
- if (handledCodeBuddyRegion) {
1382
- return true;
1383
- }
1384
-
1385
- // Region / workspace defaults are CodeBuddy-style — not xAI device approve.
1386
- // False-positive select matches on xAI wasted the session into "Invalid action".
1387
- if (!isXaiProviderPage(page)) {
1388
- const selectedNativeRegion = await selectNativeRegionOption(page);
1389
- if (selectedNativeRegion) {
1390
- reportStep("selecting_provider_region", `Selected ${serviceLabel} region`);
1391
- await page.waitForTimeout(700);
1392
- return true;
1393
- }
1394
-
1395
- const openedRegionMenu = await clickFirstActionable(page, PROVIDER_REGION_TRIGGER_SELECTORS);
1396
- if (openedRegionMenu) {
1397
- reportStep("opening_provider_region_selector", `Opening ${serviceLabel} region selector`);
1398
- await page.waitForTimeout(500);
1399
- const selectedRegion = await clickFirstActionable(page, PROVIDER_REGION_OPTION_SELECTORS);
1400
- if (selectedRegion) {
1401
- reportStep("selecting_provider_region", `Selected ${serviceLabel} region`);
1402
- await page.waitForTimeout(700);
1403
- }
1404
- return true;
1405
- }
1406
-
1407
- const selectedRegion = await clickFirstActionable(page, PROVIDER_REGION_OPTION_SELECTORS);
1408
- if (selectedRegion) {
1409
- reportStep("selecting_provider_region", `Selected ${serviceLabel} region`);
1410
- await page.waitForTimeout(700);
1411
- return true;
1412
- }
1413
-
1414
- const filledDefaults = await fillProviderOnboardingDefaults(page);
1415
- if (filledDefaults) {
1416
- reportStep("filling_provider_onboarding", `Filled ${serviceLabel} onboarding defaults`);
1417
- await page.waitForTimeout(500);
1418
- return true;
1419
- }
1420
- }
1421
-
1422
- // xAI device pages: never click generic Continue/Next/Confirm. Those submit
1423
- // the device form without a session → "Invalid action" and burn 1–3 minutes.
1424
- // Only Google SSO (login gate) + Allow/Authorize (clickXaiDeviceAuthorize).
1425
- if (isXaiProviderPage(page)) {
1426
- return false;
1427
- }
1428
-
1429
- // Cloudflare dashboard / login: "Allow All" cookie + "Sign in" must not be
1430
- // treated as provider onboarding Continues.
1431
- try {
1432
- const host = new URL(page.url()).hostname || "";
1433
- if (host === "dash.cloudflare.com" || host.endsWith(".cloudflare.com")) {
1434
- return false;
1435
- }
1436
- } catch {
1437
- /* ignore */
1438
- }
1439
-
1440
- // If Google SSO is still offered, do not mash generic Continue.
1441
- if (await providerHasGoogleLogin(page)) {
1442
- return false;
1443
- }
1444
-
1445
- const clickedAction = await clickFirstActionable(page, PROVIDER_ONBOARDING_ACTION_SELECTORS);
1446
- if (clickedAction) {
1447
- reportStep("continuing_provider_onboarding", `Continuing ${serviceLabel} onboarding`);
1448
- await page.waitForTimeout(1000);
1449
- return true;
1450
- }
1451
-
1452
- return false;
1453
- }
1454
-
1455
- /**
1456
- * xAI device step 1: "Enter the code shown in your terminal" → Continue.
1457
- * Only after this do we land on sign-in with "Login with Google".
1458
- * Never run this after Google login — that re-submits Continue into Invalid action.
1459
- */
1460
- async function handleXaiDeviceCodeConfirm(page, reportStep, { alreadyAuthed = false } = {}) {
1461
- if (!isXaiProviderPage(page)) return false;
1462
- if (alreadyAuthed) return false;
1463
- // Already on Google SSO wall — past this step.
1464
- if (await providerHasGoogleLogin(page)) return false;
1465
-
1466
- const text = await readPageText(page).catch(() => "");
1467
- // Logged-in device/approve screens — do not re-click Continue.
1468
- if (/sign out|log out|device authorized|you can close|invalid action/i.test(text)) {
1469
- return false;
1470
- }
1471
-
1472
- const isCodeConfirm =
1473
- /enter the code shown in your terminal/i.test(text)
1474
- || /only enter this code if you just initiated/i.test(text)
1475
- || (/sign in to grok/i.test(text) && /continue/i.test(text) && !/login with/i.test(text));
1476
- if (!isCodeConfirm) return false;
1477
-
1478
- const fromUrl = page.url?.() || "";
1479
- let clicked = false;
1480
- try {
1481
- const btn = page.getByRole("button", { name: /^Continue$/i }).first();
1482
- if (await btn.isVisible({ timeout: 300 }).catch(() => false)) {
1483
- await btn.click({ timeout: 5_000 });
1484
- clicked = true;
1485
- }
1486
- } catch {
1487
- /* fall through */
1488
- }
1489
- if (!clicked) {
1490
- clicked = await clickFirstActionable(page, [
1491
- 'button[type="submit"]:has-text("Continue")',
1492
- 'button:has-text("Continue")',
1493
- ]);
1494
- }
1495
- if (!clicked) return false;
1496
-
1497
- reportStep?.("confirming_device_code", "Confirmed device user code on xAI");
1498
- // Event-driven: next screen is Login with Google or URL change — no fixed 1.2s sleep.
1499
- // GOOGLE_LOGIN_BUTTON_SELECTORS is a string[] — never .split() it.
1500
- await waitForPageAdvance(page, {
1501
- fromUrl,
1502
- urlMatch: (u) => /sign-in|login|oauth/i.test(u) && u !== fromUrl,
1503
- selector: [
1504
- ...GOOGLE_LOGIN_BUTTON_SELECTORS.slice(0, 8),
1505
- 'button:has-text("Login with Google")',
1506
- 'button:has-text("Login with email")',
1507
- ].join(", "),
1508
- timeout: 10_000,
1509
- });
1510
- return true;
1511
- }
1512
-
1513
- /**
1514
- * Click a Google SSO control without waiting for the cross-origin navigation.
1515
- *
1516
- * Playwright's default click() waits for navigations started by the action.
1517
- * CF → accounts.google.com through a residential proxy often exceeds 5s, so the
1518
- * click "fails" even though OAuth already started — then we re-click for 30–40s.
1519
- */
1520
- async function clickSsoControl(page, locator) {
1521
- const enabled = await locator.isEnabled().catch(() => true);
1522
- if (!enabled) return false;
1523
- await locator.scrollIntoViewIfNeeded().catch(() => null);
1524
- const clicked = await locator
1525
- .click({ timeout: 2_500, force: true, noWaitAfter: true })
1526
- .then(() => true)
1527
- .catch(() => false);
1528
- if (clicked) return true;
1529
- // Trusted mouse path (also does not wait on navigation).
1530
- return clickLocatorCenter(page, locator).catch(() => false);
1531
- }
1532
-
1533
- async function clickGoogleLoginRole(page) {
1534
- // Role-based matches are more reliable on SPA auth shells (xAI, CF, etc.)
1535
- // than CSS :has-text alone — especially when the label is nested / aria-only.
1536
- const roleNames = [
1537
- /continue with google/i,
1538
- /login with google/i,
1539
- /log in with google/i,
1540
- /sign up with google/i,
1541
- /sign in with google/i,
1542
- /^google$/i,
1543
- ];
1544
- for (const name of roleNames) {
1545
- try {
1546
- const btn = page.getByRole("button", { name }).first();
1547
- if (await btn.isVisible({ timeout: 250 }).catch(() => false)) {
1548
- if (await clickSsoControl(page, btn)) return true;
1549
- }
1550
- } catch {
1551
- /* next */
1552
- }
1553
- try {
1554
- const link = page.getByRole("link", { name }).first();
1555
- if (await link.isVisible({ timeout: 200 }).catch(() => false)) {
1556
- if (await clickSsoControl(page, link)) return true;
1557
- }
1558
- } catch {
1559
- /* next */
1560
- }
1561
- }
1562
- // Cloudflare: button text "Google", aria-label "Continue with Google"
1563
- try {
1564
- const ariaBtn = page.locator('button[aria-label*="Google" i]').first();
1565
- if (await ariaBtn.isVisible({ timeout: 200 }).catch(() => false)) {
1566
- if (await clickSsoControl(page, ariaBtn)) return true;
1567
- }
1568
- } catch {
1569
- /* ignore */
1570
- }
1571
- // Last resort: CSS text match with noWaitAfter
1572
- try {
1573
- const textBtn = page.locator('button:has-text("Google")').first();
1574
- if (await textBtn.isVisible({ timeout: 150 }).catch(() => false)) {
1575
- if (await clickSsoControl(page, textBtn)) return true;
1576
- }
1577
- } catch {
1578
- /* ignore */
1579
- }
1580
- return false;
1581
- }
1582
-
1583
- async function ensureProviderTermsChecked(page, reportStep) {
1584
- // Returns true only when we newly checked a box (not when already checked).
1585
- for (const scope of getInteractionScopes(page)) {
1586
- for (const selector of TERMS_CHECKBOX_SELECTORS) {
1587
- try {
1588
- const locator = scope.locator(selector).first();
1589
- const count = await locator.count().catch(() => 0);
1590
- if (!count) continue;
1591
- const visible = await locator.isVisible().catch(() => false);
1592
- if (!visible) continue;
1593
- const already = await locator.isChecked().catch(() => false);
1594
- if (already) return false;
1595
- const did = await locator.check({ force: true, timeout: 3_000 }).then(() => true).catch(() => false)
1596
- || await locator.click({ force: true, timeout: 3_000 }).then(() => true).catch(() => false);
1597
- if (did) {
1598
- reportStep?.("accepting_provider_terms", "Accepted provider terms for Google login");
1599
- // Wait until Google button enables — not a blind sleep.
1600
- await waitUntil(
1601
- async () => {
1602
- try {
1603
- const btn = page.getByRole("button", { name: /google/i }).first();
1604
- return (await btn.isVisible().catch(() => false))
1605
- && (await btn.isEnabled().catch(() => true));
1606
- } catch {
1607
- return true;
1608
- }
1609
- },
1610
- { timeout: 2_000, interval: 80 },
1611
- );
1612
- return true;
1613
- }
1614
- } catch {
1615
- /* next */
1616
- }
1617
- }
1618
- }
1619
- return false;
1620
- }
1621
-
1622
- async function handleProviderLoginGate(page, reportStep, { allowGoogleClick = true } = {}) {
1623
- if (isGoogleAuthPage(page)) return false;
1624
-
1625
- await dismissCookieBanners(page, reportStep);
1626
-
1627
- const confirmedExistingDialog = await clickFirstActionable(page, PRIVACY_CONFIRM_BUTTON_SELECTORS);
1628
- if (confirmedExistingDialog) {
1629
- reportStep("accepting_provider_privacy_dialog", "Confirmed provider privacy agreement dialog");
1630
- return true;
1631
- }
1632
-
1633
- // Always try terms first — but do NOT treat "already checked" as progress.
1634
- // Returning true every loop on an already-checked box blocked Google re-click
1635
- // for ~30–60s after a failed first SSO attempt.
1636
- const newlyCheckedTerms = await ensureProviderTermsChecked(page, reportStep);
1637
-
1638
- if (!allowGoogleClick) {
1639
- return newlyCheckedTerms;
1640
- }
1641
-
1642
- // Prefer explicit Google SSO over generic Continue (device code pages
1643
- // often have both — clicking Continue without a session yields invalid_code).
1644
- // Cloudflare: click Google SSO only — never the CF email "Sign in" form.
1645
- const clickedGoogleRole = await clickGoogleLoginRole(page);
1646
- let clickedGoogle = clickedGoogleRole;
1647
- if (!clickedGoogle) {
1648
- // Selector fallback with noWaitAfter (clickFirstActionable waits on nav — bad for SSO).
1649
- for (const selector of GOOGLE_LOGIN_BUTTON_SELECTORS.slice(0, 16)) {
1650
- try {
1651
- const loc = page.locator(selector).first();
1652
- if (await loc.isVisible({ timeout: 100 }).catch(() => false)) {
1653
- if (await clickSsoControl(page, loc)) {
1654
- clickedGoogle = true;
1655
- break;
1656
- }
1657
- }
1658
- } catch {
1659
- /* next */
1660
- }
1661
- }
1662
- }
1663
- if (clickedGoogle) {
1664
- reportStep("selecting_google_login", "Selecting Google login");
1665
-
1666
- const confirmedDialog = await clickFirstActionable(page, PRIVACY_CONFIRM_BUTTON_SELECTORS);
1667
- if (confirmedDialog) {
1668
- reportStep("accepting_provider_privacy_dialog", "Confirmed provider privacy agreement dialog");
1669
- }
1670
-
1671
- // Wait for OAuth redirect to Google (or email field) — event-driven.
1672
- // CF→Google through proxy can take a few seconds; click already returned (noWaitAfter).
1673
- const onCf = isCloudflareLoginUrl(page.url?.() || "");
1674
- const reached = await waitForPageAdvance(page, {
1675
- urlMatch: (u) => isGoogleHostname(u),
1676
- selector: EMAIL_INPUT_SELECTOR,
1677
- timeout: onCf ? 10_000 : 12_000,
1678
- });
1679
- if (reached || isGoogleAuthPage(page)) {
1680
- reportStep("google_login_page", "Reached Google sign-in after provider SSO");
1681
- } else {
1682
- // Popup-based Google SSO
1683
- try {
1684
- const ctx = page.context?.();
1685
- const pages = ctx?.pages?.() || [];
1686
- for (let i = pages.length - 1; i >= 0; i -= 1) {
1687
- const p = pages[i];
1688
- const u = p.url?.() || "";
1689
- if (isGoogleHostname(u)) {
1690
- reportStep("google_login_popup", "Google sign-in opened in a popup");
1691
- break;
1692
- }
1693
- }
1694
- } catch {
1695
- /* ignore */
1696
- }
1697
- }
1698
-
1699
- return true;
1700
- }
1701
-
1702
- return newlyCheckedTerms;
1703
- }
1704
-
1705
- /** Fast path for xAI device approve after Google session exists. */
1706
- async function clickXaiDeviceAuthorize(page, reportStep) {
1707
- if (!isXaiProviderPage(page)) return false;
1708
- // Never approve while Google SSO is still on the page — that was thrashing
1709
- // Continue / Allow before login and landing on "Invalid action".
1710
- if (await providerHasGoogleLogin(page)) return false;
1711
-
1712
- // Prefer exact authorize verbs — avoid bare "Continue" (too many false hits).
1713
- const roles = [
1714
- /^(Allow|Authorize|Approve|Confirm)$/i,
1715
- /^(Allow|Authorize|Approve)\b/i,
1716
- ];
1717
- for (const re of roles) {
1718
- try {
1719
- const btn = page.getByRole("button", { name: re }).first();
1720
- if (await btn.isVisible({ timeout: 200 }).catch(() => false)) {
1721
- const label = (await btn.innerText().catch(() => "")) || "";
1722
- if (/google/i.test(label)) continue;
1723
- await btn.click({ timeout: 3_000 });
1724
- reportStep?.("approving_consent", "Approving xAI device authorization");
1725
- return true;
1726
- }
1727
- } catch {
1728
- /* next */
1729
- }
1730
- }
1731
- return false;
1732
- }
1733
-
1734
- /**
1735
- * Capture Kiro OAuth callback (kiro://…?code=…).
1736
- *
1737
- * After password, Google parks the main frame on empty SetSID while the network
1738
- * completes consent → Cognito idpresponse → 302 Location: kiro://…. Custom-protocol
1739
- * redirects often never become a page navigation, so we listen on:
1740
- * - page + context request / requestfailed / response (Location header)
1741
- * - CDP Network (most reliable on headed Chromium / SetSID)
1742
- *
1743
- * Never force-navigate idpresponse/consent from the monitor — that aborts the
1744
- * natural hop before kiro:// is emitted.
1745
- */
1746
- export function createKiroCallbackMonitor(context, page, timeoutMs = DEFAULT_MANUAL_TIMEOUT_MS) {
1747
- let resolveOuter;
1748
- let rejectOuter;
1749
- const promise = new Promise((resolve, reject) => {
1750
- resolveOuter = resolve;
1751
- rejectOuter = reject;
1752
- });
1753
-
1754
- let settled = false;
1755
- const trackedPages = new Set();
1756
- const contextCleanups = new Map();
1757
- const timeoutHandle = setTimeout(() => {
1758
- settle(null, new Error("Timed out waiting for Kiro callback"));
1759
- }, timeoutMs);
1760
-
1761
- function settle(result, error = null) {
1762
- if (settled) return;
1763
- settled = true;
1764
- clearTimeout(timeoutHandle);
1765
- for (const fns of contextCleanups.values()) {
1766
- for (const fn of fns) {
1767
- try { fn(); } catch {}
1768
- }
1769
- }
1770
- contextCleanups.clear();
1771
- if (error) rejectOuter(error);
1772
- else resolveOuter(result);
1773
- }
1774
-
1775
- function trySettleFromUrl(rawUrl) {
1776
- const parsed = parseCallbackUrl(rawUrl || "");
1777
- if (parsed) settle(parsed);
1778
- return Boolean(parsed);
1779
- }
1780
-
1781
- function trySettleFromResponse(response) {
1782
- try {
1783
- trySettleFromUrl(response?.url?.() || "");
1784
- const headers = typeof response?.headers === "function" ? response.headers() : null;
1785
- const location = headers?.location || headers?.Location || "";
1786
- if (location) trySettleFromUrl(location);
1787
- } catch {
1788
- /* ignore */
1789
- }
1790
- }
1791
-
1792
- function attachCdpNetwork(trackedPage, ownerCleanups) {
1793
- void (async () => {
1794
- try {
1795
- if (settled) return;
1796
- const ctx = trackedPage.context?.();
1797
- if (!ctx?.newCDPSession) return;
1798
- const session = await ctx.newCDPSession(trackedPage);
1799
- await session.send("Network.enable").catch(() => null);
1800
-
1801
- const onCdpResponse = (params) => {
1802
- try {
1803
- const headers = params?.response?.headers || {};
1804
- const loc = headers.location || headers.Location || "";
1805
- if (loc) trySettleFromUrl(loc);
1806
- trySettleFromUrl(params?.response?.url || "");
1807
- } catch {
1808
- /* ignore */
1809
- }
1810
- };
1811
- const onCdpRequest = (params) => {
1812
- try {
1813
- trySettleFromUrl(params?.request?.url || "");
1814
- } catch {
1815
- /* ignore */
1816
- }
1817
- };
1818
-
1819
- session.on("Network.responseReceived", onCdpResponse);
1820
- session.on("Network.requestWillBeSent", onCdpRequest);
1821
- ownerCleanups.push(() => {
1822
- try { session.off?.("Network.responseReceived", onCdpResponse); } catch {}
1823
- try { session.off?.("Network.requestWillBeSent", onCdpRequest); } catch {}
1824
- void session.detach?.().catch(() => null);
1825
- });
1826
- } catch {
1827
- /* CDP unavailable — page/context listeners remain */
1828
- }
1829
- })();
1830
- }
1831
-
1832
- function registerPage(trackedPage, ownerCleanups) {
1833
- if (!trackedPage || trackedPages.has(trackedPage)) return;
1834
- trackedPages.add(trackedPage);
1835
-
1836
- const onFrame = (frame) => trySettleFromUrl(frame?.url?.() || "");
1837
- const onRequest = (request) => trySettleFromUrl(request?.url?.() || "");
1838
- const onRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
1839
- const onResponse = (response) => trySettleFromResponse(response);
1840
- const onLoadState = () => trySettleFromUrl(trackedPage.url?.() || "");
1841
- const onClose = () => {
1842
- settle(null, new Error("Browser session closed while waiting for Kiro callback"));
1843
- };
1844
-
1845
- trackedPage.on("framenavigated", onFrame);
1846
- trackedPage.on("request", onRequest);
1847
- trackedPage.on("requestfailed", onRequestFailed);
1848
- trackedPage.on("response", onResponse);
1849
- trackedPage.on("domcontentloaded", onLoadState);
1850
- trackedPage.on("load", onLoadState);
1851
- trackedPage.on("close", onClose);
1852
-
1853
- ownerCleanups.push(() => {
1854
- trackedPage.off("framenavigated", onFrame);
1855
- trackedPage.off("request", onRequest);
1856
- trackedPage.off("requestfailed", onRequestFailed);
1857
- trackedPage.off("response", onResponse);
1858
- trackedPage.off("domcontentloaded", onLoadState);
1859
- trackedPage.off("load", onLoadState);
1860
- trackedPage.off("close", onClose);
1861
- });
1862
-
1863
- attachCdpNetwork(trackedPage, ownerCleanups);
1864
-
1865
- const current = parseCallbackUrl(trackedPage.url?.() || "");
1866
- if (current) settle(current);
1867
- }
1868
-
1869
- function bind(ctx, pg) {
1870
- if (settled) return;
1871
- if (contextCleanups.has(ctx)) return;
1872
- const cleanups = [];
1873
- contextCleanups.set(ctx, cleanups);
1874
-
1875
- const onPage = (newPage) => registerPage(newPage, cleanups);
1876
- const onClose = () => {
1877
- settle(null, new Error("Browser context closed while waiting for Kiro callback"));
1878
- };
1879
- const onCtxRequest = (request) => trySettleFromUrl(request?.url?.() || "");
1880
- const onCtxRequestFailed = (request) => trySettleFromUrl(request?.url?.() || "");
1881
- const onCtxResponse = (response) => trySettleFromResponse(response);
1882
-
1883
- ctx.on("page", onPage);
1884
- ctx.on("close", onClose);
1885
- ctx.on("request", onCtxRequest);
1886
- ctx.on("requestfailed", onCtxRequestFailed);
1887
- ctx.on("response", onCtxResponse);
1888
- cleanups.push(() => ctx.off("page", onPage));
1889
- cleanups.push(() => ctx.off("close", onClose));
1890
- cleanups.push(() => ctx.off("request", onCtxRequest));
1891
- cleanups.push(() => ctx.off("requestfailed", onCtxRequestFailed));
1892
- cleanups.push(() => ctx.off("response", onCtxResponse));
1893
-
1894
- if (pg) registerPage(pg, cleanups);
1895
- }
1896
-
1897
- bind(context, page);
1898
-
1899
- promise.rebind = ({ context: newContext, page: newPage } = {}) => {
1900
- if (newContext) bind(newContext, newPage);
1901
- };
1902
-
1903
- promise.abort = (reason = "Job cancelled") => {
1904
- settle(null, new Error(reason));
1905
- };
1906
-
1907
- return promise;
1908
- }
1909
-
1910
- // Parse any OAuth redirect callback URL (e.g. http://localhost:8080/callback?code=...)
1911
- // against a configurable prefix. Returns { callbackUrl, code, state } or null.
1912
- function parseCallbackUrlWithPrefix(rawUrl, prefix) {
1913
- if (!rawUrl || !prefix || !rawUrl.startsWith(prefix)) return null;
1914
- const queryIndex = rawUrl.indexOf("?");
1915
- const params = new URLSearchParams(queryIndex >= 0 ? rawUrl.slice(queryIndex + 1) : "");
1916
- const code = params.get("code");
1917
- const state = params.get("state");
1918
- if (!code) return null;
1919
- return { callbackUrl: rawUrl, code, state };
1920
- }
1921
-
1922
- // Generic version of createKiroCallbackMonitor for authorization_code providers
1923
- // whose redirect_uri is an http(s) loopback (e.g. Antigravity → http://localhost:8080/callback).
1924
- // The browser may fail to actually load the loopback (connection refused), but the
1925
- // request/framenavigated/requestfailed events still fire with the URL+code, which we capture.
1926
- export function createGenericCallbackMonitor(context, page, { prefix, timeoutMs = DEFAULT_MANUAL_TIMEOUT_MS } = {}) {
1927
- let resolveOuter;
1928
- let rejectOuter;
1929
- const promise = new Promise((resolve, reject) => {
1930
- resolveOuter = resolve;
1931
- rejectOuter = reject;
1932
- });
1933
-
1934
- let settled = false;
1935
- const trackedPages = new Set();
1936
- const contextCleanups = new Map();
1937
- const timeoutHandle = setTimeout(() => {
1938
- settle(null, new Error("Timed out waiting for OAuth callback"));
1939
- }, timeoutMs);
1940
-
1941
- function settle(result, error = null) {
1942
- if (settled) return;
1943
- settled = true;
1944
- clearTimeout(timeoutHandle);
1945
- for (const fns of contextCleanups.values()) {
1946
- for (const fn of fns) {
1947
- try { fn(); } catch {}
1948
- }
1949
- }
1950
- contextCleanups.clear();
1951
- if (error) rejectOuter(error);
1952
- else resolveOuter(result);
1953
- }
1954
-
1955
- function registerPage(trackedPage, ownerCleanups) {
1956
- if (!trackedPage || trackedPages.has(trackedPage)) return;
1957
- trackedPages.add(trackedPage);
1958
-
1959
- const check = (url) => {
1960
- const parsed = parseCallbackUrlWithPrefix(url || "", prefix);
1961
- if (parsed) settle(parsed);
1962
- };
1963
- const onFrame = (frame) => check(frame?.url?.() || "");
1964
- const onRequest = (request) => check(request?.url?.() || "");
1965
- const onRequestFailed = (request) => check(request?.url?.() || "");
1966
- const onLoadState = () => check(trackedPage.url?.() || "");
1967
-
1968
- trackedPage.on("framenavigated", onFrame);
1969
- trackedPage.on("request", onRequest);
1970
- trackedPage.on("requestfailed", onRequestFailed);
1971
- trackedPage.on("domcontentloaded", onLoadState);
1972
- trackedPage.on("load", onLoadState);
1973
-
1974
- ownerCleanups.push(() => {
1975
- trackedPage.off("framenavigated", onFrame);
1976
- trackedPage.off("request", onRequest);
1977
- trackedPage.off("requestfailed", onRequestFailed);
1978
- trackedPage.off("domcontentloaded", onLoadState);
1979
- trackedPage.off("load", onLoadState);
1980
- });
1981
-
1982
- check(trackedPage.url?.() || "");
1983
- }
1984
-
1985
- function bind(ctx, pg) {
1986
- if (settled) return;
1987
- if (contextCleanups.has(ctx)) return;
1988
- const cleanups = [];
1989
- contextCleanups.set(ctx, cleanups);
1990
- const onPage = (newPage) => registerPage(newPage, cleanups);
1991
- ctx.on("page", onPage);
1992
- cleanups.push(() => ctx.off("page", onPage));
1993
- if (pg) registerPage(pg, cleanups);
1994
- }
1995
-
1996
- bind(context, page);
1997
- promise.rebind = ({ context: newContext, page: newPage } = {}) => {
1998
- if (newContext) bind(newContext, newPage);
1999
- };
2000
-
2001
- return promise;
2002
- }
2003
-
2004
- export async function runGoogleAccountAutomation({
2005
- page,
2006
- authUrl,
2007
- email,
2008
- password,
2009
- successPromise,
2010
- shortTimeoutMs = DEFAULT_SHORT_TIMEOUT_MS,
2011
- serviceLabel = "provider",
2012
- openingStep = "opening_google_oauth",
2013
- openingMessage = "Opening Google OAuth page",
2014
- successStep = "oauth_success_received",
2015
- successMessage = "OAuth success received",
2016
- onStep,
2017
- /** When true, skip page.goto(authUrl) — caller already navigated (e.g. CF pre-click Google). */
2018
- skipGoto = false,
2019
- /** Caller already clicked Google SSO; wait for accounts.google.com before re-clicking. */
2020
- expectGoogleSoon = false,
2021
- }) {
2022
- const startTime = Date.now();
2023
- const reportStep = (step, message) => {
2024
- onStep?.(step, message);
2025
- };
2026
-
2027
- const interstitialOpts = (maxWaitMs) => ({ maxWaitMs, successPromise });
2028
- // Prevent re-submitting email/password while Google is still transitioning
2029
- // (pwd page stays mounted ~1–3s after Next; re-fill aborts the OAuth chain).
2030
- let passwordSubmittedAt = 0;
2031
- let emailSubmittedAt = 0;
2032
- let googleLoginSelectedAt = 0;
2033
- let seenGoogleAuth = false;
2034
- let deviceApproveAt = 0;
2035
- let deviceInvalidReopenAt = 0;
2036
- let deviceInvalidReopenCount = 0;
2037
- // Cooldowns prevent double-submit only — not artificial pacing.
2038
- const PASSWORD_RESUBMIT_COOLDOWN_MS = isGrokish(serviceLabel) ? 6_000 : 18_000;
2039
- // Longer email cooldown for fast bulk — Google identifier page can sit 5–10s
2040
- // after Next; re-typing the whole email wastes another 10–15s.
2041
- const EMAIL_RESUBMIT_COOLDOWN_MS = isGrokish(serviceLabel) ? 12_000 : 8_000;
2042
- const GOOGLE_SSO_COOLDOWN_MS = isGrokish(serviceLabel) ? 3_000 : 8_000;
2043
- // Don't hammer Allow — xAI rate_limits rapid device posts.
2044
- const DEVICE_APPROVE_COOLDOWN_MS = 3_000;
2045
- const DEVICE_INVALID_REOPEN_COOLDOWN_MS = 4_000;
2046
- const DEVICE_INVALID_REOPEN_MAX = 3;
2047
- const isGrokFlow = isGrokish(serviceLabel);
2048
- // Grok does not need the long Kiro SetSID / kiro:// interstitial window.
2049
- const postPasswordInterstitialMs = isGrokFlow ? 4_000 : 25_000;
2050
- // Loop poll: race successPromise — keep tiny so fast networks aren't stalled.
2051
- const loopTickMs = isGrokFlow ? 120 : 500;
2052
-
2053
- let alreadyOnGoogle = skipGoto && isGoogleAuthPage(page);
2054
- if (!skipGoto) {
2055
- reportStep(openingStep, openingMessage);
2056
- await page.goto(authUrl, { waitUntil: "domcontentloaded", timeout: 60_000 });
2057
- await dismissCookieBanners(page, reportStep);
2058
- } else if (alreadyOnGoogle) {
2059
- reportStep("google_login_page", "Already on Google sign-in — filling credentials");
2060
- } else if (expectGoogleSoon) {
2061
- // CF (etc.) already clicked Google — wait for redirect, do NOT re-goto / re-click yet.
2062
- reportStep("waiting_google_redirect", "Waiting for Google after provider SSO click");
2063
- const reached = await waitUntil(() => isGoogleAuthPage(page), {
2064
- timeout: 25_000,
2065
- interval: 100,
2066
- });
2067
- if (reached) {
2068
- alreadyOnGoogle = true;
2069
- googleLoginSelectedAt = Date.now();
2070
- reportStep("google_login_page", "Reached Google sign-in after provider SSO");
2071
- } else {
2072
- reportStep("google_redirect_slow", "Google redirect slow — will retry SSO click");
2073
- }
2074
- } else {
2075
- reportStep(openingStep, openingMessage);
2076
- await dismissCookieBanners(page, reportStep);
2077
- }
2078
-
2079
- // Cloudflare login always shows email/password fields — do NOT treat those as
2080
- // "ready for Google email fill". Wait for Google SSO button / Google page only.
2081
- const onCfLogin = isCloudflareLoginUrl(page.url?.() || "") || /cloudflare/i.test(String(serviceLabel || ""));
2082
-
2083
- if (!alreadyOnGoogle) {
2084
- await waitUntil(
2085
- async () => {
2086
- if (isGoogleAuthPage(page)) return true;
2087
- if (await getFirstVisibleLocator(
2088
- page,
2089
- 'button[aria-label*="Google" i], button:has-text("Continue with Google"), button:has-text("Login with Google"), button:has-text("Google")',
2090
- )) {
2091
- return true;
2092
- }
2093
- if (!onCfLogin && (await getFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR))) {
2094
- return true;
2095
- }
2096
- if (!onCfLogin && (await getFirstVisibleLocator(page, 'button:has-text("Continue")'))) {
2097
- return true;
2098
- }
2099
- return false;
2100
- },
2101
- { timeout: isGrokFlow ? 8_000 : 12_000, interval: 80 },
2102
- );
2103
- if (!isGrokFlow) {
2104
- await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
2105
- }
2106
-
2107
- // Provider shells (xAI device, CodeBuddy, Cloudflare, …) must pick Google SSO first.
2108
- // Never type credentials into provider email fields (CF has its own email/password).
2109
- for (let attempt = 0; attempt < (isGrokFlow || onCfLogin ? 8 : 2); attempt += 1) {
2110
- if (isGoogleAuthPage(page)) break;
2111
- await dismissCookieBanners(page, reportStep);
2112
- if (await handleXaiDeviceCodeConfirm(page, reportStep)) {
2113
- continue;
2114
- }
2115
- if (await handleProviderLoginGate(page, reportStep)) {
2116
- googleLoginSelectedAt = Date.now();
2117
- if (isGoogleAuthPage(page)) break;
2118
- // Gate already waited for Google URL; only brief yield if still on provider.
2119
- await yieldMs(50);
2120
- continue;
2121
- }
2122
- // SPA not ready — poll for Google SSO (not CF email form).
2123
- const ready = await waitUntil(
2124
- async () =>
2125
- isGoogleAuthPage(page)
2126
- || (await providerHasGoogleLogin(page))
2127
- || /enter the code|login with google|continue with google/i.test(
2128
- await readPageText(page).catch(() => ""),
2129
- ),
2130
- { timeout: 600, interval: 80 },
2131
- );
2132
- if (!ready) await yieldMs(80);
2133
- }
2134
- if (!isGrokFlow) {
2135
- await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(6_000));
2136
- }
2137
- }
2138
-
2139
- // Only fill Google email once we are actually on accounts.google.com.
2140
- if (isGoogleAuthPage(page)) {
2141
- seenGoogleAuth = true;
2142
- const emailInput = await waitForFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR, { timeout: 10_000 });
2143
- if (emailInput) {
2144
- reportStep("entering_email", "Entering Google email");
2145
- const filled = await fillInputResilient(emailInput, email);
2146
- if (!filled) {
2147
- reportStep("email_fill_failed", "Could not fill the Google email field; will retry in the polling loop");
2148
- } else {
2149
- reportStep("submitting_email", "Submitting email");
2150
- await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
2151
- emailSubmittedAt = Date.now();
2152
- // Wait for password field (or leave email step) — not fixed sleep.
2153
- await waitForPageAdvance(page, {
2154
- selector: PASSWORD_INPUT_SELECTOR,
2155
- timeout: isGrokFlow ? 8_000 : 12_000,
2156
- });
2157
- if (!isGrokFlow) {
2158
- await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(8_000));
2159
- }
2160
- }
2161
- }
2162
- } else if (isProviderPage(page)) {
2163
- reportStep(
2164
- "waiting_for_google_sso",
2165
- `Provider page still open (${(page.url?.() || "").slice(0, 80)}) — will keep selecting Google login`,
2166
- );
2167
- }
2168
-
2169
- while (Date.now() - startTime < shortTimeoutMs) {
2170
- const successResult = await Promise.race([
2171
- successPromise.then((result) => ({ kind: "success", result })).catch((error) => ({ kind: "success_error", error })),
2172
- new Promise((resolve) => setTimeout(() => resolve(null), loopTickMs)),
2173
- ]);
2174
-
2175
- if (successResult?.kind === "success") {
2176
- reportStep(successStep, successMessage);
2177
- return {
2178
- status: "success",
2179
- ...successResult.result,
2180
- };
2181
- }
2182
-
2183
- if (successResult?.kind === "success_error") {
2184
- reportStep("oauth_timeout", `Timed out waiting for ${serviceLabel} authorization`);
2185
- return {
2186
- status: "failed_timeout",
2187
- error: successResult.error?.message || `Timed out waiting for ${serviceLabel} authorization`,
2188
- };
2189
- }
2190
-
2191
- // Cloudflare: after Google password, land on dash — park on harvest promise.
2192
- // Do NOT thrash cookie dismiss / generic Approve (starves token API work).
2193
- if (
2194
- isGrokFlow
2195
- && seenGoogleAuth
2196
- && passwordSubmittedAt
2197
- && /cloudflare/i.test(String(serviceLabel || ""))
2198
- ) {
2199
- try {
2200
- const u = new URL(page.url?.() || "");
2201
- const onDash =
2202
- u.hostname === "dash.cloudflare.com"
2203
- && !u.pathname.includes("/login")
2204
- && !u.href.includes("oidcJwt");
2205
- if (onDash) {
2206
- reportStep(
2207
- "waiting_cf_harvest",
2208
- "On Cloudflare dashboard — waiting for Workers AI token harvest",
2209
- );
2210
- // Yield the page: only race success (longer tick while harvesting).
2211
- const parked = await Promise.race([
2212
- successPromise
2213
- .then((result) => ({ kind: "success", result }))
2214
- .catch((error) => ({ kind: "success_error", error })),
2215
- yieldMs(2_000).then(() => null),
2216
- ]);
2217
- if (parked?.kind === "success") {
2218
- reportStep(successStep, successMessage);
2219
- return { status: "success", ...parked.result };
2220
- }
2221
- if (parked?.kind === "success_error") {
2222
- reportStep("oauth_timeout", `Timed out waiting for ${serviceLabel} authorization`);
2223
- return {
2224
- status: "failed_timeout",
2225
- error: parked.error?.message || `Timed out waiting for ${serviceLabel} authorization`,
2226
- };
2227
- }
2228
- continue;
2229
- }
2230
- } catch {
2231
- /* fall through */
2232
- }
2233
- }
2234
-
2235
- // Unblock SetSID / empty Google interstitials before other handlers
2236
- const waited = await waitThroughGoogleInterstitials(
2237
- page,
2238
- reportStep,
2239
- interstitialOpts(isGrokFlow ? 2_500 : 8_000),
2240
- );
2241
- if (waited) {
2242
- continue;
2243
- }
2244
-
2245
- const handledGoogleConsent = await handleGoogleConsent(page, reportStep);
2246
- if (handledGoogleConsent) {
2247
- if (!isGrokFlow) {
2248
- await waitThroughGoogleInterstitials(page, reportStep, interstitialOpts(12_000));
2249
- } else {
2250
- await waitForPageAdvance(page, { timeout: 4_000 });
2251
- }
2252
- continue;
2253
- }
2254
-
2255
- // Headless Chromium is rejected after email submit → /v3/signin/rejected
2256
- // ("This browser or app may not be secure"). Fail fast — do not spin 90s.
2257
- if (await isBlockedBrowser(page)) {
2258
- const url = page.url?.() || "";
2259
- reportStep(
2260
- "browser_blocked_by_google",
2261
- `Google blocked this browser (url=${url.slice(0, 120)}). Use headed CloakBrowser (Xvfb on Linux).`,
2262
- );
2263
- return {
2264
- status: "failed_browser_blocked",
2265
- error:
2266
- "Google blocked the automated browser (\"This browser or app may not be secure\" / signin rejected). " +
2267
- "Kiro bulk must use headed CloakBrowser (Xvfb on Linux), not headless Chrome.",
2268
- };
2269
- }
2270
-
2271
- const text = await readPageText(page);
2272
- if (includesAny(text, INVALID_CREDENTIAL_MARKERS)) {
2273
- reportStep("invalid_credentials", "Google rejected the supplied email or password");
2274
- return {
2275
- status: "failed_invalid_credentials",
2276
- error: "Google rejected the supplied email or password.",
2277
- };
2278
- }
2279
-
2280
- if (includesAny(text, RESTRICTED_ACCOUNT_MARKERS)) {
2281
- reportStep("account_restricted", "Account is restricted, suspended, or banned by the provider");
2282
- return {
2283
- status: "failed_restricted",
2284
- error: "Account is restricted, suspended, or banned. Skipping.",
2285
- };
2286
- }
2287
-
2288
- if (includesAny(text, MANUAL_ASSIST_MARKERS)) {
2289
- const isCaptcha = /captcha|recaptcha|not a robot|select all images|select all squares/i.test(text);
2290
- reportStep(
2291
- isCaptcha ? "google_captcha" : "manual_assist_required",
2292
- isCaptcha
2293
- ? "Google CAPTCHA / bot check"
2294
- : "Google requested CAPTCHA, 2FA, or recovery verification",
2295
- );
2296
- return {
2297
- status: "needs_manual",
2298
- error: isCaptcha
2299
- ? "Google CAPTCHA (bot check). Not fixed by lowering workers — use headed CloakBrowser with Xvfb, a residential proxy, and avoid blocking Google domains. Open manual assist to solve CAPTCHA once."
2300
- : "Manual assist required in the browser session (CAPTCHA, 2FA, recovery, or suspicious-login challenge).",
2301
- };
2302
- }
2303
-
2304
- const handledOnboarding = await handleGoogleOnboarding(page, text);
2305
- if (handledOnboarding) {
2306
- reportStep("google_onboarding", "Accepted Google onboarding or privacy prompt");
2307
- continue;
2308
- }
2309
-
2310
- // xAI rate-limits device authorize after rapid retries — fail fast.
2311
- if (
2312
- isProviderPage(page)
2313
- && (/rate[_ ]?limit/i.test(text) || /error=rate_limited/i.test(page.url?.() || ""))
2314
- ) {
2315
- reportStep("device_rate_limited", "xAI device authorization rate-limited");
2316
- return {
2317
- status: "failed",
2318
- error: "xAI rate-limited device authorization. Wait a few minutes and retry (too many rapid device-code attempts).",
2319
- };
2320
- }
2321
-
2322
- // xAI often lands on /oauth2/device/approve with "Invalid action" after
2323
- // Google consent when the approve form was double-submitted. Re-open the
2324
- // original device URL (with user_code) a few times — not every loop tick.
2325
- if (
2326
- isProviderPage(page)
2327
- && /invalid action|invalid[_ ]?code|code (has )?expired|expired code/i.test(text)
2328
- && authUrl
2329
- && seenGoogleAuth
2330
- && deviceInvalidReopenCount < DEVICE_INVALID_REOPEN_MAX
2331
- && Date.now() - deviceInvalidReopenAt > DEVICE_INVALID_REOPEN_COOLDOWN_MS
2332
- ) {
2333
- deviceInvalidReopenCount += 1;
2334
- deviceInvalidReopenAt = Date.now();
2335
- deviceApproveAt = 0;
2336
- reportStep(
2337
- "device_invalid_reopen",
2338
- `Device page error — reopening auth URL (${deviceInvalidReopenCount}/${DEVICE_INVALID_REOPEN_MAX})`,
2339
- );
2340
- await page.goto(authUrl, { waitUntil: "domcontentloaded", timeout: 60_000 }).catch(() => null);
2341
- await waitUntil(
2342
- async () =>
2343
- (await getFirstVisibleLocator(page, 'button:has-text("Continue"), button:has-text("Allow"), button:has-text("Authorize")'))
2344
- || (await providerHasGoogleLogin(page)),
2345
- { timeout: 4_000, interval: 80 },
2346
- );
2347
- continue;
2348
- }
2349
-
2350
- const googleAuthed = Boolean(seenGoogleAuth && passwordSubmittedAt);
2351
-
2352
- // xAI device user_code confirm (Continue) — only before Google login.
2353
- if (await handleXaiDeviceCodeConfirm(page, reportStep, { alreadyAuthed: googleAuthed })) {
2354
- continue;
2355
- }
2356
-
2357
- // Provider Google SSO BEFORE generic onboarding Continues.
2358
- // Cooldown: re-clicking Google mid-redirect restarts OAuth and wastes time.
2359
- const allowGoogleClick =
2360
- !googleAuthed
2361
- && (!googleLoginSelectedAt || Date.now() - googleLoginSelectedAt > GOOGLE_SSO_COOLDOWN_MS);
2362
- const handledProviderGate = await handleProviderLoginGate(page, reportStep, { allowGoogleClick });
2363
- if (handledProviderGate) {
2364
- if (allowGoogleClick) googleLoginSelectedAt = Date.now();
2365
- continue;
2366
- }
2367
-
2368
- // xAI device approve ONLY after Google password submitted.
2369
- if (
2370
- googleAuthed
2371
- && Date.now() - deviceApproveAt > DEVICE_APPROVE_COOLDOWN_MS
2372
- && await clickXaiDeviceAuthorize(page, reportStep)
2373
- ) {
2374
- deviceApproveAt = Date.now();
2375
- continue;
2376
- }
2377
-
2378
- const handledProviderOnboarding = await handleProviderOnboarding(page, reportStep, serviceLabel);
2379
- if (handledProviderOnboarding) {
2380
- continue;
2381
- }
2382
-
2383
- // Credentials only on accounts.google.com — never into provider shells.
2384
- if (isGoogleAuthPage(page)) {
2385
- seenGoogleAuth = true;
2386
- // Check password BEFORE email — after submitting the email the password
2387
- // page loads and during the transition the old email input can briefly
2388
- // remain visible; if we checked email first we'd re-type the email
2389
- // address into whatever field is focused (often the password input).
2390
- const passwordInput = await getFirstVisibleLocator(page, PASSWORD_INPUT_SELECTOR);
2391
- if (passwordInput) {
2392
- const sincePw = Date.now() - passwordSubmittedAt;
2393
- if (passwordSubmittedAt && sincePw < PASSWORD_RESUBMIT_COOLDOWN_MS) {
2394
- // Still on (or animating off) the password form after a recent submit —
2395
- // do NOT re-fill; wait for SetSID/consent/callback instead.
2396
- reportStep(
2397
- "waiting_after_password",
2398
- `Password already submitted ${Math.round(sincePw / 1000)}s ago — waiting for Google redirect`,
2399
- );
2400
- await waitThroughGoogleInterstitials(
2401
- page,
2402
- reportStep,
2403
- interstitialOpts(isGrokFlow ? 2_000 : 6_000),
2404
- );
2405
- continue;
2406
- }
2407
-
2408
- reportStep("entering_password", "Entering Google password");
2409
- const filled = await fillInputResilient(passwordInput, password);
2410
- if (filled) {
2411
- reportStep("submitting_password", "Submitting password");
2412
- const prePwUrl = page.url?.() || "";
2413
- await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
2414
- passwordSubmittedAt = Date.now();
2415
- // Leave password challenge via navigation / URL change / success — no 2.5s sleep.
2416
- await Promise.race([
2417
- page.waitForNavigation({ waitUntil: "domcontentloaded", timeout: isGrokFlow ? 6_000 : 10_000 }).catch(() => null),
2418
- waitForPageAdvance(page, { fromUrl: prePwUrl, timeout: isGrokFlow ? 6_000 : 10_000 }),
2419
- successPromise.then(() => null).catch(() => null),
2420
- ]);
2421
- await waitThroughGoogleInterstitials(
2422
- page,
2423
- reportStep,
2424
- interstitialOpts(postPasswordInterstitialMs),
2425
- );
2426
- } else {
2427
- reportStep("password_fill_failed", "Could not fill the Google password field; retrying loop");
2428
- await yieldMs(100);
2429
- }
2430
- continue;
2431
- }
2432
-
2433
- const nextEmailInput = await getFirstVisibleLocator(page, EMAIL_INPUT_SELECTOR);
2434
- if (nextEmailInput) {
2435
- const sinceEmail = Date.now() - emailSubmittedAt;
2436
- if (emailSubmittedAt && sinceEmail < EMAIL_RESUBMIT_COOLDOWN_MS) {
2437
- reportStep(
2438
- "waiting_after_email",
2439
- `Email already submitted ${Math.round(sinceEmail / 1000)}s ago — waiting for password/next screen`,
2440
- );
2441
- await waitForPageAdvance(page, {
2442
- selector: PASSWORD_INPUT_SELECTOR,
2443
- timeout: Math.max(200, EMAIL_RESUBMIT_COOLDOWN_MS - sinceEmail),
2444
- });
2445
- continue;
2446
- }
2447
-
2448
- reportStep("entering_email", "Entering Google email");
2449
- const filled = await fillInputResilient(nextEmailInput, email);
2450
- if (filled) {
2451
- reportStep("submitting_email", "Submitting email");
2452
- await clickFirstVisible(page, NEXT_BUTTON_SELECTORS);
2453
- emailSubmittedAt = Date.now();
2454
- await waitForPageAdvance(page, {
2455
- selector: PASSWORD_INPUT_SELECTOR,
2456
- timeout: isGrokFlow ? 6_000 : 10_000,
2457
- });
2458
- } else {
2459
- reportStep("email_fill_failed", "Could not fill the Google email field; retrying loop");
2460
- await yieldMs(80);
2461
- }
2462
- continue;
2463
- }
2464
- }
2465
-
2466
- // On xAI before Google login, APPROVE selectors match "Continue with Google"
2467
- // via :has-text("Continue") and wreck the device code → Invalid action loop.
2468
- // On Cloudflare login, "Allow All" cookies + "Sign in" must not be mashed.
2469
- await dismissCookieBanners(page, reportStep);
2470
- const onCfHost = (() => {
2471
- try {
2472
- const h = new URL(page.url()).hostname || "";
2473
- return h === "dash.cloudflare.com" || h.endsWith(".cloudflare.com");
2474
- } catch {
2475
- return false;
2476
- }
2477
- })();
2478
- const mayGenericApprove =
2479
- isGoogleAuthPage(page)
2480
- || (
2481
- seenGoogleAuth
2482
- && passwordSubmittedAt
2483
- && !(await providerHasGoogleLogin(page))
2484
- && !isCloudflareLoginUrl(page.url?.() || "")
2485
- );
2486
- if (mayGenericApprove && !isCloudflareLoginUrl(page.url?.() || "")) {
2487
- // Avoid OneTrust "Allow All" as if it were OAuth approve when still mid-flow
2488
- const clickedApprove = await clickFirstVisible(page, APPROVE_BUTTON_SELECTORS);
2489
- if (clickedApprove) {
2490
- reportStep("approving_consent", `Approving Google or ${serviceLabel} consent`);
2491
- deviceApproveAt = Date.now();
2492
- await waitForPageAdvance(page, { timeout: isGrokFlow ? 2_000 : 4_000 });
2493
- continue;
2494
- }
2495
- }
2496
- // Cloudflare login stuck: keep hammering Google SSO only
2497
- if (onCfHost && !seenGoogleAuth && (await handleProviderLoginGate(page, reportStep))) {
2498
- googleLoginSelectedAt = Date.now();
2499
- continue;
2500
- }
2501
-
2502
- // Periodic diagnostics so jobs aren't opaque "waiting" spam
2503
- if (Math.floor((Date.now() - startTime) / 5000) !== Math.floor((Date.now() - startTime - loopTickMs) / 5000)) {
2504
- const url = page.url?.() || "";
2505
- const snippet = String(text || (await readPageText(page).catch(() => ""))).slice(0, 100).replace(/\s+/g, " ");
2506
- reportStep(
2507
- "waiting_for_next_screen",
2508
- `Waiting for the next Google or ${serviceLabel} screen (url=${url.slice(0, 100)} body=${snippet})`,
2509
- );
2510
- } else {
2511
- reportStep("waiting_for_next_screen", `Waiting for the next Google or ${serviceLabel} screen`);
2512
- }
2513
- // Only yield — next loop races successPromise + handlers. Fast net = fast exit.
2514
- await yieldMs(loopTickMs);
2515
- }
2516
-
2517
- // Final blocked check before generic needs_manual
2518
- if (await isBlockedBrowser(page)) {
2519
- reportStep("browser_blocked_by_google", "Google blocked browser at end of automation window");
2520
- return {
2521
- status: "failed_browser_blocked",
2522
- error:
2523
- "Google blocked the automated browser (\"This browser or app may not be secure\"). " +
2524
- "Use headed CloakBrowser (Xvfb).",
2525
- };
2526
- }
2527
-
2528
- const finalUrl = page.url?.() || "";
2529
- const finalBody = String(await readPageText(page).catch(() => "")).slice(0, 120).replace(/\s+/g, " ");
2530
- reportStep(
2531
- "manual_assist_required",
2532
- `Flow did not complete ${serviceLabel} authorization automatically (url=${finalUrl.slice(0, 100)} body=${finalBody})`,
2533
- );
2534
- return {
2535
- status: "needs_manual",
2536
- error:
2537
- `Manual assist required — ${serviceLabel} authorization did not finish automatically ` +
2538
- `(last url: ${finalUrl.slice(0, 140)}). If you see "browser may not be secure", use headed CloakBrowser.`,
2539
- };
2540
- }
2541
-
2542
- export async function runKiroGoogleAutomation({
2543
- page,
2544
- authUrl,
2545
- email,
2546
- password,
2547
- callbackPromise,
2548
- shortTimeoutMs = DEFAULT_SHORT_TIMEOUT_MS,
2549
- onStep,
2550
- }) {
2551
- return runGoogleAccountAutomation({
2552
- page,
2553
- authUrl,
2554
- email,
2555
- password,
2556
- successPromise: callbackPromise,
2557
- shortTimeoutMs,
2558
- serviceLabel: "Kiro",
2559
- openingStep: "opening_google_oauth",
2560
- openingMessage: "Opening Google OAuth page",
2561
- successStep: "kiro_callback_received",
2562
- successMessage: "Kiro callback received",
2563
- onStep,
2564
- });
2565
- }
2566
-
2567
- export {
2568
- handleCodeBuddyRegionPage,
2569
- handleProviderOnboarding,
2570
- handleCodeBuddyStartedAuthorization,
2571
- isProviderPage,
2572
- };
2573
-
2574
- export const __test__ = {
2575
- waitForFirstVisibleLocator,
2576
- fillInputResilient,
2577
- parseSelectorList,
2578
- getFirstVisibleLocator,
2579
- waitForPageAdvance,
2580
- waitUntil,
2581
- handleXaiDeviceCodeConfirm,
2582
- GOOGLE_LOGIN_BUTTON_SELECTORS,
2583
- isGrokish,
2584
- dismissCookieBanners,
2585
- clickGoogleLoginRole,
2586
- isCloudflareLoginUrl,
2587
- };