@techysy/10router 1.3.6 → 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 (656) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  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/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/experimental/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +4 -4
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  77. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  78. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  85. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_not-found.html +2 -2
  88. package/app/.next-cli-build/server/app/_not-found.rsc +6 -6
  89. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +6 -6
  90. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +6 -6
  91. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  92. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/saml/acs/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js +2 -2
  106. package/app/.next-cli-build/server/app/api/auth/saml/metadata/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js +2 -2
  108. package/app/.next-cli-build/server/app/api/auth/saml/start/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js +2 -2
  110. package/app/.next-cli-build/server/app/api/auth/saml/test/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/auth/verify-password/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js +2 -2
  122. package/app/.next-cli-build/server/app/api/cli-tools/claude-profiles/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/devin-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/gateway-probe/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  159. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  160. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/keys/rotate/route.js +1 -1
  162. package/app/.next-cli-build/server/app/api/keys/rotate/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/models/caps/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/models/caps/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/models/custom/bulk/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/network/egress-region/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/checkin/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/export/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/qoder/checkin/route.js.nft.json +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/qoder-cn/checkin/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/oauth/transfer/export/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/oauth/transfer/import/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/api-key/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/auto-import/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-kill/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/oauth/xiaomi-mimo/desktop-status/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/oauth/zed/auto-import/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/oauth/zed/import/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  272. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  276. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  282. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  285. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/security/status/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/security/status/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/settings/database/import-usage/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/settings/route.js +2 -2
  297. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  299. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/usage/[connectionId]/claude-reset/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  329. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  330. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  331. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  332. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js +1 -1
  333. package/app/.next-cli-build/server/app/api/usage/dashboard/route.js.nft.json +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/quotas/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/quotas/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  349. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  363. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  365. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  366. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  367. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  368. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  370. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  371. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  372. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  373. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  374. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  375. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  376. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  377. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  378. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  379. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  380. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  381. package/app/.next-cli-build/server/app/api/v1/systemone/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/systemone/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  394. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  396. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  397. package/app/.next-cli-build/server/app/api/version/route.js +2 -2
  398. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  399. package/app/.next-cli-build/server/app/api/version/shell-update/route.js.nft.json +1 -1
  400. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  401. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  402. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  403. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  404. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  405. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  406. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  407. package/app/.next-cli-build/server/app/callback.html +2 -2
  408. package/app/.next-cli-build/server/app/callback.rsc +6 -6
  409. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +6 -6
  410. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  411. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +6 -6
  412. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +2 -2
  413. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +8 -8
  414. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +8 -8
  415. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +8 -8
  416. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  417. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +2 -2
  418. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +8 -8
  419. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +8 -8
  420. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +8 -8
  421. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  422. package/app/.next-cli-build/server/app/dashboard/combos.html +2 -2
  423. package/app/.next-cli-build/server/app/dashboard/combos.rsc +8 -8
  424. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +8 -8
  425. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +8 -8
  426. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  427. package/app/.next-cli-build/server/app/dashboard/endpoint.html +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +8 -8
  429. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +8 -8
  430. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +8 -8
  431. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/experimental.html +2 -2
  433. package/app/.next-cli-build/server/app/dashboard/experimental.rsc +8 -8
  434. package/app/.next-cli-build/server/app/dashboard/experimental.segments/!KGRhc2hib2FyZCk/dashboard/experimental/__PAGE__.segment.rsc +8 -8
  435. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_full.segment.rsc +8 -8
  436. package/app/.next-cli-build/server/app/dashboard/experimental.segments/_tree.segment.rsc +2 -2
  437. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +2 -2
  438. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +8 -8
  439. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +8 -8
  440. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +8 -8
  441. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/mitm.html +2 -2
  443. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +8 -8
  444. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +8 -8
  445. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +8 -8
  446. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  447. package/app/.next-cli-build/server/app/dashboard/profile.html +2 -2
  448. package/app/.next-cli-build/server/app/dashboard/profile.rsc +8 -8
  449. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +8 -8
  450. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +8 -8
  451. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/providers/new.html +2 -2
  453. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +8 -8
  454. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +8 -8
  455. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +8 -8
  456. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  457. package/app/.next-cli-build/server/app/dashboard/providers.html +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/providers.rsc +8 -8
  459. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +8 -8
  460. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +8 -8
  461. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +2 -2
  463. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +8 -8
  464. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +8 -8
  465. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +8 -8
  466. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  467. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +8 -8
  469. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +8 -8
  470. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +8 -8
  471. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  473. package/app/.next-cli-build/server/app/dashboard/quota.rsc +9 -9
  474. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +9 -9
  475. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +9 -9
  476. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  477. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +2 -2
  481. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +6 -6
  482. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +6 -6
  483. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  484. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +6 -6
  485. package/app/.next-cli-build/server/app/dashboard/skills.html +2 -2
  486. package/app/.next-cli-build/server/app/dashboard/skills.rsc +8 -8
  487. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +8 -8
  488. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +8 -8
  489. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  490. package/app/.next-cli-build/server/app/dashboard/token-saver.html +2 -2
  491. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +8 -8
  492. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +8 -8
  493. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +8 -8
  494. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  495. package/app/.next-cli-build/server/app/dashboard/translator.html +2 -2
  496. package/app/.next-cli-build/server/app/dashboard/translator.rsc +8 -8
  497. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +8 -8
  498. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +8 -8
  499. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  500. package/app/.next-cli-build/server/app/dashboard/usage.html +2 -2
  501. package/app/.next-cli-build/server/app/dashboard/usage.rsc +8 -8
  502. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +8 -8
  503. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +8 -8
  504. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  505. package/app/.next-cli-build/server/app/dashboard.html +2 -2
  506. package/app/.next-cli-build/server/app/dashboard.rsc +8 -8
  507. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +8 -8
  508. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +8 -8
  509. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  510. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  511. package/app/.next-cli-build/server/app/index.html +1 -1
  512. package/app/.next-cli-build/server/app/index.rsc +6 -6
  513. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -6
  514. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +6 -6
  515. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  516. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  517. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  518. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  519. package/app/.next-cli-build/server/app/landing.html +2 -2
  520. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  521. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  522. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  523. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +6 -6
  524. package/app/.next-cli-build/server/app/login/page.js +1 -1
  525. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  526. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  527. package/app/.next-cli-build/server/app/login.html +2 -2
  528. package/app/.next-cli-build/server/app/login.rsc +7 -7
  529. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +7 -7
  530. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  531. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +7 -7
  532. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  533. package/app/.next-cli-build/server/app/page.js +1 -1
  534. package/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  535. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  536. package/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  537. package/app/.next-cli-build/server/chunks/1329.js +1 -1
  538. package/app/.next-cli-build/server/chunks/1345.js +1 -0
  539. package/app/.next-cli-build/server/chunks/1386.js +2 -2
  540. package/app/.next-cli-build/server/chunks/1806.js +1 -0
  541. package/app/.next-cli-build/server/chunks/2112.js +1 -1
  542. package/app/.next-cli-build/server/chunks/2557.js +9 -0
  543. package/app/.next-cli-build/server/chunks/2752.js +1 -0
  544. package/app/.next-cli-build/server/chunks/2926.js +1 -1
  545. package/app/.next-cli-build/server/chunks/2978.js +1 -0
  546. package/app/.next-cli-build/server/chunks/3256.js +1 -1
  547. package/app/.next-cli-build/server/chunks/3593.js +2 -2
  548. package/app/.next-cli-build/server/chunks/3659.js +1 -0
  549. package/app/.next-cli-build/server/chunks/3662.js +1 -0
  550. package/app/.next-cli-build/server/chunks/3792.js +1 -1
  551. package/app/.next-cli-build/server/chunks/3943.js +1 -1
  552. package/app/.next-cli-build/server/chunks/3962.js +1 -0
  553. package/app/.next-cli-build/server/chunks/4008.js +1 -1
  554. package/app/.next-cli-build/server/chunks/4123.js +1 -1
  555. package/app/.next-cli-build/server/chunks/4293.js +1 -1
  556. package/app/.next-cli-build/server/chunks/4692.js +6 -0
  557. package/app/.next-cli-build/server/chunks/4739.js +2 -2
  558. package/app/.next-cli-build/server/chunks/4780.js +2 -2
  559. package/app/.next-cli-build/server/chunks/4803.js +2 -2
  560. package/app/.next-cli-build/server/chunks/4927.js +3 -3
  561. package/app/.next-cli-build/server/chunks/507.js +2 -2
  562. package/app/.next-cli-build/server/chunks/5182.js +1 -1
  563. package/app/.next-cli-build/server/chunks/5210.js +3 -3
  564. package/app/.next-cli-build/server/chunks/5258.js +2 -2
  565. package/app/.next-cli-build/server/chunks/5433.js +1 -1
  566. package/app/.next-cli-build/server/chunks/5527.js +1 -0
  567. package/app/.next-cli-build/server/chunks/5615.js +1 -1
  568. package/app/.next-cli-build/server/chunks/5781.js +1 -1
  569. package/app/.next-cli-build/server/chunks/595.js +1 -1
  570. package/app/.next-cli-build/server/chunks/6252.js +2 -2
  571. package/app/.next-cli-build/server/chunks/6306.js +1 -1
  572. package/app/.next-cli-build/server/chunks/6326.js +1 -1
  573. package/app/.next-cli-build/server/chunks/6457.js +1 -1
  574. package/app/.next-cli-build/server/chunks/6756.js +1 -1
  575. package/app/.next-cli-build/server/chunks/682.js +1 -1
  576. package/app/.next-cli-build/server/chunks/6947.js +1 -1
  577. package/app/.next-cli-build/server/chunks/6960.js +1 -1
  578. package/app/.next-cli-build/server/chunks/698.js +2 -2
  579. package/app/.next-cli-build/server/chunks/7067.js +1 -1
  580. package/app/.next-cli-build/server/chunks/7122.js +1 -1
  581. package/app/.next-cli-build/server/chunks/7247.js +1 -1
  582. package/app/.next-cli-build/server/chunks/7274.js +6 -3
  583. package/app/.next-cli-build/server/chunks/7322.js +2 -2
  584. package/app/.next-cli-build/server/chunks/75.js +1 -0
  585. package/app/.next-cli-build/server/chunks/7568.js +1 -1
  586. package/app/.next-cli-build/server/chunks/7828.js +1 -1
  587. package/app/.next-cli-build/server/chunks/7965.js +2 -2
  588. package/app/.next-cli-build/server/chunks/8062.js +2 -2
  589. package/app/.next-cli-build/server/chunks/8145.js +1 -0
  590. package/app/.next-cli-build/server/chunks/8172.js +2 -2
  591. package/app/.next-cli-build/server/chunks/{7239.js → 8318.js} +2 -2
  592. package/app/.next-cli-build/server/chunks/8439.js +1 -0
  593. package/app/.next-cli-build/server/chunks/8469.js +2 -2
  594. package/app/.next-cli-build/server/chunks/8520.js +2 -2
  595. package/app/.next-cli-build/server/chunks/8595.js +1 -1
  596. package/app/.next-cli-build/server/chunks/8672.js +1 -1
  597. package/app/.next-cli-build/server/chunks/8675.js +1 -0
  598. package/app/.next-cli-build/server/chunks/8689.js +1 -1
  599. package/app/.next-cli-build/server/chunks/8838.js +1 -1
  600. package/app/.next-cli-build/server/chunks/8895.js +9 -9
  601. package/app/.next-cli-build/server/chunks/9055.js +1 -1
  602. package/app/.next-cli-build/server/chunks/939.js +1 -1
  603. package/app/.next-cli-build/server/chunks/9417.js +6 -0
  604. package/app/.next-cli-build/server/chunks/9451.js +2 -2
  605. package/app/.next-cli-build/server/chunks/9489.js +1 -1
  606. package/app/.next-cli-build/server/chunks/9609.js +1 -1
  607. package/app/.next-cli-build/server/chunks/9628.js +1 -1
  608. package/app/.next-cli-build/server/chunks/9713.js +1 -0
  609. package/app/.next-cli-build/server/chunks/976.js +2 -2
  610. package/app/.next-cli-build/server/instrumentation.js.nft.json +1 -1
  611. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  612. package/app/.next-cli-build/server/middleware.js +4 -4
  613. package/app/.next-cli-build/server/middleware.js.nft.json +1 -1
  614. package/app/.next-cli-build/server/pages/404.html +2 -2
  615. package/app/.next-cli-build/server/pages/500.html +1 -1
  616. package/app/.next-cli-build/static/chunks/1243-64d16638d3aac467.js +3 -0
  617. package/app/.next-cli-build/static/chunks/1321-1ad989ddb9bd4822.js +1 -0
  618. package/app/.next-cli-build/static/chunks/5497-a519f837339f7d19.js +7 -0
  619. package/app/.next-cli-build/static/chunks/6109-7d8788b228fed22f.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-2df49dc3be3c6b7d.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-2a679f53191d77f7.js → page-de760afb83419302.js} +9 -9
  622. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-7a5d36237ec6b40e.js +14 -0
  623. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-e0183e527ccc2c9b.js +1 -0
  624. package/app/.next-cli-build/static/css/66cb1d1c16ed3a27.css +1 -0
  625. package/app/package.json +71 -71
  626. package/app/public/i18n/changelog/en.md +21 -3
  627. package/app/public/i18n/changelog/zh-CN.md +21 -3
  628. package/app/public/i18n/changelog/zh-TW.md +21 -3
  629. package/app/public/i18n/literals/zh-CN.json +22 -0
  630. package/app/public/i18n/literals/zh-TW.json +21 -0
  631. package/app/src/lib/db/adapters/sqljsAdapter.js +42 -9
  632. package/app/src/sse/services/backgroundTokenRefresh.js +7 -0
  633. package/app/src/sse/services/codebuddyCheckin.js +6 -0
  634. package/package.json +61 -61
  635. package/app/.next-cli-build/server/chunks/1159.js +0 -7
  636. package/app/.next-cli-build/server/chunks/1710.js +0 -6
  637. package/app/.next-cli-build/server/chunks/3245.js +0 -1
  638. package/app/.next-cli-build/server/chunks/3885.js +0 -1
  639. package/app/.next-cli-build/server/chunks/4177.js +0 -1
  640. package/app/.next-cli-build/server/chunks/4282.js +0 -1
  641. package/app/.next-cli-build/server/chunks/436.js +0 -1
  642. package/app/.next-cli-build/server/chunks/4746.js +0 -1
  643. package/app/.next-cli-build/server/chunks/480.js +0 -6
  644. package/app/.next-cli-build/server/chunks/5485.js +0 -1
  645. package/app/.next-cli-build/server/chunks/653.js +0 -1
  646. package/app/.next-cli-build/server/chunks/6982.js +0 -1
  647. package/app/.next-cli-build/static/chunks/1243-25be5a7b0193949d.js +0 -3
  648. package/app/.next-cli-build/static/chunks/1321-7d951e8069135f2f.js +0 -1
  649. package/app/.next-cli-build/static/chunks/5497-dce0ac54d3e8f165.js +0 -7
  650. package/app/.next-cli-build/static/chunks/6109-c3fa41c974584a96.js +0 -1
  651. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/experimental/page-5ec2e868aa2ff281.js +0 -1
  652. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-21ddfd8a9e7d781f.js +0 -14
  653. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-ec96de061407f126.js +0 -1
  654. package/app/.next-cli-build/static/css/b80ae6e58b63fd53.css +0 -1
  655. /package/app/.next-cli-build/static/{eqWYkzNeaSBj4mkYsjYbh → MH4bXJmhiPfMG7orS09FV}/_buildManifest.js +0 -0
  656. /package/app/.next-cli-build/static/{eqWYkzNeaSBj4mkYsjYbh → MH4bXJmhiPfMG7orS09FV}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=7239,exports.ids=[7239],exports.modules={8578:(a,b,c)=>{"use strict";let d=c(33873),e=c(29021),f=c(15296),{MITM_DIR:g}=c(82193),h=d.join(g,"rootCA.key"),i=d.join(g,"rootCA.crt");function j(a){try{let b=f.pki.certificateFromPem(e.readFileSync(a,"utf8")),c=new Date(Date.now()+2592e6);return b.validity.notAfter<c}catch{return!0}}function k(){if(e.existsSync(h)){if("win32"===process.platform){try{let{execFileSync:a}=c(31421),b=c(48161),d=[process.env.USERDOMAIN,process.env.USERNAME].filter(Boolean).join("\\")||b.userInfo().username;a("icacls",[h,"/inheritance:r","/grant:r",`${d}:(F)`],{stdio:"ignore",windowsHide:!0})}catch(a){console.warn(`⚠️ Could not restrict ACLs on ${h}: ${a.message}`)}return}try{e.chmodSync(h,384)}catch(a){console.warn(`⚠️ Could not restrict permissions on ${h}: ${a.message}`)}}}a.exports={generateRootCA:function(){let a=e.existsSync(h)&&e.existsSync(i);if(a&&!j(i))return k(),console.log("✅ Root CA already exists"),{key:h,cert:i};if(a){console.log("\uD83D\uDD10 Root CA expired or expiring soon — regenerating...");try{e.unlinkSync(h)}catch{}try{e.unlinkSync(i)}catch{}}e.existsSync(g)||e.mkdirSync(g,{recursive:!0,mode:448}),console.log("\uD83D\uDD10 Generating Root CA certificate...");let b=f.pki.rsa.generateKeyPair(2048),c=f.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber="01",c.validity.notBefore=new Date,c.validity.notAfter=new Date,c.validity.notAfter.setFullYear(c.validity.notBefore.getFullYear()+10);let d=[{name:"commonName",value:"10Router MITM Root CA"},{name:"organizationName",value:"10Router"},{name:"countryName",value:"US"}];c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),c.sign(b.privateKey,f.md.sha256.create());let l=f.pki.privateKeyToPem(b.privateKey),m=f.pki.certificateToPem(c);return e.writeFileSync(h,l,{mode:384}),e.writeFileSync(i,m),k(),console.log("✅ Root CA generated successfully"),{key:h,cert:i}},loadRootCA:function(){if(!e.existsSync(h)||!e.existsSync(i))throw Error("Root CA not found. Generate it first.");let a=e.readFileSync(h,"utf8"),b=e.readFileSync(i,"utf8");return{key:f.pki.privateKeyFromPem(a),cert:f.pki.certificateFromPem(b)}},generateLeafCert:function(a,b){let c=f.pki.rsa.generateKeyPair(2048),d=f.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=Math.floor(1e6*Math.random()).toString(),d.validity.notBefore=new Date,d.validity.notAfter=new Date,d.validity.notAfter.setFullYear(d.validity.notBefore.getFullYear()+1),d.setSubject([{name:"commonName",value:a}]),d.setIssuer(b.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:a},{type:2,value:`*.${a}`}]}]),d.sign(b.key,f.md.sha256.create()),{key:f.pki.privateKeyToPem(c.privateKey),cert:f.pki.certificateToPem(d)}},isCertExpired:j,ROOT_CA_CERT_PATH:i,ROOT_CA_KEY_PATH:h}},9631:(a,b,c)=>{"use strict";let d=c(29021),e=c(55511),{exec:f}=c(79646),{execWithPassword:g,isSudoAvailable:h}=c(66936),{runElevatedPowerShell:i,quotePs:j}=c(64809),{log:k,err:l}=c(87777),m="win32"===process.platform,n="darwin"===process.platform,o=[{dir:"/usr/local/share/ca-certificates",cmd:"update-ca-certificates"},{dir:"/etc/ca-certificates/trust-source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/ca-trust/source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/trust/anchors",cmd:"update-ca-certificates"}];function p(){for(let a of o)if(d.existsSync(a.dir))return a;return o[0]}let q="10Router MITM Root CA";function r(a){let b=d.readFileSync(a,"utf-8"),c=Buffer.from(b.replace(/-----[^-]+-----/g,"").replace(/\s/g,""),"base64");return e.createHash("sha1").update(c).digest("hex").toUpperCase().match(/.{2}/g).join(":")}async function s(a){var b,c;let e,g;return m?(b=a,new Promise(a=>{let c;try{c=r(b).replace(/:/g,"")}catch{return a(!1)}f(`certutil -store Root ${c}`,{windowsHide:!0},b=>{a(!b)})})):n?(c=a,new Promise(a=>{try{let b=r(c).replace(/:/g,"");f(`security find-certificate -a -c "${q}" -Z /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},(d,e)=>{if(d||!e||!RegExp(`SHA-1 hash:\\s*${b}`,"i").test(e))return a(!1);f(`security verify-cert -c "${c}" -p ssl -k /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},b=>{a(!b)})})}catch{a(!1)}})):(e=p(),g=`${e.dir}/10router-root-ca.crt`,Promise.resolve(d.existsSync(g)))}async function t(a,b){let c=`security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${b}"`;try{await g(`security delete-certificate -c "10Router MITM Root CA" /Library/Keychains/System.keychain 2>/dev/null || true && ${c}`,a),k("\uD83D\uDD10 Cert: ✅ installed to system keychain")}catch(a){throw Error(a.message?.includes("canceled")?"User canceled authorization":"Certificate install failed")}}async function u(a){let b=`
1
+ exports.id=8318,exports.ids=[3662,8318],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),未完成前所有调用都会被拒绝;请按上游提示的地址完成核验后重试。"},8578:(a,b,c)=>{"use strict";let d=c(33873),e=c(29021),f=c(15296),{MITM_DIR:g}=c(82193),h=d.join(g,"rootCA.key"),i=d.join(g,"rootCA.crt");function j(a){try{let b=f.pki.certificateFromPem(e.readFileSync(a,"utf8")),c=new Date(Date.now()+2592e6);return b.validity.notAfter<c}catch{return!0}}function k(){if(e.existsSync(h)){if("win32"===process.platform){try{let{execFileSync:a}=c(31421),b=c(48161),d=[process.env.USERDOMAIN,process.env.USERNAME].filter(Boolean).join("\\")||b.userInfo().username;a("icacls",[h,"/inheritance:r","/grant:r",`${d}:(F)`],{stdio:"ignore",windowsHide:!0})}catch(a){console.warn(`⚠️ Could not restrict ACLs on ${h}: ${a.message}`)}return}try{e.chmodSync(h,384)}catch(a){console.warn(`⚠️ Could not restrict permissions on ${h}: ${a.message}`)}}}a.exports={generateRootCA:function(){let a=e.existsSync(h)&&e.existsSync(i);if(a&&!j(i))return k(),console.log("✅ Root CA already exists"),{key:h,cert:i};if(a){console.log("\uD83D\uDD10 Root CA expired or expiring soon — regenerating...");try{e.unlinkSync(h)}catch{}try{e.unlinkSync(i)}catch{}}e.existsSync(g)||e.mkdirSync(g,{recursive:!0,mode:448}),console.log("\uD83D\uDD10 Generating Root CA certificate...");let b=f.pki.rsa.generateKeyPair(2048),c=f.pki.createCertificate();c.publicKey=b.publicKey,c.serialNumber="01",c.validity.notBefore=new Date,c.validity.notAfter=new Date,c.validity.notAfter.setFullYear(c.validity.notBefore.getFullYear()+10);let d=[{name:"commonName",value:"10Router MITM Root CA"},{name:"organizationName",value:"10Router"},{name:"countryName",value:"US"}];c.setSubject(d),c.setIssuer(d),c.setExtensions([{name:"basicConstraints",cA:!0,critical:!0},{name:"keyUsage",keyCertSign:!0,cRLSign:!0,critical:!0},{name:"subjectKeyIdentifier"}]),c.sign(b.privateKey,f.md.sha256.create());let l=f.pki.privateKeyToPem(b.privateKey),m=f.pki.certificateToPem(c);return e.writeFileSync(h,l,{mode:384}),e.writeFileSync(i,m),k(),console.log("✅ Root CA generated successfully"),{key:h,cert:i}},loadRootCA:function(){if(!e.existsSync(h)||!e.existsSync(i))throw Error("Root CA not found. Generate it first.");let a=e.readFileSync(h,"utf8"),b=e.readFileSync(i,"utf8");return{key:f.pki.privateKeyFromPem(a),cert:f.pki.certificateFromPem(b)}},generateLeafCert:function(a,b){let c=f.pki.rsa.generateKeyPair(2048),d=f.pki.createCertificate();return d.publicKey=c.publicKey,d.serialNumber=Math.floor(1e6*Math.random()).toString(),d.validity.notBefore=new Date,d.validity.notAfter=new Date,d.validity.notAfter.setFullYear(d.validity.notBefore.getFullYear()+1),d.setSubject([{name:"commonName",value:a}]),d.setIssuer(b.cert.subject.attributes),d.setExtensions([{name:"basicConstraints",cA:!1},{name:"keyUsage",digitalSignature:!0,keyEncipherment:!0},{name:"extKeyUsage",serverAuth:!0,clientAuth:!0},{name:"subjectAltName",altNames:[{type:2,value:a},{type:2,value:`*.${a}`}]}]),d.sign(b.key,f.md.sha256.create()),{key:f.pki.privateKeyToPem(c.privateKey),cert:f.pki.certificateToPem(d)}},isCertExpired:j,ROOT_CA_CERT_PATH:i,ROOT_CA_KEY_PATH:h}},9631:(a,b,c)=>{"use strict";let d=c(29021),e=c(55511),{exec:f}=c(79646),{execWithPassword:g,isSudoAvailable:h}=c(66936),{runElevatedPowerShell:i,quotePs:j}=c(64809),{log:k,err:l}=c(87777),m="win32"===process.platform,n="darwin"===process.platform,o=[{dir:"/usr/local/share/ca-certificates",cmd:"update-ca-certificates"},{dir:"/etc/ca-certificates/trust-source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/ca-trust/source/anchors",cmd:"update-ca-trust"},{dir:"/etc/pki/trust/anchors",cmd:"update-ca-certificates"}];function p(){for(let a of o)if(d.existsSync(a.dir))return a;return o[0]}let q="10Router MITM Root CA";function r(a){let b=d.readFileSync(a,"utf-8"),c=Buffer.from(b.replace(/-----[^-]+-----/g,"").replace(/\s/g,""),"base64");return e.createHash("sha1").update(c).digest("hex").toUpperCase().match(/.{2}/g).join(":")}async function s(a){var b,c;let e,g;return m?(b=a,new Promise(a=>{let c;try{c=r(b).replace(/:/g,"")}catch{return a(!1)}f(`certutil -store Root ${c}`,{windowsHide:!0},b=>{a(!b)})})):n?(c=a,new Promise(a=>{try{let b=r(c).replace(/:/g,"");f(`security find-certificate -a -c "${q}" -Z /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},(d,e)=>{if(d||!e||!RegExp(`SHA-1 hash:\\s*${b}`,"i").test(e))return a(!1);f(`security verify-cert -c "${c}" -p ssl -k /Library/Keychains/System.keychain 2>/dev/null`,{windowsHide:!0},b=>{a(!b)})})}catch{a(!1)}})):(e=p(),g=`${e.dir}/10router-root-ca.crt`,Promise.resolve(d.existsSync(g)))}async function t(a,b){let c=`security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${b}"`;try{await g(`security delete-certificate -c "10Router MITM Root CA" /Library/Keychains/System.keychain 2>/dev/null || true && ${c}`,a),k("\uD83D\uDD10 Cert: ✅ installed to system keychain")}catch(a){throw Error(a.message?.includes("canceled")?"User canceled authorization":"Certificate install failed")}}async function u(a){let b=`
2
2
  certutil -delstore Root ${j(q)} 2>$null | Out-Null
3
3
  $exit = & certutil -addstore Root ${j(a)} 2>&1
4
4
  if ($LASTEXITCODE -ne 0) { throw "certutil exit $LASTEXITCODE" }
@@ -50,7 +50,7 @@ ${c}
50
50
  `.replace(/'/g,"'\\''");await t(`printf '%s' '${e}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ added ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to add DNS entry: ${a.message}`)}}async function x(a,b){let c=k[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>v(a));if(0===d.length)return void i(`🌐 DNS ${a}: already inactive`);try{if(o){let a=g.readFileSync(q,"utf8"),b=a.split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";n(q,a,b),await l("ipconfig /flushdns | Out-Null")}else{let a=(g.readFileSync(q,"utf8").split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\n").replace(/[\r\n\s]+$/g,"")+"\n").replace(/'/g,"'\\''");await t(`printf '%s' '${a}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ removed ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to remove DNS entry: ${a.message}`)}}async function y(a){for(let b of Object.keys(k))try{await x(b,a)}catch(a){j(`DNS ${b}: failed to remove — ${a.message}`)}}a.exports={TOOL_HOSTS:k,addDNSEntry:w,removeDNSEntry:x,removeAllDNSEntries:y,removeAllDNSEntriesSync:function(){try{if(!g.existsSync(q))return;let a=Object.values(k).flat(),b=g.readFileSync(q,"utf8"),c=o?"\r\n":"\n",d=b.split(/\r?\n/).filter(b=>!a.some(a=>b.includes(a))).join(c).replace(/[\r\n\s]+$/g,"")+c;if(d===b)return;if(g.writeFileSync(q,d,"utf8"),o)try{f("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}else if(p)try{f("dscacheutil -flushcache && killall -HUP mDNSResponder",{stdio:"ignore"})}catch{}else try{f("resolvectl flush-caches 2>/dev/null || true",{stdio:"ignore"})}catch{}}catch{}},execWithPassword:t,isSudoAvailable:r,canRunSudoWithoutPassword:s,isSudoPasswordRequired:function(){return!o&&r()&&!s()},checkDNSEntry:v,checkAllDNSStatus:function(){try{let a=g.readFileSync(q,"utf8"),b={};for(let[c,d]of Object.entries(k))b[c]=d.every(b=>a.includes(b));return b}catch{return Object.fromEntries(Object.keys(k).map(a=>[a,!1]))}},listToolsWithDnsEntries:function(){try{let a=g.readFileSync(q,"utf8");return Object.entries(k).filter(([,b])=>b.some(b=>a.includes(b))).map(([a])=>a)}catch{return[]}}}},78335:()=>{},82193:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),f=c(21820),g="10router",h="9router";function i(){return"win32"===process.platform?e.join(process.env.APPDATA||e.join(f.homedir(),"AppData","Roaming"),h):e.join(f.homedir(),`.${h}`)}let j=["db.json","usage.json","disabledModels.json","request-details.json"];function k(){return"win32"===process.platform?e.join(process.env.APPDATA||e.join(f.homedir(),"AppData","Roaming"),g):e.join(f.homedir(),`.${g}`)}let l=function(){let a=process.env.DATA_DIR;if(!a)return!function(){try{let a=i(),b=k();if(!d.existsSync(a)||d.existsSync(e.join(b,"db","data.sqlite"))||j.some(a=>d.existsSync(e.join(b,a))))return;d.cpSync(a,b,{recursive:!0,force:!1}),console.log(`[migration] copied legacy data dir ${a} → ${b}`)}catch(a){console.warn(`[migration] failed to migrate ${i()} → ${k()}: ${a?.message}`)}}(),k();try{return d.mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${g}`),k();throw b}}(),m=e.join(l,"mitm");a.exports={DATA_DIR:l,MITM_DIR:m}},85341:a=>{"use strict";a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["runtime.us-east-1.kiro.dev","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},87777:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),f=c(74075),{DATA_DIR:g}=c(82193),{LOG_BLACKLIST_URL_PARTS:h}=c(17511);function i(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let j=e.join(g,"logs","mitm");d.existsSync(j)||d.mkdirSync(j,{recursive:!0});let k=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function l(a,b=80){return String(a).replace(/[^a-zA-Z0-9]/g,"_").substring(0,b)}function m(a){return!!a&&h.some(b=>a.includes(b))}a.exports={log:a=>console.log(`[${i()}] [MITM] ${a}`),err:a=>console.error(`[${i()}] ❌ [MITM] ${a}`),dumpRequest:function(a,b,c="raw"){if(m(a.url))return null;try{let f=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${f}_${c}_${g}.req.json`),i=null;try{i=JSON.parse(b.toString())}catch{}return d.writeFileSync(h,JSON.stringify({method:a.method,url:a.url,host:a.headers.host,headers:a.headers,body:i??b.toString("utf8")},null,2)),h}catch{return null}},createResponseDumper:function(a,b="raw"){if(m(a.url))return null;let c=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${c}_${b}_${g}.res.txt`),i=0,n={},o=[];return{writeHeader:(a,b)=>{i=a,n=b||{}},writeChunk:a=>{null!=a&&o.push(Buffer.isBuffer(a)?a:Buffer.from(a))},end:()=>{try{let a=Buffer.concat(o),b=n["content-encoding"]||n["Content-Encoding"],c=(function(a,b){if(!a||0===a.length)return a;try{let c=(b||"").toLowerCase();if(c.includes("gzip"))return f.gunzipSync(a);if(c.includes("br"))return f.brotliDecompressSync(a);if(c.includes("deflate"))return f.inflateSync(a)}catch{}return a})(a,b).toString("utf8");if(k.test(c))return;let e={...n};delete e["content-encoding"],delete e["Content-Encoding"];let g=`STATUS: ${i}
51
51
  HEADERS: ${JSON.stringify(e,null,2)}
52
52
  ---BODY---
53
- ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},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,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,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,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)},96182:(a,b,c)=>{"use strict";let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,listToolsWithDnsEntries:r,TOOL_HOSTS:s,isSudoAvailable:t,isSudoPasswordRequired:u}=c(66936),{isAdmin:v}=c(64809),w="win32"===process.platform,x="darwin"===process.platform,{generateCert:y}=c(26033),{installCert:z,uninstallCert:A}=c(9631),{isCertExpired:B}=c(8578),{DATA_DIR:C,MITM_DIR:D}=c(82193),{log:E,err:F}=c(87777),{LSOF_BIN:G}=c(17511),H="http://localhost:20128";function I(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function J(){if(!ab)return H;try{let a=await ab(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return H;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return H;return b.replace(/\/+$/,"")}catch{return H}}let K=g.join(D,".mitm.pid"),L=g.join(D,".mitm.lock"),M=[5e3,1e4,2e4,3e4,6e4],N=0,O=0,P=!1;function Q(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function R(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(C,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{E(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let S=R(Q()),T=null,U=null;function V(){return globalThis.__mitmSudoPassword||null}function W(a){globalThis.__mitmSudoPassword=a}function X(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function Y(a,b=!1,e=null){if(w)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||t()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}let Z=/^[0-9a-f]{24}:[0-9a-f]{32}:[0-9a-f]+$/;async function $(){return Promise.resolve().then(c.bind(c,72082))}async function _(a){let{encryptSecret:b}=await $();return b(a)}async function aa(a){if("string"!=typeof a||!a)return null;let{isEncrypted:b,decryptSecret:d}=await $();if(b(a))try{return d(a)||null}catch{return null}if(!Z.test(a))return null;try{let[b,d,e]=a.split(":"),f=l.createDecipheriv("aes-256-gcm",function(){let{machineIdSync:a}=c(19713),b=a();if(!b||"string"!=typeof b||!b.trim())throw Error("machine id unavailable — cannot read a legacy encrypted password");return l.createHash("sha256").update(b+"10router-mitm-pwd").digest()}(),Buffer.from(b,"hex"));return f.setAuthTag(Buffer.from(d,"hex")),f.update(Buffer.from(e,"hex"))+f.final("utf8")||null}catch{return null}}let ab=null,ac=null;async function ad(a,b){if(ac)try{let c={mitmEnabled:a};b&&(c.mitmSudoEncrypted=await _(b)),await ac(c)}catch(a){F(`Failed to save settings: ${a.message}`)}}async function ae(){if(ac)try{await ac({mitmSudoEncrypted:null})}catch(a){F(`Failed to clear encrypted password: ${a.message}`)}}async function af(){if(!ab)return null;try{let a=(await ab()).mitmSudoEncrypted;if(!a)return null;let b=await aa(a);if(!b)return null;let{isEncrypted:c}=await $();if(!c(a)&&ac)try{await ac({mitmSudoEncrypted:await _(b)})}catch{}return b}catch{return null}}async function ag(a,b){if(ac&&ab)try{let c={...(await ab()).dnsToolEnabled||{},[a]:b};await ac({dnsToolEnabled:c})}catch(a){F(`Failed to save DNS state: ${a.message}`)}}async function ah(){if(!ab)return{};try{return(await ab()).dnsToolEnabled||{}}catch{return{}}}async function ai(a){let b=await ah(),c=a||V()||await af();for(let[a,d]of Object.entries(b))if(d&&s[a])try{await m(a,c)}catch(b){F(`DNS ${a}: restore failed — ${b.message}`)}}async function aj(){let a=r();if(0===a.length)return;let b=await an().catch(()=>null);if(b?.running)return;let c=ab?await ab().catch(()=>({})):{},d=await ah(),e=a.filter(a=>!c.mitmEnabled||!d[a]);if(0===e.length)return;if(!await ak())return void F(`DNS: stale entries from a previous run (${e.join(", ")}) still point at 127.0.0.1 — those tools will keep failing until they are removed. `+(w?"Restart 10Router as administrator to clean them up.":"Enter your sudo password in the dashboard to clean them up."));let f=V()||await af();for(let a of e)try{await n(a,f),E(`🌐 DNS ${a}: cleaned up stale entries from a previous run`)}catch(b){F(`DNS ${a}: stale cleanup failed — ${b.message}`)}}async function ak(){return w?v():!(!v()&&u())||!!(V()||await af())}function al(a){return new Promise(a=>{w?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${G} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function am(a){if(T&&!T.killed){try{T.kill("SIGKILL")}catch{}T=null,U=null}try{if(h.existsSync(K)){let b=parseInt(h.readFileSync(K,"utf-8").trim(),10);b&&X(b)&&(Y(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(K)}}catch{}if(!w&&S)try{let b=S.replace(/'/g,"'\\''");if(a||t()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function an(){let a=null!==T&&!T.killed,b=U;if(!a)try{if(h.existsSync(K)){let c=parseInt(h.readFileSync(K,"utf-8").trim(),10);c&&X(c)?(a=!0,b=c):h.unlinkSync(K)}}catch{}let d=q(),e=g.join(D,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function ao(a){if(P)return;if(P=!0,Date.now()-O>=6e4&&(N=0),N>=5){F("Max restart attempts reached. Giving up."),P=!1;return}let b=M[Math.min(N,M.length-1)];N++,E(`Restarting in ${b/1e3}s... (${N}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=ab?await ab():null;if(b&&!b.mitmEnabled){E("MITM disabled, skipping restart"),P=!1;return}let c=V()||await af();if(!c&&!w){F("No cached password, cannot auto-restart"),P=!1;return}await aq(a,c),E("\uD83D\uDD04 Restarted successfully"),N=0,P=!1}catch(b){F(`Restart attempt ${N}/5 failed: ${b.message}`),P=!1,ao(a)}}async function ap(a,b){if(a&&a.pid){if(w)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||t()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function aq(a,b,l=!1){if(!T||T.killed)try{if(h.existsSync(K)){let a=parseInt(h.readFileSync(K,"utf-8").trim(),10);if(a&&X(a))return U=a,E(`♻️ Reusing existing process (PID: ${a})`),await ad(!0,b),b&&W(b),{running:!0,pid:a};h.unlinkSync(K)}}catch{}if(T&&!T.killed)throw Error("MITM server is already running");try{h.writeFileSync(L,String(process.pid),{flag:"wx"})}catch(a){if("EEXIST"===a.code){let a=!1;try{let b=parseInt(h.readFileSync(L,"utf-8").trim(),10);a=!b||!X(b)}catch{a=!0}if(!a)throw Error("MITM server is already starting (lock contention)");try{h.unlinkSync(L)}catch{}h.writeFileSync(L,String(process.pid),{flag:"wx"})}else throw a}try{if(await am(b),!w){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await al(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)E(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ap(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(D,"rootCA.crt"),n=g.join(D,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||B(m)){if(o){E("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||V()||await af();try{await A(a,m)}catch{}}E("\uD83D\uDD10 Generating Root CA..."),await y()}let{checkCertInstalled:p}=c(9631),r=await p(m),s=!w&&!x&&!t();if(r)E("\uD83D\uDD10 Cert: already trusted ✅");else{E("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||V()||await af();if(s)E(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&u())throw Error("Sudo password required to install Root CA certificate");try{await z(a,m),E("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let v=S;if((!v||!h.existsSync(v))&&(E(`[MITM] server.js missing at ${v} → recopying`),!(v=R(Q()))||!h.existsSync(v)))throw Error(`MITM server.js not found at ${v}. Reinstall 10router.`);let C=await J();if(E(`🚀 Starting server... (router: ${C})`),w){let c=await al(b);if(c)if(l)E(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ap(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}T=e(process.execPath,[v],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:C}}),ac&&await ac({mitmCertInstalled:!0}).catch(()=>{})}else if(t()){let c=`export HOME=${I(i.homedir())} && export MITM_ROUTER_BASE=${I(C)} && export NODE_ENV=production && IFS= read -r ROUTER_API_KEY && export ROUTER_API_KEY && exec ${I(process.execPath)} ${I(v)}`;(T=e("sudo",["-S","-E","sh","-c",c],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
53
+ ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},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)},96182:(a,b,c)=>{"use strict";let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,listToolsWithDnsEntries:r,TOOL_HOSTS:s,isSudoAvailable:t,isSudoPasswordRequired:u}=c(66936),{isAdmin:v}=c(64809),w="win32"===process.platform,x="darwin"===process.platform,{generateCert:y}=c(26033),{installCert:z,uninstallCert:A}=c(9631),{isCertExpired:B}=c(8578),{DATA_DIR:C,MITM_DIR:D}=c(82193),{log:E,err:F}=c(87777),{LSOF_BIN:G}=c(17511),H="http://localhost:20128";function I(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function J(){if(!ab)return H;try{let a=await ab(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return H;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return H;return b.replace(/\/+$/,"")}catch{return H}}let K=g.join(D,".mitm.pid"),L=g.join(D,".mitm.lock"),M=[5e3,1e4,2e4,3e4,6e4],N=0,O=0,P=!1;function Q(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function R(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(C,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{E(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let S=R(Q()),T=null,U=null;function V(){return globalThis.__mitmSudoPassword||null}function W(a){globalThis.__mitmSudoPassword=a}function X(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function Y(a,b=!1,e=null){if(w)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||t()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}let Z=/^[0-9a-f]{24}:[0-9a-f]{32}:[0-9a-f]+$/;async function $(){return Promise.resolve().then(c.bind(c,72082))}async function _(a){let{encryptSecret:b}=await $();return b(a)}async function aa(a){if("string"!=typeof a||!a)return null;let{isEncrypted:b,decryptSecret:d}=await $();if(b(a))try{return d(a)||null}catch{return null}if(!Z.test(a))return null;try{let[b,d,e]=a.split(":"),f=l.createDecipheriv("aes-256-gcm",function(){let{machineIdSync:a}=c(19713),b=a();if(!b||"string"!=typeof b||!b.trim())throw Error("machine id unavailable — cannot read a legacy encrypted password");return l.createHash("sha256").update(b+"10router-mitm-pwd").digest()}(),Buffer.from(b,"hex"));return f.setAuthTag(Buffer.from(d,"hex")),f.update(Buffer.from(e,"hex"))+f.final("utf8")||null}catch{return null}}let ab=null,ac=null;async function ad(a,b){if(ac)try{let c={mitmEnabled:a};b&&(c.mitmSudoEncrypted=await _(b)),await ac(c)}catch(a){F(`Failed to save settings: ${a.message}`)}}async function ae(){if(ac)try{await ac({mitmSudoEncrypted:null})}catch(a){F(`Failed to clear encrypted password: ${a.message}`)}}async function af(){if(!ab)return null;try{let a=(await ab()).mitmSudoEncrypted;if(!a)return null;let b=await aa(a);if(!b)return null;let{isEncrypted:c}=await $();if(!c(a)&&ac)try{await ac({mitmSudoEncrypted:await _(b)})}catch{}return b}catch{return null}}async function ag(a,b){if(ac&&ab)try{let c={...(await ab()).dnsToolEnabled||{},[a]:b};await ac({dnsToolEnabled:c})}catch(a){F(`Failed to save DNS state: ${a.message}`)}}async function ah(){if(!ab)return{};try{return(await ab()).dnsToolEnabled||{}}catch{return{}}}async function ai(a){let b=await ah(),c=a||V()||await af();for(let[a,d]of Object.entries(b))if(d&&s[a])try{await m(a,c)}catch(b){F(`DNS ${a}: restore failed — ${b.message}`)}}async function aj(){let a=r();if(0===a.length)return;let b=await an().catch(()=>null);if(b?.running)return;let c=ab?await ab().catch(()=>({})):{},d=await ah(),e=a.filter(a=>!c.mitmEnabled||!d[a]);if(0===e.length)return;if(!await ak())return void F(`DNS: stale entries from a previous run (${e.join(", ")}) still point at 127.0.0.1 — those tools will keep failing until they are removed. `+(w?"Restart 10Router as administrator to clean them up.":"Enter your sudo password in the dashboard to clean them up."));let f=V()||await af();for(let a of e)try{await n(a,f),E(`🌐 DNS ${a}: cleaned up stale entries from a previous run`)}catch(b){F(`DNS ${a}: stale cleanup failed — ${b.message}`)}}async function ak(){return w?v():!(!v()&&u())||!!(V()||await af())}function al(a){return new Promise(a=>{w?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${G} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function am(a){if(T&&!T.killed){try{T.kill("SIGKILL")}catch{}T=null,U=null}try{if(h.existsSync(K)){let b=parseInt(h.readFileSync(K,"utf-8").trim(),10);b&&X(b)&&(Y(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(K)}}catch{}if(!w&&S)try{let b=S.replace(/'/g,"'\\''");if(a||t()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function an(){let a=null!==T&&!T.killed,b=U;if(!a)try{if(h.existsSync(K)){let c=parseInt(h.readFileSync(K,"utf-8").trim(),10);c&&X(c)?(a=!0,b=c):h.unlinkSync(K)}}catch{}let d=q(),e=g.join(D,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function ao(a){if(P)return;if(P=!0,Date.now()-O>=6e4&&(N=0),N>=5){F("Max restart attempts reached. Giving up."),P=!1;return}let b=M[Math.min(N,M.length-1)];N++,E(`Restarting in ${b/1e3}s... (${N}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=ab?await ab():null;if(b&&!b.mitmEnabled){E("MITM disabled, skipping restart"),P=!1;return}let c=V()||await af();if(!c&&!w){F("No cached password, cannot auto-restart"),P=!1;return}await aq(a,c),E("\uD83D\uDD04 Restarted successfully"),N=0,P=!1}catch(b){F(`Restart attempt ${N}/5 failed: ${b.message}`),P=!1,ao(a)}}async function ap(a,b){if(a&&a.pid){if(w)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||t()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function aq(a,b,l=!1){if(!T||T.killed)try{if(h.existsSync(K)){let a=parseInt(h.readFileSync(K,"utf-8").trim(),10);if(a&&X(a))return U=a,E(`♻️ Reusing existing process (PID: ${a})`),await ad(!0,b),b&&W(b),{running:!0,pid:a};h.unlinkSync(K)}}catch{}if(T&&!T.killed)throw Error("MITM server is already running");try{h.writeFileSync(L,String(process.pid),{flag:"wx"})}catch(a){if("EEXIST"===a.code){let a=!1;try{let b=parseInt(h.readFileSync(L,"utf-8").trim(),10);a=!b||!X(b)}catch{a=!0}if(!a)throw Error("MITM server is already starting (lock contention)");try{h.unlinkSync(L)}catch{}h.writeFileSync(L,String(process.pid),{flag:"wx"})}else throw a}try{if(await am(b),!w){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await al(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)E(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await ap(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(D,"rootCA.crt"),n=g.join(D,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||B(m)){if(o){E("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||V()||await af();try{await A(a,m)}catch{}}E("\uD83D\uDD10 Generating Root CA..."),await y()}let{checkCertInstalled:p}=c(9631),r=await p(m),s=!w&&!x&&!t();if(r)E("\uD83D\uDD10 Cert: already trusted ✅");else{E("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||V()||await af();if(s)E(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&u())throw Error("Sudo password required to install Root CA certificate");try{await z(a,m),E("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let v=S;if((!v||!h.existsSync(v))&&(E(`[MITM] server.js missing at ${v} → recopying`),!(v=R(Q()))||!h.existsSync(v)))throw Error(`MITM server.js not found at ${v}. Reinstall 10router.`);let C=await J();if(E(`🚀 Starting server... (router: ${C})`),w){let c=await al(b);if(c)if(l)E(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await ap(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}T=e(process.execPath,[v],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:C}}),ac&&await ac({mitmCertInstalled:!0}).catch(()=>{})}else if(t()){let c=`export HOME=${I(i.homedir())} && export MITM_ROUTER_BASE=${I(C)} && export NODE_ENV=production && IFS= read -r ROUTER_API_KEY && export ROUTER_API_KEY && exec ${I(process.execPath)} ${I(v)}`;(T=e("sudo",["-S","-E","sh","-c",c],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
54
54
  `),T.stdin.write(`${a}
55
55
  `),T.stdin.end()}else T=e(process.execPath,[v],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:C}});if(T&&(U=T.pid,h.writeFileSync(K,String(U)),O=Date.now()),x){let a=g.join(D,"rootCA.crt");h.existsSync(a)&&d(`launchctl setenv NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},b=>{b?E(`[launchctl] Failed to set NODE_EXTRA_CA_CERTS: ${b.message}`):E(`[launchctl] NODE_EXTRA_CA_CERTS set to ${a}`)})}else if(w){let a=g.join(D,"rootCA.crt");h.existsSync(a)&&d(`setx NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},a=>{a?E(`[setx] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`):E("[setx] NODE_EXTRA_CA_CERTS set for current user")})}let H=null;T&&(T.stdout.on("data",a=>{process.stdout.write(a)}),T.stderr.on("data",a=>{let b=a.toString().trim();b&&(w||!b.includes("Password:")&&!b.includes("password for"))&&(F(b),H=b),!w&&(b.includes("incorrect password")||b.includes("no password was provided"))&&(W(null),ae(),P=!0)}),T.on("exit",b=>{E(`Server exited (code: ${b})`),T=null,U=null;try{h.unlinkSync(K)}catch{}try{h.unlinkSync(L)}catch{}0===b||P||ao(a)}));let M=await function(a=443){return new Promise(b=>{let c=Date.now()+8e3,d=()=>{let e=k.request({hostname:"127.0.0.1",port:a,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1},a=>{let c="";a.on("data",a=>{c+=a}),a.on("end",()=>{try{let a=JSON.parse(c);b(!0===a.ok?{ok:!0,pid:a.pid||null}:null)}catch{b(null)}})});e.on("error",()=>{Date.now()<c?setTimeout(d,500):b(null)}),e.end()};d()})}(443);if(!M){if(T&&!T.killed){try{T.kill()}catch{}T=null}let a=function(){try{if(w){let a=f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{encoding:"utf8",windowsHide:!0}).trim(),b=parseInt(a,10);if(b&&b>4){let a=f(`tasklist /FI "PID eq ${b}" /FO CSV /NH`,{encoding:"utf8",windowsHide:!0}).match(/"([^"]+)"/);if(a)return a[1].replace(".exe","")}}else{let a=f(`${G} -i :443`,{encoding:"utf8",windowsHide:!0}).trim().split("\n");if(a.length>1)return a[1].split(/\s+/)[0]}}catch{}return null}(),b=a?` Port 443 already in use by ${a}.`:"",c=H||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}ac&&await ac({mitmCertInstalled:!0}).catch(()=>{}),E(`✅ Server healthy (PID: ${U||M.pid})`);let N=q();for(let[a,b]of Object.entries(N))E(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);await ad(!0,b),b&&W(b);try{h.unlinkSync(L)}catch{}return{running:!0,pid:U}}catch(a){try{h.unlinkSync(L)}catch{}throw a}}async function ar(a){P=!0,N=0,E("⏹ Stopping server...");let b=T,e=b&&!b.killed?b.pid:(()=>{try{return parseInt(h.readFileSync(K,"utf-8").trim(),10)}catch{return null}})();if(e&&X(e)&&(E(`Killing server (PID: ${e})...`),Y(e,!1,a),await new Promise(a=>setTimeout(a,1e3)),X(e)&&Y(e,!0,a)),T=null,U=null,w){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(s).flat();try{let{isAdmin:d,runElevatedPowerShell:e,quotePs:f}=c(64809);if(d()){let d=h.readFileSync(a,"utf8"),e=d.split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";e!==d&&h.writeFileSync(a,e,"utf8");try{c(79646).execSync("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}E("\uD83C\uDF10 DNS: ✅ all tool hosts removed")}else{let c=b.map(f).join(","),d=`
56
56
  $hosts = @(${c})
@@ -0,0 +1 @@
1
+ exports.id=8439,exports.ids=[3662,8439],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),未完成前所有调用都会被拒绝;请按上游提示的地址完成核验后重试。"},33792:(a,b,c)=>{"use strict";c.d(b,{Dc:()=>w,I_:()=>r,XH:()=>q,YK:()=>u,dY:()=>x,mx:()=>z,nz:()=>A,tm:()=>y});var d=c(8292),e=c(17509),f=c(34013),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(77598),l=c.n(k),m=c(49120),n=c(89718),o=c(77134);function p(){let a=process.env.INITIAL_PASSWORD;return"string"==typeof a?a.trim():""}function q(a){return!!p()||r(a)}function r(a){return!!(a?.password||String(a?.oidcIssuerUrl||"").trim()&&String(a?.oidcClientId||"").trim()&&String(a?.oidcClientSecret||"").trim())||!!(a?.samlEntryPoint&&a?.samlCert)}let s=new Set(["change-me-to-a-long-random-secret","10router-default-secret-change-me","change-me-to-a-random-string","change-me"]),t=new TextEncoder().encode(function(){let a=process.env.JWT_SECRET;if(a){if(!s.has(a))return a;console.warn("[auth] JWT_SECRET is a known placeholder value — ignoring it. Leave JWT_SECRET unset (a random secret is generated to "+j().join(m.nJ,"jwt-secret")+") or set a long random value.")}let b=j().join(m.nJ,"jwt-secret");try{return h().readFileSync(b,"utf8").trim()}catch{}h().mkdirSync(m.nJ,{recursive:!0});let c=l().randomBytes(32).toString("hex");return h().writeFileSync(b,c,{mode:384}),(0,o.E)(b),c}());function u(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=String(a?.headers?.get?.("x-forwarded-proto")||"").split(",")[0].trim().toLowerCase();return b||"https"===c}async function v(a={}){let b=Math.floor(Date.now()/1e3);return new d.P({authenticated:!0,origIat:b,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("7200s").sign(t)}async function w(a){if(!a)return!1;try{return await (0,e.V)(a,t),!0}catch{return!1}}async function x(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,t);return b}catch{return null}}async function y(a,b,c={}){let d=await v(c);a.set("auth_token",d,{httpOnly:!0,secure:u(b),sameSite:"lax",path:"/",maxAge:7200})}async function z(a,b,c){try{let d,e,f="number"==typeof c?.iat?1e3*c.iat:0;if(!f)return!1;let g=(d="number"==typeof c?.origIat?c.origIat:null,e="number"==typeof c?.iat?c.iat:null,d??e);if(g&&Math.floor(Date.now()/1e3)-g>=2592e3||Date.now()-f<36e5)return!1;return await y(a,b,{...g?{origIat:g}:{},...c?.oidcName?{oidcName:c.oidcName}:{},...c?.oidcEmail?{oidcEmail:c.oidcEmail}:{},...c?.samlName?{samlName:c.samlName}:{},...c?.samlEmail?{samlEmail:c.samlEmail}:{},...c?.oidc?{oidc:!0}:{},...c?.saml?{saml:!0}:{}}),!0}catch{return!1}}async function A(a){if("string"!=typeof a||!a)return!1;let b=await (0,n.getSettings)(),c=b?.password;if(c)return f.Ay.compare(a,c);let d=p();return!!d&&a===d}},78335:()=>{},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)},96487:()=>{}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8469,exports.ids=[8469],exports.modules={34050:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=8469,exports.ids=[8469],exports.modules={34050:(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(", ")})`}},88469:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>e});var d=c(34050);function e(a,b){let c=new b(a);c.exec(d.oG);let e=new Map;function f(a){let b=e.get(a);return b||(b=c.prepare(a),e.set(a,b)),b}let g=setInterval(()=>{try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{e.clear()}catch{}try{c.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"better-sqlite3",run:(a,b=[])=>f(a).run(...b),get:(a,b=[])=>f(a).get(...b),all:(a,b=[])=>f(a).all(...b),exec:a=>c.exec(a),transaction:a=>c.transaction(a)(),checkpoint(){try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:c}}}};
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(", ")})`}},88469:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>e});var d=c(34050);function e(a,b){let c=new b(a);c.exec(d.oG);let e=new Map;function f(a){let b=e.get(a);return b||(b=c.prepare(a),e.set(a,b)),b}let g=setInterval(()=>{try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{e.clear()}catch{}try{c.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"better-sqlite3",run:(a,b=[])=>f(a).run(...b),get:(a,b=[])=>f(a).get(...b),all:(a,b=[])=>f(a).all(...b),exec:a=>c.exec(a),transaction:a=>c.transaction(a)(),checkpoint(){try{c.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:c}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8520,exports.ids=[8520],exports.modules={63775:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=8520,exports.ids=[8520],exports.modules={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(", ")})`}},88520:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(63775);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let e=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;e.exec(`SAVEPOINT ${b}`);try{let c=a();return e.exec(`RELEASE ${b}`),c}catch(a){try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(h),i()},raw:e}}}};
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(", ")})`}},88520:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(63775);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let e=new(await Promise.resolve().then(c.t.bind(c,80099,23))).DatabaseSync(a);e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;e.exec(`SAVEPOINT ${b}`);try{let c=a();return e.exec(`RELEASE ${b}`),c}catch(a){try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(h),i()},raw:e}}}};