@techysy/10router 1.3.5 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1088) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +8 -7
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +1 -1
  5. package/app/.next-cli-build/routes-manifest.json +6 -0
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +4 -4
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  78. package/app/.next-cli-build/server/app/_global-error/page.js +2 -2
  79. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  80. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  87. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  88. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/app/.next-cli-build/server/app/_not-found.html +2 -2
  90. package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
  91. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
  92. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  93. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  94. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +2 -2
  111. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +2 -2
  113. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  119. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js +2 -2
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  143. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  151. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  157. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/gateway-probe/route.js +1 -0
  165. package/app/.next-cli-build/server/app/api/gateway-probe/route.js.nft.json +1 -0
  166. package/app/.next-cli-build/server/app/api/gateway-probe/route_client-reference-manifest.js +1 -0
  167. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  168. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  172. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  177. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  192. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  199. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/models/caps/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/models/caps/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  219. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  221. package/app/.next-cli-build/server/app/api/network/egress-region/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +2 -2
  266. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js +2 -2
  272. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  294. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  296. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  298. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  300. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  304. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  308. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  310. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  314. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  316. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  318. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
  320. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  322. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  324. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  326. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  328. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  330. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/security/status/route.js +1 -1
  332. package/app/.next-cli-build/server/app/api/security/status/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  342. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  348. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  350. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  354. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  356. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  362. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  364. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/usage/quotas/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/usage/quotas/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  398. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  400. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  401. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  402. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  403. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  404. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  405. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  406. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  407. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  408. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  409. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  410. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  411. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  412. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  413. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  414. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  415. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  416. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  417. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  418. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  419. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  420. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  421. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  422. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  423. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  424. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  425. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  426. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  427. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  428. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  429. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  430. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  431. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  432. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  433. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  434. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  435. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  436. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  437. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  438. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  439. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  440. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  441. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  442. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  443. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  444. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  445. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  446. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  447. package/app/.next-cli-build/server/app/api/version/route.js +2 -2
  448. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  449. package/app/.next-cli-build/server/app/api/version/shell-update/route.js +1 -1
  450. package/app/.next-cli-build/server/app/api/version/shell-update/route.js.nft.json +1 -1
  451. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  452. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  453. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  454. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  455. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  456. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  457. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  458. package/app/.next-cli-build/server/app/callback.html +2 -2
  459. package/app/.next-cli-build/server/app/callback.rsc +6 -6
  460. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
  461. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  463. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  464. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
  465. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
  466. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  467. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +2 -2
  469. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
  470. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  471. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  472. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  473. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  474. package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
  475. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  476. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  477. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/dashboard/endpoint.html +2 -2
  479. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  480. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  481. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  482. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  483. package/app/.next-cli-build/server/app/dashboard/experimental.html +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/experimental.rsc +8 -8
  485. package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +8 -8
  486. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +8 -8
  487. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +2 -2
  488. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
  490. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
  491. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  492. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  493. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
  495. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
  496. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  497. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  498. package/app/.next-cli-build/server/app/dashboard/profile.html +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
  500. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  501. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  502. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  503. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  504. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
  505. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  506. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  507. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  508. package/app/.next-cli-build/server/app/dashboard/providers.html +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
  510. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  511. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  512. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  513. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  514. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
  515. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  516. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  517. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  518. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +8 -8
  520. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
  521. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
  522. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  523. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  524. package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
  525. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  526. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  527. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  528. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  529. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  531. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +2 -2
  532. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  533. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  534. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  535. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  536. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  537. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  538. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  539. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  540. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  541. package/app/.next-cli-build/server/app/dashboard/token-saver.html +2 -2
  542. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
  543. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  544. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  545. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  546. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  547. package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
  548. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
  549. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  550. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  551. package/app/.next-cli-build/server/app/dashboard/usage.html +2 -2
  552. package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
  553. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  554. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  555. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  556. package/app/.next-cli-build/server/app/dashboard.html +2 -2
  557. package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
  558. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  559. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
  560. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  561. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  562. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  563. package/app/.next-cli-build/server/app/index.html +1 -1
  564. package/app/.next-cli-build/server/app/index.rsc +6 -6
  565. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  566. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
  567. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  568. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  569. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  570. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  571. package/app/.next-cli-build/server/app/landing.html +2 -2
  572. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  573. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  574. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  575. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  576. package/app/.next-cli-build/server/app/login/page.js +1 -1
  577. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  578. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  579. package/app/.next-cli-build/server/app/login.html +2 -2
  580. package/app/.next-cli-build/server/app/login.rsc +7 -7
  581. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
  582. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  583. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
  584. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  585. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  586. package/app/.next-cli-build/server/app/page.js +1 -1
  587. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  588. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  589. package/app/.next-cli-build/server/app-paths-manifest.json +8 -7
  590. package/app/.next-cli-build/server/chunks/1329.js +1 -1
  591. package/app/.next-cli-build/server/chunks/1345.js +1 -0
  592. package/app/.next-cli-build/server/chunks/1386.js +2 -2
  593. package/app/.next-cli-build/server/chunks/1806.js +1 -0
  594. package/app/.next-cli-build/server/chunks/2112.js +1 -1
  595. package/app/.next-cli-build/server/chunks/2557.js +9 -0
  596. package/app/.next-cli-build/server/chunks/2752.js +1 -0
  597. package/app/.next-cli-build/server/chunks/2926.js +1 -1
  598. package/app/.next-cli-build/server/chunks/2978.js +1 -0
  599. package/app/.next-cli-build/server/chunks/3256.js +1 -1
  600. package/app/.next-cli-build/server/chunks/3433.js +12 -12
  601. package/app/.next-cli-build/server/chunks/3593.js +2 -2
  602. package/app/.next-cli-build/server/chunks/3659.js +1 -0
  603. package/app/.next-cli-build/server/chunks/3662.js +1 -0
  604. package/app/.next-cli-build/server/chunks/3792.js +1 -1
  605. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  606. package/app/.next-cli-build/server/chunks/3962.js +1 -0
  607. package/app/.next-cli-build/server/chunks/4008.js +1 -1
  608. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  609. package/app/.next-cli-build/server/chunks/4293.js +1 -1
  610. package/app/.next-cli-build/server/chunks/4692.js +6 -0
  611. package/app/.next-cli-build/server/chunks/4739.js +2 -2
  612. package/app/.next-cli-build/server/chunks/4780.js +2 -2
  613. package/app/.next-cli-build/server/chunks/4803.js +2 -2
  614. package/app/.next-cli-build/server/chunks/4927.js +3 -3
  615. package/app/.next-cli-build/server/chunks/507.js +2 -2
  616. package/app/.next-cli-build/server/chunks/5182.js +1 -1
  617. package/app/.next-cli-build/server/chunks/5210.js +11 -11
  618. package/app/.next-cli-build/server/chunks/5258.js +2 -2
  619. package/app/.next-cli-build/server/chunks/5433.js +1 -1
  620. package/app/.next-cli-build/server/chunks/5527.js +1 -0
  621. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  622. package/app/.next-cli-build/server/chunks/5781.js +1 -1
  623. package/app/.next-cli-build/server/chunks/595.js +1 -1
  624. package/app/.next-cli-build/server/chunks/6252.js +2 -2
  625. package/app/.next-cli-build/server/chunks/6306.js +1 -1
  626. package/app/.next-cli-build/server/chunks/6326.js +1 -1
  627. package/app/.next-cli-build/server/chunks/6457.js +1 -1
  628. package/app/.next-cli-build/server/chunks/6492.js +1 -1
  629. package/app/.next-cli-build/server/chunks/6756.js +1 -1
  630. package/app/.next-cli-build/server/chunks/682.js +1 -1
  631. package/app/.next-cli-build/server/chunks/6947.js +1 -1
  632. package/app/.next-cli-build/server/chunks/6960.js +1 -1
  633. package/app/.next-cli-build/server/chunks/698.js +2 -2
  634. package/app/.next-cli-build/server/chunks/7067.js +1 -1
  635. package/app/.next-cli-build/server/chunks/7122.js +1 -1
  636. package/app/.next-cli-build/server/chunks/7247.js +1 -1
  637. package/app/.next-cli-build/server/chunks/7274.js +6 -3
  638. package/app/.next-cli-build/server/chunks/7322.js +2 -2
  639. package/app/.next-cli-build/server/chunks/75.js +1 -0
  640. package/app/.next-cli-build/server/chunks/7568.js +1 -1
  641. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  642. package/app/.next-cli-build/server/chunks/7965.js +2 -2
  643. package/app/.next-cli-build/server/chunks/8062.js +2 -2
  644. package/app/.next-cli-build/server/chunks/8145.js +1 -0
  645. package/app/.next-cli-build/server/chunks/8172.js +2 -2
  646. package/app/.next-cli-build/server/chunks/{7239.js → 8318.js} +2 -2
  647. package/app/.next-cli-build/server/chunks/8410.js +1 -1
  648. package/app/.next-cli-build/server/chunks/8439.js +1 -0
  649. package/app/.next-cli-build/server/chunks/8469.js +2 -2
  650. package/app/.next-cli-build/server/chunks/8520.js +2 -2
  651. package/app/.next-cli-build/server/chunks/8595.js +1 -1
  652. package/app/.next-cli-build/server/chunks/8672.js +1 -1
  653. package/app/.next-cli-build/server/chunks/8675.js +1 -0
  654. package/app/.next-cli-build/server/chunks/8689.js +1 -1
  655. package/app/.next-cli-build/server/chunks/8749.js +3 -3
  656. package/app/.next-cli-build/server/chunks/8838.js +1 -1
  657. package/app/.next-cli-build/server/chunks/8895.js +9 -9
  658. package/app/.next-cli-build/server/chunks/9046.js +1 -1
  659. package/app/.next-cli-build/server/chunks/9055.js +1 -1
  660. package/app/.next-cli-build/server/chunks/939.js +1 -1
  661. package/app/.next-cli-build/server/chunks/9417.js +6 -0
  662. package/app/.next-cli-build/server/chunks/9451.js +2 -2
  663. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  664. package/app/.next-cli-build/server/chunks/9609.js +1 -1
  665. package/app/.next-cli-build/server/chunks/9628.js +1 -1
  666. package/app/.next-cli-build/server/chunks/9713.js +1 -0
  667. package/app/.next-cli-build/server/chunks/976.js +2 -2
  668. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  669. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  670. package/app/.next-cli-build/server/middleware.js +4 -4
  671. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  672. package/app/.next-cli-build/server/pages/404.html +2 -2
  673. package/app/.next-cli-build/server/pages/500.html +1 -1
  674. package/app/.next-cli-build/static/MH4bXJmhiPfMG7orS09FV/_buildManifest.js +1 -0
  675. package/app/.next-cli-build/static/chunks/1243-64d16638d3aac467.js +3 -0
  676. package/app/.next-cli-build/static/chunks/1321-1ad989ddb9bd4822.js +1 -0
  677. package/app/.next-cli-build/static/chunks/5497-a519f837339f7d19.js +7 -0
  678. package/app/.next-cli-build/static/chunks/6109-7d8788b228fed22f.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-2df49dc3be3c6b7d.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-2a679f53191d77f7.js → page-de760afb83419302.js} +9 -9
  681. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7a5d36237ec6b40e.js +14 -0
  682. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-e0183e527ccc2c9b.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/_global-error/page-7a2b8ef7454a1a22.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-7a2b8ef7454a1a22.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-7a2b8ef7454a1a22.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-7a2b8ef7454a1a22.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-7a2b8ef7454a1a22.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-7a2b8ef7454a1a22.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-7a2b8ef7454a1a22.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-7a2b8ef7454a1a22.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-7a2b8ef7454a1a22.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-7a2b8ef7454a1a22.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-7a2b8ef7454a1a22.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-7a2b8ef7454a1a22.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-7a2b8ef7454a1a22.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-7a2b8ef7454a1a22.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-7a2b8ef7454a1a22.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-7a2b8ef7454a1a22.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-profiles/route-7a2b8ef7454a1a22.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-7a2b8ef7454a1a22.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-7a2b8ef7454a1a22.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-7a2b8ef7454a1a22.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-7a2b8ef7454a1a22.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-7a2b8ef7454a1a22.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-7a2b8ef7454a1a22.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-7a2b8ef7454a1a22.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-7a2b8ef7454a1a22.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-7a2b8ef7454a1a22.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-7a2b8ef7454a1a22.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-7a2b8ef7454a1a22.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-7a2b8ef7454a1a22.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-7a2b8ef7454a1a22.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-7a2b8ef7454a1a22.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-7a2b8ef7454a1a22.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-7a2b8ef7454a1a22.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-7a2b8ef7454a1a22.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-7a2b8ef7454a1a22.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/combos/route-7a2b8ef7454a1a22.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/gateway-probe/route-7a2b8ef7454a1a22.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-7a2b8ef7454a1a22.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-7a2b8ef7454a1a22.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-7a2b8ef7454a1a22.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-7a2b8ef7454a1a22.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-7a2b8ef7454a1a22.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-7a2b8ef7454a1a22.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/health/route-7a2b8ef7454a1a22.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/init/route-7a2b8ef7454a1a22.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-7a2b8ef7454a1a22.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-7a2b8ef7454a1a22.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/keys/route-7a2b8ef7454a1a22.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/locale/route-7a2b8ef7454a1a22.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-7a2b8ef7454a1a22.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-7a2b8ef7454a1a22.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-7a2b8ef7454a1a22.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-7a2b8ef7454a1a22.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-7a2b8ef7454a1a22.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-7a2b8ef7454a1a22.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-7a2b8ef7454a1a22.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-7a2b8ef7454a1a22.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-7a2b8ef7454a1a22.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/models/caps/route-7a2b8ef7454a1a22.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-7a2b8ef7454a1a22.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-7a2b8ef7454a1a22.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-7a2b8ef7454a1a22.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/models/route-7a2b8ef7454a1a22.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/models/test/route-7a2b8ef7454a1a22.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/network/egress-region/route-7a2b8ef7454a1a22.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-7a2b8ef7454a1a22.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-7a2b8ef7454a1a22.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-7a2b8ef7454a1a22.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-7a2b8ef7454a1a22.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-7a2b8ef7454a1a22.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-7a2b8ef7454a1a22.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-7a2b8ef7454a1a22.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-7a2b8ef7454a1a22.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-7a2b8ef7454a1a22.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-7a2b8ef7454a1a22.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-7a2b8ef7454a1a22.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-7a2b8ef7454a1a22.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-7a2b8ef7454a1a22.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-7a2b8ef7454a1a22.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-7a2b8ef7454a1a22.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-7a2b8ef7454a1a22.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/oauth/qoder/checkin/route-7a2b8ef7454a1a22.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/oauth/qoder-cn/checkin/route-7a2b8ef7454a1a22.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-7a2b8ef7454a1a22.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-7a2b8ef7454a1a22.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-7a2b8ef7454a1a22.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-7a2b8ef7454a1a22.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-kill/route-7a2b8ef7454a1a22.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-status/route-7a2b8ef7454a1a22.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-7a2b8ef7454a1a22.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-7a2b8ef7454a1a22.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/pricing/route-7a2b8ef7454a1a22.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-7a2b8ef7454a1a22.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-7a2b8ef7454a1a22.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-7a2b8ef7454a1a22.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-7a2b8ef7454a1a22.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-7a2b8ef7454a1a22.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-7a2b8ef7454a1a22.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-7a2b8ef7454a1a22.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-7a2b8ef7454a1a22.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-7a2b8ef7454a1a22.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/providers/route-7a2b8ef7454a1a22.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-7a2b8ef7454a1a22.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-7a2b8ef7454a1a22.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-7a2b8ef7454a1a22.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-7a2b8ef7454a1a22.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-7a2b8ef7454a1a22.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-7a2b8ef7454a1a22.js +1 -0
  791. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-7a2b8ef7454a1a22.js +1 -0
  792. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-7a2b8ef7454a1a22.js +1 -0
  793. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-7a2b8ef7454a1a22.js +1 -0
  794. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-7a2b8ef7454a1a22.js +1 -0
  795. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-7a2b8ef7454a1a22.js +1 -0
  796. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-7a2b8ef7454a1a22.js +1 -0
  797. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-7a2b8ef7454a1a22.js +1 -0
  798. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-7a2b8ef7454a1a22.js +1 -0
  799. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-7a2b8ef7454a1a22.js +1 -0
  800. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-7a2b8ef7454a1a22.js +1 -0
  801. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-7a2b8ef7454a1a22.js +1 -0
  802. package/app/.next-cli-build/static/chunks/app/api/security/status/route-7a2b8ef7454a1a22.js +1 -0
  803. package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-7a2b8ef7454a1a22.js +1 -0
  804. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-7a2b8ef7454a1a22.js +1 -0
  805. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-7a2b8ef7454a1a22.js +1 -0
  806. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-7a2b8ef7454a1a22.js +1 -0
  807. package/app/.next-cli-build/static/chunks/app/api/settings/route-7a2b8ef7454a1a22.js +1 -0
  808. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-7a2b8ef7454a1a22.js +1 -0
  809. package/app/.next-cli-build/static/chunks/app/api/tags/route-7a2b8ef7454a1a22.js +1 -0
  810. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-7a2b8ef7454a1a22.js +1 -0
  811. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-7a2b8ef7454a1a22.js +1 -0
  812. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-7a2b8ef7454a1a22.js +1 -0
  813. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-7a2b8ef7454a1a22.js +1 -0
  814. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-7a2b8ef7454a1a22.js +1 -0
  815. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-7a2b8ef7454a1a22.js +1 -0
  816. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-7a2b8ef7454a1a22.js +1 -0
  817. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-7a2b8ef7454a1a22.js +1 -0
  818. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-7a2b8ef7454a1a22.js +1 -0
  819. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-7a2b8ef7454a1a22.js +1 -0
  820. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-7a2b8ef7454a1a22.js +1 -0
  821. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-7a2b8ef7454a1a22.js +1 -0
  822. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-7a2b8ef7454a1a22.js +1 -0
  823. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-7a2b8ef7454a1a22.js +1 -0
  824. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-7a2b8ef7454a1a22.js +1 -0
  825. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-7a2b8ef7454a1a22.js +1 -0
  826. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-7a2b8ef7454a1a22.js +1 -0
  827. package/app/.next-cli-build/static/chunks/app/api/usage/dashboard/route-7a2b8ef7454a1a22.js +1 -0
  828. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-7a2b8ef7454a1a22.js +1 -0
  829. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-7a2b8ef7454a1a22.js +1 -0
  830. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-7a2b8ef7454a1a22.js +1 -0
  831. package/app/.next-cli-build/static/chunks/app/api/usage/quotas/route-7a2b8ef7454a1a22.js +1 -0
  832. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-7a2b8ef7454a1a22.js +1 -0
  833. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-7a2b8ef7454a1a22.js +1 -0
  834. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-7a2b8ef7454a1a22.js +1 -0
  835. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-7a2b8ef7454a1a22.js +1 -0
  836. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-7a2b8ef7454a1a22.js +1 -0
  837. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-7a2b8ef7454a1a22.js +1 -0
  838. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-7a2b8ef7454a1a22.js +1 -0
  839. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-7a2b8ef7454a1a22.js +1 -0
  840. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-7a2b8ef7454a1a22.js +1 -0
  841. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-7a2b8ef7454a1a22.js +1 -0
  842. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-7a2b8ef7454a1a22.js +1 -0
  843. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-7a2b8ef7454a1a22.js +1 -0
  844. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-7a2b8ef7454a1a22.js +1 -0
  845. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-7a2b8ef7454a1a22.js +1 -0
  846. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-7a2b8ef7454a1a22.js +1 -0
  847. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-7a2b8ef7454a1a22.js +1 -0
  848. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-7a2b8ef7454a1a22.js +1 -0
  849. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-7a2b8ef7454a1a22.js +1 -0
  850. package/app/.next-cli-build/static/chunks/app/api/v1/route-7a2b8ef7454a1a22.js +1 -0
  851. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-7a2b8ef7454a1a22.js +1 -0
  852. package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-7a2b8ef7454a1a22.js +1 -0
  853. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-7a2b8ef7454a1a22.js +1 -0
  854. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-7a2b8ef7454a1a22.js +1 -0
  855. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-7a2b8ef7454a1a22.js +1 -0
  856. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-7a2b8ef7454a1a22.js +1 -0
  857. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-7a2b8ef7454a1a22.js +1 -0
  858. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-7a2b8ef7454a1a22.js +1 -0
  859. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-7a2b8ef7454a1a22.js +1 -0
  860. package/app/.next-cli-build/static/chunks/app/api/version/route-7a2b8ef7454a1a22.js +1 -0
  861. package/app/.next-cli-build/static/chunks/app/api/version/shell-update/route-7a2b8ef7454a1a22.js +1 -0
  862. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-7a2b8ef7454a1a22.js +1 -0
  863. package/app/.next-cli-build/static/chunks/app/api/version/update/route-7a2b8ef7454a1a22.js +1 -0
  864. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-7a2b8ef7454a1a22.js +1 -0
  865. package/app/.next-cli-build/static/chunks/app/page-7a2b8ef7454a1a22.js +1 -0
  866. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-7a2b8ef7454a1a22.js +1 -0
  867. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-7a2b8ef7454a1a22.js +1 -0
  868. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-7a2b8ef7454a1a22.js +1 -0
  869. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-7a2b8ef7454a1a22.js +1 -0
  870. package/app/.next-cli-build/static/css/66cb1d1c16ed3a27.css +1 -0
  871. package/app/package.json +71 -71
  872. package/app/public/i18n/changelog/en.md +28 -0
  873. package/app/public/i18n/changelog/zh-CN.md +28 -0
  874. package/app/public/i18n/changelog/zh-TW.md +28 -0
  875. package/app/public/i18n/literals/zh-CN.json +28 -0
  876. package/app/public/i18n/literals/zh-TW.json +27 -0
  877. package/app/src/lib/db/adapters/sqljsAdapter.js +42 -9
  878. package/app/src/sse/services/backgroundTokenRefresh.js +7 -0
  879. package/app/src/sse/services/codebuddyCheckin.js +6 -0
  880. package/package.json +61 -61
  881. package/app/.next-cli-build/server/chunks/1159.js +0 -7
  882. package/app/.next-cli-build/server/chunks/1710.js +0 -6
  883. package/app/.next-cli-build/server/chunks/3245.js +0 -1
  884. package/app/.next-cli-build/server/chunks/3885.js +0 -1
  885. package/app/.next-cli-build/server/chunks/4177.js +0 -1
  886. package/app/.next-cli-build/server/chunks/4282.js +0 -1
  887. package/app/.next-cli-build/server/chunks/436.js +0 -1
  888. package/app/.next-cli-build/server/chunks/4746.js +0 -1
  889. package/app/.next-cli-build/server/chunks/480.js +0 -6
  890. package/app/.next-cli-build/server/chunks/5485.js +0 -1
  891. package/app/.next-cli-build/server/chunks/653.js +0 -1
  892. package/app/.next-cli-build/server/chunks/6982.js +0 -1
  893. package/app/.next-cli-build/static/chunks/1243-25be5a7b0193949d.js +0 -3
  894. package/app/.next-cli-build/static/chunks/1321-daa1cffb0e36b547.js +0 -1
  895. package/app/.next-cli-build/static/chunks/5497-1b7804fcf8283e96.js +0 -7
  896. package/app/.next-cli-build/static/chunks/6109-c3fa41c974584a96.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-5ec2e868aa2ff281.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-21ddfd8a9e7d781f.js +0 -14
  899. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-ec96de061407f126.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/_global-error/page-1058a44b968ee535.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-1058a44b968ee535.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-1058a44b968ee535.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-1058a44b968ee535.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-1058a44b968ee535.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-1058a44b968ee535.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-1058a44b968ee535.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/auth/saml/acs/route-1058a44b968ee535.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/auth/saml/metadata/route-1058a44b968ee535.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/auth/saml/start/route-1058a44b968ee535.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/auth/saml/test/route-1058a44b968ee535.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-1058a44b968ee535.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/auth/verify-password/route-1058a44b968ee535.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-1058a44b968ee535.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-1058a44b968ee535.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-1058a44b968ee535.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-profiles/route-1058a44b968ee535.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-1058a44b968ee535.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-1058a44b968ee535.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-profiles/route-1058a44b968ee535.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-1058a44b968ee535.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-1058a44b968ee535.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-1058a44b968ee535.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-1058a44b968ee535.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-1058a44b968ee535.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-1058a44b968ee535.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/cli-tools/devin-settings/route-1058a44b968ee535.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-1058a44b968ee535.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/cli-tools/grok-build-settings/route-1058a44b968ee535.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-1058a44b968ee535.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-1058a44b968ee535.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-1058a44b968ee535.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-1058a44b968ee535.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-1058a44b968ee535.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-1058a44b968ee535.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/combos/route-1058a44b968ee535.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-1058a44b968ee535.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-1058a44b968ee535.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-1058a44b968ee535.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-1058a44b968ee535.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-1058a44b968ee535.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-1058a44b968ee535.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/health/route-1058a44b968ee535.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/init/route-1058a44b968ee535.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-1058a44b968ee535.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/keys/rotate/route-1058a44b968ee535.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/keys/route-1058a44b968ee535.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/locale/route-1058a44b968ee535.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-1058a44b968ee535.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-1058a44b968ee535.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-1058a44b968ee535.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-1058a44b968ee535.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-1058a44b968ee535.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-1058a44b968ee535.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-1058a44b968ee535.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-1058a44b968ee535.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-1058a44b968ee535.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/models/caps/route-1058a44b968ee535.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/models/custom/bulk/route-1058a44b968ee535.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-1058a44b968ee535.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-1058a44b968ee535.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/models/route-1058a44b968ee535.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/models/test/route-1058a44b968ee535.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/network/egress-region/route-1058a44b968ee535.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-1058a44b968ee535.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-1058a44b968ee535.js +0 -1
  966. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/checkin/route-1058a44b968ee535.js +0 -1
  967. package/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/export/route-1058a44b968ee535.js +0 -1
  968. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-1058a44b968ee535.js +0 -1
  969. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-1058a44b968ee535.js +0 -1
  970. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-1058a44b968ee535.js +0 -1
  971. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-1058a44b968ee535.js +0 -1
  972. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-1058a44b968ee535.js +0 -1
  973. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-1058a44b968ee535.js +0 -1
  974. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-1058a44b968ee535.js +0 -1
  975. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-1058a44b968ee535.js +0 -1
  976. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-1058a44b968ee535.js +0 -1
  977. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-1058a44b968ee535.js +0 -1
  978. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-1058a44b968ee535.js +0 -1
  979. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-1058a44b968ee535.js +0 -1
  980. package/app/.next-cli-build/static/chunks/app/api/oauth/qoder/checkin/route-1058a44b968ee535.js +0 -1
  981. package/app/.next-cli-build/static/chunks/app/api/oauth/qoder-cn/checkin/route-1058a44b968ee535.js +0 -1
  982. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/export/route-1058a44b968ee535.js +0 -1
  983. package/app/.next-cli-build/static/chunks/app/api/oauth/transfer/import/route-1058a44b968ee535.js +0 -1
  984. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/api-key/route-1058a44b968ee535.js +0 -1
  985. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/auto-import/route-1058a44b968ee535.js +0 -1
  986. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-kill/route-1058a44b968ee535.js +0 -1
  987. package/app/.next-cli-build/static/chunks/app/api/oauth/xiaomi-mimo/desktop-status/route-1058a44b968ee535.js +0 -1
  988. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/auto-import/route-1058a44b968ee535.js +0 -1
  989. package/app/.next-cli-build/static/chunks/app/api/oauth/zed/import/route-1058a44b968ee535.js +0 -1
  990. package/app/.next-cli-build/static/chunks/app/api/pricing/route-1058a44b968ee535.js +0 -1
  991. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-1058a44b968ee535.js +0 -1
  992. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-1058a44b968ee535.js +0 -1
  993. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-1058a44b968ee535.js +0 -1
  994. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-1058a44b968ee535.js +0 -1
  995. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-1058a44b968ee535.js +0 -1
  996. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-1058a44b968ee535.js +0 -1
  997. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-1058a44b968ee535.js +0 -1
  998. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-1058a44b968ee535.js +0 -1
  999. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-1058a44b968ee535.js +0 -1
  1000. package/app/.next-cli-build/static/chunks/app/api/providers/route-1058a44b968ee535.js +0 -1
  1001. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-1058a44b968ee535.js +0 -1
  1002. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-1058a44b968ee535.js +0 -1
  1003. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-1058a44b968ee535.js +0 -1
  1004. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-1058a44b968ee535.js +0 -1
  1005. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-1058a44b968ee535.js +0 -1
  1006. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-1058a44b968ee535.js +0 -1
  1007. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-1058a44b968ee535.js +0 -1
  1008. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-1058a44b968ee535.js +0 -1
  1009. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-1058a44b968ee535.js +0 -1
  1010. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-1058a44b968ee535.js +0 -1
  1011. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-1058a44b968ee535.js +0 -1
  1012. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-1058a44b968ee535.js +0 -1
  1013. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-1058a44b968ee535.js +0 -1
  1014. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-1058a44b968ee535.js +0 -1
  1015. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-1058a44b968ee535.js +0 -1
  1016. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-1058a44b968ee535.js +0 -1
  1017. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-1058a44b968ee535.js +0 -1
  1018. package/app/.next-cli-build/static/chunks/app/api/security/status/route-1058a44b968ee535.js +0 -1
  1019. package/app/.next-cli-build/static/chunks/app/api/settings/database/import-usage/route-1058a44b968ee535.js +0 -1
  1020. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-1058a44b968ee535.js +0 -1
  1021. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-1058a44b968ee535.js +0 -1
  1022. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-1058a44b968ee535.js +0 -1
  1023. package/app/.next-cli-build/static/chunks/app/api/settings/route-1058a44b968ee535.js +0 -1
  1024. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-1058a44b968ee535.js +0 -1
  1025. package/app/.next-cli-build/static/chunks/app/api/tags/route-1058a44b968ee535.js +0 -1
  1026. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-1058a44b968ee535.js +0 -1
  1027. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-1058a44b968ee535.js +0 -1
  1028. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-1058a44b968ee535.js +0 -1
  1029. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-1058a44b968ee535.js +0 -1
  1030. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-1058a44b968ee535.js +0 -1
  1031. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-1058a44b968ee535.js +0 -1
  1032. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-1058a44b968ee535.js +0 -1
  1033. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-1058a44b968ee535.js +0 -1
  1034. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-1058a44b968ee535.js +0 -1
  1035. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-1058a44b968ee535.js +0 -1
  1036. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-1058a44b968ee535.js +0 -1
  1037. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-1058a44b968ee535.js +0 -1
  1038. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-1058a44b968ee535.js +0 -1
  1039. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/claude-reset/route-1058a44b968ee535.js +0 -1
  1040. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-1058a44b968ee535.js +0 -1
  1041. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-1058a44b968ee535.js +0 -1
  1042. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-1058a44b968ee535.js +0 -1
  1043. package/app/.next-cli-build/static/chunks/app/api/usage/dashboard/route-1058a44b968ee535.js +0 -1
  1044. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-1058a44b968ee535.js +0 -1
  1045. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-1058a44b968ee535.js +0 -1
  1046. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-1058a44b968ee535.js +0 -1
  1047. package/app/.next-cli-build/static/chunks/app/api/usage/quotas/route-1058a44b968ee535.js +0 -1
  1048. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-1058a44b968ee535.js +0 -1
  1049. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-1058a44b968ee535.js +0 -1
  1050. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-1058a44b968ee535.js +0 -1
  1051. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-1058a44b968ee535.js +0 -1
  1052. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-1058a44b968ee535.js +0 -1
  1053. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-1058a44b968ee535.js +0 -1
  1054. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-1058a44b968ee535.js +0 -1
  1055. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-1058a44b968ee535.js +0 -1
  1056. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-1058a44b968ee535.js +0 -1
  1057. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-1058a44b968ee535.js +0 -1
  1058. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-1058a44b968ee535.js +0 -1
  1059. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-1058a44b968ee535.js +0 -1
  1060. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-1058a44b968ee535.js +0 -1
  1061. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-1058a44b968ee535.js +0 -1
  1062. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-1058a44b968ee535.js +0 -1
  1063. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-1058a44b968ee535.js +0 -1
  1064. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-1058a44b968ee535.js +0 -1
  1065. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-1058a44b968ee535.js +0 -1
  1066. package/app/.next-cli-build/static/chunks/app/api/v1/route-1058a44b968ee535.js +0 -1
  1067. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-1058a44b968ee535.js +0 -1
  1068. package/app/.next-cli-build/static/chunks/app/api/v1/systemone/route-1058a44b968ee535.js +0 -1
  1069. package/app/.next-cli-build/static/chunks/app/api/v1/videos/[id]/route-1058a44b968ee535.js +0 -1
  1070. package/app/.next-cli-build/static/chunks/app/api/v1/videos/edits/route-1058a44b968ee535.js +0 -1
  1071. package/app/.next-cli-build/static/chunks/app/api/v1/videos/extensions/route-1058a44b968ee535.js +0 -1
  1072. package/app/.next-cli-build/static/chunks/app/api/v1/videos/generations/route-1058a44b968ee535.js +0 -1
  1073. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-1058a44b968ee535.js +0 -1
  1074. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-1058a44b968ee535.js +0 -1
  1075. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-1058a44b968ee535.js +0 -1
  1076. package/app/.next-cli-build/static/chunks/app/api/version/route-1058a44b968ee535.js +0 -1
  1077. package/app/.next-cli-build/static/chunks/app/api/version/shell-update/route-1058a44b968ee535.js +0 -1
  1078. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-1058a44b968ee535.js +0 -1
  1079. package/app/.next-cli-build/static/chunks/app/api/version/update/route-1058a44b968ee535.js +0 -1
  1080. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-1058a44b968ee535.js +0 -1
  1081. package/app/.next-cli-build/static/chunks/app/page-1058a44b968ee535.js +0 -1
  1082. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-1058a44b968ee535.js +0 -1
  1083. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-1058a44b968ee535.js +0 -1
  1084. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-1058a44b968ee535.js +0 -1
  1085. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-1058a44b968ee535.js +0 -1
  1086. package/app/.next-cli-build/static/css/29b44146dde595c6.css +0 -1
  1087. package/app/.next-cli-build/static/nGfjkKzxmtvk6d_Zhtya7/_buildManifest.js +0 -1
  1088. /package/app/.next-cli-build/static/{nGfjkKzxmtvk6d_Zhtya7 → MH4bXJmhiPfMG7orS09FV}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=939,exports.ids=[939],exports.modules={30939:(a,b,c)=>{c.d(b,{default:()=>d});let d={id:"codebuddy-intl",alias:"cbai",uiAlias:"cbai",hidden:!1,priority:90,display:{name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai",webUrl:"https://www.codebuddy.ai/agents"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://www.codebuddy.ai/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"IDE/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"IDE","X-IDE-Name":"IDE","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://www.codebuddy.ai/v2/billing/meter/get-user-resource"}},models:[{id:"hy4-preview",name:"Hy4-Preview",rateMultiplier:0},{id:"hy3",name:"Hy3",rateMultiplier:0},{id:"gpt-6-astra",name:"GPT 6.0 Astra",rateMultiplier:6.67},{id:"gpt-6-luna",name:"GPT-6-Luna"},{id:"gpt-6-sol",name:"GPT-6-Sol"},{id:"gpt-5.6-sol",name:"GPT-5.6-Sol",rateMultiplier:3.47},{id:"gpt-5.6-terra",name:"GPT-5.6-Terra",rateMultiplier:1.39},{id:"gpt-5.6-luna",name:"GPT-5.6-Luna",rateMultiplier:.14},{id:"gpt-5.5",name:"GPT-5.5",rateMultiplier:3.31},{id:"gpt-5.4",name:"GPT-5.4",rateMultiplier:1.65},{id:"gpt-5.3-codex",name:"GPT-5.3-Codex",rateMultiplier:1.25},{id:"gemini-3.5-flash",name:"Gemini-3.5-Flash",rateMultiplier:.99},{id:"glm-5v-turbo",name:"GLM-5v-Turbo",rateMultiplier:.71},{id:"glm-5.3",name:"GLM-5.3",rateMultiplier:.79},{id:"glm-5.3-flash",name:"GLM-5.3-Flash",rateMultiplier:.06},{id:"glm-5.2",name:"GLM-5.2",rateMultiplier:.79},{id:"glm-5.1",name:"GLM-5.1",rateMultiplier:.79},{id:"minimax-m3",name:"MiniMax-M3",rateMultiplier:.25},{id:"kimi-k3",name:"Kimi-K3",rateMultiplier:1.62},{id:"kimi-k2.7",name:"Kimi-K2.7-Code",rateMultiplier:.57},{id:"kimi-k2.6",name:"Kimi-K2.6",rateMultiplier:.52},{id:"deepseek-v4.1-flash",name:"DeepSeek-V4.1-Flash",rateMultiplier:.11}],oauth:{baseUrl:"https://www.codebuddy.ai",stateUrl:"https://www.codebuddy.ai/v2/plugin/auth/state",tokenUrl:"https://www.codebuddy.ai/v2/plugin/auth/token",refreshUrl:"https://www.codebuddy.ai/v2/plugin/auth/token/refresh",userAgent:"IDE/2.63.2 CodeBuddy/2.63.2",platform:"ide",pollInterval:5e3},features:{usage:!0,usageApikey:!0}}}};
1
+ "use strict";exports.id=939,exports.ids=[939],exports.modules={30939:(a,b,c)=>{c.d(b,{default:()=>d});let d={id:"codebuddy-intl",alias:"cbai",uiAlias:"cbai",hidden:!1,priority:90,display:{name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai",webUrl:"https://www.codebuddy.ai/agents"}},category:"oauth",authModes:["oauth","apikey"],hasOAuth:!0,transport:{baseUrl:"https://www.codebuddy.ai/v2/chat/completions",forceStream:!0,thinkingFormat:"openai",headers:{"User-Agent":"IDE/2.108.1 CodeBuddy/2.108.1","X-Product":"SaaS","X-IDE-Type":"IDE","X-IDE-Name":"IDE","x-requested-with":"XMLHttpRequest","x-codebuddy-request":"1"},auth:{combined:!0,header:"Authorization",scheme:"bearer"},usage:{url:"https://www.codebuddy.ai/v2/billing/meter/get-user-resource"}},models:[{id:"hy4-preview",name:"Hy4-Preview",rateMultiplier:0},{id:"hy3",name:"Hy3",rateMultiplier:0},{id:"gpt-6-astra",name:"GPT 6.0 Astra",rateMultiplier:6.67},{id:"gpt-6-luna",name:"GPT-6-Luna"},{id:"gpt-6-sol",name:"GPT-6-Sol"},{id:"gpt-5.6-sol",name:"GPT-5.6-Sol",rateMultiplier:3.47},{id:"gpt-5.6-terra",name:"GPT-5.6-Terra",rateMultiplier:1.39},{id:"gpt-5.6-luna",name:"GPT-5.6-Luna",rateMultiplier:.14},{id:"gpt-5.5",name:"GPT-5.5",rateMultiplier:3.31},{id:"gpt-5.4",name:"GPT-5.4",rateMultiplier:1.65},{id:"gpt-5.3-codex",name:"GPT-5.3-Codex",rateMultiplier:1.25},{id:"gpt-6.1-sol",name:"GPT-6.1-Sol"},{id:"claude-opus-5.5",name:"Claude-Opus-5.5",rateMultiplier:2.17,paidTier:!0},{id:"claude-sonnet-5.5",name:"Claude-Sonnet-5.5",rateMultiplier:1.33,paidTier:!0},{id:"claude-opus-5",name:"Claude-Opus-5",rateMultiplier:3.33,paidTier:!0},{id:"claude-sonnet-5",name:"Claude-Sonnet-5",rateMultiplier:1.33,paidTier:!0},{id:"claude-opus-4.8",name:"Claude-Opus-4.8",rateMultiplier:3.33,paidTier:!0},{id:"claude-opus-4.7",name:"Claude-Opus-4.7",rateMultiplier:3.33,paidTier:!0},{id:"claude-opus-4.6",name:"Claude-Opus-4.6",rateMultiplier:3.33,paidTier:!0},{id:"claude-sonnet-4.6",name:"Claude-Sonnet-4.6",rateMultiplier:1.33,paidTier:!0},{id:"gemini-3.8-flash",name:"Gemini-3.8-Flash"},{id:"grok-4.7",name:"Grok-4.7",rateMultiplier:1.9},{id:"space-bunny",name:"Space-Bunny",rateMultiplier:.08},{id:"gemini-3.5-flash",name:"Gemini-3.5-Flash",rateMultiplier:.99},{id:"glm-5v-turbo",name:"GLM-5v-Turbo",rateMultiplier:.71},{id:"glm-5.3",name:"GLM-5.3",rateMultiplier:.79},{id:"glm-5.3-flash",name:"GLM-5.3-Flash",rateMultiplier:.06},{id:"glm-5.2",name:"GLM-5.2",rateMultiplier:.79},{id:"glm-5.1",name:"GLM-5.1",rateMultiplier:.79},{id:"minimax-m3",name:"MiniMax-M3",rateMultiplier:.25},{id:"kimi-k3",name:"Kimi-K3",rateMultiplier:1.62},{id:"kimi-k2.7",name:"Kimi-K2.7-Code",rateMultiplier:.57},{id:"kimi-k2.8-preview",name:"Kimi-K2.8-Preview",rateMultiplier:.77,subPriority:!0},{id:"kimi-k2.6",name:"Kimi-K2.6",rateMultiplier:.52},{id:"deepseek-v4.1-flash",name:"DeepSeek-V4.1-Flash",rateMultiplier:.11}],oauth:{baseUrl:"https://www.codebuddy.ai",stateUrl:"https://www.codebuddy.ai/v2/plugin/auth/state",tokenUrl:"https://www.codebuddy.ai/v2/plugin/auth/token",refreshUrl:"https://www.codebuddy.ai/v2/plugin/auth/token/refresh",userAgent:"IDE/2.63.2 CodeBuddy/2.63.2",platform:"ide",pollInterval:5e3},features:{usage:!0,usageApikey:!0}}}};
@@ -0,0 +1,6 @@
1
+ exports.id=9417,exports.ids=[1998,3662,4755,5527,6457,8838,9417],exports.modules={3662:(a,b,c)=>{"use strict";c.d(b,{$e:()=>i,AZ:()=>m,Dt:()=>k,EQ:()=>f,LY:()=>d,O:()=>e,X8:()=>j,fh:()=>h,qS:()=>o,t2:()=>l,wf:()=>g,yD:()=>n});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Not found (wrong endpoint path, or the model does not exist)",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=864e5,j={short:6e4,long:6e5},k=3e5,l=[{provider:"codex",text:"model is not supported when using codex with a chatgpt account",cooldownMs:18e5},{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"unapproved channel",channelScope:!0,cooldownMs:j.short},{text:"illegal api invocation",channelScope:!0,cooldownMs:j.short},{text:"improperly formed request",cooldownMs:12e4},{text:"mimo desktop account",cooldownMs:0},{text:"real-name verification",cooldownMs:0},{text:"realname verification",cooldownMs:0},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}],m=/real-name verification|realname|\bface verification\b|实名认证/i,n={"stepfun-plan-cn":"StepFun CN 的 Step Plan 免费套餐要求账号先完成实名(人脸)核验,未完成时上游一律拒绝,与本机额度、与 10Router 都无关。出路:1. 打开 https://account.stepfun.com/security?action=realname 完成人脸核验后重试(推荐);2. 或改用按量计费的 stepfun-cn 渠道(扣现金/代金券,无实名要求)。该账号不会被锁定,但在实名完成前每次调用都会得到这条提示。"},o="上游要求该账号先完成实名认证(real-name verification),未完成前所有调用都会被拒绝;请按上游提示的地址完成核验后重试。"},7803:(a,b,c)=>{"use strict";c.r(b),c.d(b,{debug:()=>o,error:()=>r,errorLine:()=>l,fmtThink:()=>m,info:()=>p,line:()=>k,maskKey:()=>v,nextTag:()=>i,request:()=>s,response:()=>t,stream:()=>u,tagForSession:()=>j,warn:()=>q});let d={DEBUG:0,INFO:1,WARN:2,ERROR:3},e=d[process.env.LOG_LEVEL?.toUpperCase?.()]??d.INFO;function f(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let g=["\uD83D\uDFE2","\uD83D\uDD35","\uD83D\uDFE3","\uD83D\uDFE1","\uD83D\uDFE0","\uD83D\uDD34","⚪","\uD83D\uDFE4"],h=0;function i(){let a=g[h%g.length];return h++,a}function j(a){if(!a)return i();let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return g[Math.abs(b)%g.length]}function k(a,b,c){e>d.INFO||console.log(`[${f()}] ${a} ${b} ${c}`)}function l(a,b,c){console.log(`[${f()}] ${a} ${b} ${c}`)}function m(a){return a&&a.mode?"none"===a.mode?"off":"auto"===a.mode?"auto":"budget"===a.mode?a.budget>=1e3?`${Math.round(a.budget/1e3)}k`:`${a.budget}`:"level"===a.mode?a.level:null:null}function n(a){if(!a)return"";if("string"==typeof a)return a;try{return JSON.stringify(a)}catch{return String(a)}}function o(a,b,c){if(e<=d.DEBUG){let d=c?` ${n(c)}`:"";console.log(`[${f()}] 🔍 [${a}] ${b}${d}`)}}function p(a,b,c){if(e<=d.INFO){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ℹ️ [${a}] ${b}${d}`)}}function q(a,b,c){if(e<=d.WARN){let d=c?` ${n(c)}`:"";console.warn(`[${f()}] ⚠️ [${a}] ${b}${d}`)}}function r(a,b,c){if(e<=d.ERROR){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ❌ [${a}] ${b}${d}`)}}function s(a,b,c){let d=c?` ${n(c)}`:"";console.log(`\x1b[36m[${f()}] 📥 ${a} ${b}${d}\x1b[0m`)}function t(a,b,c){let d=c?` ${n(c)}`:"";console.log(`[${f()}] ${a<400?"\uD83D\uDCE4":"\uD83D\uDCA5"} ${a} (${b}ms)${d}`)}function u(a,b){let c=b?` ${n(b)}`:"";console.log(`[${f()}] 🌊 [STREAM] ${a}${c}`)}function v(a){return!a||a.length<8?"***":`${a.slice(0,4)}...${a.slice(-4)}`}},29679:(a,b,c)=>{"use strict";c.d(b,{cW:()=>l});var d=c(94755),e=c(55511),f=c(8521);let g="1.0.0",h="0.10.32",i="us-east-1",j=new Map;async function k(a,b){let c,f,j,k=a?.providerSpecificData?.profileArn||"",l=function(a){if(!a||"string"!=typeof a)return i;let b=a.split(":");return b.length>=4&&b[3]?b[3]:i}(k),m=new URLSearchParams;m.set("origin","AI_EDITOR"),k&&m.set("profileArn",k);let n=`https://q.${l}.amazonaws.com/ListAvailableModels?${m.toString()}`,o={...(f=a?.providerSpecificData?.clientId||a?.refreshToken||a?.providerSpecificData?.profileArn||a?.accessToken||"kiro-anonymous",j=(0,e.createHash)("sha256").update(String(f)).digest("hex"),{"User-Agent":`aws-sdk-js/${g} ua/2.1 os/windows#10.0.26200 lang/js md/nodejs#22.21.1 api/codewhispererruntime#${g} m/N,E KiroIDE-${h}-${j}`,"x-amz-user-agent":`aws-sdk-js/${g} KiroIDE-${h}-${j}`,"x-amzn-kiro-agent-mode":"vibe","x-amzn-codewhisperer-optout":"true","amz-sdk-request":"attempt=1; max=1","amz-sdk-invocation-id":(0,d.A)(),Accept:"application/json"}),Authorization:`Bearer ${a?.accessToken||""}`},p=new AbortController,q=setTimeout(()=>p.abort("timeout"),3e4);b&&"function"==typeof b.addEventListener&&b.addEventListener("abort",()=>p.abort(b.reason));try{c=await fetch(n,{method:"GET",headers:o,signal:p.signal})}finally{clearTimeout(q)}if(!c.ok){let a=await c.text().catch(()=>""),b=Error(`Kiro ListAvailableModels ${c.status}: ${a||c.statusText}`);throw b.status=c.status,b.body=a,b}let r=await c.json();return Array.isArray(r?.models)?r.models:[]}async function l(a,b={}){let c,d,g;if(!a||!a.accessToken)return b.log?.debug?.("KIRO_MODELS","No accessToken; skipping live fetch"),null;let h=(g=(d=a?.providerSpecificData||{}).profileArn||d.clientId||a?.refreshToken||a?.accessToken||"anonymous",(0,e.createHash)("sha256").update(`kiro:${g}`).digest("hex")),i=Date.now();if(!b.forceRefresh){let a=j.get(h);if(a&&a.expiresAt>i)return{models:a.models,rawModels:a.rawModels}}try{c=await k(a,b.signal)}catch(d){if(!d||401!==d.status||!a.refreshToken)return b.log?.warn?.("KIRO_MODELS",`ListAvailableModels failed: ${d?.message||d}`),null;{b.log?.info?.("KIRO_MODELS","Got 401 from Kiro; refreshing token");let d=await (0,f.Ql)(a.refreshToken,a.providerSpecificData,b.log);if(!d?.accessToken)return b.log?.warn?.("KIRO_MODELS","Token refresh did not return accessToken"),null;{let e={...a,...d};if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed(d)}catch(a){b.log?.warn?.("KIRO_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await k(e,b.signal),a.accessToken=e.accessToken,e.refreshToken&&(a.refreshToken=e.refreshToken)}catch(a){return b.log?.warn?.("KIRO_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}}let m=[];for(let a of c){if(!a||"object"!=typeof a)continue;let b=a.modelId||a.id;if(!b)continue;let c=function(a,b,c){let d=(a||b||"Kiro").trim(),e=Number(c);if(!Number.isFinite(e)||1e-9>Math.abs(e-1)||e<=0)return`Kiro ${d}`;let f=e.toFixed(1).replace(",",".");return`Kiro ${d} (${f}x credit)`}(a.modelName,b,a.rateMultiplier),d=Number(a?.tokenLimits?.maxInputTokens)||2e5;for(let e of function(a,b){let c,d=((c=a).endsWith("-agentic")&&(c=c.slice(0,-8)),c.endsWith("-thinking")&&(c=c.slice(0,-9)),c),e=b||`Kiro ${d}`,f=[{id:d,name:e,capabilities:{thinking:!1,agentic:!1}},{id:`${d}-thinking`,name:`${e} (Thinking)`,capabilities:{thinking:!0,agentic:!1}}];return"auto"!==d&&(f.push({id:`${d}-agentic`,name:`${e} (Agentic)`,capabilities:{thinking:!1,agentic:!0}}),f.push({id:`${d}-thinking-agentic`,name:`${e} (Thinking + Agentic)`,capabilities:{thinking:!0,agentic:!0}})),f}(b,c))m.push({...e,contextLength:d,rateMultiplier:Number.isFinite(Number(a.rateMultiplier))?Number(a.rateMultiplier):1,upstreamModelId:b,description:a.description||""})}return j.set(h,{expiresAt:i+3e5,models:m,rawModels:c}),{models:m,rawModels:c}}},38709:(a,b,c)=>{"use strict";c.d(b,{M:()=>h});var d=c(90737),e=c(93943),f=c(39609);let g=`${d.Nr}/models`;async function h(a,b={}){let{fetchFn:c=f.proxyAwareFetch,log:i=console,proxyOptions:j=null,onCredentialsRefreshed:k}=b,l=a?.accessToken;if(!l)return{models:[],warning:"Grok CLI access token is missing."};let m=b=>c(g,{method:"GET",headers:function(a,b={}){let c={Authorization:`Bearer ${a}`,Accept:"application/json","User-Agent":d.fZ,"x-xai-token-auth":"xai-grok-cli","x-grok-client-version":d.uG,"x-grok-client-identifier":d.rK,"x-grok-client-mode":"headless"},e=b?.email,f=b?.userId||b?.principalId;return e&&(c["x-email"]=e),f&&(c["x-userid"]=f),c}(b,a?.providerSpecificData)},j);try{let b=await m(l);if((401===b.status||403===b.status)&&a?.refreshToken){let c=await (0,e.Vq)("grok-cli",a,i,j);if(c?.accessToken){l=c.accessToken;try{await k?.(c)}catch(a){i?.warn?.("Grok CLI credential persistence failed",a)}b=await m(l)}}if(!b.ok){let a=await b.text().catch(()=>"");return{models:[],warning:`Grok CLI model discovery failed (${b.status})${a?`: ${a.slice(0,160)}`:""}`}}let c=function(a){let b,c=new Set,e=[];for(let[f,g]of(b=Array.isArray(a)?a:a?.data??a?.models??a?.results??[],Array.isArray(b)?b.map(a=>[null,a]):b&&"object"==typeof b?Object.entries(b):[])){let a="string"==typeof g?{id:g}:g;if(!a||"object"!=typeof a||Array.isArray(a))continue;let b=String(a.id??a.model_id??a.modelId??a.model??a.slug??f??a.name??"").trim();if(!b||c.has(b))continue;c.add(b);let h={...a,id:b,name:a.display_name??a.displayName??a.name??b},i=Number(a.context_length??a.contextLength??a.context_window??a.contextWindow),j=Number(a.max_output_tokens??a.maxOutputTokens);Number.isFinite(i)&&i>0&&(h.contextLength=i),Number.isFinite(j)&&j>0&&(h.maxOutputTokens=j),b===d.to&&(h.contextLength||=5e5,h.maxOutputTokens||=64e3),e.push(h)}return e}(await b.json());return c.length?{models:c}:{models:[],warning:"Grok CLI returned no selectable models."}}catch(a){return{models:[],warning:`Grok CLI model discovery failed: ${a.message}`}}}},39326:(a,b,c)=>{"use strict";c.d(b,{B:()=>j,p:()=>i});var d=c(71998),e=c(72082);function f(a){return null==a?"":String(a).trim()}function g(a){let b=f(a);if(!b)return"";if((0,e.isEncrypted)(b))try{return f((0,e.decryptSecret)(b))}catch(a){console.warn(`[ConnectionProxy] Could not decrypt proxy URL: ${a?.message||a}`)}return b}let h=new Map;function i(a,b,c){if(!a||0===a.length)return null;if(1===a.length)return a[0];if("round-robin"===b){let b=h.get(c)||{index:-1};return b.index=(b.index+1)%a.length,h.set(c,b),a[b.index]}return"random"===b?a[Math.floor(Math.random()*a.length)]:a[0]}async function j(a={}){try{let b=f(a?.proxyPoolId),c="__none__"===b?"":b,e=function(a={}){let b=a?.connectionProxyEnabled===!0,c=g(a?.connectionProxyUrl),d=f(a?.connectionNoProxy);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:d,strictProxy:a?.strictProxy===!0}}(a),h=!1;if(c){let a=await (0,d.hr)(c);h=a?.strictProxy===!0;let b=g(a?.proxyUrl),e=f(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:e,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:e,strictProxy:!0===a.strictProxy}}}if(e.connectionProxyEnabled&&e.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...e,strictProxy:h||e.strictProxy};return{source:"none",proxyPoolId:c||null,proxyPool:null,...e,strictProxy:h||e.strictProxy}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}},50122:(a,b,c)=>{"use strict";c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},69704:(a,b,c)=>{"use strict";c.d(b,{Dg:()=>k,F8:()=>u,KC:()=>w,L7:()=>d,OQ:()=>j,R$:()=>l,RB:()=>D,Ty:()=>z,UJ:()=>q,VD:()=>r,_G:()=>i,bR:()=>t,bg:()=>h,cT:()=>y,cn:()=>p,h3:()=>o,ii:()=>n,j9:()=>f,jJ:()=>m,li:()=>s,pM:()=>C,pr:()=>E,qk:()=>A,rf:()=>g,t6:()=>x,xG:()=>B});let d="https://openapi.qoder.sh",e="https://api3.qoder.sh",f="https://api2.qoder.sh",g="https://qoder.com/device/selectAccounts",h=`${d}/api/v1/deviceToken/poll`,i=`${d}/api/v1/userinfo`,j=`${d}/api/v1/jobToken/exchange`,k="https://qoder.com",l="https://gateway.qoder.com.cn",m="https://openapi.qoder.com.cn",n="https://qoder.cn/device/selectAccounts",o=`${m}/api/v1/deviceToken/poll`,p=`${m}/api/v1/userinfo`,q=`${m}/api/v1/jobToken/exchange`,r="https://qoder.cn",s=l,t=`${l}/algo/api/v2/model/list`,u="/api/v2/service/pro/sse/agent_chat_generation",v=`${e}/algo${u}?FetchKeys=llm_model_result&AgentId=agent_common`,w=`${v}&Encode=1`,x=`${e}/algo/api/v2/model/list`,y="1.0.0",z="5",A="disagree",B="v2",C="x86_64_windows",D="5",E=`-----BEGIN PUBLIC KEY-----
2
+ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDA8iMH5c02LilrsERw9t6Pv5Nc
3
+ 4k6Pz1EaDicBMpdpxKduSZu5OANqUq8er4GM95omAGIOPOh+Nx0spthYA2BqGz+l
4
+ 6HRkPJ7S236FZz73In/KVuLnwI8JJ2CbuJap8kvheCCZpmAWpb/cPx/3Vr/J6I17
5
+ XcW+ML9FoCI6AOvOzwIDAQAB
6
+ -----END PUBLIC KEY-----`},71998:(a,b,c)=>{"use strict";c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.getProviderConnections,h1:()=>d.h1,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.updateProviderConnection,uv:()=>d.uv});var d=c(89718)},78335:()=>{},82578:(a,b,c)=>{"use strict";c.d(b,{FD:()=>n});var d=c(55511),e=c.n(d),f=c(73496),g=c.n(f),h=c(26070),i=c(81756),j=c(55456);let k=new Map;function l(a,b){let c=a.get(b)?.[0]?.value;return c&&"number"!=typeof c?Buffer.from(c).toString("utf8"):""}async function m(a,b){var c;let d,e=a?.accessToken,f=a?.providerSpecificData?.machineId,k=(d=h.sr.cursor,d?.agentEndpoint&&d?.modelsEndpoint?`${d.agentEndpoint.replace(/\/$/,"")}${d.modelsEndpoint}`:null);if(!e||!f||!k)return null;let m={...(0,i.JA)(e,f,a?.providerSpecificData?.ghostMode!==!1),accept:"application/proto","content-type":"application/proto"};delete m["connect-accept-encoding"],delete m["connect-protocol-version"];let n=await (c=new Uint8Array,new Promise((a,d)=>{let e=new URL(k),f=g().connect(`https://${e.host}`),h=[],i={},j=!1,l=a=>(...b)=>{if(!j){j=!0,clearTimeout(n);try{f.close()}catch{}a(...b)}},n=setTimeout(l(()=>{d(Error("Cursor GetUsableModels timed out"))}),1e4);f.on("error",l(d));let o=f.request({":method":"POST",":path":e.pathname,":authority":e.host,":scheme":"https",...m});if(o.on("response",a=>{i=a}),o.on("data",a=>{h.push(a)}),o.on("end",l(()=>{a({status:Number(i[":status"]||0),body:Buffer.concat(h)})})),o.on("error",l(d)),b){let a=l(()=>d(Error("Request aborted")));b.aborted?a():b.addEventListener("abort",a,{once:!0})}o.end(c&&c.length?Buffer.from(c):void 0)}));if(200!==n.status){let a=Error(`Cursor GetUsableModels returned ${n.status}`);throw a.status=n.status,a}return function(a){let b=(0,j.Y8)(a),c=new Set,d=[];for(let a of b.get(1)||[]){if(!a?.value||"number"==typeof a.value)continue;let b=(0,j.Y8)(a.value),e=l(b,1).trim();if(!e||c.has(e))continue;c.add(e);let f=(l(b,4)||l(b,5)||l(b,3)||e).trim();d.push({id:e,name:f})}return d}(new Uint8Array(n.body))}async function n(a,b={}){let c;if(!a?.accessToken||!a?.providerSpecificData?.machineId)return b.log?.debug?.("CURSOR_MODELS","No Cursor access token or machine ID; skipping live fetch"),null;let d=(c=[a?.providerSpecificData?.machineId,a?.accessToken].filter(Boolean).join(":"))?e().createHash("sha256").update(`cursor:${c}`).digest("hex"):"cursor-anonymous",f=Date.now();if(!b.forceRefresh){let a=k.get(d);if(a?.expiresAt>f)return{models:a.models}}try{let c=await m(a,b.signal);if(!c?.length)return null;return k.set(d,{expiresAt:f+3e5,models:c}),{models:c}}catch(a){return b.log?.warn?.("CURSOR_MODELS",`Live model fetch failed: ${a?.message||a}`),null}}},85081:(a,b,c)=>{"use strict";c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(50122);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){if((i=i||0)<0||i+16>c.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i},89718:(a,b,c)=>{"use strict";c.d(b,{Bf:()=>d.Bf,CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Um:()=>d.Um,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getApiKeyByKey:()=>d.mY,getProviderConnections:()=>d.P,getSettings:()=>d.mt,h1:()=>d.h1,hj:()=>d.hj,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,localStartOfDayIso:()=>d.Yq,lr:()=>d.lr,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,sV:()=>d.sV,sumApiKeyTokensSince:()=>d.ZQ,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,updateSettings:()=>d.Xx,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(27274)},94755:(a,b,c)=>{"use strict";c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},96487:()=>{}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=9451,exports.ids=[9451],exports.modules={39451:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(7841),i=c(76040);let j="stepfun",k="stepfun-cn";var l=c(34393),m=c(69128);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.ph)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.wu)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.HG)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(91117);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(33323);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.Wl)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},76040:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=9451,exports.ids=[9451],exports.modules={39451:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(7841),i=c(76040);let j="stepfun",k="stepfun-cn";var l=c(34393),m=c(69128);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.ph)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.wu)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.HG)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.Wl)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(91117);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(33323);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.Wl)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},76040:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=2,e=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",dailyTokenLimit:"INTEGER",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
@@ -2,6 +2,6 @@
2
2
  ${c}
3
3
  [End of summary — recent messages follow]`,e=a?.content;if(b===h.h.CLAUDE){let b=[];return b.push({type:"text",text:d}),"string"==typeof e&&e?b.push({type:"text",text:e}):Array.isArray(e)&&b.push(...e),{...a,content:b}}return"string"==typeof e?{...a,content:e?`${d}
4
4
 
5
- ${e}`:d}:Array.isArray(e)?{...a,content:[{type:"text",text:d},...e]}:{...a,content:d}}(x.tail[0],k,F.trim()),...x.tail.slice(1)],i.info("COMPACT",`${c}: est ${q}tok ≥ ${Math.round(100*v)}% of ${r.contextWindow} → summarized ${x.prefix.length} msgs, kept ${x.tail.length}`),!0):(i.warn("COMPACT",`empty summary for ${c} — sending original request`),!1)}},66489:(a,b,c)=>{c.d(b,{D3:()=>d.D3,SZ:()=>d.SZ,dW:()=>d.dW});var d=c(27274)},74388:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>B});var e=c(48895),f=c(80238),g=c(89718),h=c(12557),i=c(38775),j=c(49059),k=c(92500),l=c(3894),m=c(46634),n=c(74388),o=c(43659),p=c(48136),q=c(92812),r=c(54174),s=c(17603),t=c(27349),u=c(41004),v=c(14170),w=c(7803),x=c(67828),y=c(38160),z=c(46945),A=a([e,k]);async function B(a,b=null){let c;try{c=await a.json()}catch{return w.warn("CHAT","Invalid JSON body"),(0,o.yj)(u.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let{model:d,contextMarker:e}=(0,z.V)(c.model);e&&(c.model=d);let h=a.headers.get("Authorization"),j=(0,f.Tr)(a);if(h&&j){let a=w.maskKey(j);w.debug("AUTH",`API Key: ${a}`)}else w.debug("AUTH","No API key provided (local mode)");let k=await (0,g.getSettings)();if(k.requireApiKey){if(!j)return w.warn("AUTH","Missing API key (requireApiKey=true)"),(0,o.yj)(u.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(j))return w.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,o.yj)(u.gx.UNAUTHORIZED,"Invalid API key")}if(!d)return w.warn("CHAT","Missing model"),(0,o.yj)(u.gx.BAD_REQUEST,"Missing model");let l=a?.headers?.get("user-agent")||"",m=(0,t.c)(c,d,l,!!k.ccFilterNaming);if(m)return m.response||m;try{await (0,r.Yy)({request:a,body:c,modelStr:d,endpoint:b?.endpoint,settings:k})}catch(a){w.warn("COMPACT",`skipped: ${a?.message||a}`)}let n=(0,q.t8)(c),p=await (0,i.d_)(d);if(p){let e=k.comboStrategies||{},f=e[d]?.fallbackStrategy||k.comboStrategy||"fallback",g=(0,s.R8)(p,n,k),h=g.filter(a=>!p.includes(a));if("fusion"===f)return w.info("CHAT",`Combo "${d}" with ${p.length} models (strategy: fusion)`),(0,q.vt)({body:c,models:p,handleSingleModel:(c,d,e)=>{let f=b;if(e&&b){let{tools:a,tool_choice:c,...d}=b.body||{};f={...b,body:d}}return C(c,d,f,a,j)},log:w,comboName:d,judgeModel:e[d]?.judgeModel,tuning:e[d]?.fusionTuning});let i=k.comboStickyRoundRobinLimit,l=e[d]?.retryOnEmpty??k.comboRetryOnEmpty??!1,m=e[d]?.retryOnEmptyLimit??k.comboRetryOnEmptyLimit;return w.info("CHAT",`Combo "${d}" with ${g.length} models (strategy: ${f}, sticky: ${i})`),(0,q.Pr)({body:c,models:g,handleSingleModel:(0,s.ar)((c,d)=>C(c,d,b,a,j),h),log:w,comboName:d,comboStrategy:f,comboStickyLimit:i,retryOnEmpty:l,retryOnEmptyLimit:m})}let v=(0,s.R8)([d],n,k);if(v.length>1){let e=v.filter(a=>a!==d);return w.info("CHAT",`Capacity adapter for [${[...n].join(",")}] on "${d}" → trying ${v.join(", ")}`),(0,q.Pr)({body:c,models:v,handleSingleModel:(0,s.ar)((c,d)=>C(c,d,b,a,j),e),log:w,comboName:d,comboStrategy:(0,s.vB)(n,k)})}return C(c,d,b,a,j,{inferFallback:!1,requestedModel:e?`${d.slice(d.indexOf("/")+1)}[${e}]`:null})}async function C(a,b,c=null,d=null,e=null,{inferFallback:r=!0,requestedModel:t=null}={}){let z=await (0,i.mA)(b,{inferFallback:r});if(!z.provider){let f=await (0,i.d_)(b);if(f){let h=await (0,g.getSettings)(),i=h.comboStrategies||{},j=i[b]?.fallbackStrategy||h.comboStrategy||"fallback",k=(0,q.t8)(a),l=(0,s.R8)(f,k,h),m=l.filter(a=>!f.includes(a));if("fusion"===j)return w.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,q.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=c;if(f&&c){let{tools:a,tool_choice:b,...d}=c.body||{};g={...c,body:d}}return C(a,b,g,d,e)},log:w,comboName:b,judgeModel:i[b]?.judgeModel,tuning:i[b]?.fusionTuning});let n=h.comboStickyRoundRobinLimit,o=i[b]?.retryOnEmpty??h.comboRetryOnEmpty??!1,p=i[b]?.retryOnEmptyLimit??h.comboRetryOnEmptyLimit;return w.info("CHAT",`Combo "${b}" with ${l.length} models (strategy: ${j}, sticky: ${n})`),(0,q.Pr)({body:a,models:l,handleSingleModel:(0,s.ar)((a,b)=>C(a,b,c,d,e),m),log:w,comboName:b,comboStrategy:j,comboStickyLimit:n,retryOnEmpty:o,retryOnEmptyLimit:p})}return w.warn("CHAT","Unknown model",{model:b}),(0,o.yj)(u.gx.BAD_REQUEST,`Unknown model: "${b}". It is not in /v1/models — send a provider-prefixed model id from GET /v1/models.`)}let{provider:A,model:B}=z,D=d?.headers?.get("user-agent")||"",E=new Set,F=null,G=null,H=null;if("codebuddy-cn"===A&&(0,j.Fe)(a)){let b=(0,j.Jz)(a);w.warn("CHAT",`[${A}/${B}] payload exceeds extreme-size backstop (${b}); rejected locally`);let c=(0,h.vt)(`[${A}/${B}] 请求体积已达极端量级(${b}),已在本地拦截,避免触发上游渠道级风控。`);return(0,o.yj)(u.gx.BAD_REQUEST,c)}let I=await (0,g.Bf)(A);if((0,h.d5)(I)>0){let a=I.until,b=(0,h.Qo)(a);return w.warn("AUTH",`${A} | channel blocked (${b}) — skipping all accounts`),(0,o.wO)(u.gx.SERVICE_UNAVAILABLE,(0,h.vt)(`[${A}/${B}] 上游渠道风控临时冷却中(${b}自动解冻)`),a,b)}for(;;){let b=await (0,f.c1)(A,E,B,{requestedModel:t||B});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=F||b.lastError||"Unavailable",c=G||Number(b.lastErrorCode)||u.gx.SERVICE_UNAVAILABLE;return w.warn("CHAT",`[${A}/${B}] ${a} (${b.retryAfterHuman})`),(0,o.wO)(c,(0,h.Hu)(`[${A}/${B}] ${a}`,A),b.retryAfter,b.retryAfterHuman,H)}if(0===E.size)return w.warn("AUTH",`No active credentials for provider: ${A}`),(0,o.yj)(u.gx.NOT_FOUND,`No active credentials for provider: ${A}`);return w.warn("CHAT","No more accounts available",{provider:A}),(0,o.yj)(G||u.gx.SERVICE_UNAVAILABLE,(0,h.Hu)(F||"All accounts unavailable",A),H)}let i=await (0,x.checkAndRefreshToken)(A,b);if(("antigravity"===A||"gemini-cli"===A)&&!i.projectId){let a=await (0,y.eG)(b.connectionId,i.accessToken,A);a&&(i.projectId=a,(0,x.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let j=await (0,g.getSettings)(),q=(j.providerThinking||{})[A]||null,r=await (0,k.wk)({body:{...a,model:`${A}/${B}`},modelInfo:{provider:A,model:B},credentials:i,log:w,clientRawRequest:c,connectionId:b.connectionId,userAgent:D,apiKey:e,ccFilterNaming:!!j.ccFilterNaming,rtkEnabled:!!j.rtkEnabled,headroomEnabled:!!j.headroomEnabled,headroomUrl:j.headroomUrl||l.ag,headroomCompressUserMessages:!!j.headroomCompressUserMessages,cavemanEnabled:!!j.cavemanEnabled,cavemanLevel:j.cavemanLevel||"full",ponytailEnabled:!!j.ponytailEnabled,ponytailLevel:j.ponytailLevel||"full",pxpipeEnabled:!!j.pxpipeEnabled,pxpipeMinChars:j.pxpipeMinChars,pxpipeTimeoutMs:j.pxpipeTimeoutMs,pxpipeTransform:j.pxpipeEnabled?await (0,m.RG)():null,onPxpipeEvent:n.T0,providerThinking:q,sourceFormatOverride:d?.url?(0,v.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,x.vN)(b.connectionId,{...a,existingProviderSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,B);let a=await (0,g.Bf)(A)!==null;await (0,g.Um)(A),a&&await (0,f.C$)(A)}});if(r.success)return r.response;let{shouldFallback:s,channelScope:z}=await (0,f.vk)(b.connectionId,r.status,r.error,A,B,r.resetsAtMs);if(s&&z){let a=await (0,g.Bf)(A),b=(0,h.pT)(a);await (0,g.hj)(A,b);let c=(0,h.Qo)(b.until);return w.warn("AUTH",`${A} | channel blocked for ${Math.round(b.durationMs/1e3)}s (strike ${b.strikes}${b.escalated?", escalated":""}) — aborting account fallback`),w.warn("CHAT",`[${A}/${B}] ${r.error} (channel blocked, ${c})`),(0,o.wO)(r.status||u.gx.SERVICE_UNAVAILABLE,(0,h.vt)(`[${A}/${B}] ${r.error}`),b.until,c)}if(s){w.warn("FALLBACK",`⇄ ACC:${b.connectionName} UNAVAILABLE (${r.status}) → NEXT ACCOUNT`),E.add(b.connectionId),F=r.error,G=r.status,H=(0,p.d)(r.response?.headers);continue}return r.response}}[e,k]=A.then?(await A)():A,d()}catch(a){d(a)}})},87155:(a,b,c)=>{c.d(b,{CG:()=>q,ED:()=>u,S1:()=>s,XF:()=>j,_g:()=>t,no:()=>r,sW:()=>w});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.nJ,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),o=null;function p(){return g().join(j,"node_modules",k)}function q(){return g().join(p(),"dist","core","library.js")}function r(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:n}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function s(){try{let a=g().join(p(),"package.json");if(!e().existsSync(a)||!e().existsSync(q()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:p()}}catch{return{installed:!1,version:null,path:null}}}function t(){return null!==o}function u(){return o||(o=v().finally(()=>{o=null}))}async function v(){let a=r();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"10router-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
5
+ ${e}`:d}:Array.isArray(e)?{...a,content:[{type:"text",text:d},...e]}:{...a,content:d}}(x.tail[0],k,F.trim()),...x.tail.slice(1)],i.info("COMPACT",`${c}: est ${q}tok ≥ ${Math.round(100*v)}% of ${r.contextWindow} → summarized ${x.prefix.length} msgs, kept ${x.tail.length}`),!0):(i.warn("COMPACT",`empty summary for ${c} — sending original request`),!1)}},66489:(a,b,c)=>{c.d(b,{D3:()=>d.D3,SZ:()=>d.SZ,dW:()=>d.dW});var d=c(27274)},74388:(a,b,c)=>{c.d(b,{Az:()=>l,SP:()=>o,T0:()=>k});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(87155);let i=g().join(h.XF,"events.jsonl"),j=g().join(h.XF,"events.jsonl.1");function k(a){try{e().existsSync(h.XF)||e().mkdirSync(h.XF,{recursive:!0});try{e().statSync(i).size>5242880&&e().renameSync(i,j)}catch{}e().appendFile(i,JSON.stringify({ts:Date.now(),...a})+"\n",()=>{})}catch{}}function l({sinceMs:a=null,limit:b=null}={}){let c=[];for(let b of[j,i])try{if(!e().existsSync(b))continue;for(let d of e().readFileSync(b,"utf8").split("\n"))if(d)try{let b=JSON.parse(d);if(a&&b.ts<a)continue;c.push(b)}catch{}}catch{}return c.sort((a,b)=>a.ts-b.ts),b?c.slice(-b):c}function m(){return{requests:0,compressed:0,bypassed:0,errors:0,tokensBeforeEst:0,tokensAfterEst:0,tokensSavedEst:0,savedPct:0,imagesGenerated:0,compressionTimeMs:0,avgCompressionMs:0}}function n(a,b){a.requests++,b.applied?(a.compressed++,a.tokensBeforeEst+=b.tokensBeforeEst||0,a.tokensAfterEst+=b.tokensAfterEst||0,a.tokensSavedEst+=b.tokensSavedEst||0,a.imagesGenerated+=b.imageCount||0,a.compressionTimeMs+=b.durationMs||0):"transform_error"===b.reason||"timeout"===b.reason?a.errors++:a.bypassed++}function o({timelineDays:a=30,recentLimit:b=100}={}){let c=l(),d=Date.now(),e=new Date(new Date(d).setHours(0,0,0,0)).getTime(),f={all:m(),today:m(),yesterday:m(),last7d:m(),last30d:m()},g=new Map;for(let b=a-1;b>=0;b--){let a=new Date(e-864e5*b);g.set(a.toISOString().slice(0,10),{date:a.toISOString().slice(0,10),tokensSavedEst:0,compressed:0,requests:0})}for(let a of c){n(f.all,a),a.ts>=e?n(f.today,a):a.ts>=e-864e5&&n(f.yesterday,a),a.ts>=d-6048e5&&n(f.last7d,a),a.ts>=d-2592e6&&n(f.last30d,a);let b=new Date(a.ts).toISOString().slice(0,10),c=g.get(b);c&&(c.requests++,a.applied&&(c.compressed++,c.tokensSavedEst+=a.tokensSavedEst||0))}for(let a of Object.values(f))a.savedPct=a.tokensBeforeEst>0?+(a.tokensSavedEst/a.tokensBeforeEst*100).toFixed(2):0,a.avgCompressionMs=a.compressed>0?Math.round(a.compressionTimeMs/a.compressed):0;return{windows:f,timeline:[...g.values()],recent:c.slice(-b).reverse()}}},79489:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>B});var e=c(48895),f=c(40542),g=c(89718),h=c(12557),i=c(38775),j=c(49059),k=c(92500),l=c(3894),m=c(46634),n=c(74388),o=c(43659),p=c(48136),q=c(92812),r=c(54174),s=c(17603),t=c(27349),u=c(41004),v=c(14170),w=c(7803),x=c(67828),y=c(38160),z=c(46945),A=a([e,k]);async function B(a,b=null){let c;try{c=await a.json()}catch{return w.warn("CHAT","Invalid JSON body"),(0,o.yj)(u.gx.BAD_REQUEST,"Invalid JSON body")}b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())});let{model:d,contextMarker:e}=(0,z.V)(c.model);e&&(c.model=d);let h=a.headers.get("Authorization"),j=(0,f.Tr)(a);if(h&&j){let a=w.maskKey(j);w.debug("AUTH",`API Key: ${a}`)}else w.debug("AUTH","No API key provided (local mode)");let k=await (0,g.getSettings)();if(k.requireApiKey){if(!j)return w.warn("AUTH","Missing API key (requireApiKey=true)"),(0,o.yj)(u.gx.UNAUTHORIZED,"Missing API key");if(!await (0,f.kI)(j))return w.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,o.yj)(u.gx.UNAUTHORIZED,"Invalid API key")}let l=await (0,f.uO)(j,{request:a,model:d});if(l)return l;if(!d)return w.warn("CHAT","Missing model"),(0,o.yj)(u.gx.BAD_REQUEST,"Missing model");let m=a?.headers?.get("user-agent")||"",n=(0,t.c)(c,d,m,!!k.ccFilterNaming);if(n)return n.response||n;try{await (0,r.Yy)({request:a,body:c,modelStr:d,endpoint:b?.endpoint,settings:k})}catch(a){w.warn("COMPACT",`skipped: ${a?.message||a}`)}let p=(0,q.t8)(c),v=await (0,i.d_)(d);if(v){let e=k.comboStrategies||{},f=e[d]?.fallbackStrategy||k.comboStrategy||"fallback",g=(0,s.R8)(v,p,k),h=g.filter(a=>!v.includes(a));if("fusion"===f)return w.info("CHAT",`Combo "${d}" with ${v.length} models (strategy: fusion)`),(0,q.vt)({body:c,models:v,handleSingleModel:(c,d,e)=>{let f=b;if(e&&b){let{tools:a,tool_choice:c,...d}=b.body||{};f={...b,body:d}}return C(c,d,f,a,j)},log:w,comboName:d,judgeModel:e[d]?.judgeModel,tuning:e[d]?.fusionTuning});let i=k.comboStickyRoundRobinLimit,l=e[d]?.retryOnEmpty??k.comboRetryOnEmpty??!1,m=e[d]?.retryOnEmptyLimit??k.comboRetryOnEmptyLimit;return w.info("CHAT",`Combo "${d}" with ${g.length} models (strategy: ${f}, sticky: ${i})`),(0,q.Pr)({body:c,models:g,handleSingleModel:(0,s.ar)((c,d)=>C(c,d,b,a,j),h),log:w,comboName:d,comboStrategy:f,comboStickyLimit:i,retryOnEmpty:l,retryOnEmptyLimit:m})}let x=(0,s.R8)([d],p,k);if(x.length>1){let e=x.filter(a=>a!==d);return w.info("CHAT",`Capacity adapter for [${[...p].join(",")}] on "${d}" → trying ${x.join(", ")}`),(0,q.Pr)({body:c,models:x,handleSingleModel:(0,s.ar)((c,d)=>C(c,d,b,a,j),e),log:w,comboName:d,comboStrategy:(0,s.vB)(p,k)})}return C(c,d,b,a,j,{inferFallback:!1,requestedModel:e?`${d.slice(d.indexOf("/")+1)}[${e}]`:null})}async function C(a,b,c=null,d=null,e=null,{inferFallback:r=!0,requestedModel:t=null}={}){let z=await (0,i.mA)(b,{inferFallback:r});if(!z.provider){let f=await (0,i.d_)(b);if(f){let h=await (0,g.getSettings)(),i=h.comboStrategies||{},j=i[b]?.fallbackStrategy||h.comboStrategy||"fallback",k=(0,q.t8)(a),l=(0,s.R8)(f,k,h),m=l.filter(a=>!f.includes(a));if("fusion"===j)return w.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,q.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=c;if(f&&c){let{tools:a,tool_choice:b,...d}=c.body||{};g={...c,body:d}}return C(a,b,g,d,e)},log:w,comboName:b,judgeModel:i[b]?.judgeModel,tuning:i[b]?.fusionTuning});let n=h.comboStickyRoundRobinLimit,o=i[b]?.retryOnEmpty??h.comboRetryOnEmpty??!1,p=i[b]?.retryOnEmptyLimit??h.comboRetryOnEmptyLimit;return w.info("CHAT",`Combo "${b}" with ${l.length} models (strategy: ${j}, sticky: ${n})`),(0,q.Pr)({body:a,models:l,handleSingleModel:(0,s.ar)((a,b)=>C(a,b,c,d,e),m),log:w,comboName:b,comboStrategy:j,comboStickyLimit:n,retryOnEmpty:o,retryOnEmptyLimit:p})}return w.warn("CHAT","Unknown model",{model:b}),(0,o.yj)(u.gx.BAD_REQUEST,`Unknown model: "${b}". It is not in /v1/models — send a provider-prefixed model id from GET /v1/models.`)}let{provider:A,model:B}=z,D=d?.headers?.get("user-agent")||"",E=new Set,F=null,G=null,H=null;if("codebuddy-cn"===A&&(0,j.Fe)(a)){let b=(0,j.Jz)(a);w.warn("CHAT",`[${A}/${B}] payload exceeds extreme-size backstop (${b}); rejected locally`);let c=(0,h.vt)(`[${A}/${B}] 请求体积已达极端量级(${b}),已在本地拦截,避免触发上游渠道级风控。`);return(0,o.yj)(u.gx.BAD_REQUEST,c)}let I=await (0,g.Bf)(A);if((0,h.d5)(I)>0){let a=I.until,b=(0,h.Qo)(a);return w.warn("AUTH",`${A} | channel blocked (${b}) — skipping all accounts`),(0,o.wO)(u.gx.SERVICE_UNAVAILABLE,(0,h.vt)(`[${A}/${B}] 上游渠道风控临时冷却中(${b}自动解冻)`),a,b)}for(;;){let b=await (0,f.c1)(A,E,B,{requestedModel:t||B});if(!b||b.allRateLimited){if(b?.allRateLimited){let a=F||b.lastError||"Unavailable",c=G||Number(b.lastErrorCode)||u.gx.SERVICE_UNAVAILABLE;return w.warn("CHAT",`[${A}/${B}] ${a} (${b.retryAfterHuman})`),(0,o.wO)(c,(0,h.Hu)(`[${A}/${B}] ${a}`,A),b.retryAfter,b.retryAfterHuman,H)}if(0===E.size)return w.warn("AUTH",`No active credentials for provider: ${A}`),(0,o.yj)(u.gx.NOT_FOUND,`No active credentials for provider: ${A}`);return w.warn("CHAT","No more accounts available",{provider:A}),(0,o.yj)(G||u.gx.SERVICE_UNAVAILABLE,(0,h.Hu)(F||"All accounts unavailable",A),H)}let i=await (0,x.checkAndRefreshToken)(A,b);if(("antigravity"===A||"gemini-cli"===A)&&!i.projectId){let a=await (0,y.eG)(b.connectionId,i.accessToken,A);a&&(i.projectId=a,(0,x.vN)(b.connectionId,{projectId:a}).catch(()=>{}))}let j=await (0,g.getSettings)(),q=(j.providerThinking||{})[A]||null,r=await (0,k.wk)({body:{...a,model:`${A}/${B}`},modelInfo:{provider:A,model:B},credentials:i,log:w,clientRawRequest:c,connectionId:b.connectionId,userAgent:D,apiKey:e,ccFilterNaming:!!j.ccFilterNaming,rtkEnabled:!!j.rtkEnabled,headroomEnabled:!!j.headroomEnabled,headroomUrl:j.headroomUrl||l.ag,headroomCompressUserMessages:!!j.headroomCompressUserMessages,cavemanEnabled:!!j.cavemanEnabled,cavemanLevel:j.cavemanLevel||"full",ponytailEnabled:!!j.ponytailEnabled,ponytailLevel:j.ponytailLevel||"full",pxpipeEnabled:!!j.pxpipeEnabled,pxpipeMinChars:j.pxpipeMinChars,pxpipeTimeoutMs:j.pxpipeTimeoutMs,pxpipeTransform:j.pxpipeEnabled?await (0,m.RG)():null,onPxpipeEvent:n.T0,providerThinking:q,sourceFormatOverride:d?.url?(0,v.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,x.Xg)(b.connectionId,a,{providerSpecificData:b.providerSpecificData,provider:A,log:w})},onCredentialsRefreshFailed:async a=>{await (0,x.Ug)(b.connectionId,{provider:A,reason:a,log:w})},onRequestSuccess:async()=>{await (0,f.Pt)(b.connectionId,b,B);let a=await (0,g.Bf)(A)!==null;await (0,g.Um)(A),a&&await (0,f.C$)(A)}});if(r.success)return r.response;let{shouldFallback:s,channelScope:z}=await (0,f.vk)(b.connectionId,r.status,r.error,A,B,r.resetsAtMs);if(s&&z){let a=await (0,g.Bf)(A),b=(0,h.pT)(a);await (0,g.hj)(A,b);let c=(0,h.Qo)(b.until);return w.warn("AUTH",`${A} | channel blocked for ${Math.round(b.durationMs/1e3)}s (strike ${b.strikes}${b.escalated?", escalated":""}) — aborting account fallback`),w.warn("CHAT",`[${A}/${B}] ${r.error} (channel blocked, ${c})`),(0,o.wO)(r.status||u.gx.SERVICE_UNAVAILABLE,(0,h.vt)(`[${A}/${B}] ${r.error}`),b.until,c)}if(s){w.warn("FALLBACK",`⇄ ACC:${b.connectionName} UNAVAILABLE (${r.status}) → NEXT ACCOUNT`),E.add(b.connectionId),F=r.error,G=r.status,H=(0,p.d)(r.response?.headers);continue}return r.response}}[e,k]=A.then?(await A)():A,d()}catch(a){d(a)}})},87155:(a,b,c)=>{c.d(b,{CG:()=>q,ED:()=>u,S1:()=>s,XF:()=>j,_g:()=>t,no:()=>r,sW:()=>w});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(79646),i=c(49120);let j=g().join(i.nJ,"pxpipe"),k="pxpipe-proxy",l=g().join(j,"install.log"),m="win32"===process.platform,n=[...m?[`${process.env.ProgramFiles||""}\\nodejs`,`${process.env.APPDATA||""}\\npm`]:["/usr/local/bin","/opt/homebrew/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],process.env.PATH||""].filter(Boolean).join(g().delimiter),o=null;function p(){return g().join(j,"node_modules",k)}function q(){return g().join(p(),"dist","core","library.js")}function r(){try{let a=(0,h.execSync)(`${m?"where":"which"} npm`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:n}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function s(){try{let a=g().join(p(),"package.json");if(!e().existsSync(a)||!e().existsSync(q()))return{installed:!1,version:null,path:null};let b=JSON.parse(e().readFileSync(a,"utf8"));return{installed:!0,version:b.version||null,path:p()}}catch{return{installed:!1,version:null,path:null}}}function t(){return null!==o}function u(){return o||(o=v().finally(()=>{o=null}))}async function v(){let a=r();if(!a){let a=Error("npm not found on PATH — Node.js/npm is required to install PXPIPE");throw a.code="NPM_NOT_FOUND",a}e().existsSync(j)||e().mkdirSync(j,{recursive:!0});let b=g().join(j,"package.json");e().existsSync(b)||e().writeFileSync(b,JSON.stringify({name:"10router-pxpipe-host",private:!0},null,2));let c=e().openSync(l,"a");e().writeSync(c,`
6
6
  [${new Date().toISOString()}] npm install ${k}@latest
7
7
  `),await new Promise((b,d)=>{let e=(0,h.spawn)(a,["install",`${k}@latest`,"--no-audit","--no-fund","--omit=dev"],{cwd:j,stdio:["ignore",c,c],windowsHide:!0,env:{...process.env,PATH:n}}),f=setTimeout(()=>{e.kill("SIGKILL"),d(Error("npm install timed out after 5 minutes — see install.log"))},3e5);e.once("error",a=>{clearTimeout(f),d(a)}),e.once("exit",a=>{clearTimeout(f),0===a?b():d(Error(`npm install exited with code ${a} — see install.log`))})}).finally(()=>e().closeSync(c));let d=s();if(!d.installed)throw Error("install finished but package is missing — see install.log");return d}function w(a=200){try{if(!e().existsSync(l))return"";return e().readFileSync(l,"utf8").split(/\r?\n/).filter(Boolean).slice(-a).join("\n")}catch{return""}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=9609,exports.ids=[9609],exports.modules={3662:(a,b,c)=>{c.d(b,{$e:()=>i,Dt:()=>k,EQ:()=>f,LY:()=>d,O:()=>e,X8:()=>j,fh:()=>h,t2:()=>l,wf:()=>g});let d={400:{type:"invalid_request_error",code:"bad_request"},401:{type:"authentication_error",code:"invalid_api_key"},402:{type:"billing_error",code:"payment_required"},403:{type:"permission_error",code:"insufficient_quota"},404:{type:"invalid_request_error",code:"model_not_found"},406:{type:"invalid_request_error",code:"model_not_supported"},429:{type:"rate_limit_error",code:"rate_limit_exceeded"},500:{type:"server_error",code:"internal_server_error"},502:{type:"server_error",code:"bad_gateway"},503:{type:"server_error",code:"service_unavailable"},504:{type:"server_error",code:"gateway_timeout"}},e={400:"Bad request",401:"Invalid API key provided",402:"Payment required",403:"You exceeded your current quota",404:"Not found (wrong endpoint path, or the model does not exist)",406:"Model not supported",429:"Rate limit exceeded",500:"Internal server error",502:"Bad gateway - upstream provider error",503:"Service temporarily unavailable",504:"Gateway timeout"},f={base:2e3,max:3e5,maxLevel:15},g=3e4,h=18e5,i=864e5,j={short:6e4,long:6e5},k=3e5,l=[{provider:"codex",text:"model is not supported when using codex with a chatgpt account",cooldownMs:18e5},{text:"no credentials",cooldownMs:12e4},{text:"request not allowed",cooldownMs:5e3},{text:"unapproved channel",channelScope:!0,cooldownMs:j.short},{text:"illegal api invocation",channelScope:!0,cooldownMs:j.short},{text:"improperly formed request",cooldownMs:12e4},{text:"mimo desktop account",cooldownMs:0},{text:"rate limit",backoff:!0},{text:"too many requests",backoff:!0},{text:"quota exceeded",backoff:!0},{text:"capacity",backoff:!0},{text:"overloaded",backoff:!0},{status:401,cooldownMs:12e4},{status:402,cooldownMs:12e4},{status:403,cooldownMs:12e4},{status:404,cooldownMs:12e4},{status:429,backoff:!0}]},39609:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map,h=new Map,i=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function n(a){let b=k(a);return b?/^[a-z][a-z0-9+.-]*:\/\//i.test(b)?b:`http://${b}`:null}async function o(a){let b=n(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19));g.set(b,new a({uri:b}))}return g.get(b)}async function p(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,23)),g=await Promise.resolve().then(c.t.bind(c,91645,23)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(a)}catch{}console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}if(j)return f(a,b)}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(d){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${d.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(d)}catch{}return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${d.message}`),f(a,b)}let r=c?.proxyPoolId||c?.enabled===!0||c?.connectionProxyEnabled===!0||!!k(c?.url??c?.connectionProxyUrl);if(c?.strictProxy===!0&&r)throw Error("[ProxyFetch] Proxy required but none resolved (strictProxy=true)");return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},41004:(a,b,c)=>{c.d(b,{$m:()=>k,C8:()=>s,DR:()=>r,IK:()=>l,Ps:()=>g,SA:()=>p,Uc:()=>m,Yy:()=>o,Z1:()=>i,cI:()=>q,eo:()=>n,gx:()=>d,pH:()=>j,v1:()=>e,xM:()=>h}),c(3662);let d={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},e={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20};function f(a,b){let c=process.env[a];if(null==c||""===c)return b;let d=parseInt(c,10);return Number.isFinite(d)&&d>0?d:b}let g=process.env.SEARXNG_URL?.trim()||"http://localhost:8888/search",h=f("STREAM_STALL_TIMEOUT_MS",12e4),i=f("STREAM_FIRST_CHUNK_TIMEOUT_MS",2e5),j=f("FETCH_CONNECT_TIMEOUT_MS",6e4),k=f("PENDING_COMPLETION_FLUSH_MS",3e3),l=f("GEMINI_NATIVE_TTS_FETCH_TIMEOUT_MS",45e3),m=64e3,n=32e3,o=256,p="x-9router-token-saver",q={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}};function r(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:a.attempts||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let s=["Please write a 5-10 word title for the following conversation:"]}};
1
+ "use strict";exports.id=9609,exports.ids=[9609],exports.modules={39609:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(41004);let f=globalThis.fetch,g=new Map,h=new Map,i=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").map(a=>a.trim().toLowerCase()).filter(Boolean).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function n(a){let b=k(a);return b?/^[a-z][a-z0-9+.-]*:\/\//i.test(b)?b:`http://${b}`:null}async function o(a){let b=n(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(7774).then(c.t.bind(c,47774,19));g.set(b,new a({uri:b}))}return g.get(b)}async function p(a,b,e){let f=await Promise.resolve().then(c.t.bind(c,55591,23)),g=await Promise.resolve().then(c.t.bind(c,91645,23)),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(a)}catch{}console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}if(j)return f(a,b)}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(d){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${d.message}`);if(c?.onProxyFallback)try{c.onProxyFallback(d)}catch{}return console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${d.message}`),f(a,b)}let r=c?.proxyPoolId||c?.enabled===!0||c?.connectionProxyEnabled===!0||!!k(c?.url??c?.connectionProxyUrl);if(c?.strictProxy===!0&&r)throw Error("[ProxyFetch] Proxy required but none resolved (strictProxy=true)");return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},41004:(a,b,c)=>{c.d(b,{$m:()=>k,C8:()=>s,DR:()=>r,IK:()=>l,Ps:()=>g,SA:()=>p,Uc:()=>m,Yy:()=>o,Z1:()=>i,cI:()=>q,eo:()=>n,gx:()=>d,pH:()=>j,v1:()=>e,xM:()=>h}),c(3662);let d={BAD_REQUEST:400,UNAUTHORIZED:401,PAYMENT_REQUIRED:402,FORBIDDEN:403,NOT_FOUND:404,NOT_ACCEPTABLE:406,REQUEST_TIMEOUT:408,RATE_LIMITED:429,SERVER_ERROR:500,BAD_GATEWAY:502,SERVICE_UNAVAILABLE:503,GATEWAY_TIMEOUT:504},e={sessionTtlMs:72e5,sessionCleanupIntervalMs:18e5,dnsCacheTtlMs:3e5,proxyDispatchersMaxSize:20};function f(a,b){let c=process.env[a];if(null==c||""===c)return b;let d=parseInt(c,10);return Number.isFinite(d)&&d>0?d:b}let g=process.env.SEARXNG_URL?.trim()||"http://localhost:8888/search",h=f("STREAM_STALL_TIMEOUT_MS",12e4),i=f("STREAM_FIRST_CHUNK_TIMEOUT_MS",2e5),j=f("FETCH_CONNECT_TIMEOUT_MS",6e4),k=f("PENDING_COMPLETION_FLUSH_MS",3e3),l=f("GEMINI_NATIVE_TTS_FETCH_TIMEOUT_MS",45e3),m=64e3,n=32e3,o=256,p="x-9router-token-saver",q={429:{attempts:0,delayMs:0},502:{attempts:3,delayMs:3e3},503:{attempts:3,delayMs:2e3},504:{attempts:2,delayMs:3e3}};function r(a){return null==a?{attempts:0,delayMs:2e3}:"number"==typeof a?{attempts:a,delayMs:2e3}:{attempts:a.attempts||0,delayMs:null!=a.delayMs?a.delayMs:2e3}}let s=["Please write a 5-10 word title for the following conversation:"]}};
@@ -1 +1 @@
1
- "use strict";exports.id=9628,exports.ids=[9628],exports.modules={57247:(a,b,c)=>{c.d(b,{KC:()=>s,OA:()=>o,PROVIDER_ID_TO_ALIAS:()=>r,PROVIDER_MODELS:()=>f.vq,SM:()=>i,cY:()=>t,ez:()=>n,fZ:()=>j,kt:()=>p,ux:()=>m});var d=c(35024),e=c(10682),f=c(26070),g=c(99511),h=c(59096);function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];return c?(0,g.ec)(l(c,b,a)):null}function o(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function p(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,g=l(f.vq[a],e,a),i=g?.upstreamModelId||g?.id;if(i){let a=i.match(/\([^()]+\)\s*$/),b=a?.[0]||"";return(b?i.slice(0,a.index).trim():i)+(d||b)}return"cx"===a&&"string"==typeof e&&e.endsWith(h.d5)?e.slice(0,-h.d5.length)+d:e+d}let q=Object.fromEntries(e.default.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),r=Object.fromEntries(Object.keys(d.xq).map(a=>[a,q[a]||a]));function s(a){let b=r[a]||a;return f.vq[b]||[]}function t(a,b){return(0,g.g5)(l(f.vq[a],b,a))}},59096:(a,b,c)=>{c.d(b,{d5:()=>d,nh:()=>e,wR:()=>f});let d="-review";function e(a){if(!a||"string"!=typeof a)return!1;let b=a.replace(/\([^()]+\)\s*$/,"").trim(),c=b.includes("/")?b.split("/").pop():b;return/^muse[-_]?spark(?:$|[-_:.\s])/i.test(c)}function f(a){if(!a||"string"!=typeof a)return!1;let b=a.replace(/\([^()]+\)\s*$/,"").trim(),c=b.includes("/")?b.split("/").pop():b;return/^deepseek-/i.test(c)}}};
1
+ "use strict";exports.id=9628,exports.ids=[9628],exports.modules={57247:(a,b,c)=>{c.d(b,{KC:()=>t,OA:()=>p,PROVIDER_ID_TO_ALIAS:()=>s,PROVIDER_MODELS:()=>f.vq,SM:()=>i,cY:()=>u,ez:()=>o,fZ:()=>j,kt:()=>q,ux:()=>n});var d=c(35024),e=c(10682),f=c(26070),g=c(99511),h=c(59096);function i(a){return m(a)||[]}function j(a){let b=m(a);return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a){if(!a)return null;let b=f.vq[a];if(b)return b;let c=s[a];return c&&f.vq[c]||null}function n(a,b){let c=m(a);return c?(0,g.gr)(l(c,b,a)):null}function o(a,b){let c=m(a);return c?(0,g.ec)(l(c,b,a)):null}function p(a,b){let c=m(a);if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function q(a,b){let c="string"==typeof b?b.match(/\([^()]+\)\s*$/):null,d=c?c[0]:"",e=d?b.slice(0,c.index).trim():b,f=l(m(a),e,a),g=f?.upstreamModelId||f?.id;if(g){let a=g.match(/\([^()]+\)\s*$/),b=a?.[0]||"";return(b?g.slice(0,a.index).trim():g)+(d||b)}return"cx"===a&&"string"==typeof e&&e.endsWith(h.d5)?e.slice(0,-h.d5.length)+d:e+d}let r=Object.fromEntries(e.default.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),s=Object.fromEntries(Object.keys(d.xq).map(a=>[a,r[a]||a]));function t(a){let b=s[a]||a;return f.vq[b]||[]}function u(a,b){return(0,g.g5)(l(m(a),b,a))}},59096:(a,b,c)=>{c.d(b,{d5:()=>d,nh:()=>e,wR:()=>f});let d="-review";function e(a){if(!a||"string"!=typeof a)return!1;let b=a.replace(/\([^()]+\)\s*$/,"").trim(),c=b.includes("/")?b.split("/").pop():b;return/^muse[-_]?spark(?:$|[-_:.\s])/i.test(c)}function f(a){if(!a||"string"!=typeof a)return!1;let b=a.replace(/\([^()]+\)\s*$/,"").trim(),c=b.includes("/")?b.split("/").pop():b;return/^deepseek-/i.test(c)}}};
@@ -0,0 +1 @@
1
+ exports.id=9713,exports.ids=[9713],exports.modules={19713:function(a,b,c){a.exports=function(a,b){var d=[function(a,b,c){a.exports=c(34)},function(a,b,c){var d=c(29)("wks"),e=c(33),f=c(2).Symbol,g="function"==typeof f;(a.exports=function(a){return d[a]||(d[a]=g&&f[a]||(g?f:e)("Symbol."+a))}).store=d},function(a,b){var c=a.exports="u">typeof window&&window.Math==Math?window:"u">typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=c)},function(a,b,c){var d=c(9);a.exports=function(a){if(!d(a))throw TypeError(a+" is not an object!");return a}},function(a,b,c){a.exports=!c(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b,c){var d=c(12),e=c(17);a.exports=c(4)?function(a,b,c){return d.f(a,b,e(1,c))}:function(a,b,c){return a[b]=c,a}},function(a,b){var c=a.exports={version:"2.4.0"};"number"==typeof __e&&(__e=c)},function(a,b,c){var d=c(14);a.exports=function(a,b,c){if(d(a),void 0===b)return a;switch(c){case 1:return function(c){return a.call(b,c)};case 2:return function(c,d){return a.call(b,c,d)};case 3:return function(c,d,e){return a.call(b,c,d,e)}}return function(){return a.apply(b,arguments)}}},function(a,b){var c={}.hasOwnProperty;a.exports=function(a,b){return c.call(a,b)}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(a,b){a.exports={}},function(a,b){var c={}.toString;a.exports=function(a){return c.call(a).slice(8,-1)}},function(a,b,c){var d=c(3),e=c(26),f=c(32),g=Object.defineProperty;b.f=c(4)?Object.defineProperty:function(a,b,c){if(d(a),b=f(b,!0),d(c),e)try{return g(a,b,c)}catch(a){}if("get"in c||"set"in c)throw TypeError("Accessors not supported!");return"value"in c&&(a[b]=c.value),a}},function(a,b,c){var d=c(42),e=c(15);a.exports=function(a){return d(e(a))}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(a,b){a.exports=function(a){if(void 0==a)throw TypeError("Can't call method on "+a);return a}},function(a,b,c){var d=c(9),e=c(2).document,f=d(e)&&d(e.createElement);a.exports=function(a){return f?e.createElement(a):{}}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,b,c){var d=c(12).f,e=c(8),f=c(1)("toStringTag");a.exports=function(a,b,c){a&&!e(a=c?a:a.prototype,f)&&d(a,f,{configurable:!0,value:b})}},function(a,b,c){var d=c(29)("keys"),e=c(33);a.exports=function(a){return d[a]||(d[a]=e(a))}},function(a,b){var c=Math.ceil,d=Math.floor;a.exports=function(a){return isNaN(a*=1)?0:(a>0?d:c)(a)}},function(a,b,c){var d=c(11),e=c(1)("toStringTag"),f="Arguments"==d(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(a){}};a.exports=function(a){var b,c,h;return void 0===a?"Undefined":null===a?"Null":"string"==typeof(c=g(b=Object(a),e))?c:f?d(b):"Object"==(h=d(b))&&"function"==typeof b.callee?"Arguments":h}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(a,b,c){var d=c(2),e=c(6),f=c(7),g=c(5),h="prototype",i=function(a,b,c){var j,k,l,m=a&i.F,n=a&i.G,o=a&i.S,p=a&i.P,q=a&i.B,r=a&i.W,s=n?e:e[b]||(e[b]={}),t=s[h],u=n?d:o?d[b]:(d[b]||{})[h];for(j in n&&(c=b),c)(k=!m&&u&&void 0!==u[j])&&j in s||(l=k?u[j]:c[j],s[j]=n&&"function"!=typeof u[j]?c[j]:q&&k?f(l,d):r&&u[j]==l?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[h]=a[h],b}(l):p&&"function"==typeof l?f(Function.call,l):l,p&&((s.virtual||(s.virtual={}))[j]=l,a&i.R&&t&&!t[j]&&g(t,j,l)))};i.F=1,i.G=2,i.S=4,i.P=8,i.B=16,i.W=32,i.U=64,i.R=128,a.exports=i},function(a,b){a.exports=function(a){try{return!!a()}catch(a){return!0}}},function(a,b,c){a.exports=c(2).document&&document.documentElement},function(a,b,c){a.exports=!c(4)&&!c(24)(function(){return 7!=Object.defineProperty(c(16)("div"),"a",{get:function(){return 7}}).a})},function(a,b,c){"use strict";var d=c(28),e=c(23),f=c(57),g=c(5),h=c(8),i=c(10),j=c(45),k=c(18),l=c(52),m=c(1)("iterator"),n=!([].keys&&"next"in[].keys()),o="keys",p="values",q=function(){return this};a.exports=function(a,b,c,r,s,t,u){j(c,b,r);var v,w,x,y=function(a){if(!n&&a in C)return C[a];switch(a){case o:case p:return function(){return new c(this,a)}}return function(){return new c(this,a)}},z=b+" Iterator",A=s==p,B=!1,C=a.prototype,D=C[m]||C["@@iterator"]||s&&C[s],E=D||y(s),F=s?A?y("entries"):E:void 0,G="Array"==b&&C.entries||D;if(G&&(x=l(G.call(new a)))!==Object.prototype&&(k(x,z,!0),d||h(x,m)||g(x,m,q)),A&&D&&D.name!==p&&(B=!0,E=function(){return D.call(this)}),(!d||u)&&(n||B||!C[m])&&g(C,m,E),i[b]=E,i[z]=q,s)if(v={values:A?E:y(p),keys:t?E:y(o),entries:F},u)for(w in v)w in C||f(C,w,v[w]);else e(e.P+e.F*(n||B),b,v);return v}},function(a,b){a.exports=!0},function(a,b,c){var d=c(2),e="__core-js_shared__",f=d[e]||(d[e]={});a.exports=function(a){return f[a]||(f[a]={})}},function(a,b,c){var d,e,f,g=c(7),h=c(41),i=c(25),j=c(16),k=c(2),l=k.process,m=k.setImmediate,n=k.clearImmediate,o=k.MessageChannel,p=0,q={},r="onreadystatechange",s=function(){var a=+this;if(q.hasOwnProperty(a)){var b=q[a];delete q[a],b()}},t=function(a){s.call(a.data)};m&&n||(m=function(a){for(var b=[],c=1;arguments.length>c;)b.push(arguments[c++]);return q[++p]=function(){h("function"==typeof a?a:Function(a),b)},d(p),p},n=function(a){delete q[a]},"process"==c(11)(l)?d=function(a){l.nextTick(g(s,a,1))}:o?(f=(e=new o).port2,e.port1.onmessage=t,d=g(f.postMessage,f,1)):k.addEventListener&&"function"==typeof postMessage&&!k.importScripts?(d=function(a){k.postMessage(a+"","*")},k.addEventListener("message",t,!1)):d=r in j("script")?function(a){i.appendChild(j("script"))[r]=function(){i.removeChild(this),s.call(a)}}:function(a){setTimeout(g(s,a,1),0)}),a.exports={set:m,clear:n}},function(a,b,c){var d=c(20),e=Math.min;a.exports=function(a){return a>0?e(d(a),0x1fffffffffffff):0}},function(a,b,c){var d=c(9);a.exports=function(a,b){var c,e;if(!d(a))return a;if(b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a))||"function"==typeof(c=a.valueOf)&&!d(e=c.call(a))||!b&&"function"==typeof(c=a.toString)&&!d(e=c.call(a)))return e;throw TypeError("Can't convert object to primitive value")}},function(a,b){var c=0,d=Math.random();a.exports=function(a){return"Symbol(".concat(void 0===a?"":a,")_",(++c+d).toString(36))}},function(a,b,c){"use strict";function d(a){return(0,i.createHash)("sha256").update(a).digest("hex")}function e(a){switch(j){case"darwin":return a.split("IOPlatformUUID")[1].split("\n")[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return a.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":case"freebsd":return a.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw Error("Unsupported platform: "+process.platform)}}Object.defineProperty(b,"__esModule",{value:!0});var f,g=(f=c(35))&&f.__esModule?f:{default:f};b.machineIdSync=function(a){var b=e((0,h.execSync)(k[j]).toString());return a?b:d(b)},b.machineId=function(a){return new g.default(function(b,c){return(0,h.exec)(k[j],{},function(f,g,h){if(f)return c(Error("Error while obtaining machine id: "+f.stack));var i=e(g.toString());return b(a?i:d(i))})})};var h=c(70),i=c(71),j=process.platform,k={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:{native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"}["win32"!==process.platform?"":"ia32"===process.arch&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(a,b,c){a.exports={default:c(36),__esModule:!0}},function(a,b,c){c(66),c(68),c(69),c(67),a.exports=c(6).Promise},function(a,b){a.exports=function(){}},function(a,b){a.exports=function(a,b,c,d){if(!(a instanceof b)||void 0!==d&&d in a)throw TypeError(c+": incorrect invocation!");return a}},function(a,b,c){var d=c(13),e=c(31),f=c(62);a.exports=function(a){return function(b,c,g){var h,i=d(b),j=e(i.length),k=f(g,j);if(a&&c!=c){for(;j>k;)if((h=i[k++])!=h)return!0}else for(;j>k;k++)if((a||k in i)&&i[k]===c)return a||k||0;return!a&&-1}}},function(a,b,c){var d=c(7),e=c(44),f=c(43),g=c(3),h=c(31),i=c(64),j={},k={},b=a.exports=function(a,b,c,l,m){var n,o,p,q,r=m?function(){return a}:i(a),s=d(c,l,b?2:1),t=0;if("function"!=typeof r)throw TypeError(a+" is not iterable!");if(f(r)){for(n=h(a.length);n>t;t++)if((q=b?s(g(o=a[t])[0],o[1]):s(a[t]))===j||q===k)return q}else for(p=r.call(a);!(o=p.next()).done;)if((q=e(p,s,o.value,b))===j||q===k)return q};b.BREAK=j,b.RETURN=k},function(a,b){a.exports=function(a,b,c){var d=void 0===c;switch(b.length){case 0:return d?a():a.call(c);case 1:return d?a(b[0]):a.call(c,b[0]);case 2:return d?a(b[0],b[1]):a.call(c,b[0],b[1]);case 3:return d?a(b[0],b[1],b[2]):a.call(c,b[0],b[1],b[2]);case 4:return d?a(b[0],b[1],b[2],b[3]):a.call(c,b[0],b[1],b[2],b[3])}return a.apply(c,b)}},function(a,b,c){var d=c(11);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==d(a)?a.split(""):Object(a)}},function(a,b,c){var d=c(10),e=c(1)("iterator"),f=Array.prototype;a.exports=function(a){return void 0!==a&&(d.Array===a||f[e]===a)}},function(a,b,c){var d=c(3);a.exports=function(a,b,c,e){try{return e?b(d(c)[0],c[1]):b(c)}catch(b){var f=a.return;throw void 0!==f&&d(f.call(a)),b}}},function(a,b,c){"use strict";var d=c(49),e=c(17),f=c(18),g={};c(5)(g,c(1)("iterator"),function(){return this}),a.exports=function(a,b,c){a.prototype=d(g,{next:e(1,c)}),f(a,b+" Iterator")}},function(a,b,c){var d=c(1)("iterator"),e=!1;try{var f=[7][d]();f.return=function(){e=!0},Array.from(f,function(){throw 2})}catch(a){}a.exports=function(a,b){if(!b&&!e)return!1;var c=!1;try{var f=[7],g=f[d]();g.next=function(){return{done:c=!0}},f[d]=function(){return g},a(f)}catch(a){}return c}},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(a,b,c){var d=c(2),e=c(30).set,f=d.MutationObserver||d.WebKitMutationObserver,g=d.process,h=d.Promise,i="process"==c(11)(g);a.exports=function(){var a,b,c,j=function(){var d,e;for(i&&(d=g.domain)&&d.exit();a;){e=a.fn,a=a.next;try{e()}catch(d){throw a?c():b=void 0,d}}b=void 0,d&&d.enter()};if(i)c=function(){g.nextTick(j)};else if(f){var k=!0,l=document.createTextNode("");new f(j).observe(l,{characterData:!0}),c=function(){l.data=k=!k}}else if(h&&h.resolve){var m=h.resolve();c=function(){m.then(j)}}else c=function(){e.call(d,j)};return function(d){var e={fn:d,next:void 0};b&&(b.next=e),a||(a=e,c()),b=e}}},function(a,b,c){var d=c(3),e=c(50),f=c(22),g=c(19)("IE_PROTO"),h=function(){},i="prototype",j=function(){var a,b=c(16)("iframe"),d=f.length;for(b.style.display="none",c(25).appendChild(b),b.src="javascript:",(a=b.contentWindow.document).open(),a.write("<script>document.F=Object<\/script>"),a.close(),j=a.F;d--;)delete j[i][f[d]];return j()};a.exports=Object.create||function(a,b){var c;return null!==a?(h[i]=d(a),c=new h,h[i]=null,c[g]=a):c=j(),void 0===b?c:e(c,b)}},function(a,b,c){var d=c(12),e=c(3),f=c(54);a.exports=c(4)?Object.defineProperties:function(a,b){e(a);for(var c,g=f(b),h=g.length,i=0;h>i;)d.f(a,c=g[i++],b[c]);return a}},function(a,b,c){var d=c(55),e=c(17),f=c(13),g=c(32),h=c(8),i=c(26),j=Object.getOwnPropertyDescriptor;b.f=c(4)?j:function(a,b){if(a=f(a),b=g(b,!0),i)try{return j(a,b)}catch(a){}if(h(a,b))return e(!d.f.call(a,b),a[b])}},function(a,b,c){var d=c(8),e=c(63),f=c(19)("IE_PROTO"),g=Object.prototype;a.exports=Object.getPrototypeOf||function(a){return d(a=e(a),f)?a[f]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?g:null}},function(a,b,c){var d=c(8),e=c(13),f=c(39)(!1),g=c(19)("IE_PROTO");a.exports=function(a,b){var c,h=e(a),i=0,j=[];for(c in h)c!=g&&d(h,c)&&j.push(c);for(;b.length>i;)d(h,c=b[i++])&&(~f(j,c)||j.push(c));return j}},function(a,b,c){var d=c(53),e=c(22);a.exports=Object.keys||function(a){return d(a,e)}},function(a,b){b.f=({}).propertyIsEnumerable},function(a,b,c){var d=c(5);a.exports=function(a,b,c){for(var e in b)c&&a[e]?a[e]=b[e]:d(a,e,b[e]);return a}},function(a,b,c){a.exports=c(5)},function(a,b,c){var d=c(9),e=c(3),f=function(a,b){if(e(a),!d(b)&&null!==b)throw TypeError(b+": can't set as prototype!")};a.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(a,b,d){try{(d=c(7)(Function.call,c(51).f(Object.prototype,"__proto__").set,2))(a,[]),b=!(a instanceof Array)}catch(a){b=!0}return function(a,c){return f(a,c),b?a.__proto__=c:d(a,c),a}}({},!1):void 0),check:f}},function(a,b,c){"use strict";var d=c(2),e=c(6),f=c(12),g=c(4),h=c(1)("species");a.exports=function(a){var b="function"==typeof e[a]?e[a]:d[a];g&&b&&!b[h]&&f.f(b,h,{configurable:!0,get:function(){return this}})}},function(a,b,c){var d=c(3),e=c(14),f=c(1)("species");a.exports=function(a,b){var c,g=d(a).constructor;return void 0===g||void 0==(c=d(g)[f])?b:e(c)}},function(a,b,c){var d=c(20),e=c(15);a.exports=function(a){return function(b,c){var f,g,h=String(e(b)),i=d(c),j=h.length;return i<0||i>=j?a?"":void 0:(f=h.charCodeAt(i))<55296||f>56319||i+1===j||(g=h.charCodeAt(i+1))<56320||g>57343?a?h.charAt(i):f:a?h.slice(i,i+2):(f-55296<<10)+(g-56320)+65536}}},function(a,b,c){var d=c(20),e=Math.max,f=Math.min;a.exports=function(a,b){return(a=d(a))<0?e(a+b,0):f(a,b)}},function(a,b,c){var d=c(15);a.exports=function(a){return Object(d(a))}},function(a,b,c){var d=c(21),e=c(1)("iterator"),f=c(10);a.exports=c(6).getIteratorMethod=function(a){if(void 0!=a)return a[e]||a["@@iterator"]||f[d(a)]}},function(a,b,c){"use strict";var d=c(37),e=c(47),f=c(10),g=c(13);a.exports=c(27)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var a=this._t,b=this._k,c=this._i++;return!a||c>=a.length?(this._t=void 0,e(1)):"keys"==b?e(0,c):"values"==b?e(0,a[c]):e(0,[c,a[c]])},"values"),f.Arguments=f.Array,d("keys"),d("values"),d("entries")},function(a,b){},function(a,b,c){"use strict";var d,e,f,g=c(28),h=c(2),i=c(7),j=c(21),k=c(23),l=c(9),m=(c(3),c(14)),n=c(38),o=c(40),p=(c(58).set,c(60)),q=c(30).set,r=c(48)(),s="Promise",t=h.TypeError,u=h.process,v=h[s],u=h.process,w="process"==j(u),x=function(){},y=!!function(){try{var a=v.resolve(1),b=(a.constructor={})[c(1)("species")]=function(a){a(x,x)};return(w||"function"==typeof PromiseRejectionEvent)&&a.then(x)instanceof b}catch(a){}}(),z=function(a,b){return a===b||a===v&&b===f},A=function(a){var b;return!(!l(a)||"function"!=typeof(b=a.then))&&b},B=function(a){return z(v,a)?new C(a):new e(a)},C=e=function(a){var b,c;this.promise=new a(function(a,d){if(void 0!==b||void 0!==c)throw t("Bad Promise constructor");b=a,c=d}),this.resolve=m(b),this.reject=m(c)},D=function(a){try{a()}catch(a){return{error:a}}},E=function(a,b){if(!a._n){a._n=!0;var c=a._c;r(function(){for(var d=a._v,e=1==a._s,f=0;c.length>f;)!function(b){var c,f,g=e?b.ok:b.fail,h=b.resolve,i=b.reject,j=b.domain;try{g?(e||(2==a._h&&H(a),a._h=1),!0===g?c=d:(j&&j.enter(),c=g(d),j&&j.exit()),c===b.promise?i(t("Promise-chain cycle")):(f=A(c))?f.call(c,h,i):h(c)):i(d)}catch(a){i(a)}}(c[f++]);a._c=[],a._n=!1,b&&!a._h&&F(a)})}},F=function(a){q.call(h,function(){var b,c,d,e=a._v;if(G(a)&&(b=D(function(){w?u.emit("unhandledRejection",e,a):(c=h.onunhandledrejection)?c({promise:a,reason:e}):(d=h.console)&&d.error&&d.error("Unhandled promise rejection",e)}),a._h=w||G(a)?2:1),a._a=void 0,b)throw b.error})},G=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if((b=c[d++]).fail||!G(b.promise))return!1;return!0},H=function(a){q.call(h,function(){var b;w?u.emit("rejectionHandled",a):(b=h.onrejectionhandled)&&b({promise:a,reason:a._v})})},I=function(a){var b=this;b._d||(b._d=!0,(b=b._w||b)._v=a,b._s=2,b._a||(b._a=b._c.slice()),E(b,!0))},J=function(a){var b,c=this;if(!c._d){c._d=!0,c=c._w||c;try{if(c===a)throw t("Promise can't be resolved itself");(b=A(a))?r(function(){var d={_w:c,_d:!1};try{b.call(a,i(J,d,1),i(I,d,1))}catch(a){I.call(d,a)}}):(c._v=a,c._s=1,E(c,!1))}catch(a){I.call({_w:c,_d:!1},a)}}};y||(v=function(a){n(this,v,s,"_h"),m(a),d.call(this);try{a(i(J,this,1),i(I,this,1))}catch(a){I.call(this,a)}},(d=function(a){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1}).prototype=c(56)(v.prototype,{then:function(a,b){var c=B(p(this,v));return c.ok="function"!=typeof a||a,c.fail="function"==typeof b&&b,c.domain=w?u.domain:void 0,this._c.push(c),this._a&&this._a.push(c),this._s&&E(this,!1),c.promise},catch:function(a){return this.then(void 0,a)}}),C=function(){var a=new d;this.promise=a,this.resolve=i(J,a,1),this.reject=i(I,a,1)}),k(k.G+k.W+!y*k.F,{Promise:v}),c(18)(v,s),c(59)(s),f=c(6)[s],k(k.S+!y*k.F,s,{reject:function(a){var b=B(this);return(0,b.reject)(a),b.promise}}),k(k.S+k.F*(g||!y),s,{resolve:function(a){if(a instanceof v&&z(a.constructor,this))return a;var b=B(this);return(0,b.resolve)(a),b.promise}}),k(k.S+!(y&&c(46)(function(a){v.all(a).catch(x)}))*k.F,s,{all:function(a){var b=this,c=B(b),d=c.resolve,e=c.reject,f=D(function(){var c=[],f=0,g=1;o(a,!1,function(a){var h=f++,i=!1;c.push(void 0),g++,b.resolve(a).then(function(a){i||(i=!0,c[h]=a,--g||d(c))},e)}),--g||d(c)});return f&&e(f.error),c.promise},race:function(a){var b=this,c=B(b),d=c.reject,e=D(function(){o(a,!1,function(a){b.resolve(a).then(c.resolve,d)})});return e&&d(e.error),c.promise}})},function(a,b,c){"use strict";var d=c(61)(!0);c(27)(String,"String",function(a){this._t=String(a),this._i=0},function(){var a,b=this._t,c=this._i;return c>=b.length?{value:void 0,done:!0}:(a=d(b,c),this._i+=a.length,{value:a,done:!1})})},function(a,b,c){c(65);for(var d=c(2),e=c(5),f=c(10),g=c(1)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],i=0;i<5;i++){var j=h[i],k=d[j],l=k&&k.prototype;l&&!l[g]&&e(l,g,j),f[j]=f.Array}},function(a,b){a.exports=c(79646)},function(a,b){a.exports=c(55511)}];function e(a){if(f[a])return f[a].exports;var b=f[a]={exports:{},id:a,loaded:!1};return d[a].call(b.exports,b,b.exports,e),b.loaded=!0,b.exports}var f={};return e.m=d,e.c=f,e.p="",e(0)}(c(79646),c(55511))}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=976,exports.ids=[976],exports.modules={2521:(a,b,c)=>{c.d(b,{f0:()=>h,kk:()=>g,oO:()=>f});var d=c(77598),e=c.n(d);function f(a){return a&&"string"==typeof a?a.length<=12?a.charAt(0)+"***":a.slice(0,8)+"***"+a.slice(-4):null}function g(a){return a&&"string"==typeof a?e().createHash("sha256").update(a).digest("hex"):null}function h(a){return"string"==typeof a&&a.includes("***")}},20976:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(95658),i=c(63775);let j="stepfun",k="stepfun-cn";var l=c(72082),m=c(2521);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.isEncrypted)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.decryptSecret)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.connectionDataHasPlaintextSecrets)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(62674);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(644);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.encryptConnectionData)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},62674:(a,b,c)=>{c.d(b,{IQ:()=>e,dy:()=>g,iZ:()=>f,np:()=>h});var d=c(36366);async function e(a,b=null){let c=(await (0,d.cK)()).get("SELECT value FROM _meta WHERE key = ?",[a]);return c?c.value:b}async function f(a,b){(await (0,d.cK)()).run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[a,String(b)])}function g(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function h(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}},63775:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=976,exports.ids=[976],exports.modules={2521:(a,b,c)=>{c.d(b,{f0:()=>h,kk:()=>g,oO:()=>f});var d=c(77598),e=c.n(d);function f(a){return a&&"string"==typeof a?a.length<=12?a.charAt(0)+"***":a.slice(0,8)+"***"+a.slice(-4):null}function g(a){return a&&"string"==typeof a?e().createHash("sha256").update(a).digest("hex"):null}function h(a){return"string"==typeof a&&a.includes("***")}},20976:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>G});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(95658),i=c(63775);let j="stepfun",k="stepfun-cn";var l=c(72082),m=c(2521);let n=["mimoPassToken","mimoUserId","mimoCUserId"],o=new Set(["Xiaomi MiMo Desktop","Xiaomi MiMo Desktop Session"]),p="mimo-desktop-session";function q(a){if(!(0,l.isEncrypted)(a))return{ok:!0,value:a};try{return{ok:!0,value:(0,l.decryptSecret)(a)}}catch{return{ok:!1,value:a}}}function r(a){try{return JSON.parse(a.data||"{}")}catch{return null}}function s(a,b=null){let c=a?.providerSpecificData||{},d=q("string"==typeof a?.accessToken?a.accessToken:null),e="string"==typeof c.uid||"number"==typeof c.uid?String(c.uid):null,f="string"==typeof c.mimoUserId||"number"==typeof c.mimoUserId?String(c.mimoUserId):null,g=c.mimoPassToken;return{token:d.ok?d.value:null,uid:e,mu:f,email:"string"==typeof b&&b?b:null,hasSession:null!=g&&""!==g&&q(g).ok}}let t=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"stepfun-cn-rename",up(a){let b;for(let b of(a.run("UPDATE providerConnections SET provider = ? WHERE provider = ?",[k,j]),a.run("UPDATE kv SET key = ? WHERE scope = 'disabledModels' AND key = ?",[k,j]),["modelCaps","customModels"]))a.run("UPDATE kv SET key = ? || substr(key, ?) WHERE scope = ? AND key LIKE ?",[k,j.length+1,b,`${j}|%`]);let c=a.get("SELECT data FROM settings WHERE id = 1");if(!c?.data)return;try{b=JSON.parse(c.data)}catch{return}if(!b||"object"!=typeof b)return;let d=!1;if(Array.isArray(b.providerCardOrder)){let a=b.providerCardOrder.map(a=>a===j?k:a);a.some((a,c)=>a!==b.providerCardOrder[c])&&(b.providerCardOrder=a,d=!0)}for(let a of["topologyVisibility","providerStrategies"]){let c=b[a];c&&"object"==typeof c&&Object.prototype.hasOwnProperty.call(c,j)&&(k in c||(c[k]=c[j]),delete c[j],d=!0)}d&&a.run("UPDATE settings SET data = ? WHERE id = 1",[JSON.stringify(b)])}},{version:3,name:"encrypt-credentials",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections")}catch(a){console.warn("[migration] encrypt-credentials: could not read connections:",a?.message||a);return}let c=0,d=0;for(let e of b){let b;try{b=JSON.parse(e.data||"{}")}catch{continue}if((0,l.connectionDataHasPlaintextSecrets)(b))try{a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),e.id]),c+=1}catch(a){1===(d+=1)&&console.warn("[migration] encrypt-credentials: could not encrypt a connection — credentials stay in plain text until they are rewritten:",a?.message||a)}}c&&console.log(`[migration] encrypt-credentials: encrypted ${c} connection row(s)`),d&&console.warn(`[migration] encrypt-credentials: ${d} row(s) left in plain text`)}},{version:4,name:"usage-apikey-digest",up(a){try{a.all("PRAGMA table_info(usageHistory)").map(a=>a.name).includes("apiKeyHash")||(a.exec("ALTER TABLE usageHistory ADD COLUMN apiKeyHash TEXT"),console.log("[migration] usage-apikey-digest: added usageHistory.apiKeyHash")),a.exec("CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)")}catch(a){console.warn("[migration] usage-apikey-digest: could not ensure apiKeyHash column:",a?.message||a)}let b=0;try{for(let c of a.all("SELECT id, apiKey FROM usageHistory WHERE apiKey IS NOT NULL AND apiKey != ''"))(0,m.f0)(c.apiKey)||(a.run("UPDATE usageHistory SET apiKey = ?, apiKeyHash = ? WHERE id = ?",[(0,m.oO)(c.apiKey),(0,m.kk)(c.apiKey),c.id]),b+=1)}catch(a){console.warn("[migration] usage-apikey-digest: history rows skipped:",a?.message||a)}let c=0;try{for(let b of a.all("SELECT dateKey, data FROM usageDaily")){let d;try{d=JSON.parse(b.data||"{}")}catch{continue}let e=d?.byApiKey;if(!e||"object"!=typeof e)continue;let f={},g=!1;for(let[a,b]of Object.entries(e)){if(!b||"object"!=typeof b){f[a]=b;continue}let c="string"==typeof b.apiKey?b.apiKey:null;if(!c&&b.apiKeyHash||!c){f[a]=b;continue}let{apiKey:d,...e}=b,h=(0,m.kk)(c),i=a.split("|"),j=i.length>1?"|"+i.slice(1).join("|"):"";f[`${h||"local-no-key"}${j}`]={...e,apiKeyHash:h,apiKeyMasked:(0,m.oO)(c)},g=!0}g&&(a.run("UPDATE usageDaily SET data = ? WHERE dateKey = ?",[JSON.stringify({...d,byApiKey:f}),b.dateKey]),c+=1)}}catch(a){console.warn("[migration] usage-apikey-digest: daily aggregates skipped:",a?.message||a)}(b||c)&&console.log(`[migration] usage-apikey-digest: rewrote ${b} history row(s), ${c} day aggregate(s)`)}},{version:5,name:"strip-mimo-main-card-session",up(a){let b,c;try{b=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'xiaomi-mimo'"),c=a.all("SELECT id, email, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] strip-mimo-main-card-session: could not read connections:",a?.message||a);return}let d=c.map(a=>{let b=r(a);return b?s(b,a.email):null}).filter(Boolean),e=0,f=0,g=0,h=0;for(let c of b){let b=r(c);if(!b||"object"!=typeof b)continue;let i=b.providerSpecificData&&"object"==typeof b.providerSpecificData?b.providerSpecificData:{};if(!(n.some(a=>void 0!==i[a]&&null!==i[a]&&""!==i[a])||o.has(i.provider)||"desktop-session"===i.authMethod||"string"==typeof b.accessToken&&b.accessToken.startsWith(p)))continue;let j=q("string"==typeof b.accessToken?b.accessToken:null);if(!j.ok||i.mimoPassToken&&!q(i.mimoPassToken).ok){h+=1;continue}if(!("string"!=typeof j.value||""===j.value||j.value.startsWith(p))){let d=function(a){let b={...a};for(let a of n)delete b[a];return o.has(b.provider)&&delete b.provider,b}(i);"desktop-session"===d.authMethod&&(d.authMethod="api_key"),a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)({...b,providerSpecificData:d})),c.id]),e+=1;continue}let k=s(b,c.email);if(d.find(a=>(!!a.token&&!!k.token&&a.token===k.token||!!a.uid&&!!k.uid&&a.uid===k.uid||!!a.mu&&!!k.mu&&a.mu===k.mu||!!a.uid&&!!k.mu&&a.uid===k.mu||!!a.mu&&!!k.uid&&a.mu===k.uid||!!a.email&&!!k.email&&a.email===k.email||!1)&&a.hasSession)){a.run("DELETE FROM providerConnections WHERE id = ?",[c.id]),g+=1;continue}a.run("UPDATE providerConnections SET provider = 'mimo-desktop', data = ? WHERE id = ?",[JSON.stringify((0,l.encryptConnectionData)(b)),c.id]),f+=1}(e||f||g||h)&&console.log(`[migration] strip-mimo-main-card-session: stripped ${e} cloud row(s), moved ${f} session-only row(s) to mimo-desktop, removed ${g} duplicate row(s)`+(h?`, ${h} row(s) left untouched (undecryptable credentials)`:""))}},{version:6,name:"mimo-desktop-session-active",up(a){let b;try{b=a.all("SELECT id, data FROM providerConnections WHERE provider = 'mimo-desktop'")}catch(a){console.warn("[migration] mimo-desktop-session-active: could not read connections:",a?.message||a);return}for(let c of b)try{let b=JSON.parse(c.data);if("untested"!==b.testStatus)continue;b.testStatus="active",a.run("UPDATE providerConnections SET data = ? WHERE id = ?",[JSON.stringify(b),c.id])}catch{}}}].sort((a,b)=>a.version-b.version);var u=c(62674);let v=null;function w(){if(v)return v;try{let a=g().join(process.cwd(),"package.json");v=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{v="0.0.0"}return v}let x=["requestDetails"];function y(a){(0,h.Jh)();let b=w(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function z(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var A=c(644);let B=g().join(h.HG,".migrated-from-json"),C=new WeakSet;class D extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function E(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new D(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function F(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function G(a){if(C.has(a))return;C.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);z(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt((0,u.dy)(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=y(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(x),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),z(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt((0,u.dy)(a,"schemaVersion","0"),10)||0;if(b>=(t.length?t[t.length-1].version:0))return;let c=t.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),(0,u.np)(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}(0,u.np)(a,"backupSchemaVersion",i.f$);let d=e().existsSync(B),f=F(h.Or.main),j=F(h.Or.usage),k=F(h.Or.disabled),m=F(h.Or.details);if(b&&(f||j||k||m)&&!d){let b=Date.now(),c=y("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,A.s)(f.settings)]),E(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...m}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,A.s)((0,l.encryptConnectionData)(m)),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),E(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),E(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,A.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),E(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),E(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,A.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,A.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,A.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,A.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,A.s)(c||{})])}if(j&&"object"==typeof j){for(let b of j.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,A.s)(c),(0,A.s)({})])}for(let[b,c]of Object.entries(j.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,A.s)(c)]);"number"==typeof j.totalRequestsLifetime&&(0,u.np)(a,"totalRequestsLifetime",j.totalRequestsLifetime)}if(k&&"object"==typeof k.disabled)for(let[b,c]of Object.entries(k.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,A.s)(c||[])]);if(m&&Array.isArray(m.records))for(let b of m.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,A.s)(b)]);(0,u.np)(a,"appVersion",w()),(0,u.np)(a,"backupSchemaVersion",i.f$),(0,u.np)(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof D)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(B,new Date().toISOString())}catch{}z(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let n=w();(0,u.dy)(a,"appVersion",null)!==n&&(0,u.np)(a,"appVersion",n)}},62674:(a,b,c)=>{c.d(b,{IQ:()=>e,dy:()=>g,iZ:()=>f,np:()=>h});var d=c(36366);async function e(a,b=null){let c=(await (0,d.cK)()).get("SELECT value FROM _meta WHERE key = ?",[a]);return c?c.value:b}async function f(a,b){(await (0,d.cK)()).run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[a,String(b)])}function g(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function h(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}},63775:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=2,e=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},72082:(a,b,c)=>{c.r(b),c.d(b,{CONNECTION_SECRET_FIELDS:()=>n,CredentialCryptoError:()=>q,UNREADABLE_CREDENTIALS_KEY:()=>z,connectionDataHasPlaintextSecrets:()=>D,decryptConnectionData:()=>B,decryptSecret:()=>v,encryptConnectionData:()=>y,encryptSecret:()=>u,getCredentialKey:()=>s,hasUnreadableCredentials:()=>A,isEncrypted:()=>r,resetCredentialKeyCache:()=>t,restoreUnreadableCredentials:()=>C});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120),k=c(77134);let l="enc:v1:",m="aes-256-gcm",n=["accessToken","refreshToken","idToken","apiKey"],o=/(token|secret|password|cookie|credential|api[-_]?key|proxyurl)/i,p=null;class q extends Error{constructor(a){super(a),this.name="CredentialCryptoError"}}function r(a){return"string"==typeof a&&a.startsWith(l)}function s(){if(p)return p;let a=process.env.CREDENTIAL_SECRET;if("string"==typeof a&&a.trim())return p=e().createHash("sha256").update(a.trim()).digest();let b=i().join(j.nJ,"credential-key");try{let a=g().readFileSync(b,"utf8").trim();if(a)return p=e().createHash("sha256").update(a).digest()}catch{}g().mkdirSync(j.nJ,{recursive:!0});let c=e().randomBytes(32).toString("hex");return g().writeFileSync(b,c,{mode:384}),(0,k.E)(b),p=e().createHash("sha256").update(c).digest()}function t(){p=null}function u(a){if("string"!=typeof a||""===a||r(a))return a;let b=e().randomBytes(12),c=e().createCipheriv(m,s(),b),d=Buffer.concat([c.update(a,"utf8"),c.final()]);return`${l}${b.toString("base64url")}:${c.getAuthTag().toString("base64url")}:${d.toString("base64url")}`}function v(a){if("string"!=typeof a||!r(a))return a;let b=a.slice(l.length).split(":");if(3!==b.length)throw new q("stored credential is malformed");let[c,d,f]=b;try{let a=e().createDecipheriv(m,s(),Buffer.from(c,"base64url"));return a.setAuthTag(Buffer.from(d,"base64url")),Buffer.concat([a.update(Buffer.from(f,"base64url")),a.final()]).toString("utf8")}catch{throw new q("stored credential cannot be decrypted with the current key")}}function w(a){return a&&"object"==typeof a?Object.keys(a).filter(b=>o.test(b)&&"string"==typeof a[b]):[]}function x(a){return w(a).filter(b=>""!==a[b])}function y(a){if(!a||"object"!=typeof a)return a;let b={...a};for(let a of n)"string"==typeof b[a]&&(b[a]=u(b[a]));let c=w(b.providerSpecificData);if(c.length){let a={...b.providerSpecificData};for(let b of c)a[b]=u(a[b]);b.providerSpecificData=a}return b}let z="__unreadableCredentials";function A(a){return!!(a&&"object"==typeof a&&a[z])}function B(a){if(!a||"object"!=typeof a)return{data:a,error:null,unreadable:null};let b={...a},c=null,d=null,e=(a,b,c)=>{d||(d={}),d[a]||(d[a]={}),d[a][b]=c};for(let a of n)if(r(b[a]))try{b[a]=v(b[a])}catch(d){e("fields",a,b[a]),delete b[a],c=d.message}let f=x(b.providerSpecificData).filter(a=>r(b.providerSpecificData[a]));if(f.length){let a={...b.providerSpecificData};for(let b of f)try{a[b]=v(a[b])}catch(d){e("providerSpecificData",b,a[b]),delete a[b],c=d.message}b.providerSpecificData=a}return{data:b,error:c,unreadable:d}}function C(a){if(!a||"object"!=typeof a||!a[z])return a;let{[z]:b,...c}=a,d=a=>null==a||""===a;for(let[a,e]of Object.entries(b.fields||{}))d(c[a])&&(c[a]=e);let e=b.providerSpecificData||{};if(Object.keys(e).length){let a={...c.providerSpecificData||{}};for(let[b,c]of Object.entries(e))d(a[b])&&(a[b]=c);c.providerSpecificData=a}let f=b.synthesized;return f&&(c.testStatus===f.testStatus&&delete c.testStatus,c.lastError===f.lastError&&delete c.lastError),c}function D(a){if(!a||"object"!=typeof a)return!1;for(let b of n)if("string"==typeof a[b]&&""!==a[b]&&!r(a[b]))return!0;return x(a.providerSpecificData).some(b=>!r(a.providerSpecificData[b]))}},77134:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(31421);function i(a){if(a){if("win32"===process.platform){try{let b=[process.env.USERDOMAIN,process.env.USERNAME].filter(Boolean).join("\\")||g().userInfo().username;(0,h.execFileSync)("icacls",[a,"/inheritance:r","/grant:r",`${b}:(F)`],{stdio:"ignore",windowsHide:!0})}catch(b){console.warn(`⚠️ Could not restrict ACLs on ${a}: ${b.message}`)}return}try{e().chmodSync(a,384)}catch(b){console.warn(`⚠️ Could not restrict permissions on ${a}: ${b.message}`)}}}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",dailyTokenLimit:"INTEGER",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyHash:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)","CREATE INDEX IF NOT EXISTS idx_uh_apikey_hash ON usageHistory(apiKeyHash)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},72082:(a,b,c)=>{c.r(b),c.d(b,{CONNECTION_SECRET_FIELDS:()=>n,CredentialCryptoError:()=>q,UNREADABLE_CREDENTIALS_KEY:()=>z,connectionDataHasPlaintextSecrets:()=>D,decryptConnectionData:()=>B,decryptSecret:()=>v,encryptConnectionData:()=>y,encryptSecret:()=>u,getCredentialKey:()=>s,hasUnreadableCredentials:()=>A,isEncrypted:()=>r,resetCredentialKeyCache:()=>t,restoreUnreadableCredentials:()=>C});var d=c(77598),e=c.n(d),f=c(73024),g=c.n(f),h=c(76760),i=c.n(h),j=c(49120),k=c(77134);let l="enc:v1:",m="aes-256-gcm",n=["accessToken","refreshToken","idToken","apiKey"],o=/(token|secret|password|cookie|credential|api[-_]?key|proxyurl)/i,p=null;class q extends Error{constructor(a){super(a),this.name="CredentialCryptoError"}}function r(a){return"string"==typeof a&&a.startsWith(l)}function s(){if(p)return p;let a=process.env.CREDENTIAL_SECRET;if("string"==typeof a&&a.trim())return p=e().createHash("sha256").update(a.trim()).digest();let b=i().join(j.nJ,"credential-key");try{let a=g().readFileSync(b,"utf8").trim();if(a)return p=e().createHash("sha256").update(a).digest()}catch{}g().mkdirSync(j.nJ,{recursive:!0});let c=e().randomBytes(32).toString("hex");return g().writeFileSync(b,c,{mode:384}),(0,k.E)(b),p=e().createHash("sha256").update(c).digest()}function t(){p=null}function u(a){if("string"!=typeof a||""===a||r(a))return a;let b=e().randomBytes(12),c=e().createCipheriv(m,s(),b),d=Buffer.concat([c.update(a,"utf8"),c.final()]);return`${l}${b.toString("base64url")}:${c.getAuthTag().toString("base64url")}:${d.toString("base64url")}`}function v(a){if("string"!=typeof a||!r(a))return a;let b=a.slice(l.length).split(":");if(3!==b.length)throw new q("stored credential is malformed");let[c,d,f]=b;try{let a=e().createDecipheriv(m,s(),Buffer.from(c,"base64url"));return a.setAuthTag(Buffer.from(d,"base64url")),Buffer.concat([a.update(Buffer.from(f,"base64url")),a.final()]).toString("utf8")}catch{throw new q("stored credential cannot be decrypted with the current key")}}function w(a){return a&&"object"==typeof a?Object.keys(a).filter(b=>o.test(b)&&"string"==typeof a[b]):[]}function x(a){return w(a).filter(b=>""!==a[b])}function y(a){if(!a||"object"!=typeof a)return a;let b={...a};for(let a of n)"string"==typeof b[a]&&(b[a]=u(b[a]));let c=w(b.providerSpecificData);if(c.length){let a={...b.providerSpecificData};for(let b of c)a[b]=u(a[b]);b.providerSpecificData=a}return b}let z="__unreadableCredentials";function A(a){return!!(a&&"object"==typeof a&&a[z])}function B(a){if(!a||"object"!=typeof a)return{data:a,error:null,unreadable:null};let b={...a},c=null,d=null,e=(a,b,c)=>{d||(d={}),d[a]||(d[a]={}),d[a][b]=c};for(let a of n)if(r(b[a]))try{b[a]=v(b[a])}catch(d){e("fields",a,b[a]),delete b[a],c=d.message}let f=x(b.providerSpecificData).filter(a=>r(b.providerSpecificData[a]));if(f.length){let a={...b.providerSpecificData};for(let b of f)try{a[b]=v(a[b])}catch(d){e("providerSpecificData",b,a[b]),delete a[b],c=d.message}b.providerSpecificData=a}return{data:b,error:c,unreadable:d}}function C(a){if(!a||"object"!=typeof a||!a[z])return a;let{[z]:b,...c}=a,d=a=>null==a||""===a;for(let[a,e]of Object.entries(b.fields||{}))d(c[a])&&(c[a]=e);let e=b.providerSpecificData||{};if(Object.keys(e).length){let a={...c.providerSpecificData||{}};for(let[b,c]of Object.entries(e))d(a[b])&&(a[b]=c);c.providerSpecificData=a}let f=b.synthesized;return f&&(c.testStatus===f.testStatus&&delete c.testStatus,c.lastError===f.lastError&&delete c.lastError),c}function D(a){if(!a||"object"!=typeof a)return!1;for(let b of n)if("string"==typeof a[b]&&""!==a[b]&&!r(a[b]))return!0;return x(a.providerSpecificData).some(b=>!r(a.providerSpecificData[b]))}},77134:(a,b,c)=>{c.d(b,{E:()=>i});var d=c(73024),e=c.n(d),f=c(48161),g=c.n(f),h=c(31421);function i(a){if(a){if("win32"===process.platform){try{let b=[process.env.USERDOMAIN,process.env.USERNAME].filter(Boolean).join("\\")||g().userInfo().username;(0,h.execFileSync)("icacls",[a,"/inheritance:r","/grant:r",`${b}:(F)`],{stdio:"ignore",windowsHide:!0})}catch(b){console.warn(`⚠️ Could not restrict ACLs on ${a}: ${b.message}`)}return}try{e().chmodSync(a,384)}catch(b){console.warn(`⚠️ Could not restrict permissions on ${a}: ${b.message}`)}}}}};
@@ -1 +1 @@
1
- {"version":1,"files":["../../node_modules/better-sqlite3/lib/database.js","../../node_modules/better-sqlite3/lib/index.js","../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../node_modules/better-sqlite3/lib/methods/backup.js","../../node_modules/better-sqlite3/lib/methods/function.js","../../node_modules/better-sqlite3/lib/methods/inspect.js","../../node_modules/better-sqlite3/lib/methods/pragma.js","../../node_modules/better-sqlite3/lib/methods/serialize.js","../../node_modules/better-sqlite3/lib/methods/table.js","../../node_modules/better-sqlite3/lib/methods/transaction.js","../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../node_modules/better-sqlite3/lib/sqlite-error.js","../../node_modules/better-sqlite3/lib/util.js","../../node_modules/better-sqlite3/package.json","../../node_modules/bindings/bindings.js","../../node_modules/bindings/package.json","../../node_modules/bundle-name/index.js","../../node_modules/bundle-name/package.json","../../node_modules/default-browser-id/index.js","../../node_modules/default-browser-id/package.json","../../node_modules/default-browser/index.js","../../node_modules/default-browser/package.json","../../node_modules/default-browser/windows.js","../../node_modules/define-lazy-prop/index.js","../../node_modules/define-lazy-prop/package.json","../../node_modules/file-uri-to-path/index.js","../../node_modules/file-uri-to-path/package.json","../../node_modules/is-docker/index.js","../../node_modules/is-docker/package.json","../../node_modules/is-in-ssh/index.js","../../node_modules/is-in-ssh/package.json","../../node_modules/is-inside-container/index.js","../../node_modules/is-inside-container/package.json","../../node_modules/is-wsl/index.js","../../node_modules/is-wsl/package.json","../../node_modules/open/index.js","../../node_modules/open/package.json","../../node_modules/open/xdg-open","../../node_modules/powershell-utils/index.js","../../node_modules/powershell-utils/package.json","../../node_modules/run-applescript/index.js","../../node_modules/run-applescript/package.json","../../node_modules/sql.js/dist/sql-wasm.js","../../node_modules/sql.js/package.json","../../node_modules/wsl-utils/index.js","../../node_modules/wsl-utils/node_modules/powershell-utils/index.js","../../node_modules/wsl-utils/node_modules/powershell-utils/package.json","../../node_modules/wsl-utils/package.json","../../node_modules/wsl-utils/utilities.js","../package.json","chunks/1159.js","chunks/1219.js","chunks/1220.js","chunks/1261.js","chunks/1329.js","chunks/1386.js","chunks/1531.js","chunks/1710.js","chunks/1813.js","chunks/1998.js","chunks/2112.js","chunks/2116.js","chunks/2120.js","chunks/2132.js","chunks/2391.js","chunks/241.js","chunks/2430.js","chunks/2468.js","chunks/2732.js","chunks/2750.js","chunks/2812.js","chunks/2926.js","chunks/3225.js","chunks/3245.js","chunks/3256.js","chunks/3433.js","chunks/3500.js","chunks/3535.js","chunks/3593.js","chunks/3792.js","chunks/3885.js","chunks/3943.js","chunks/4008.js","chunks/4123.js","chunks/4125.js","chunks/4152.js","chunks/4177.js","chunks/4190.js","chunks/4282.js","chunks/4293.js","chunks/436.js","chunks/4575.js","chunks/4613.js","chunks/4689.js","chunks/4730.js","chunks/4739.js","chunks/4741.js","chunks/4746.js","chunks/4755.js","chunks/4780.js","chunks/480.js","chunks/4803.js","chunks/4886.js","chunks/4927.js","chunks/507.js","chunks/5081.js","chunks/5182.js","chunks/5210.js","chunks/5258.js","chunks/5330.js","chunks/539.js","chunks/5433.js","chunks/5485.js","chunks/5573.js","chunks/5615.js","chunks/5640.js","chunks/5692.js","chunks/5781.js","chunks/595.js","chunks/6070.js","chunks/6103.js","chunks/6133.js","chunks/615.js","chunks/6252.js","chunks/6306.js","chunks/6326.js","chunks/6457.js","chunks/6492.js","chunks/653.js","chunks/6756.js","chunks/6763.js","chunks/682.js","chunks/6844.js","chunks/6875.js","chunks/6921.js","chunks/6922.js","chunks/6947.js","chunks/6956.js","chunks/6960.js","chunks/698.js","chunks/6982.js","chunks/7066.js","chunks/7067.js","chunks/7070.js","chunks/7122.js","chunks/7239.js","chunks/7247.js","chunks/7274.js","chunks/7322.js","chunks/7568.js","chunks/7726.js","chunks/7753.js","chunks/7774.js","chunks/7775.js","chunks/7828.js","chunks/7965.js","chunks/8062.js","chunks/808.js","chunks/8172.js","chunks/8292.js","chunks/8370.js","chunks/8410.js","chunks/8469.js","chunks/8499.js","chunks/8520.js","chunks/8595.js","chunks/8658.js","chunks/8672.js","chunks/8689.js","chunks/8749.js","chunks/8838.js","chunks/8895.js","chunks/8920.js","chunks/8988.js","chunks/9046.js","chunks/9055.js","chunks/9154.js","chunks/939.js","chunks/9451.js","chunks/9489.js","chunks/9609.js","chunks/9628.js","chunks/976.js","webpack-runtime.js"]}
1
+ {"version":1,"files":["../../node_modules/better-sqlite3/lib/database.js","../../node_modules/better-sqlite3/lib/index.js","../../node_modules/better-sqlite3/lib/methods/aggregate.js","../../node_modules/better-sqlite3/lib/methods/backup.js","../../node_modules/better-sqlite3/lib/methods/function.js","../../node_modules/better-sqlite3/lib/methods/inspect.js","../../node_modules/better-sqlite3/lib/methods/pragma.js","../../node_modules/better-sqlite3/lib/methods/serialize.js","../../node_modules/better-sqlite3/lib/methods/table.js","../../node_modules/better-sqlite3/lib/methods/transaction.js","../../node_modules/better-sqlite3/lib/methods/wrappers.js","../../node_modules/better-sqlite3/lib/sqlite-error.js","../../node_modules/better-sqlite3/lib/util.js","../../node_modules/better-sqlite3/package.json","../../node_modules/bindings/bindings.js","../../node_modules/bindings/package.json","../../node_modules/bundle-name/index.js","../../node_modules/bundle-name/package.json","../../node_modules/default-browser-id/index.js","../../node_modules/default-browser-id/package.json","../../node_modules/default-browser/index.js","../../node_modules/default-browser/package.json","../../node_modules/default-browser/windows.js","../../node_modules/define-lazy-prop/index.js","../../node_modules/define-lazy-prop/package.json","../../node_modules/file-uri-to-path/index.js","../../node_modules/file-uri-to-path/package.json","../../node_modules/is-docker/index.js","../../node_modules/is-docker/package.json","../../node_modules/is-in-ssh/index.js","../../node_modules/is-in-ssh/package.json","../../node_modules/is-inside-container/index.js","../../node_modules/is-inside-container/package.json","../../node_modules/is-wsl/index.js","../../node_modules/is-wsl/package.json","../../node_modules/open/index.js","../../node_modules/open/package.json","../../node_modules/open/xdg-open","../../node_modules/powershell-utils/index.js","../../node_modules/powershell-utils/package.json","../../node_modules/run-applescript/index.js","../../node_modules/run-applescript/package.json","../../node_modules/sql.js/dist/sql-wasm.js","../../node_modules/sql.js/package.json","../../node_modules/wsl-utils/index.js","../../node_modules/wsl-utils/node_modules/powershell-utils/index.js","../../node_modules/wsl-utils/node_modules/powershell-utils/package.json","../../node_modules/wsl-utils/package.json","../../node_modules/wsl-utils/utilities.js","../package.json","chunks/1219.js","chunks/1220.js","chunks/1261.js","chunks/1329.js","chunks/1345.js","chunks/1386.js","chunks/1531.js","chunks/1806.js","chunks/1813.js","chunks/1998.js","chunks/2112.js","chunks/2116.js","chunks/2120.js","chunks/2132.js","chunks/2391.js","chunks/241.js","chunks/2430.js","chunks/2468.js","chunks/2557.js","chunks/2732.js","chunks/2750.js","chunks/2752.js","chunks/2812.js","chunks/2926.js","chunks/2978.js","chunks/3225.js","chunks/3256.js","chunks/3433.js","chunks/3500.js","chunks/3535.js","chunks/3593.js","chunks/3659.js","chunks/3662.js","chunks/3792.js","chunks/3943.js","chunks/3962.js","chunks/4008.js","chunks/4123.js","chunks/4125.js","chunks/4152.js","chunks/4190.js","chunks/4293.js","chunks/4575.js","chunks/4613.js","chunks/4689.js","chunks/4692.js","chunks/4730.js","chunks/4739.js","chunks/4741.js","chunks/4755.js","chunks/4780.js","chunks/4803.js","chunks/4886.js","chunks/4927.js","chunks/507.js","chunks/5081.js","chunks/5182.js","chunks/5210.js","chunks/5258.js","chunks/5330.js","chunks/539.js","chunks/5433.js","chunks/5527.js","chunks/5573.js","chunks/5615.js","chunks/5640.js","chunks/5692.js","chunks/5781.js","chunks/595.js","chunks/6070.js","chunks/6103.js","chunks/6133.js","chunks/615.js","chunks/6252.js","chunks/6306.js","chunks/6326.js","chunks/6457.js","chunks/6492.js","chunks/6756.js","chunks/6763.js","chunks/682.js","chunks/6844.js","chunks/6875.js","chunks/6921.js","chunks/6922.js","chunks/6947.js","chunks/6956.js","chunks/6960.js","chunks/698.js","chunks/7066.js","chunks/7067.js","chunks/7070.js","chunks/7122.js","chunks/7247.js","chunks/7274.js","chunks/7322.js","chunks/75.js","chunks/7568.js","chunks/7726.js","chunks/7753.js","chunks/7774.js","chunks/7775.js","chunks/7828.js","chunks/7965.js","chunks/8062.js","chunks/808.js","chunks/8145.js","chunks/8172.js","chunks/8292.js","chunks/8318.js","chunks/8370.js","chunks/8410.js","chunks/8439.js","chunks/8469.js","chunks/8499.js","chunks/8520.js","chunks/8595.js","chunks/8658.js","chunks/8672.js","chunks/8675.js","chunks/8689.js","chunks/8749.js","chunks/8838.js","chunks/8895.js","chunks/8920.js","chunks/8988.js","chunks/9046.js","chunks/9055.js","chunks/9154.js","chunks/939.js","chunks/9417.js","chunks/9451.js","chunks/9489.js","chunks/9609.js","chunks/9628.js","chunks/9713.js","chunks/976.js","webpack-runtime.js"]}
@@ -1 +1 @@
1
- globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/nGfjkKzxmtvk6d_Zhtya7/_buildManifest.js","static/nGfjkKzxmtvk6d_Zhtya7/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-1adc95943fa90500.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-4d73df1ee3dd1b8a.js","static/chunks/main-app-776fd087f52a1f50.js"],rootMainFilesTree:{},pages:{"/_app":[]}};
1
+ globalThis.__BUILD_MANIFEST={polyfillFiles:["static/chunks/polyfills-42372ed130431b0a.js"],devFiles:[],lowPriorityFiles:["static/MH4bXJmhiPfMG7orS09FV/_buildManifest.js","static/MH4bXJmhiPfMG7orS09FV/_ssgManifest.js"],rootMainFiles:["static/chunks/webpack-1adc95943fa90500.js","static/chunks/4bd1b696-8a4ab4fdf0ae305a.js","static/chunks/3794-4d73df1ee3dd1b8a.js","static/chunks/main-app-776fd087f52a1f50.js"],rootMainFilesTree:{},pages:{"/_app":[]}};