vansrouter 0.9.1 → 0.9.2

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 (972) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +8 -7
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/react-loadable-manifest.json +1 -1
  6. package/app/.next-cli-build/routes-manifest.json +8 -0
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +5 -5
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +3 -3
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +3 -3
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  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/_global-error.segment.rsc +1 -1
  84. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  85. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  86. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  87. package/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  88. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  89. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  90. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  91. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  92. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  93. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +4 -4
  95. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  96. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  97. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/check/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/check/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  115. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +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 +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  131. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +2 -2
  133. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  135. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  137. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  139. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  141. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  143. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  145. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  147. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  169. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +2 -2
  175. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +2 -2
  177. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  179. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  180. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  192. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  194. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  196. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/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 +2 -2
  207. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/[id]/gcp-projects/route.js +1 -0
  235. package/app/.next-cli-build/server/app/api/providers/[id]/gcp-projects/route.js.nft.json +1 -0
  236. package/app/.next-cli-build/server/app/api/providers/[id]/gcp-projects/route_client-reference-manifest.js +1 -0
  237. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/[name]/reset/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/[name]/reset/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  256. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  258. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  260. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  264. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  266. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  268. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  272. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  274. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  276. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js +2 -2
  278. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  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 +2 -2
  284. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  286. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  288. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  294. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  296. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  297. package/app/.next-cli-build/server/app/api/shutdown/route.js +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 +1 -1
  300. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  301. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  302. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  303. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  304. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  305. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  306. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  307. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  308. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  309. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  310. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  311. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  312. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  313. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  314. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  315. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  316. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  317. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  318. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  319. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  320. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  321. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  322. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  323. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  324. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  325. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  326. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  327. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  328. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  332. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  334. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  336. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  337. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  338. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  339. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js +1 -1
  340. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  341. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  342. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  343. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  344. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  345. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  346. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  347. package/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  348. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  349. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  362. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  363. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +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/web/fetch/route.js +1 -1
  382. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  383. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  384. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  385. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  386. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  387. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  388. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  389. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  390. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  391. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  392. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  393. package/app/.next-cli-build/server/app/callback/page.js +2 -2
  394. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  395. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  396. package/app/.next-cli-build/server/app/callback.html +1 -1
  397. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  398. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  399. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  401. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  402. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  403. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  404. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  406. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  407. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  408. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  410. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  411. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  413. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  416. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  417. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  420. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  421. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  423. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  424. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  426. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  427. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  428. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  430. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  431. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  432. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  433. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  435. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  436. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  437. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  438. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  439. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  440. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  441. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  442. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  443. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  445. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  446. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  447. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  448. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  449. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  451. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  452. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  454. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  455. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  457. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  458. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  459. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  461. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  462. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  464. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  465. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  466. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  467. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  468. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  469. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  470. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  471. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  472. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  473. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  474. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  475. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  476. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  477. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  479. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  480. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  482. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  483. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  484. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  485. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  488. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  490. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  492. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  493. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  494. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  495. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  496. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  498. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  500. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  502. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  503. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  504. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  505. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  508. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  509. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  511. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  512. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  513. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  514. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  515. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  517. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  518. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  519. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  522. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  523. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  524. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  525. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  526. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  527. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  528. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  529. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  531. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  532. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  533. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  534. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  535. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  536. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  538. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  539. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  541. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  542. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  543. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  544. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  545. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  546. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  547. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  548. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  549. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  551. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  552. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  553. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  554. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  555. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  556. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  557. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  558. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  559. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  560. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  561. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  562. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  563. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  564. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  565. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  566. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  567. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  568. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  569. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  570. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  571. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  572. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  573. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  574. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  575. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  576. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  578. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  579. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  580. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  581. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  582. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  583. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  584. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  585. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  586. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  587. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  588. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  589. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  590. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  591. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  592. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  593. package/app/.next-cli-build/server/app/landing.html +1 -1
  594. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  595. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  596. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  597. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  598. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  599. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  600. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  601. package/app/.next-cli-build/server/app/login/page.js +2 -2
  602. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  603. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  604. package/app/.next-cli-build/server/app/login.html +1 -1
  605. package/app/.next-cli-build/server/app/login.rsc +5 -5
  606. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  607. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  608. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  609. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  610. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  611. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  612. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +1 -1
  613. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  614. package/app/.next-cli-build/server/app/masuk/page.js +2 -2
  615. package/app/.next-cli-build/server/app/masuk/page.js.nft.json +1 -1
  616. package/app/.next-cli-build/server/app/masuk/page_client-reference-manifest.js +1 -1
  617. package/app/.next-cli-build/server/app-paths-manifest.json +8 -7
  618. package/app/.next-cli-build/server/chunks/1548.js +63 -0
  619. package/app/.next-cli-build/server/chunks/1688.js +1 -1
  620. package/app/.next-cli-build/server/chunks/2554.js +4 -4
  621. package/app/.next-cli-build/server/chunks/2557.js +4 -4
  622. package/app/.next-cli-build/server/chunks/3040.js +1 -1
  623. package/app/.next-cli-build/server/chunks/3405.js +1 -1
  624. package/app/.next-cli-build/server/chunks/3736.js +1 -1
  625. package/app/.next-cli-build/server/chunks/383.js +1 -1
  626. package/app/.next-cli-build/server/chunks/3950.js +1 -1
  627. package/app/.next-cli-build/server/chunks/4418.js +5 -5
  628. package/app/.next-cli-build/server/chunks/4539.js +1 -1
  629. package/app/.next-cli-build/server/chunks/4574.js +2 -2
  630. package/app/.next-cli-build/server/chunks/5006.js +1 -1
  631. package/app/.next-cli-build/server/chunks/5638.js +9 -0
  632. package/app/.next-cli-build/server/chunks/575.js +2 -2
  633. package/app/.next-cli-build/server/chunks/6159.js +1 -1
  634. package/app/.next-cli-build/server/chunks/6165.js +1 -1
  635. package/app/.next-cli-build/server/chunks/7006.js +1 -1
  636. package/app/.next-cli-build/server/chunks/7164.js +1 -1
  637. package/app/.next-cli-build/server/chunks/7938.js +1 -1
  638. package/app/.next-cli-build/server/chunks/8057.js +9 -0
  639. package/app/.next-cli-build/server/chunks/8691.js +1 -1
  640. package/app/.next-cli-build/server/chunks/883.js +1 -1
  641. package/app/.next-cli-build/server/chunks/9633.js +1 -1
  642. package/app/.next-cli-build/server/chunks/9673.js +1 -1
  643. package/app/.next-cli-build/server/chunks/9984.js +1 -1
  644. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  645. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  646. package/app/.next-cli-build/server/middleware.js +1 -1
  647. package/app/.next-cli-build/server/pages/404.html +1 -1
  648. package/app/.next-cli-build/server/pages/500.html +1 -1
  649. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  650. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  651. package/app/.next-cli-build/static/chunks/2940-7bfb9676e41c3baa.js +1 -0
  652. package/app/.next-cli-build/static/chunks/3657.512c2a8e4d8a3378.js +1 -0
  653. package/app/.next-cli-build/static/chunks/3700-1638d20a87ed45e9.js +23 -0
  654. package/app/.next-cli-build/static/chunks/{4385-a118d94b5fc20deb.js → 4385-d76278174392bc6b.js} +1 -1
  655. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/{page-f9d0971a0b2822bd.js → page-d057378e9d6e3055.js} +1 -1
  656. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-fbb93561483790fe.js +12 -0
  657. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-56b08e5cfa9b0979.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/_global-error/{page-6c97512bccbd0b3b.js → page-b4e2d712d7cc7da0.js} +1 -1
  659. package/app/.next-cli-build/static/chunks/app/api/auth/check/{route-6c97512bccbd0b3b.js → route-b4e2d712d7cc7da0.js} +1 -1
  660. package/app/.next-cli-build/static/chunks/app/api/auth/login/{route-6c97512bccbd0b3b.js → route-b4e2d712d7cc7da0.js} +1 -1
  661. package/app/.next-cli-build/static/chunks/app/api/auth/logout/{route-6c97512bccbd0b3b.js → route-b4e2d712d7cc7da0.js} +1 -1
  662. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-b4e2d712d7cc7da0.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-b4e2d712d7cc7da0.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-b4e2d712d7cc7da0.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-b4e2d712d7cc7da0.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-b4e2d712d7cc7da0.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-b4e2d712d7cc7da0.js +1 -0
  668. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-b4e2d712d7cc7da0.js +1 -0
  669. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-b4e2d712d7cc7da0.js +1 -0
  670. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-b4e2d712d7cc7da0.js +1 -0
  671. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-b4e2d712d7cc7da0.js +1 -0
  672. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-b4e2d712d7cc7da0.js +1 -0
  673. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-b4e2d712d7cc7da0.js +1 -0
  674. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-b4e2d712d7cc7da0.js +1 -0
  675. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-b4e2d712d7cc7da0.js +1 -0
  676. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-b4e2d712d7cc7da0.js +1 -0
  677. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-b4e2d712d7cc7da0.js +1 -0
  678. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-b4e2d712d7cc7da0.js +1 -0
  679. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-b4e2d712d7cc7da0.js +1 -0
  680. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-b4e2d712d7cc7da0.js +1 -0
  681. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-b4e2d712d7cc7da0.js +1 -0
  682. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-b4e2d712d7cc7da0.js +1 -0
  683. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-b4e2d712d7cc7da0.js +1 -0
  684. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-b4e2d712d7cc7da0.js +1 -0
  685. package/app/.next-cli-build/static/chunks/app/api/combos/route-b4e2d712d7cc7da0.js +1 -0
  686. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-b4e2d712d7cc7da0.js +1 -0
  687. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-b4e2d712d7cc7da0.js +1 -0
  688. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-b4e2d712d7cc7da0.js +1 -0
  689. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-b4e2d712d7cc7da0.js +1 -0
  690. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-b4e2d712d7cc7da0.js +1 -0
  691. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-b4e2d712d7cc7da0.js +1 -0
  692. package/app/.next-cli-build/static/chunks/app/api/health/route-b4e2d712d7cc7da0.js +1 -0
  693. package/app/.next-cli-build/static/chunks/app/api/init/route-b4e2d712d7cc7da0.js +1 -0
  694. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-b4e2d712d7cc7da0.js +1 -0
  695. package/app/.next-cli-build/static/chunks/app/api/keys/route-b4e2d712d7cc7da0.js +1 -0
  696. package/app/.next-cli-build/static/chunks/app/api/locale/route-b4e2d712d7cc7da0.js +1 -0
  697. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-b4e2d712d7cc7da0.js +1 -0
  698. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-b4e2d712d7cc7da0.js +1 -0
  699. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-b4e2d712d7cc7da0.js +1 -0
  700. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-b4e2d712d7cc7da0.js +1 -0
  701. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-b4e2d712d7cc7da0.js +1 -0
  702. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-b4e2d712d7cc7da0.js +1 -0
  703. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-b4e2d712d7cc7da0.js +1 -0
  704. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-b4e2d712d7cc7da0.js +1 -0
  705. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-b4e2d712d7cc7da0.js +1 -0
  706. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-b4e2d712d7cc7da0.js +1 -0
  707. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-b4e2d712d7cc7da0.js +1 -0
  708. package/app/.next-cli-build/static/chunks/app/api/models/route-b4e2d712d7cc7da0.js +1 -0
  709. package/app/.next-cli-build/static/chunks/app/api/models/test/route-b4e2d712d7cc7da0.js +1 -0
  710. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-b4e2d712d7cc7da0.js +1 -0
  711. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-b4e2d712d7cc7da0.js +1 -0
  712. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-b4e2d712d7cc7da0.js +1 -0
  713. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-b4e2d712d7cc7da0.js +1 -0
  714. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-b4e2d712d7cc7da0.js +1 -0
  715. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-b4e2d712d7cc7da0.js +1 -0
  716. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-b4e2d712d7cc7da0.js +1 -0
  717. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-b4e2d712d7cc7da0.js +1 -0
  718. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-b4e2d712d7cc7da0.js +1 -0
  719. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-b4e2d712d7cc7da0.js +1 -0
  720. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-b4e2d712d7cc7da0.js +1 -0
  721. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-b4e2d712d7cc7da0.js +1 -0
  722. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-b4e2d712d7cc7da0.js +1 -0
  723. package/app/.next-cli-build/static/chunks/app/api/pricing/route-b4e2d712d7cc7da0.js +1 -0
  724. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-b4e2d712d7cc7da0.js +1 -0
  725. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-b4e2d712d7cc7da0.js +1 -0
  726. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-b4e2d712d7cc7da0.js +1 -0
  727. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/gcp-projects/route-b4e2d712d7cc7da0.js +1 -0
  728. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-b4e2d712d7cc7da0.js +1 -0
  729. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-b4e2d712d7cc7da0.js +1 -0
  730. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-b4e2d712d7cc7da0.js +1 -0
  731. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-b4e2d712d7cc7da0.js +1 -0
  732. package/app/.next-cli-build/static/chunks/app/api/providers/circuit-breakers/[name]/reset/route-b4e2d712d7cc7da0.js +1 -0
  733. package/app/.next-cli-build/static/chunks/app/api/providers/circuit-breakers/route-b4e2d712d7cc7da0.js +1 -0
  734. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-b4e2d712d7cc7da0.js +1 -0
  735. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-b4e2d712d7cc7da0.js +1 -0
  736. package/app/.next-cli-build/static/chunks/app/api/providers/route-b4e2d712d7cc7da0.js +1 -0
  737. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-b4e2d712d7cc7da0.js +1 -0
  738. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-b4e2d712d7cc7da0.js +1 -0
  739. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-b4e2d712d7cc7da0.js +1 -0
  740. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-b4e2d712d7cc7da0.js +1 -0
  741. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-b4e2d712d7cc7da0.js +1 -0
  742. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-b4e2d712d7cc7da0.js +1 -0
  743. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-b4e2d712d7cc7da0.js +1 -0
  744. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-b4e2d712d7cc7da0.js +1 -0
  745. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-b4e2d712d7cc7da0.js +1 -0
  746. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-b4e2d712d7cc7da0.js +1 -0
  747. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-b4e2d712d7cc7da0.js +1 -0
  748. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-b4e2d712d7cc7da0.js +1 -0
  749. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-b4e2d712d7cc7da0.js +1 -0
  750. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-b4e2d712d7cc7da0.js +1 -0
  751. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-b4e2d712d7cc7da0.js +1 -0
  752. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-b4e2d712d7cc7da0.js +1 -0
  753. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-b4e2d712d7cc7da0.js +1 -0
  754. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-b4e2d712d7cc7da0.js +1 -0
  755. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-b4e2d712d7cc7da0.js +1 -0
  756. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-b4e2d712d7cc7da0.js +1 -0
  757. package/app/.next-cli-build/static/chunks/app/api/settings/route-b4e2d712d7cc7da0.js +1 -0
  758. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-b4e2d712d7cc7da0.js +1 -0
  759. package/app/.next-cli-build/static/chunks/app/api/tags/route-b4e2d712d7cc7da0.js +1 -0
  760. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-b4e2d712d7cc7da0.js +1 -0
  761. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-b4e2d712d7cc7da0.js +1 -0
  762. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-b4e2d712d7cc7da0.js +1 -0
  763. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-b4e2d712d7cc7da0.js +1 -0
  764. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-b4e2d712d7cc7da0.js +1 -0
  765. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-b4e2d712d7cc7da0.js +1 -0
  766. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-b4e2d712d7cc7da0.js +1 -0
  767. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-b4e2d712d7cc7da0.js +1 -0
  768. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-b4e2d712d7cc7da0.js +1 -0
  769. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-b4e2d712d7cc7da0.js +1 -0
  770. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-b4e2d712d7cc7da0.js +1 -0
  771. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-b4e2d712d7cc7da0.js +1 -0
  772. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-b4e2d712d7cc7da0.js +1 -0
  773. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-b4e2d712d7cc7da0.js +1 -0
  774. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-b4e2d712d7cc7da0.js +1 -0
  775. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-b4e2d712d7cc7da0.js +1 -0
  776. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-b4e2d712d7cc7da0.js +1 -0
  777. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-b4e2d712d7cc7da0.js +1 -0
  778. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-b4e2d712d7cc7da0.js +1 -0
  779. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/[id]/route-b4e2d712d7cc7da0.js +1 -0
  780. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-b4e2d712d7cc7da0.js +1 -0
  781. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-b4e2d712d7cc7da0.js +1 -0
  782. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-b4e2d712d7cc7da0.js +1 -0
  783. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-b4e2d712d7cc7da0.js +1 -0
  784. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-b4e2d712d7cc7da0.js +1 -0
  785. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-b4e2d712d7cc7da0.js +1 -0
  786. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-b4e2d712d7cc7da0.js +1 -0
  787. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-b4e2d712d7cc7da0.js +1 -0
  788. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-b4e2d712d7cc7da0.js +1 -0
  789. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-b4e2d712d7cc7da0.js +1 -0
  790. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-b4e2d712d7cc7da0.js +1 -0
  791. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-b4e2d712d7cc7da0.js +1 -0
  792. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-b4e2d712d7cc7da0.js +1 -0
  793. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-b4e2d712d7cc7da0.js +1 -0
  794. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-b4e2d712d7cc7da0.js +1 -0
  795. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-b4e2d712d7cc7da0.js +1 -0
  796. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-b4e2d712d7cc7da0.js +1 -0
  797. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-b4e2d712d7cc7da0.js +1 -0
  798. package/app/.next-cli-build/static/chunks/app/api/v1/route-b4e2d712d7cc7da0.js +1 -0
  799. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-b4e2d712d7cc7da0.js +1 -0
  800. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-b4e2d712d7cc7da0.js +1 -0
  801. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-b4e2d712d7cc7da0.js +1 -0
  802. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-b4e2d712d7cc7da0.js +1 -0
  803. package/app/.next-cli-build/static/chunks/app/api/version/route-b4e2d712d7cc7da0.js +1 -0
  804. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-b4e2d712d7cc7da0.js +1 -0
  805. package/app/.next-cli-build/static/chunks/app/api/version/update/route-b4e2d712d7cc7da0.js +1 -0
  806. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-b4e2d712d7cc7da0.js +1 -0
  807. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-b4e2d712d7cc7da0.js +1 -0
  808. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-b4e2d712d7cc7da0.js +1 -0
  809. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-b4e2d712d7cc7da0.js +1 -0
  810. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-b4e2d712d7cc7da0.js +1 -0
  811. package/app/.next-cli-build/static/chunks/webpack-dcde53305cf97d3a.js +1 -0
  812. package/app/package.json +1 -1
  813. package/package.json +1 -1
  814. package/app/.next-cli-build/server/chunks/3141.js +0 -9
  815. package/app/.next-cli-build/server/chunks/7204.js +0 -63
  816. package/app/.next-cli-build/server/chunks/8121.js +0 -9
  817. package/app/.next-cli-build/static/chunks/2940-118a55e898443060.js +0 -1
  818. package/app/.next-cli-build/static/chunks/3657.ebdbf7a663552b39.js +0 -1
  819. package/app/.next-cli-build/static/chunks/3700-15225430a8d2ad27.js +0 -23
  820. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c8313893c058d947.js +0 -12
  821. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-81fc749f0faf82dc.js +0 -1
  822. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-6c97512bccbd0b3b.js +0 -1
  823. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-6c97512bccbd0b3b.js +0 -1
  824. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-6c97512bccbd0b3b.js +0 -1
  825. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-6c97512bccbd0b3b.js +0 -1
  826. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-6c97512bccbd0b3b.js +0 -1
  827. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-6c97512bccbd0b3b.js +0 -1
  828. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-6c97512bccbd0b3b.js +0 -1
  829. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-6c97512bccbd0b3b.js +0 -1
  830. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-6c97512bccbd0b3b.js +0 -1
  831. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-6c97512bccbd0b3b.js +0 -1
  832. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-6c97512bccbd0b3b.js +0 -1
  833. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-6c97512bccbd0b3b.js +0 -1
  834. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-6c97512bccbd0b3b.js +0 -1
  835. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-6c97512bccbd0b3b.js +0 -1
  836. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-6c97512bccbd0b3b.js +0 -1
  837. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-6c97512bccbd0b3b.js +0 -1
  838. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-6c97512bccbd0b3b.js +0 -1
  839. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-6c97512bccbd0b3b.js +0 -1
  840. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-6c97512bccbd0b3b.js +0 -1
  841. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-6c97512bccbd0b3b.js +0 -1
  842. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-6c97512bccbd0b3b.js +0 -1
  843. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-6c97512bccbd0b3b.js +0 -1
  844. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-6c97512bccbd0b3b.js +0 -1
  845. package/app/.next-cli-build/static/chunks/app/api/combos/route-6c97512bccbd0b3b.js +0 -1
  846. package/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-6c97512bccbd0b3b.js +0 -1
  847. package/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-6c97512bccbd0b3b.js +0 -1
  848. package/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-6c97512bccbd0b3b.js +0 -1
  849. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-6c97512bccbd0b3b.js +0 -1
  850. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-6c97512bccbd0b3b.js +0 -1
  851. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-6c97512bccbd0b3b.js +0 -1
  852. package/app/.next-cli-build/static/chunks/app/api/health/route-6c97512bccbd0b3b.js +0 -1
  853. package/app/.next-cli-build/static/chunks/app/api/init/route-6c97512bccbd0b3b.js +0 -1
  854. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-6c97512bccbd0b3b.js +0 -1
  855. package/app/.next-cli-build/static/chunks/app/api/keys/route-6c97512bccbd0b3b.js +0 -1
  856. package/app/.next-cli-build/static/chunks/app/api/locale/route-6c97512bccbd0b3b.js +0 -1
  857. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-6c97512bccbd0b3b.js +0 -1
  858. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-6c97512bccbd0b3b.js +0 -1
  859. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-6c97512bccbd0b3b.js +0 -1
  860. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-6c97512bccbd0b3b.js +0 -1
  861. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-6c97512bccbd0b3b.js +0 -1
  862. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-6c97512bccbd0b3b.js +0 -1
  863. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-6c97512bccbd0b3b.js +0 -1
  864. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-6c97512bccbd0b3b.js +0 -1
  865. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-6c97512bccbd0b3b.js +0 -1
  866. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-6c97512bccbd0b3b.js +0 -1
  867. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-6c97512bccbd0b3b.js +0 -1
  868. package/app/.next-cli-build/static/chunks/app/api/models/route-6c97512bccbd0b3b.js +0 -1
  869. package/app/.next-cli-build/static/chunks/app/api/models/test/route-6c97512bccbd0b3b.js +0 -1
  870. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-6c97512bccbd0b3b.js +0 -1
  871. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-6c97512bccbd0b3b.js +0 -1
  872. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-6c97512bccbd0b3b.js +0 -1
  873. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-6c97512bccbd0b3b.js +0 -1
  874. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-6c97512bccbd0b3b.js +0 -1
  875. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-6c97512bccbd0b3b.js +0 -1
  876. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-6c97512bccbd0b3b.js +0 -1
  877. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-6c97512bccbd0b3b.js +0 -1
  878. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-6c97512bccbd0b3b.js +0 -1
  879. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-6c97512bccbd0b3b.js +0 -1
  880. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-6c97512bccbd0b3b.js +0 -1
  881. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-6c97512bccbd0b3b.js +0 -1
  882. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-6c97512bccbd0b3b.js +0 -1
  883. package/app/.next-cli-build/static/chunks/app/api/pricing/route-6c97512bccbd0b3b.js +0 -1
  884. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-6c97512bccbd0b3b.js +0 -1
  885. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-6c97512bccbd0b3b.js +0 -1
  886. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-6c97512bccbd0b3b.js +0 -1
  887. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-6c97512bccbd0b3b.js +0 -1
  888. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-6c97512bccbd0b3b.js +0 -1
  889. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-6c97512bccbd0b3b.js +0 -1
  890. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-6c97512bccbd0b3b.js +0 -1
  891. package/app/.next-cli-build/static/chunks/app/api/providers/circuit-breakers/[name]/reset/route-6c97512bccbd0b3b.js +0 -1
  892. package/app/.next-cli-build/static/chunks/app/api/providers/circuit-breakers/route-6c97512bccbd0b3b.js +0 -1
  893. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-6c97512bccbd0b3b.js +0 -1
  894. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-6c97512bccbd0b3b.js +0 -1
  895. package/app/.next-cli-build/static/chunks/app/api/providers/route-6c97512bccbd0b3b.js +0 -1
  896. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-6c97512bccbd0b3b.js +0 -1
  897. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-6c97512bccbd0b3b.js +0 -1
  898. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-6c97512bccbd0b3b.js +0 -1
  899. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-6c97512bccbd0b3b.js +0 -1
  900. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-6c97512bccbd0b3b.js +0 -1
  901. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-6c97512bccbd0b3b.js +0 -1
  902. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-6c97512bccbd0b3b.js +0 -1
  903. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-6c97512bccbd0b3b.js +0 -1
  904. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-6c97512bccbd0b3b.js +0 -1
  905. package/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-6c97512bccbd0b3b.js +0 -1
  906. package/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-6c97512bccbd0b3b.js +0 -1
  907. package/app/.next-cli-build/static/chunks/app/api/pxpipe/logs/route-6c97512bccbd0b3b.js +0 -1
  908. package/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-6c97512bccbd0b3b.js +0 -1
  909. package/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-6c97512bccbd0b3b.js +0 -1
  910. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-6c97512bccbd0b3b.js +0 -1
  911. package/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-6c97512bccbd0b3b.js +0 -1
  912. package/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-6c97512bccbd0b3b.js +0 -1
  913. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-6c97512bccbd0b3b.js +0 -1
  914. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-6c97512bccbd0b3b.js +0 -1
  915. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-6c97512bccbd0b3b.js +0 -1
  916. package/app/.next-cli-build/static/chunks/app/api/settings/route-6c97512bccbd0b3b.js +0 -1
  917. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-6c97512bccbd0b3b.js +0 -1
  918. package/app/.next-cli-build/static/chunks/app/api/tags/route-6c97512bccbd0b3b.js +0 -1
  919. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-6c97512bccbd0b3b.js +0 -1
  920. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-6c97512bccbd0b3b.js +0 -1
  921. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-6c97512bccbd0b3b.js +0 -1
  922. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-6c97512bccbd0b3b.js +0 -1
  923. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-6c97512bccbd0b3b.js +0 -1
  924. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-6c97512bccbd0b3b.js +0 -1
  925. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-6c97512bccbd0b3b.js +0 -1
  926. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-6c97512bccbd0b3b.js +0 -1
  927. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-6c97512bccbd0b3b.js +0 -1
  928. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-6c97512bccbd0b3b.js +0 -1
  929. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-6c97512bccbd0b3b.js +0 -1
  930. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-6c97512bccbd0b3b.js +0 -1
  931. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-6c97512bccbd0b3b.js +0 -1
  932. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-6c97512bccbd0b3b.js +0 -1
  933. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-6c97512bccbd0b3b.js +0 -1
  934. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-6c97512bccbd0b3b.js +0 -1
  935. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-6c97512bccbd0b3b.js +0 -1
  936. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-6c97512bccbd0b3b.js +0 -1
  937. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-6c97512bccbd0b3b.js +0 -1
  938. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/[id]/route-6c97512bccbd0b3b.js +0 -1
  939. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-6c97512bccbd0b3b.js +0 -1
  940. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-6c97512bccbd0b3b.js +0 -1
  941. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-6c97512bccbd0b3b.js +0 -1
  942. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-6c97512bccbd0b3b.js +0 -1
  943. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-6c97512bccbd0b3b.js +0 -1
  944. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-6c97512bccbd0b3b.js +0 -1
  945. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-6c97512bccbd0b3b.js +0 -1
  946. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-6c97512bccbd0b3b.js +0 -1
  947. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-6c97512bccbd0b3b.js +0 -1
  948. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-6c97512bccbd0b3b.js +0 -1
  949. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-6c97512bccbd0b3b.js +0 -1
  950. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-6c97512bccbd0b3b.js +0 -1
  951. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-6c97512bccbd0b3b.js +0 -1
  952. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-6c97512bccbd0b3b.js +0 -1
  953. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-6c97512bccbd0b3b.js +0 -1
  954. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-6c97512bccbd0b3b.js +0 -1
  955. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-6c97512bccbd0b3b.js +0 -1
  956. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-6c97512bccbd0b3b.js +0 -1
  957. package/app/.next-cli-build/static/chunks/app/api/v1/route-6c97512bccbd0b3b.js +0 -1
  958. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-6c97512bccbd0b3b.js +0 -1
  959. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-6c97512bccbd0b3b.js +0 -1
  960. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-6c97512bccbd0b3b.js +0 -1
  961. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-6c97512bccbd0b3b.js +0 -1
  962. package/app/.next-cli-build/static/chunks/app/api/version/route-6c97512bccbd0b3b.js +0 -1
  963. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-6c97512bccbd0b3b.js +0 -1
  964. package/app/.next-cli-build/static/chunks/app/api/version/update/route-6c97512bccbd0b3b.js +0 -1
  965. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-6c97512bccbd0b3b.js +0 -1
  966. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-6c97512bccbd0b3b.js +0 -1
  967. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-6c97512bccbd0b3b.js +0 -1
  968. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-6c97512bccbd0b3b.js +0 -1
  969. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-6c97512bccbd0b3b.js +0 -1
  970. package/app/.next-cli-build/static/chunks/webpack-66c60e327317b84e.js +0 -1
  971. /package/app/.next-cli-build/static/{mJMUchoO2n2kOYCJYHVan → DgZGtay5XqIXdPv9nJfvo}/_buildManifest.js +0 -0
  972. /package/app/.next-cli-build/static/{mJMUchoO2n2kOYCJYHVan → DgZGtay5XqIXdPv9nJfvo}/_ssgManifest.js +0 -0
@@ -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",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)"]},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(", ")})`}},46165:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(26985);async function e(a){let{Database:b}=await Promise.resolve().then(function(){var a=Error("Cannot find module 'bun:sqlite'");throw a.code="MODULE_NOT_FOUND",a}),c=new b(a,{create:!0});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.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.exec("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:"bun:sqlite",run(a,b=[]){let c=f(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},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.exec("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",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",apiKeyName:"TEXT",apiKey:"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)"]},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",apiKey:"TEXT",apiKeyName:"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(", ")})`}},46165:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(26985);async function e(a){let{Database:b}=await Promise.resolve().then(function(){var a=Error("Cannot find module 'bun:sqlite'");throw a.code="MODULE_NOT_FOUND",a}),c=new b(a,{create:!0});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.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.exec("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:"bun:sqlite",run(a,b=[]){let c=f(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},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.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:c}}}};
@@ -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",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)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",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",apiKeyName:"TEXT",apiKey:"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)"]},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",apiKey:"TEXT",apiKeyName:"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(", ")})`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=7164,exports.ids=[7164],exports.modules={12286:(a,b,c)=>{c.d(b,{Ut:()=>e,a_:()=>f,bC:()=>d});let d={STOP:"stop",LENGTH:"length",TOOL_CALLS:"tool_calls",CONTENT_FILTER:"content_filter"},e={END_TURN:"end_turn",MAX_TOKENS:"max_tokens",TOOL_USE:"tool_use",STOP_SEQUENCE:"stop_sequence"},f={STOP:"STOP",MAX_TOKENS:"MAX_TOKENS",SAFETY:"SAFETY",RECITATION:"RECITATION",BLOCKLIST:"BLOCKLIST",PROHIBITED_CONTENT:"PROHIBITED_CONTENT"}},37808:(a,b,c)=>{c.d(b,{N:()=>d});function d(a,b){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}},39006:a=>{a.exports={rE:"0.9.1"}},56726:(a,b,c)=>{c.d(b,{w$:()=>e});let d=c(39006).rE||"0.0.0";function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",g={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`VansRouter/${d}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"vansrouter","X-CLIENT-VERSION":d,"X-CORE-VERSION":d,"X-IS-MULTIROOT":"false",...b};return f&&(g.Authorization=f),g}},59638:(a,b,c)=>{c.d(b,{R4:()=>g,BY:()=>l,a_:()=>j.a_,RV:()=>e,rP:()=>k,x4:()=>f,bC:()=>j.bC,Du:()=>h,z7:()=>d,m8:()=>i});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={USER:"user",MODEL:"model"},f={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"},g={TEXT:"text",IMAGE:"image",DOCUMENT:"document",TOOL_USE:"tool_use",TOOL_RESULT:"tool_result",THINKING:"thinking",REDACTED_THINKING:"redacted_thinking"},h={MESSAGE:"message",FUNCTION_CALL:"function_call",FUNCTION_CALL_OUTPUT:"function_call_output",REASONING:"reasoning",OUTPUT_TEXT:"output_text",INPUT_TEXT:"input_text",INPUT_IMAGE:"input_image",SUMMARY_TEXT:"summary_text"},i=[f.TEXT,f.IMAGE_URL,f.IMAGE,f.INPUT_AUDIO,f.AUDIO_URL,f.FILE];f.TEXT,f.IMAGE_URL,f.IMAGE,g.TOOL_RESULT;var j=c(12286);let k="unknown",l="image/png"},82919:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>D,OPTIONS:()=>C,buildModelsList:()=>B});var d=c(67259),e=c(91253),f=c(94164),g=c(76489),h=c(84397),i=c(26415),j=c(14836),k=c(44004),l=c(2607),m=c(22830),n=c(91392);let o=new Map;async function p(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,l.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${m.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${m.x0.COPILOT_CHAT_VERSION}`,"user-agent":m.x0.USER_AGENT,"x-github-api-version":m.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function q(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=o.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await p(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,n.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await p(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(o.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var r=c(56726);async function s(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,r.w$)(c,{Accept:"application/json"}),e=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:d.signal});if(!e.ok)return null;let f=await e.json(),g=Array.isArray(f)?f:f?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id.slice(11),name:a.name||a.id.slice(11)}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(e)}}var t=c(83950),u=c(7916);let v={kiro:async a=>{let b=await (0,h.c)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},github:async a=>{let b=await q({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,onCredentialsRefreshed:async b=>{await (0,t.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await s({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null}},w=/[-_][0-9a-f]{8,}$/i,x={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"};function y(a){let b=a?.kind||a?.type;return b&&x[b]||"llm"}async function z(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function A(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function B(a){let b=[];try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let c=[];try{c=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let h=[];try{h=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let i={};try{i=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let j={};try{j=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let k=(a,b)=>Array.isArray(j[a])&&j[a].includes(b),l=new Map;for(let a of b)l.has(a.provider)||l.set(a.provider,a);let m=[];for(let b of c){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),m.push(c)}if(0===b.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(A(b[c]||c,a))for(let b of e)a.includes(y(b))&&(k(c,b.id)||m.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of h){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&m.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of l.entries()){if(!A(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),j=d.vq[f]||[],l=c?.providerSpecificData?.enabledModels,n=Array.isArray(l)&&l.length>0,o=(0,e.mq)(b)||(0,e.gb)(b),p=e.AI_PROVIDERS[b]?.passthroughModels===!0,q=new Map(j.map(a=>[a.id,y(a)])),r=n?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);o&&0===r.length&&!w.test(b)&&(r=await z(c)),p&&!n&&(r=j.map(a=>a.id));let s=v[b];if(s&&!n)try{let a=await s(c);a?.models?.length&&(r=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let t=r.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),x=new Map;for(let c of Array.from(new Set([...t,...h.filter(c=>{if(!c?.id)return!1;let e=(0,d.CP)(c)||"llm";if(!a.includes(e)&&!("imageToText"===e&&a.includes("llm")))return!1;let h=c.providerAlias;return h===f||h===g||h===b}).map(a=>{let b=String(a.id).trim();return b&&x.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(i||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let b=x.get(c),d=q.get(c)||b||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),e="imageToText"===d&&a.includes("llm");if(!a.includes(d)&&!e||k(g,c)||k(f,c))continue;let h={id:`${g}/${c}`,object:"model",owned_by:g},i=(0,u.a0)(b);i&&(h.capabilities=i),m.push(h)}let B=e.AI_PROVIDERS[b];a.includes("webSearch")&&B?.searchConfig&&m.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&B?.fetchConfig&&m.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}let n=[],o=new Set;for(let a of m)!a?.id||o.has(a.id)||(o.add(a.id),n.push(a));return n}async function C(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function D(a){try{let b=await (0,f.mt)(),c=null;if(b.requireApiKey){let b=(0,j.Tr)(a);if(!b)return Response.json({error:{message:"Missing API key",type:"authentication_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}});if(!(c=await (0,j.kI)(b)))return Response.json({error:{message:"Invalid API key",type:"authentication_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}let d=await B(["llm"]);if(c){let a=await Promise.all(d.map(async a=>{if("combo"===a.owned_by){let b=(0,k.ZO)(a.id);return(0,j.DC)(c,b)}let b=a.id.includes("/")?a.id.split("/")[0]:a.owned_by;return await (0,j.kt)(c,b)}));d=d.filter((b,c)=>a[c])}return Response.json({object:"list",data:d},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},83712:(a,b,c)=>{c.d(b,{KZ:()=>k,S6:()=>h,Yr:()=>o,f6:()=>l,fc:()=>g,kU:()=>i,pT:()=>j,w_:()=>m});var d=c(37808),e=c(59638);let f=["minLength","maxLength","exclusiveMinimum","exclusiveMaximum","minItems","maxItems","format","default","examples","$schema","$defs","definitions","const","$ref","$comment","deprecated","readOnly","writeOnly","additionalProperties","propertyNames","patternProperties","enumDescriptions","anyOf","oneOf","allOf","not","dependencies","dependentSchemas","dependentRequired","title","optional","deprecated","if","then","else","contentMediaType","contentEncoding","cornerRadius","fillColor","fontFamily","fontSize","fontWeight","gap","padding","strokeColor","strokeThickness","textColor"],g=[{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"OFF"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"OFF"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"OFF"},{category:"HARM_CATEGORY_HARASSMENT",threshold:"OFF"},{category:"HARM_CATEGORY_CIVIC_INTEGRITY",threshold:"OFF"}];function h(a){let b=[];if("string"==typeof a)b.push({text:a});else if(Array.isArray(a)){for(let c of a)if(c.type===e.x4.TEXT)b.push({text:c.text});else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url?.startsWith("data:")){let a=c.image_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url&&(c.image_url.url.startsWith("http://")||c.image_url.url.startsWith("https://")))b.push({fileData:{fileUri:c.image_url.url,mimeType:"image/*"}});else if(c.type===e.x4.INPUT_AUDIO&&c.input_audio?.data){let a=c.input_audio.format||"wav",d="mp3"===a?"audio/mpeg":`audio/${a}`;b.push({inlineData:{mime_type:d,data:c.input_audio.data}})}else if(c.type===e.x4.AUDIO_URL&&c.audio_url?.url?.startsWith("data:")){let a=c.audio_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.FILE&&c.file?.file_data?.startsWith("data:")){let a=c.file.file_data,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d).split(";")[0],e=a.substring(d+1);b.push({inlineData:{mime_type:c,data:e}})}}}return b}function i(a,b=""){return"string"==typeof a?a:Array.isArray(a)?a.filter(a=>a.type===e.x4.TEXT).map(a=>a.text).join(b):""}function j(a){return(0,d.N)(a,null)}function k(){return`agent-${crypto.randomUUID()}`}function l(){return crypto.randomUUID()+Date.now().toString()}function m(){let a=["useful","bright","swift","calm","bold"],b=["fuze","wave","spark","flow","core"],c=a[Math.floor(Math.random()*a.length)],d=b[Math.floor(Math.random()*b.length)];return`${c}-${d}-${crypto.randomUUID().slice(0,5)}`}function n(a){let b=0,c=-1;for(let d=0;d<a.length;d++){let e=a[d],f=0,g=e.type;"object"===g||e.properties?f=3:"array"===g||e.items?f=2:g&&"null"!==g&&(f=1),f>c&&(c=f,b=d)}return b}function o(a){return a&&"object"==typeof a&&(!function a(b){if(b&&"object"==typeof b)for(let c of(void 0===b.const||b.enum||(b.enum=[b.const],delete b.const),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.enum&&Array.isArray(b.enum)&&(b.enum=b.enum.map(a=>String(a)),b.type||(b.type="string")),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b){if(b.allOf&&Array.isArray(b.allOf)){let a={};for(let c of b.allOf)if(c.properties&&(a.properties||(a.properties={}),Object.assign(a.properties,c.properties)),c.required&&Array.isArray(c.required))for(let b of(a.required||(a.required=[]),c.required))a.required.includes(b)||a.required.push(b);delete b.allOf,a.properties&&(b.properties={...b.properties,...a.properties}),a.required&&(b.required=[...b.required||[],...a.required])}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.anyOf&&Array.isArray(b.anyOf)&&b.anyOf.length>0){let a=b.anyOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.anyOf,Object.assign(b,d)}}if(b.oneOf&&Array.isArray(b.oneOf)&&b.oneOf.length>0){let a=b.oneOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.oneOf,Object.assign(b,d)}}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.type&&Array.isArray(b.type)){let a=b.type.filter(a=>"null"!==a);b.type=a.length>0?a[0]:"string"}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.properties&&!b.type&&(b.type="object"),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b,c){if(b&&"object"==typeof b){if(Array.isArray(b)){for(let d of b)a(d,c);return}for(let d of Object.keys(b)){if(c.includes(d)||d.startsWith("x-")){delete b[d];continue}let e=b[d];e&&"object"==typeof e&&a(e,c)}}}(a,f),!function a(b){if(b&&"object"==typeof b){if(b.required&&Array.isArray(b.required)&&b.properties){let a=b.required.filter(a=>Object.prototype.hasOwnProperty.call(b.properties,a));0===a.length?delete b.required:b.required=a}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of("object"!==b.type||b.properties&&0!==Object.keys(b.properties).length||(b.properties={reason:{type:"string",description:"Brief explanation of why you are calling this tool"}},b.required=["reason"]),Object.values(b)))c&&"object"==typeof c&&a(c)}(a)),a}},85577:(a,b,c)=>{c.d(b,{Xg:()=>q,PROVIDER_MODELS:()=>f.vq,fZ:()=>j,cY:()=>r,ux:()=>m,OA:()=>n,kt:()=>o,SM:()=>i});var d=c(13946),e=c(52056),f=c(68711),g=c(57959);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function o(a,b){let c=l(f.vq[a],b,a);return c?.upstreamModelId?c.upstreamModelId:c?.id?c.id:"cx"===a&&"string"==typeof b&&b.endsWith(h)?b.slice(0,-h.length):b}let p=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),q=Object.fromEntries(Object.keys(d.xq).map(a=>[a,p[a]||a]));function r(a,b){return(0,g.g5)(l(f.vq[a],b,a))}}};
1
+ "use strict";exports.id=7164,exports.ids=[7164],exports.modules={12286:(a,b,c)=>{c.d(b,{Ut:()=>e,a_:()=>f,bC:()=>d});let d={STOP:"stop",LENGTH:"length",TOOL_CALLS:"tool_calls",CONTENT_FILTER:"content_filter"},e={END_TURN:"end_turn",MAX_TOKENS:"max_tokens",TOOL_USE:"tool_use",STOP_SEQUENCE:"stop_sequence"},f={STOP:"STOP",MAX_TOKENS:"MAX_TOKENS",SAFETY:"SAFETY",RECITATION:"RECITATION",BLOCKLIST:"BLOCKLIST",PROHIBITED_CONTENT:"PROHIBITED_CONTENT"}},37808:(a,b,c)=>{c.d(b,{N:()=>d});function d(a,b){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}},39006:a=>{a.exports={rE:"0.9.2"}},56726:(a,b,c)=>{c.d(b,{w$:()=>e});let d=c(39006).rE||"0.0.0";function e(a,b={}){let c,f=(c=function(a){if("string"!=typeof a)return"";let b=a.trim();return b?b.startsWith("workos:")?b:`workos:${b}`:""}(a))?`Bearer ${c}`:"",g={"HTTP-Referer":"https://cline.bot","X-Title":"Cline","User-Agent":`VansRouter/${d}`,"X-PLATFORM":process.platform||"unknown","X-PLATFORM-VERSION":process.version||"unknown","X-CLIENT-TYPE":"vansrouter","X-CLIENT-VERSION":d,"X-CORE-VERSION":d,"X-IS-MULTIROOT":"false",...b};return f&&(g.Authorization=f),g}},59638:(a,b,c)=>{c.d(b,{R4:()=>g,BY:()=>l,a_:()=>j.a_,RV:()=>e,rP:()=>k,x4:()=>f,bC:()=>j.bC,Du:()=>h,z7:()=>d,m8:()=>i});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={USER:"user",MODEL:"model"},f={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"},g={TEXT:"text",IMAGE:"image",DOCUMENT:"document",TOOL_USE:"tool_use",TOOL_RESULT:"tool_result",THINKING:"thinking",REDACTED_THINKING:"redacted_thinking"},h={MESSAGE:"message",FUNCTION_CALL:"function_call",FUNCTION_CALL_OUTPUT:"function_call_output",REASONING:"reasoning",OUTPUT_TEXT:"output_text",INPUT_TEXT:"input_text",INPUT_IMAGE:"input_image",SUMMARY_TEXT:"summary_text"},i=[f.TEXT,f.IMAGE_URL,f.IMAGE,f.INPUT_AUDIO,f.AUDIO_URL,f.FILE];f.TEXT,f.IMAGE_URL,f.IMAGE,g.TOOL_RESULT;var j=c(12286);let k="unknown",l="image/png"},82919:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>D,OPTIONS:()=>C,buildModelsList:()=>B});var d=c(67259),e=c(91253),f=c(94164),g=c(76489),h=c(84397),i=c(26415),j=c(14836),k=c(44004),l=c(2607),m=c(22830),n=c(91392);let o=new Map;async function p(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,l.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${m.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${m.x0.COPILOT_CHAT_VERSION}`,"user-agent":m.x0.USER_AGENT,"x-github-api-version":m.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function q(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=o.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await p(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,n.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await p(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(o.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var r=c(56726);async function s(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,r.w$)(c,{Accept:"application/json"}),e=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:d.signal});if(!e.ok)return null;let f=await e.json(),g=Array.isArray(f)?f:f?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id.slice(11),name:a.name||a.id.slice(11)}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(e)}}var t=c(83950),u=c(7916);let v={kiro:async a=>{let b=await (0,h.c)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},github:async a=>{let b=await q({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,onCredentialsRefreshed:async b=>{await (0,t.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await s({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null}},w=/[-_][0-9a-f]{8,}$/i,x={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"};function y(a){let b=a?.kind||a?.type;return b&&x[b]||"llm"}async function z(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function A(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function B(a){let b=[];try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let c=[];try{c=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let h=[];try{h=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let i={};try{i=await (0,f.OM)()}catch(a){console.log("Could not fetch model aliases")}let j={};try{j=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let k=(a,b)=>Array.isArray(j[a])&&j[a].includes(b),l=new Map;for(let a of b)l.has(a.provider)||l.set(a.provider,a);let m=[];for(let b of c){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),m.push(c)}if(0===b.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(A(b[c]||c,a))for(let b of e)a.includes(y(b))&&(k(c,b.id)||m.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of h){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&m.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of l.entries()){if(!A(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),j=d.vq[f]||[],l=c?.providerSpecificData?.enabledModels,n=Array.isArray(l)&&l.length>0,o=(0,e.mq)(b)||(0,e.gb)(b),p=e.AI_PROVIDERS[b]?.passthroughModels===!0,q=new Map(j.map(a=>[a.id,y(a)])),r=n?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);o&&0===r.length&&!w.test(b)&&(r=await z(c)),p&&!n&&(r=j.map(a=>a.id));let s=v[b];if(s&&!n)try{let a=await s(c);a?.models?.length&&(r=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}let t=r.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),x=new Map;for(let c of Array.from(new Set([...t,...h.filter(c=>{if(!c?.id)return!1;let e=(0,d.CP)(c)||"llm";if(!a.includes(e)&&!("imageToText"===e&&a.includes("llm")))return!1;let h=c.providerAlias;return h===f||h===g||h===b}).map(a=>{let b=String(a.id).trim();return b&&x.set(b,(0,d.CP)(a)||"llm"),b}).filter(a=>""!==a),...Object.values(i||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let b=x.get(c),d=q.get(c)||b||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c),e="imageToText"===d&&a.includes("llm");if(!a.includes(d)&&!e||k(g,c)||k(f,c))continue;let h={id:`${g}/${c}`,object:"model",owned_by:g},i=(0,u.a0)(b);i&&(h.capabilities=i),m.push(h)}let B=e.AI_PROVIDERS[b];a.includes("webSearch")&&B?.searchConfig&&m.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&B?.fetchConfig&&m.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}let n=[],o=new Set;for(let a of m)!a?.id||o.has(a.id)||(o.add(a.id),n.push(a));return n}async function C(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function D(a){try{let b=await (0,f.mt)(),c=null;if(b.requireApiKey){let b=(0,j.Tr)(a);if(!b)return Response.json({error:{message:"Missing API key",type:"authentication_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}});if(!(c=await (0,j.kI)(b)))return Response.json({error:{message:"Invalid API key",type:"authentication_error"}},{status:401,headers:{"Access-Control-Allow-Origin":"*"}})}let d=await B(["llm"]);if(c){let a=await Promise.all(d.map(async a=>{if("combo"===a.owned_by){let b=(0,k.ZO)(a.id);return(0,j.DC)(c,b)}let b=a.id.includes("/")?a.id.split("/")[0]:a.owned_by;return await (0,j.kt)(c,b)}));d=d.filter((b,c)=>a[c])}return Response.json({object:"list",data:d},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},83712:(a,b,c)=>{c.d(b,{KZ:()=>k,S6:()=>h,Yr:()=>o,f6:()=>l,fc:()=>g,kU:()=>i,pT:()=>j,w_:()=>m});var d=c(37808),e=c(59638);let f=["minLength","maxLength","exclusiveMinimum","exclusiveMaximum","minItems","maxItems","format","default","examples","$schema","$defs","definitions","const","$ref","$comment","deprecated","readOnly","writeOnly","additionalProperties","propertyNames","patternProperties","enumDescriptions","anyOf","oneOf","allOf","not","dependencies","dependentSchemas","dependentRequired","title","optional","deprecated","if","then","else","contentMediaType","contentEncoding","cornerRadius","fillColor","fontFamily","fontSize","fontWeight","gap","padding","strokeColor","strokeThickness","textColor"],g=[{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"OFF"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"OFF"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"OFF"},{category:"HARM_CATEGORY_HARASSMENT",threshold:"OFF"},{category:"HARM_CATEGORY_CIVIC_INTEGRITY",threshold:"OFF"}];function h(a){let b=[];if("string"==typeof a)b.push({text:a});else if(Array.isArray(a)){for(let c of a)if(c.type===e.x4.TEXT)b.push({text:c.text});else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url?.startsWith("data:")){let a=c.image_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url&&(c.image_url.url.startsWith("http://")||c.image_url.url.startsWith("https://")))b.push({fileData:{fileUri:c.image_url.url,mimeType:"image/*"}});else if(c.type===e.x4.INPUT_AUDIO&&c.input_audio?.data){let a=c.input_audio.format||"wav",d="mp3"===a?"audio/mpeg":`audio/${a}`;b.push({inlineData:{mime_type:d,data:c.input_audio.data}})}else if(c.type===e.x4.AUDIO_URL&&c.audio_url?.url?.startsWith("data:")){let a=c.audio_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.FILE&&c.file?.file_data?.startsWith("data:")){let a=c.file.file_data,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d).split(";")[0],e=a.substring(d+1);b.push({inlineData:{mime_type:c,data:e}})}}}return b}function i(a,b=""){return"string"==typeof a?a:Array.isArray(a)?a.filter(a=>a.type===e.x4.TEXT).map(a=>a.text).join(b):""}function j(a){return(0,d.N)(a,null)}function k(){return`agent-${crypto.randomUUID()}`}function l(){return crypto.randomUUID()+Date.now().toString()}function m(){let a=["useful","bright","swift","calm","bold"],b=["fuze","wave","spark","flow","core"],c=a[Math.floor(Math.random()*a.length)],d=b[Math.floor(Math.random()*b.length)];return`${c}-${d}-${crypto.randomUUID().slice(0,5)}`}function n(a){let b=0,c=-1;for(let d=0;d<a.length;d++){let e=a[d],f=0,g=e.type;"object"===g||e.properties?f=3:"array"===g||e.items?f=2:g&&"null"!==g&&(f=1),f>c&&(c=f,b=d)}return b}function o(a){return a&&"object"==typeof a&&(!function a(b){if(b&&"object"==typeof b)for(let c of(void 0===b.const||b.enum||(b.enum=[b.const],delete b.const),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.enum&&Array.isArray(b.enum)&&(b.enum=b.enum.map(a=>String(a)),b.type||(b.type="string")),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b){if(b.allOf&&Array.isArray(b.allOf)){let a={};for(let c of b.allOf)if(c.properties&&(a.properties||(a.properties={}),Object.assign(a.properties,c.properties)),c.required&&Array.isArray(c.required))for(let b of(a.required||(a.required=[]),c.required))a.required.includes(b)||a.required.push(b);delete b.allOf,a.properties&&(b.properties={...b.properties,...a.properties}),a.required&&(b.required=[...b.required||[],...a.required])}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.anyOf&&Array.isArray(b.anyOf)&&b.anyOf.length>0){let a=b.anyOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.anyOf,Object.assign(b,d)}}if(b.oneOf&&Array.isArray(b.oneOf)&&b.oneOf.length>0){let a=b.oneOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.oneOf,Object.assign(b,d)}}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.type&&Array.isArray(b.type)){let a=b.type.filter(a=>"null"!==a);b.type=a.length>0?a[0]:"string"}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.properties&&!b.type&&(b.type="object"),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b,c){if(b&&"object"==typeof b){if(Array.isArray(b)){for(let d of b)a(d,c);return}for(let d of Object.keys(b)){if(c.includes(d)||d.startsWith("x-")){delete b[d];continue}let e=b[d];e&&"object"==typeof e&&a(e,c)}}}(a,f),!function a(b){if(b&&"object"==typeof b){if(b.required&&Array.isArray(b.required)&&b.properties){let a=b.required.filter(a=>Object.prototype.hasOwnProperty.call(b.properties,a));0===a.length?delete b.required:b.required=a}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of("object"!==b.type||b.properties&&0!==Object.keys(b.properties).length||(b.properties={reason:{type:"string",description:"Brief explanation of why you are calling this tool"}},b.required=["reason"]),Object.values(b)))c&&"object"==typeof c&&a(c)}(a)),a}},85577:(a,b,c)=>{c.d(b,{Xg:()=>q,PROVIDER_MODELS:()=>f.vq,fZ:()=>j,cY:()=>r,ux:()=>m,OA:()=>n,kt:()=>o,SM:()=>i});var d=c(13946),e=c(52056),f=c(68711),g=c(57959);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}let k=new Set(["kr","kiro"]);function l(a,b,c){if(!a)return;let d=a.find(a=>a.id===b);if(d)return d;if(!k.has(c))return;let e=(0,g.Kq)(b);if(e!==b)return a.find(a=>a.id===e)}function m(a,b){let c=f.vq[a];return c?(0,g.gr)(l(c,b,a)):null}function n(a,b){let c=f.vq[a];if(!c)return null;let d=l(c,b,a);return d?.kind||d?.type||null}function o(a,b){let c=l(f.vq[a],b,a);return c?.upstreamModelId?c.upstreamModelId:c?.id?c.id:"cx"===a&&"string"==typeof b&&b.endsWith(h)?b.slice(0,-h.length):b}let p=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),q=Object.fromEntries(Object.keys(d.xq).map(a=>[a,p[a]||a]));function r(a,b){return(0,g.g5)(l(f.vq[a],b,a))}}};
@@ -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",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)"]},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(", ")})`}},67938:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>g});var d=c(87550),e=c.n(d),f=c(26985);function g(a){let b=new(e())(a);b.exec(f.oG);let c=new Map;function d(a){let d=c.get(a);return d||(d=b.prepare(a),c.set(a,d)),d}let g=setInterval(()=>{try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{c.clear()}catch{}try{b.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=[])=>d(a).run(b),get:(a,b=[])=>d(a).get(b),all:(a,b=[])=>d(a).all(b),exec:a=>b.exec(a),transaction:a=>b.transaction(a)(),checkpoint(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:b}}}};
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",apiKeyName:"TEXT",apiKey:"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)"]},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",apiKey:"TEXT",apiKeyName:"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(", ")})`}},67938:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>g});var d=c(87550),e=c.n(d),f=c(26985);function g(a){let b=new(e())(a);b.exec(f.oG);let c=new Map;function d(a){let d=c.get(a);return d||(d=b.prepare(a),c.set(a,d)),d}let g=setInterval(()=>{try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{c.clear()}catch{}try{b.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=[])=>d(a).run(b),get:(a,b=[])=>d(a).get(b),all:(a,b=[])=>d(a).all(b),exec:a=>b.exec(a),transaction:a=>b.transaction(a)(),checkpoint(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:b}}}};
@@ -0,0 +1,9 @@
1
+ "use strict";exports.id=8057,exports.ids=[8057],exports.modules={78785:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
2
+ PRAGMA journal_mode = WAL;
3
+ PRAGMA synchronous = NORMAL;
4
+ PRAGMA temp_store = MEMORY;
5
+ PRAGMA mmap_size = 30000000;
6
+ PRAGMA cache_size = -64000;
7
+ PRAGMA foreign_keys = ON;
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",apiKeyName:"TEXT",apiKey:"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)"]},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",apiKey:"TEXT",apiKeyName:"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(", ")})`}},88057:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>x});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73468),i=c(78785);let j=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"fix-empty-allowed-lists",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")&&a.exec("UPDATE apiKeys SET allowedProviders = NULL WHERE allowedProviders = '[]'"),c.includes("allowedCombos")&&a.exec("UPDATE apiKeys SET allowedCombos = NULL WHERE allowedCombos = '[]'"),c.includes("allowedKinds")&&a.exec("UPDATE apiKeys SET allowedKinds = NULL WHERE allowedKinds = '[]'")}},{version:3,name:"add-allowed-lists-columns",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedProviders TEXT"),c.includes("allowedCombos")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedCombos TEXT"),c.includes("allowedKinds")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedKinds TEXT")}},{version:4,name:"add-request-details-apikey",up(a){let b=new Set(a.all("PRAGMA table_info(requestDetails)").map(a=>a.name));b.has("apiKey")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKey TEXT"),b.has("apiKeyName")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKeyName TEXT")}}].sort((a,b)=>a.version-b.version);function k(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function l(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}let m=null;function n(){if(m)return m;try{let a=g().join(process.cwd(),"package.json");m=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{m="0.0.0"}return m}let o=["requestDetails"];function p(a){(0,h.Jh)();let b=n(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function q(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var r=c(90118);let s=g().join(h.HG,".migrated-from-json"),t=new WeakSet;class u extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function v(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new u(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function w(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function x(a){if(t.has(a))return;t.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);q(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt(k(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=p(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(o),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),q(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt(k(a,"schemaVersion","0"),10)||0;if(b>=(j.length?j[j.length-1].version:0))return;let c=j.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),l(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}l(a,"backupSchemaVersion",i.f$);let d=e().existsSync(s),f=w(h.Or.main),m=w(h.Or.usage),x=w(h.Or.disabled),y=w(h.Or.details);if(b&&(f||m||x||y)&&!d){let b=Date.now(),c=p("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,r.s)(f.settings)]),v(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,r.s)(l),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),v(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),v(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),v(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),v(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,r.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,r.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,r.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,r.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,r.s)(c||{})])}if(m&&"object"==typeof m){for(let b of m.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,r.s)(c),(0,r.s)({})])}for(let[b,c]of Object.entries(m.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,r.s)(c)]);"number"==typeof m.totalRequestsLifetime&&l(a,"totalRequestsLifetime",m.totalRequestsLifetime)}if(x&&"object"==typeof x.disabled)for(let[b,c]of Object.entries(x.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,r.s)(c||[])]);if(y&&Array.isArray(y.records))for(let b of y.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,r.s)(b)]);l(a,"appVersion",n()),l(a,"backupSchemaVersion",i.f$),l(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof u)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(s,new Date().toISOString())}catch{}q(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let z=n();k(a,"appVersion",null)!==z&&l(a,"appVersion",z)}}};
@@ -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",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)"]},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(", ")})`}},28691:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(46293),g=c.n(f),h=c(26985);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),k(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}}};
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",apiKeyName:"TEXT",apiKey:"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)"]},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",apiKey:"TEXT",apiKeyName:"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(", ")})`}},28691:(a,b,c)=>{c.d(b,{createSqlJsAdapter:()=>k});var d=c(73024),e=c.n(d),f=c(46293),g=c.n(f),h=c(26985);let i=null;async function j(){return i||(i=await g()())}async function k(a){let b=await j(),c=e().existsSync(a)?e().readFileSync(a):null,d=new b.Database(c);d.exec(h.oG);let f=!1,g=null;function i(){let b=d.export();e().writeFileSync(a,Buffer.from(b)),f=!1}function k(){f=!0,g&&clearTimeout(g),g=setTimeout(()=>{if(g=null,f)try{i()}catch(a){console.error("[sqljs] save failed:",a)}},100)}function l(a){if(!(!a||Array.isArray(a)&&0===a.length))return a}let m=()=>{if(f)try{i()}catch{}};return process.on("beforeExit",m),process.on("SIGINT",m),process.on("SIGTERM",m),{driver:"sql.js",run:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b)),c.step();let a=d.getRowsModified(),e=d.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0]??null;return k(),{changes:a,lastInsertRowid:e}}finally{c.free()}},get:function(a,b=[]){let c=d.prepare(a);try{if(c.bind(l(b)),c.step())return c.getAsObject();return}finally{c.free()}},all:function(a,b=[]){let c=d.prepare(a);try{c.bind(l(b));let a=[];for(;c.step();)a.push(c.getAsObject());return a}finally{c.free()}},exec:function(a){d.exec(a),k()},transaction:function(a){let b=`sp_${Math.random().toString(36).slice(2)}`;d.exec(`SAVEPOINT ${b}`);try{let c=a();return d.exec(`RELEASE ${b}`),k(),c}catch(a){try{d.exec(`ROLLBACK TO ${b}`),d.exec(`RELEASE ${b}`)}catch{}throw a}},close:function(){g&&clearTimeout(g),f&&i(),d.close()},raw:d}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=883,exports.ids=[883],exports.modules={40883:(a,b,c)=>{c.r(b),c.d(b,{default:()=>m});var d=c(66238),e=c(71183),f=c(34455),g=c(75814),h=c(93864),i=c(12613),j=c(46696),k=c(53207);function l(a,b){switch(b.type){case"RESET":return{testing:!1,testResult:null,validating:!1,validationResult:null,saving:!1};case"TEST_START":return{...a,testing:!0,testResult:null};case"TEST_DONE":return{...a,testing:!1,testResult:b.result};case"VALIDATE_START":return{...a,validating:!0,validationResult:null};case"VALIDATE_DONE":return{...a,validating:!1,validationResult:b.result};case"SAVE_START":return{...a,saving:!0};case"SAVE_DONE":return{...a,saving:!1};default:return a}}function m({isOpen:a,connection:b,proxyPools:c,onSave:n,onClose:o}){let[p,q]=(0,e.useState)({name:"",priority:1,apiKey:""}),[r,s]=(0,e.useState)({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),t={accountId:b?.provider==="cloudflare-ai"&&b.providerSpecificData&&b.providerSpecificData.accountId||""},[u,v]=(0,e.useState)(""),[w,x]=(0,e.useReducer)(l,{testing:!1,testResult:null,validating:!1,validationResult:null,saving:!1}),{testing:y,testResult:z,validating:A,validationResult:B,saving:C}=w,[D,E]=(0,e.useState)(b);if(b!==D&&(E(b),b)){q({name:b.name||"",priority:b.priority||1,apiKey:""}),"azure"===b.provider&&b.providerSpecificData&&s({azureEndpoint:b.providerSpecificData.azureEndpoint||"",apiVersion:b.providerSpecificData.apiVersion||"2024-10-01-preview",deployment:b.providerSpecificData.deployment||"",organization:b.providerSpecificData.organization||""});let a=k.Q2?.[b.provider];a?.regions&&v(b.providerSpecificData?.region||a.defaultRegion||a.regions[0]?.id||""),x({type:"RESET"})}let F=b?.authType==="oauth",G=b?.provider==="azure",H=b?.provider==="cloudflare-ai",I=!!b&&((0,k.mq)(b.provider)||(0,k.gb)(b.provider)),J=b&&k.Q2?.[b.provider]?.regions||null,K=()=>{if(J&&u)return{...b?.providerSpecificData||{},region:u}},L=async()=>{if(b?.provider){x({type:"TEST_START"});try{let a=await fetch(`/api/providers/${b.id}/test`,{method:"POST"}),c=await a.json();x({type:"TEST_DONE",result:c.valid?"success":"failed"})}catch{x({type:"TEST_DONE",result:"failed"})}}},M=async()=>{if(b?.provider&&p.apiKey){x({type:"VALIDATE_START"});try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:p.apiKey,...G?{providerSpecificData:r}:{},...H?{providerSpecificData:t}:{},...J?{providerSpecificData:K()}:{}})}),c=await a.json();x({type:"VALIDATE_DONE",result:c.valid?"success":"failed"})}catch{x({type:"VALIDATE_DONE",result:"failed"})}}},N=async()=>{if(b){x({type:"SAVE_START"});try{let a={name:p.name,priority:p.priority};if(!F&&p.apiKey){a.apiKey=p.apiKey;let c="success"===B;if(!c)try{x({type:"VALIDATE_START"});let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:p.apiKey,...G?{providerSpecificData:r}:{},...H?{providerSpecificData:t}:{},...J?{providerSpecificData:K()}:{}})});c=!!(await a.json()).valid,x({type:"VALIDATE_DONE",result:c?"success":"failed"})}catch{x({type:"VALIDATE_DONE",result:"failed"})}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}J&&u&&(a.providerSpecificData=K()),G&&(a.providerSpecificData={azureEndpoint:r.azureEndpoint,apiVersion:r.apiVersion,deployment:r.deployment,organization:r.organization}),H&&(a.providerSpecificData={accountId:t.accountId}),await n(a)}finally{x({type:"SAVE_DONE"})}}};return b?(0,d.jsx)(f.A,{isOpen:a,title:"Edit Connection",onClose:o,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(g.A,{label:"Name",value:p.name,onChange:a=>q({...p,name:a.target.value}),placeholder:F?"Account name":"Production Key"}),F&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(g.A,{label:"Priority",type:"number",value:p.priority,onChange:a=>q({...p,priority:Number.parseInt(a.target.value,10)||1})}),!F&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.A,{label:"API Key",type:"password",value:p.apiKey,onChange:a=>q({...p,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(h.A,{onClick:M,disabled:!p.apiKey||A||C,variant:"secondary",children:A?"Checking...":"Check"})})]}),B&&(0,d.jsx)(i.A,{variant:"success"===B?"success":"error",children:"success"===B?"Valid":"Invalid"})]}),G&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,d.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Azure OpenAI Configuration"}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(g.A,{label:"Azure Endpoint",value:r.azureEndpoint,onChange:a=>s({...r,azureEndpoint:a.target.value}),placeholder:"https://your-resource.openai.azure.com",hint:"Your Azure OpenAI resource endpoint URL"}),(0,d.jsx)(g.A,{label:"Deployment Name",value:r.deployment,onChange:a=>s({...r,deployment:a.target.value}),placeholder:"gpt-4",hint:"The deployment name in your Azure resource"}),(0,d.jsx)(g.A,{label:"API Version",value:r.apiVersion,onChange:a=>s({...r,apiVersion:a.target.value}),placeholder:"2024-10-01-preview",hint:"Azure OpenAI API version to use"}),(0,d.jsx)(g.A,{label:"Organization",value:r.organization,onChange:a=>s({...r,organization:a.target.value}),placeholder:"Organization ID",hint:"Required for billing"})]})]}),J&&(0,d.jsx)(j.A,{label:"Region",value:u,onChange:a=>v(a.target.value),options:J.map(a=>({value:a.id,label:a.label}))}),!I&&!G&&!H&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(h.A,{onClick:L,variant:"secondary",disabled:y,children:y?"Testing...":"Test Connection"}),z&&(0,d.jsx)(i.A,{variant:"success"===z?"success":"error",children:"success"===z?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.A,{onClick:N,fullWidth:!0,disabled:C,children:C?"Saving...":"Save"}),(0,d.jsx)(h.A,{onClick:o,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}}};
1
+ "use strict";exports.id=883,exports.ids=[883],exports.modules={40883:(a,b,c)=>{c.r(b),c.d(b,{default:()=>m});var d=c(66238),e=c(71183),f=c(34455),g=c(75814),h=c(93864),i=c(12613),j=c(46696),k=c(53207);function l(a,b){switch(b.type){case"RESET":return{testing:!1,testResult:null,validating:!1,validationResult:null,saving:!1};case"TEST_START":return{...a,testing:!0,testResult:null};case"TEST_DONE":return{...a,testing:!1,testResult:b.result};case"VALIDATE_START":return{...a,validating:!0,validationResult:null};case"VALIDATE_DONE":return{...a,validating:!1,validationResult:b.result};case"SAVE_START":return{...a,saving:!0};case"SAVE_DONE":return{...a,saving:!1};default:return a}}function m({isOpen:a,connection:b,proxyPools:c,onSave:n,onClose:o}){let[p,q]=(0,e.useState)({name:"",priority:1,apiKey:"",projectId:""}),[r,s]=(0,e.useState)({azureEndpoint:"",apiVersion:"2024-10-01-preview",deployment:"",organization:""}),t={accountId:b?.provider==="cloudflare-ai"&&b.providerSpecificData&&b.providerSpecificData.accountId||""},[u,v]=(0,e.useState)(""),[w,x]=(0,e.useReducer)(l,{testing:!1,testResult:null,validating:!1,validationResult:null,saving:!1}),{testing:y,testResult:z,validating:A,validationResult:B,saving:C}=w,[D,E]=(0,e.useState)(b);if(b!==D&&(E(b),b)){q({name:b.name||"",priority:b.priority||1,apiKey:"",projectId:b.projectId||""}),"azure"===b.provider&&b.providerSpecificData&&s({azureEndpoint:b.providerSpecificData.azureEndpoint||"",apiVersion:b.providerSpecificData.apiVersion||"2024-10-01-preview",deployment:b.providerSpecificData.deployment||"",organization:b.providerSpecificData.organization||""});let a=k.Q2?.[b.provider];a?.regions&&v(b.providerSpecificData?.region||a.defaultRegion||a.regions[0]?.id||""),x({type:"RESET"})}let[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(""),L=b?.provider==="gemini-cli"||b?.provider==="antigravity",M=b?.authType==="oauth",N=b?.provider==="azure",O=b?.provider==="cloudflare-ai",P=!!b&&((0,k.mq)(b.provider)||(0,k.gb)(b.provider)),Q=b&&k.Q2?.[b.provider]?.regions||null,R=()=>{if(Q&&u)return{...b?.providerSpecificData||{},region:u}},S=async()=>{if(b?.provider){x({type:"TEST_START"});try{let a="gemini-cli"===b.provider||"antigravity"===b.provider?{projectId:p.projectId}:void 0,c=await fetch(`/api/providers/${b.id}/test`,{method:"POST",headers:a?{"Content-Type":"application/json"}:void 0,body:a?JSON.stringify(a):void 0}),d=await c.json();x({type:"TEST_DONE",result:d.valid?"success":"failed"})}catch{x({type:"TEST_DONE",result:"failed"})}}},T=async()=>{if(b?.provider&&p.apiKey){x({type:"VALIDATE_START"});try{let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:p.apiKey,...N?{providerSpecificData:r}:{},...O?{providerSpecificData:t}:{},...Q?{providerSpecificData:R()}:{}})}),c=await a.json();x({type:"VALIDATE_DONE",result:c.valid?"success":"failed"})}catch{x({type:"VALIDATE_DONE",result:"failed"})}}},U=async()=>{if(b){x({type:"SAVE_START"});try{let a={name:p.name,priority:p.priority};if(("gemini-cli"===b.provider||"antigravity"===b.provider)&&(a.projectId=p.projectId,a.isProjectIdManual=!!p.projectId.trim()),!M&&p.apiKey){a.apiKey=p.apiKey;let c="success"===B;if(!c)try{x({type:"VALIDATE_START"});let a=await fetch("/api/providers/validate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:b.provider,apiKey:p.apiKey,...N?{providerSpecificData:r}:{},...O?{providerSpecificData:t}:{},...Q?{providerSpecificData:R()}:{}})});c=!!(await a.json()).valid,x({type:"VALIDATE_DONE",result:c?"success":"failed"})}catch{x({type:"VALIDATE_DONE",result:"failed"})}c&&(a.testStatus="active",a.lastError=null,a.lastErrorAt=null)}Q&&u&&(a.providerSpecificData=R()),N&&(a.providerSpecificData={azureEndpoint:r.azureEndpoint,apiVersion:r.apiVersion,deployment:r.deployment,organization:r.organization}),O&&(a.providerSpecificData={accountId:t.accountId}),await n(a)}finally{x({type:"SAVE_DONE"})}}};return b?(0,d.jsx)(f.A,{isOpen:a,title:"Edit Connection",onClose:o,children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)(g.A,{label:"Name",value:p.name,onChange:a=>q({...p,name:a.target.value}),placeholder:M?"Account name":"Production Key"}),M&&b.email&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-3 rounded-lg",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted mb-1",children:"Email"}),(0,d.jsx)("p",{className:"font-medium",children:b.email})]}),(0,d.jsx)(g.A,{label:"Priority",type:"number",value:p.priority,onChange:a=>q({...p,priority:Number.parseInt(a.target.value,10)||1})}),L&&(0,d.jsx)(d.Fragment,{children:H?(0,d.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,d.jsx)("span",{className:"text-sm font-medium text-text",children:"Project ID"}),(0,d.jsx)("div",{className:"text-xs text-text-muted animate-pulse py-2",children:"Loading GCP projects..."})]}):F&&F.length>0&&!J?(0,d.jsx)(j.A,{label:"Project ID",value:p.projectId,onChange:a=>q({...p,projectId:a.target.value}),options:[{value:"",label:"-- Select GCP Project --"},...F.map(a=>({value:a.id,label:`${a.name} (${a.id})`}))],hint:"Choose which GCP project ID to use for API requests."}):(0,d.jsx)(g.A,{label:"Project ID",value:p.projectId,onChange:a=>q({...p,projectId:a.target.value}),placeholder:"Google GCP Project ID",hint:J?`Failed to load projects (${J}). Please type Project ID manually.`:"Override the automatically resolved GCP project ID used for API requests."})}),!M&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.A,{label:"API Key",type:"password",value:p.apiKey,onChange:a=>q({...p,apiKey:a.target.value}),placeholder:"Enter new API key",hint:"Leave blank to keep the current API key.",className:"flex-1"}),(0,d.jsx)("div",{className:"pt-6",children:(0,d.jsx)(h.A,{onClick:T,disabled:!p.apiKey||A||C,variant:"secondary",children:A?"Checking...":"Check"})})]}),B&&(0,d.jsx)(i.A,{variant:"success"===B?"success":"error",children:"success"===B?"Valid":"Invalid"})]}),N&&(0,d.jsxs)("div",{className:"bg-sidebar/50 p-4 rounded-lg border border-accent/20",children:[(0,d.jsx)("h3",{className:"font-semibold mb-3 text-sm",children:"Azure OpenAI Configuration"}),(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(g.A,{label:"Azure Endpoint",value:r.azureEndpoint,onChange:a=>s({...r,azureEndpoint:a.target.value}),placeholder:"https://your-resource.openai.azure.com",hint:"Your Azure OpenAI resource endpoint URL"}),(0,d.jsx)(g.A,{label:"Deployment Name",value:r.deployment,onChange:a=>s({...r,deployment:a.target.value}),placeholder:"gpt-4",hint:"The deployment name in your Azure resource"}),(0,d.jsx)(g.A,{label:"API Version",value:r.apiVersion,onChange:a=>s({...r,apiVersion:a.target.value}),placeholder:"2024-10-01-preview",hint:"Azure OpenAI API version to use"}),(0,d.jsx)(g.A,{label:"Organization",value:r.organization,onChange:a=>s({...r,organization:a.target.value}),placeholder:"Organization ID",hint:"Required for billing"})]})]}),Q&&(0,d.jsx)(j.A,{label:"Region",value:u,onChange:a=>v(a.target.value),options:Q.map(a=>({value:a.id,label:a.label}))}),!P&&!N&&!O&&(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)(h.A,{onClick:S,variant:"secondary",disabled:y,children:y?"Testing...":"Test Connection"}),z&&(0,d.jsx)(i.A,{variant:"success"===z?"success":"error",children:"success"===z?"Valid":"Failed"})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.A,{onClick:U,fullWidth:!0,disabled:C||L&&p.projectId!==(b.projectId||"")&&!(F&&F.length>0&&!J)&&"success"!==z,children:C?"Saving...":"Save"}),(0,d.jsx)(h.A,{onClick:o,variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}):null}}};
@@ -15,7 +15,7 @@ exports.id=9633,exports.ids=[9633],exports.modules={13674:()=>{},39035:(a,b,c)=>
15
15
  AND COALESCE(apiKey, '') = COALESCE(?, '')
16
16
  AND promptTokens = ?
17
17
  AND completionTokens = ?
18
- ORDER BY id DESC LIMIT 1`,[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,f,g]);if(t){!t.endpoint&&a.endpoint&&b.run("UPDATE usageHistory SET endpoint = ? WHERE id = ?",[a.endpoint,t.id]);return}b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,f,g,a.cost||0,a.status||"ok",(0,e.s)(c),(0,e.s)({})]);let u=(i=(d=a.timestamp)?new Date(d):new Date,`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`),v=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[u]),w=v?(0,e.q)(v.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};j=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,k=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,l=a.tokens?.cached_tokens||a.tokens?.cache_read_input_tokens||0,m=a.cost||0,n={promptTokens:j,completionTokens:k,cachedTokens:l,cost:m},w.requests=(w.requests||0)+1,w.promptTokens=(w.promptTokens||0)+j,w.completionTokens=(w.completionTokens||0)+k,w.cachedTokens=(w.cachedTokens||0)+l,w.cost=(w.cost||0)+m,w.byProvider||={},w.byModel||={},w.byAccount||={},w.byApiKey||={},w.byEndpoint||={},a.provider&&O(w.byProvider,a.provider,n),o=a.provider?`${a.model}|${a.provider}`:a.model,O(w.byModel,o,{...n,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&O(w.byAccount,a.connectionId,{...n,meta:{rawModel:a.model,provider:a.provider}}),p=a.apiKey&&"string"==typeof a.apiKey?a.apiKey:"local-no-key",q=`${p}|${a.model}|${a.provider||"unknown"}`,O(w.byApiKey,q,{...n,meta:{rawModel:a.model,provider:a.provider,apiKey:a.apiKey||null}}),r=a.endpoint||"Unknown",s=`${r}|${a.model}|${a.provider||"unknown"}`,O(w.byEndpoint,s,{...n,meta:{endpoint:r,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[u,(0,e.s)(w)]);let x=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),y=(x?parseInt(x.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(y)]),h=!0}),h)&&(J.items.push(a),J.items.length>50&&(J.items=J.items.slice(-50)),N("update",250))}catch(a){console.error("Failed to save usage stats:",a)}}function V(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function W(a="all"){let b=await (0,d.getAdapter)(),[{getProviderConnections:f},{getApiKeys:g},{getProviderNodes:h}]=await Promise.all([Promise.resolve().then(c.bind(c,39035)),Promise.resolve().then(c.bind(c,92898)),Promise.resolve().then(c.bind(c,88731))]),i=[];try{i=await f()}catch{}let j={};for(let a of i)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await h()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await g()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n=b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100"),o=new Set,p={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCachedTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:G,activeRequests:[],recentRequests:n.map(a=>{let b=(0,e.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,cachedTokens:b.cached_tokens||b.cache_read_input_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!o.has(c)&&(o.add(c),!0)}).slice(0,20),errorProvider:Date.now()-H.ts<1e4?H.provider:""};for(let[a,b]of Object.entries(G.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);p.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),t={};for(let a=0;a<10;a++){let b=r.getTime()-(9-a)*6e4;t[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(t[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[s.toISOString(),q.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);t[b]&&(t[b].requests++,t[b].promptTokens+=a.promptTokens||0,t[b].completionTokens+=a.completionTokens||0,t[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null;for(let a of V(b,c)){let b=a.dateKey,c=(0,e.q)(a.data,{});for(let[a,b]of(p.totalPromptTokens+=c.promptTokens||0,p.totalCompletionTokens+=c.completionTokens||0,p.totalCachedTokens+=c.cachedTokens||0,p.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))p.byProvider[a]||(p.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),p.byProvider[a].requests+=b.requests||0,p.byProvider[a].promptTokens+=b.promptTokens||0,p.byProvider[a].completionTokens+=b.completionTokens||0,p.byProvider[a].cachedTokens+=b.cachedTokens||0,p.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=k[e]||e;p.byModel[f]||(p.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),p.byModel[f].requests+=d.requests||0,p.byModel[f].promptTokens+=d.promptTokens||0,p.byModel[f].completionTokens+=d.completionTokens||0,p.byModel[f].cachedTokens+=d.cachedTokens||0,p.byModel[f].cost+=d.cost||0,b>(p.byModel[f].lastUsed||"")&&(p.byModel[f].lastUsed=b)}for(let[a,d]of Object.entries(c.byAccount||{})){let c=j[a]||`Account ${a.slice(0,8)}...`,e=d.rawModel||"",f=d.provider||"",g=k[f]||f,h=`${e} (${f} - ${c})`;p.byAccount[h]||(p.byAccount[h]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:e,provider:g,connectionId:a,accountName:c,lastUsed:b}),p.byAccount[h].requests+=d.requests||0,p.byAccount[h].promptTokens+=d.promptTokens||0,p.byAccount[h].completionTokens+=d.completionTokens||0,p.byAccount[h].cachedTokens+=d.cachedTokens||0,p.byAccount[h].cost+=d.cost||0,b>(p.byAccount[h].lastUsed||"")&&(p.byAccount[h].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=k[e]||e,g=d.apiKey,h=g?m[g]:null,i=h?.name||(g?g.slice(0,8)+"...":"Local (No API Key)"),j=F(g),l=j||"local-no-key";p.byApiKey[a]||(p.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:f,apiKeyMasked:j,keyName:i,apiKeyKey:l,lastUsed:b}),p.byApiKey[a].requests+=d.requests||0,p.byApiKey[a].promptTokens+=d.promptTokens||0,p.byApiKey[a].completionTokens+=d.completionTokens||0,p.byApiKey[a].cachedTokens+=d.cachedTokens||0,p.byApiKey[a].cost+=d.cost||0,b>(p.byApiKey[a].lastUsed||"")&&(p.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=k[f]||f;p.byEndpoint[a]||(p.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),p.byEndpoint[a].requests+=d.requests||0,p.byEndpoint[a].promptTokens+=d.promptTokens||0,p.byEndpoint[a].completionTokens+=d.completionTokens||0,p.byEndpoint[a].cachedTokens+=d.cachedTokens||0,p.byEndpoint[a].cost+=d.cost||0,b>(p.byEndpoint[a].lastUsed||"")&&(p.byEndpoint[a].lastUsed=b)}}let d=c?Date.now()-864e5*c:0;for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint FROM usageHistory WHERE timestamp >= ?",[new Date(d).toISOString()])){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[c]&&new Date(b)>new Date(p.byModel[c].lastUsed)&&(p.byModel[c].lastUsed=b),a.connectionId){let c=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,d=`${a.model} (${a.provider} - ${c})`;p.byAccount[d]&&new Date(b)>new Date(p.byAccount[d].lastUsed)&&(p.byAccount[d].lastUsed=b)}let d=a.apiKey&&"string"==typeof a.apiKey?`${a.apiKey}|${a.model}|${a.provider||"unknown"}`:"local-no-key";p.byApiKey[d]&&new Date(b)>new Date(p.byApiKey[d].lastUsed)&&(p.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[f]&&new Date(b)>new Date(p.byEndpoint[f].lastUsed)&&(p.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,e.q)(a.tokens,{})||{},c=b.prompt_tokens||0,d=b.completion_tokens||0,f=b.cached_tokens||b.cache_read_input_tokens||0,g=a.cost||0,h=k[a.provider]||a.provider;p.totalPromptTokens+=c,p.totalCompletionTokens+=d,p.totalCachedTokens+=f,p.totalCost+=g,p.byProvider[a.provider]||(p.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),p.byProvider[a.provider].requests++,p.byProvider[a.provider].promptTokens+=c,p.byProvider[a.provider].completionTokens+=d,p.byProvider[a.provider].cachedTokens+=f,p.byProvider[a.provider].cost+=g;let i=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[i]||(p.byModel[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,lastUsed:a.timestamp}),p.byModel[i].requests++,p.byModel[i].promptTokens+=c,p.byModel[i].completionTokens+=d,p.byModel[i].cachedTokens+=f,p.byModel[i].cost+=g,new Date(a.timestamp)>new Date(p.byModel[i].lastUsed)&&(p.byModel[i].lastUsed=a.timestamp),a.connectionId){let b=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,e=`${a.model} (${a.provider} - ${b})`;p.byAccount[e]||(p.byAccount[e]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),p.byAccount[e].requests++,p.byAccount[e].promptTokens+=c,p.byAccount[e].completionTokens+=d,p.byAccount[e].cachedTokens+=f,p.byAccount[e].cost+=g,new Date(a.timestamp)>new Date(p.byAccount[e].lastUsed)&&(p.byAccount[e].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=m[a.apiKey],e=b?.name||a.apiKey.slice(0,8)+"...",i=F(a.apiKey),j=`${i}|${a.model}|${a.provider||"unknown"}`;p.byApiKey[j]||(p.byApiKey[j]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKeyMasked:i,keyName:e,apiKeyKey:i,lastUsed:a.timestamp});let k=p.byApiKey[j];k.requests++,k.promptTokens+=c,k.completionTokens+=d,k.cachedTokens+=f,k.cost+=g,new Date(a.timestamp)>new Date(k.lastUsed)&&(k.lastUsed=a.timestamp)}else{p.byApiKey["local-no-key"]||(p.byApiKey["local-no-key"]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKeyMasked:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let b=p.byApiKey["local-no-key"];b.requests++,b.promptTokens+=c,b.completionTokens+=d,b.cachedTokens+=f,b.cost+=g,new Date(a.timestamp)>new Date(b.lastUsed)&&(b.lastUsed=a.timestamp)}let l=a.endpoint||"Unknown",n=`${l}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[n]||(p.byEndpoint[n]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:l,rawModel:a.model,provider:h,lastUsed:a.timestamp});let o=p.byEndpoint[n];o.requests++,o.promptTokens+=c,o.completionTokens+=d,o.cachedTokens+=f,o.cost+=g,new Date(a.timestamp)>new Date(o.lastUsed)&&(o.lastUsed=a.timestamp)}}return p.totalRequests=Object.values(p.byProvider).reduce((a,b)=>a+(b.requests||0),0),p}async function X(a="7d"){let b=await (0,d.getAdapter)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let f="7d"===a?7:"30d"===a?30:60,g=new Date,h=V(b,f),i={};for(let a of h)i[a.dateKey]=(0,e.q)(a.data,{});return Array.from({length:f},(a,b)=>{let c=new Date(g);c.setDate(c.getDate()-(f-1-b));let d=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:d?(d.promptTokens||0)+(d.completionTokens||0):0,cost:d&&d.cost||0}})}async function Y(){}async function Z(a=200){try{let b=(await (0,d.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let f={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,39035));for(let b of(await a()))f[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",d=a.model||"-",g=f[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,e.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${d} | ${c} | ${g} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}let $=null,_=0;async function aa(){if($&&Date.now()-_<5e3)return $;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,70609)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;$={enabled:"boolean"==typeof b.enableObservability2?b.enableObservability2:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{$={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return _=Date.now(),$}let ab=[],ac=null,ad=!1;function ae(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function af(){if(!ad&&0!==ab.length){ad=!0;try{for(;ab.length>0;){let a=ab.splice(0,ab.length),b=await (0,d.getAdapter)(),c=await aa();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,apiKey:d.apiKey||null,apiKeyName:d.apiKeyName||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:ae(d.request,c.maxJsonSize),providerRequest:ae(d.providerRequest,c.maxJsonSize),providerResponse:ae(d.providerResponse,c.maxJsonSize),response:ae(d.response,c.maxJsonSize)};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, apiKey, apiKeyName, status, data) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, apiKey = excluded.apiKey, apiKeyName = excluded.apiKeyName, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.apiKey,a.apiKeyName,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{ad=!1}}}async function ag(a){let b=await aa();b.enabled&&(ab.push(a),ab.length>=b.batchSize?(ac&&(clearTimeout(ac),ac=null),af().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):ac||(ac=setTimeout(()=>{ac=null,af().catch(()=>{})},b.flushIntervalMs)))}async function ah(a={}){let b=await (0,d.getAdapter)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}async function ai(){return(await (0,d.getAdapter)()).all("SELECT DISTINCT provider FROM requestDetails WHERE provider IS NOT NULL ORDER BY provider ASC").map(a=>a.provider)}async function aj(a){let b=(await (0,d.getAdapter)()).get("SELECT data FROM requestDetails WHERE id = ?",[a]);return b?(0,e.q)(b.data,null):null}let ak=async()=>{ac&&(clearTimeout(ac),ac=null),ab.length>0&&await af()};async function al(){let a=await (0,d.getAdapter)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,70609)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function am(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),await al()}process.off("beforeExit",ak),process.off("SIGINT",ak),process.off("SIGTERM",ak),process.off("exit",ak),process.on("beforeExit",ak),process.on("SIGINT",ak),process.on("SIGTERM",ak),process.on("exit",ak)},57252:(a,b,c)=>{"use strict";c.d(b,{getAdapter:()=>k});var d=c(73468);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(3405).then(c.bind(c,73405));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(3040).then(c.bind(c,23040));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(7006).then(c.bind(c,17006));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(4539).then(c.bind(c,54539));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(8121).then(c.bind(c,58121));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},70609:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>m,exportSettings:()=>n,getSettings:()=>l});var d=c(57252),e=c(90118);let f=process.env.HEADROOM_URL||"http://localhost:8787",g={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,requireApiKey:"true"===process.env.REQUIRE_API_KEY,allowRemoteNoApiKey:!1,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:f,headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full"};async function h(){let a=(await (0,d.getAdapter)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function i(a){let b={...g,...a||{}};for(let[a,c]of Object.entries(g))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}let j=null,k=0;async function l(){let a=Date.now();return j&&a-k<5e3||(j=i(await h()),k=a),j}async function m(a){let b,c=await (0,d.getAdapter)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),j=null,i(b)}async function n(){return await h()}},72408:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(57252),e=c(90118);let f=(0,c(92772).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7010).then(c.bind(c,87010)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7010).then(c.bind(c,87010));return e(a,b)}async function l(a){let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.getAdapter)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}},73468:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(88590);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},81950:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(57252),e=c(90118),f=c(92772);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.getAdapter)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},88590:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="9router";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a,b=process.env.DATA_DIR;if(!b)return k();if((a=b.toLowerCase().replace(/\\/g,"/")).includes("smoke")||/^\/tmp\/9router-data-/.test(a)||"darwin"===process.platform&&a.includes("/var/folders/")){let a=k();return console.warn(`[DATA_DIR] '${b}' looks like a temp/smoke directory; using persistent default '${a}' instead. Set DATA_DIR to an explicit persistent path (e.g. /app/data) to override.`),a}if("win32"===process.platform&&/^\//.test(b))return console.warn(`[DATA_DIR] '${b}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(b,{recursive:!0}),b}catch(a){if(a?.code==="EACCES"||a?.code==="EPERM")return console.warn(`[DATA_DIR] '${b}' not writable → fallback ~/.${j}`),k();throw a}}()},88731:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createProviderNode:()=>k,deleteProviderNode:()=>m,getProviderNodeById:()=>j,getProviderNodes:()=>i,updateProviderNode:()=>l});var d=c(77598),e=c(57252),f=c(90118);function g(a){return a?{...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function h(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
18
+ ORDER BY id DESC LIMIT 1`,[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,f,g]);if(t){!t.endpoint&&a.endpoint&&b.run("UPDATE usageHistory SET endpoint = ? WHERE id = ?",[a.endpoint,t.id]);return}b.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a.timestamp,a.provider||null,a.model||null,a.connectionId||null,a.apiKey||null,a.endpoint||null,f,g,a.cost||0,a.status||"ok",(0,e.s)(c),(0,e.s)({})]);let u=(i=(d=a.timestamp)?new Date(d):new Date,`${i.getFullYear()}-${String(i.getMonth()+1).padStart(2,"0")}-${String(i.getDate()).padStart(2,"0")}`),v=b.get("SELECT data FROM usageDaily WHERE dateKey = ?",[u]),w=v?(0,e.q)(v.data,{}):{requests:0,promptTokens:0,completionTokens:0,cost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{}};j=a.tokens?.prompt_tokens||a.tokens?.input_tokens||0,k=a.tokens?.completion_tokens||a.tokens?.output_tokens||0,l=a.tokens?.cached_tokens||a.tokens?.cache_read_input_tokens||0,m=a.cost||0,n={promptTokens:j,completionTokens:k,cachedTokens:l,cost:m},w.requests=(w.requests||0)+1,w.promptTokens=(w.promptTokens||0)+j,w.completionTokens=(w.completionTokens||0)+k,w.cachedTokens=(w.cachedTokens||0)+l,w.cost=(w.cost||0)+m,w.byProvider||={},w.byModel||={},w.byAccount||={},w.byApiKey||={},w.byEndpoint||={},a.provider&&O(w.byProvider,a.provider,n),o=a.provider?`${a.model}|${a.provider}`:a.model,O(w.byModel,o,{...n,meta:{rawModel:a.model,provider:a.provider}}),a.connectionId&&O(w.byAccount,a.connectionId,{...n,meta:{rawModel:a.model,provider:a.provider}}),p=a.apiKey&&"string"==typeof a.apiKey?a.apiKey:"local-no-key",q=`${p}|${a.model}|${a.provider||"unknown"}`,O(w.byApiKey,q,{...n,meta:{rawModel:a.model,provider:a.provider,apiKey:a.apiKey||null}}),r=a.endpoint||"Unknown",s=`${r}|${a.model}|${a.provider||"unknown"}`,O(w.byEndpoint,s,{...n,meta:{endpoint:r,rawModel:a.model,provider:a.provider}}),b.run("INSERT INTO usageDaily(dateKey, data) VALUES(?, ?) ON CONFLICT(dateKey) DO UPDATE SET data = excluded.data",[u,(0,e.s)(w)]);let x=b.get("SELECT value FROM _meta WHERE key = 'totalRequestsLifetime'"),y=(x?parseInt(x.value,10):0)+1;b.run("INSERT INTO _meta(key, value) VALUES('totalRequestsLifetime', ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[String(y)]),h=!0}),h)&&(J.items.push(a),J.items.length>50&&(J.items=J.items.slice(-50)),N("update",250))}catch(a){console.error("Failed to save usage stats:",a)}}function V(a,b){if(null==b)return a.all("SELECT dateKey, data FROM usageDaily");let c=new Date,d=new Date(c.getFullYear(),c.getMonth(),c.getDate()-b+1),e=`${d.getFullYear()}-${String(d.getMonth()+1).padStart(2,"0")}-${String(d.getDate()).padStart(2,"0")}`;return a.all("SELECT dateKey, data FROM usageDaily WHERE dateKey >= ?",[e])}async function W(a="all"){let b=await (0,d.getAdapter)(),[{getProviderConnections:f},{getApiKeys:g},{getProviderNodes:h}]=await Promise.all([Promise.resolve().then(c.bind(c,39035)),Promise.resolve().then(c.bind(c,92898)),Promise.resolve().then(c.bind(c,88731))]),i=[];try{i=await f()}catch{}let j={};for(let a of i)j[a.id]=a.name||a.email||a.id;let k={};try{for(let a of(await h()))a.id&&a.name&&(k[a.id]=a.name)}catch{}let l=[];try{l=await g()}catch{}let m={};for(let a of l)m[a.key]={name:a.name,id:a.id,createdAt:a.createdAt};let n=b.all("SELECT timestamp, provider, model, tokens, status FROM usageHistory ORDER BY id DESC LIMIT 100"),o=new Set,p={totalRequests:0,totalPromptTokens:0,totalCompletionTokens:0,totalCachedTokens:0,totalCost:0,byProvider:{},byModel:{},byAccount:{},byApiKey:{},byEndpoint:{},last10Minutes:[],pending:G,activeRequests:[],recentRequests:n.map(a=>{let b=(0,e.q)(a.tokens,{})||{};return{timestamp:a.timestamp,model:a.model,provider:a.provider||"",promptTokens:b.prompt_tokens||b.input_tokens||0,completionTokens:b.completion_tokens||b.output_tokens||0,cachedTokens:b.cached_tokens||b.cache_read_input_tokens||0,status:a.status||"ok"}}).filter(a=>{if(0===a.promptTokens&&0===a.completionTokens)return!1;let b=a.timestamp?a.timestamp.slice(0,16):"",c=`${a.model}|${a.provider}|${a.promptTokens}|${a.completionTokens}|${b}`;return!o.has(c)&&(o.add(c),!0)}).slice(0,20),errorProvider:Date.now()-H.ts<1e4?H.provider:""};for(let[a,b]of Object.entries(G.byAccount))for(let[c,d]of Object.entries(b))if(d>0){let b=j[a]||`Account ${a.slice(0,8)}...`,e=c.match(/^(.*) \((.*)\)$/);p.activeRequests.push({model:e?e[1]:c,provider:e?e[2]:"unknown",account:b,count:d})}let q=new Date,r=new Date(6e4*Math.floor(q.getTime()/6e4)),s=new Date(r.getTime()-54e4),t={};for(let a=0;a<10;a++){let b=r.getTime()-(9-a)*6e4;t[b]={requests:0,promptTokens:0,completionTokens:0,cost:0},p.last10Minutes.push(t[b])}for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ? AND timestamp <= ?",[s.toISOString(),q.toISOString()])){let b=6e4*Math.floor(new Date(a.timestamp).getTime()/6e4);t[b]&&(t[b].requests++,t[b].promptTokens+=a.promptTokens||0,t[b].completionTokens+=a.completionTokens||0,t[b].cost+=a.cost||0)}if("24h"!==a&&"today"!==a){let c={"7d":7,"30d":30,"60d":60}[a]||null;for(let a of V(b,c)){let b=a.dateKey,c=(0,e.q)(a.data,{});for(let[a,b]of(p.totalPromptTokens+=c.promptTokens||0,p.totalCompletionTokens+=c.completionTokens||0,p.totalCachedTokens+=c.cachedTokens||0,p.totalCost+=c.cost||0,Object.entries(c.byProvider||{})))p.byProvider[a]||(p.byProvider[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),p.byProvider[a].requests+=b.requests||0,p.byProvider[a].promptTokens+=b.promptTokens||0,p.byProvider[a].completionTokens+=b.completionTokens||0,p.byProvider[a].cachedTokens+=b.cachedTokens||0,p.byProvider[a].cost+=b.cost||0;for(let[a,d]of Object.entries(c.byModel||{})){let c=d.rawModel||a.split("|")[0],e=d.provider||a.split("|")[1]||"",f=e?`${c} (${e})`:c,g=k[e]||e;p.byModel[f]||(p.byModel[f]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:g,lastUsed:b}),p.byModel[f].requests+=d.requests||0,p.byModel[f].promptTokens+=d.promptTokens||0,p.byModel[f].completionTokens+=d.completionTokens||0,p.byModel[f].cachedTokens+=d.cachedTokens||0,p.byModel[f].cost+=d.cost||0,b>(p.byModel[f].lastUsed||"")&&(p.byModel[f].lastUsed=b)}for(let[a,d]of Object.entries(c.byAccount||{})){let c=j[a]||`Account ${a.slice(0,8)}...`,e=d.rawModel||"",f=d.provider||"",g=k[f]||f,h=`${e} (${f} - ${c})`;p.byAccount[h]||(p.byAccount[h]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:e,provider:g,connectionId:a,accountName:c,lastUsed:b}),p.byAccount[h].requests+=d.requests||0,p.byAccount[h].promptTokens+=d.promptTokens||0,p.byAccount[h].completionTokens+=d.completionTokens||0,p.byAccount[h].cachedTokens+=d.cachedTokens||0,p.byAccount[h].cost+=d.cost||0,b>(p.byAccount[h].lastUsed||"")&&(p.byAccount[h].lastUsed=b)}for(let[a,d]of Object.entries(c.byApiKey||{})){let c=d.rawModel||"",e=d.provider||"",f=k[e]||e,g=d.apiKey,h=g?m[g]:null,i=h?.name||(g?g.slice(0,8)+"...":"Local (No API Key)"),j=F(g),l=j||"local-no-key";p.byApiKey[a]||(p.byApiKey[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:c,provider:f,apiKeyMasked:j,keyName:i,apiKeyKey:l,lastUsed:b}),p.byApiKey[a].requests+=d.requests||0,p.byApiKey[a].promptTokens+=d.promptTokens||0,p.byApiKey[a].completionTokens+=d.completionTokens||0,p.byApiKey[a].cachedTokens+=d.cachedTokens||0,p.byApiKey[a].cost+=d.cost||0,b>(p.byApiKey[a].lastUsed||"")&&(p.byApiKey[a].lastUsed=b)}for(let[a,d]of Object.entries(c.byEndpoint||{})){let c=d.endpoint||a.split("|")[0]||"Unknown",e=d.rawModel||"",f=d.provider||"",g=k[f]||f;p.byEndpoint[a]||(p.byEndpoint[a]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:c,rawModel:e,provider:g,lastUsed:b}),p.byEndpoint[a].requests+=d.requests||0,p.byEndpoint[a].promptTokens+=d.promptTokens||0,p.byEndpoint[a].completionTokens+=d.completionTokens||0,p.byEndpoint[a].cachedTokens+=d.cachedTokens||0,p.byEndpoint[a].cost+=d.cost||0,b>(p.byEndpoint[a].lastUsed||"")&&(p.byEndpoint[a].lastUsed=b)}}let d=c?Date.now()-864e5*c:0;for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint FROM usageHistory WHERE timestamp >= ?",[new Date(d).toISOString()])){let b=a.timestamp,c=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[c]&&new Date(b)>new Date(p.byModel[c].lastUsed)&&(p.byModel[c].lastUsed=b),a.connectionId){let c=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,d=`${a.model} (${a.provider} - ${c})`;p.byAccount[d]&&new Date(b)>new Date(p.byAccount[d].lastUsed)&&(p.byAccount[d].lastUsed=b)}let d=a.apiKey&&"string"==typeof a.apiKey?`${a.apiKey}|${a.model}|${a.provider||"unknown"}`:"local-no-key";p.byApiKey[d]&&new Date(b)>new Date(p.byApiKey[d].lastUsed)&&(p.byApiKey[d].lastUsed=b);let e=a.endpoint||"Unknown",f=`${e}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[f]&&new Date(b)>new Date(p.byEndpoint[f].lastUsed)&&(p.byEndpoint[f].lastUsed=b)}}else{let c;if("today"===a){let a=new Date;a.setHours(0,0,0,0),c=a.toISOString()}else c=new Date(Date.now()-864e5).toISOString();for(let a of b.all("SELECT timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, tokens FROM usageHistory WHERE timestamp >= ?",[c])){let b=(0,e.q)(a.tokens,{})||{},c=b.prompt_tokens||0,d=b.completion_tokens||0,f=b.cached_tokens||b.cache_read_input_tokens||0,g=a.cost||0,h=k[a.provider]||a.provider;p.totalPromptTokens+=c,p.totalCompletionTokens+=d,p.totalCachedTokens+=f,p.totalCost+=g,p.byProvider[a.provider]||(p.byProvider[a.provider]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0}),p.byProvider[a.provider].requests++,p.byProvider[a.provider].promptTokens+=c,p.byProvider[a.provider].completionTokens+=d,p.byProvider[a.provider].cachedTokens+=f,p.byProvider[a.provider].cost+=g;let i=a.provider?`${a.model} (${a.provider})`:a.model;if(p.byModel[i]||(p.byModel[i]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,lastUsed:a.timestamp}),p.byModel[i].requests++,p.byModel[i].promptTokens+=c,p.byModel[i].completionTokens+=d,p.byModel[i].cachedTokens+=f,p.byModel[i].cost+=g,new Date(a.timestamp)>new Date(p.byModel[i].lastUsed)&&(p.byModel[i].lastUsed=a.timestamp),a.connectionId){let b=j[a.connectionId]||`Account ${a.connectionId.slice(0,8)}...`,e=`${a.model} (${a.provider} - ${b})`;p.byAccount[e]||(p.byAccount[e]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,connectionId:a.connectionId,accountName:b,lastUsed:a.timestamp}),p.byAccount[e].requests++,p.byAccount[e].promptTokens+=c,p.byAccount[e].completionTokens+=d,p.byAccount[e].cachedTokens+=f,p.byAccount[e].cost+=g,new Date(a.timestamp)>new Date(p.byAccount[e].lastUsed)&&(p.byAccount[e].lastUsed=a.timestamp)}if(a.apiKey&&"string"==typeof a.apiKey){let b=m[a.apiKey],e=b?.name||a.apiKey.slice(0,8)+"...",i=F(a.apiKey),j=`${i}|${a.model}|${a.provider||"unknown"}`;p.byApiKey[j]||(p.byApiKey[j]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKeyMasked:i,keyName:e,apiKeyKey:i,lastUsed:a.timestamp});let k=p.byApiKey[j];k.requests++,k.promptTokens+=c,k.completionTokens+=d,k.cachedTokens+=f,k.cost+=g,new Date(a.timestamp)>new Date(k.lastUsed)&&(k.lastUsed=a.timestamp)}else{p.byApiKey["local-no-key"]||(p.byApiKey["local-no-key"]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,rawModel:a.model,provider:h,apiKeyMasked:null,keyName:"Local (No API Key)",apiKeyKey:"local-no-key",lastUsed:a.timestamp});let b=p.byApiKey["local-no-key"];b.requests++,b.promptTokens+=c,b.completionTokens+=d,b.cachedTokens+=f,b.cost+=g,new Date(a.timestamp)>new Date(b.lastUsed)&&(b.lastUsed=a.timestamp)}let l=a.endpoint||"Unknown",n=`${l}|${a.model}|${a.provider||"unknown"}`;p.byEndpoint[n]||(p.byEndpoint[n]={requests:0,promptTokens:0,completionTokens:0,cachedTokens:0,cost:0,endpoint:l,rawModel:a.model,provider:h,lastUsed:a.timestamp});let o=p.byEndpoint[n];o.requests++,o.promptTokens+=c,o.completionTokens+=d,o.cachedTokens+=f,o.cost+=g,new Date(a.timestamp)>new Date(o.lastUsed)&&(o.lastUsed=a.timestamp)}}return p.totalRequests=Object.values(p.byProvider).reduce((a,b)=>a+(b.requests||0),0),p}async function X(a="7d"){let b=await (0,d.getAdapter)(),c=Date.now();if("today"===a){let a=new Date;a.setHours(0,0,0,0);let c=a.getTime(),d=c+864e5,e=Array.from({length:24},(a,b)=>({label:new Date(c+36e5*b).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let a of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(c).toISOString()])){let b=new Date(a.timestamp).getTime();if(b<c||b>=d)continue;let f=Math.floor((b-c)/36e5);f>=0&&f<24&&(e[f].tokens+=(a.promptTokens||0)+(a.completionTokens||0),e[f].cost+=a.cost||0)}return e}if("24h"===a){let a=c-864e5,d=Array.from({length:24},(b,c)=>({label:new Date(a+36e5*c).toLocaleTimeString("en-US",{hour:"2-digit",minute:"2-digit",hour12:!1}),tokens:0,cost:0}));for(let e of b.all("SELECT timestamp, promptTokens, completionTokens, cost FROM usageHistory WHERE timestamp >= ?",[new Date(a).toISOString()])){let b=new Date(e.timestamp).getTime();if(b<a||b>c)continue;let f=Math.min(Math.floor((b-a)/36e5),23);d[f].tokens+=(e.promptTokens||0)+(e.completionTokens||0),d[f].cost+=e.cost||0}return d}let f="7d"===a?7:"30d"===a?30:60,g=new Date,h=V(b,f),i={};for(let a of h)i[a.dateKey]=(0,e.q)(a.data,{});return Array.from({length:f},(a,b)=>{let c=new Date(g);c.setDate(c.getDate()-(f-1-b));let d=i[`${c.getFullYear()}-${String(c.getMonth()+1).padStart(2,"0")}-${String(c.getDate()).padStart(2,"0")}`];return{label:c.toLocaleDateString("en-US",{month:"short",day:"numeric"}),tokens:d?(d.promptTokens||0)+(d.completionTokens||0):0,cost:d&&d.cost||0}})}async function Y(){}async function Z(a=200){try{let b=(await (0,d.getAdapter)()).all("SELECT timestamp, provider, model, connectionId, promptTokens, completionTokens, status, tokens FROM usageHistory ORDER BY id DESC LIMIT ?",[a]);if(!b.length)return[];let f={};try{let{getProviderConnections:a}=await Promise.resolve().then(c.bind(c,39035));for(let b of(await a()))f[b.id]=b.name||b.email||""}catch{}return b.map(a=>{let b=function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${b(a.getDate())}-${b(a.getMonth()+1)}-${a.getFullYear()} ${b(a.getHours())}:${b(a.getMinutes())}:${b(a.getSeconds())}`}(new Date(a.timestamp)),c=a.provider?.toUpperCase()||"-",d=a.model||"-",g=f[a.connectionId]||(a.connectionId?a.connectionId.slice(0,8):"-"),h=a.tokens?(0,e.q)(a.tokens,{}):{},i=a.promptTokens??h.prompt_tokens??"-",j=a.completionTokens??h.completion_tokens??"-";return`${b} | ${d} | ${c} | ${g} | ${i} | ${j} | ${a.status||"-"}`})}catch(a){return console.error("[usageRepo] getRecentLogs failed:",a.message),[]}}let $=null,_=0;async function aa(){if($&&Date.now()-_<5e3)return $;try{let{getSettings:a}=await Promise.resolve().then(c.bind(c,70609)),b=await a(),d="false"!==process.env.OBSERVABILITY_ENABLED;$={enabled:"boolean"==typeof b.enableObservability2?b.enableObservability2:d,maxRecords:b.observabilityMaxRecords||parseInt(process.env.OBSERVABILITY_MAX_RECORDS||String(200),10),batchSize:b.observabilityBatchSize||parseInt(process.env.OBSERVABILITY_BATCH_SIZE||String(20),10),flushIntervalMs:b.observabilityFlushIntervalMs||parseInt(process.env.OBSERVABILITY_FLUSH_INTERVAL_MS||String(5e3),10),maxJsonSize:1024*(b.observabilityMaxJsonSize||parseInt(process.env.OBSERVABILITY_MAX_JSON_SIZE||"5",10))}}catch{$={enabled:!1,maxRecords:200,batchSize:20,flushIntervalMs:5e3,maxJsonSize:5120}}return _=Date.now(),$}let ab=[],ac=null,ad=!1;function ae(a,b){let c=JSON.stringify(a||{});return c.length>b?{_truncated:!0,_originalSize:c.length,_preview:c.substring(0,200)}:a||{}}async function af(){if(!ad&&0!==ab.length){ad=!0;try{for(;ab.length>0;){let a=ab.splice(0,ab.length),b=await (0,d.getAdapter)(),c=await aa();b.transaction(()=>{for(let d of a){d.id||(d.id=function(a){let b=new Date().toISOString(),c=Math.random().toString(36).substring(2,8),d=a?a.replace(/[^a-zA-Z0-9-]/g,"-"):"unknown";return`${b}-${c}-${d}`}(d.model)),d.timestamp||(d.timestamp=new Date().toISOString()),d.request?.headers&&(d.request.headers=function(a){if(!a||"object"!=typeof a)return{};let b=["authorization","x-api-key","cookie","token","api-key"],c={...a};for(let a of Object.keys(c))b.some(b=>a.toLowerCase().includes(b))&&delete c[a];return c}(d.request.headers));let a={id:d.id,provider:d.provider||null,model:d.model||null,connectionId:d.connectionId||null,apiKey:d.apiKey||null,apiKeyName:d.apiKeyName||null,timestamp:d.timestamp,status:d.status||null,latency:d.latency||{},tokens:d.tokens||{},request:ae(d.request,c.maxJsonSize),providerRequest:ae(d.providerRequest,c.maxJsonSize),providerResponse:ae(d.providerResponse,c.maxJsonSize),response:ae(d.response,c.maxJsonSize)};b.run("INSERT INTO requestDetails(id, timestamp, provider, model, connectionId, apiKey, apiKeyName, status, data) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(id) DO UPDATE SET timestamp = excluded.timestamp, provider = excluded.provider, model = excluded.model, connectionId = excluded.connectionId, apiKey = excluded.apiKey, apiKeyName = excluded.apiKeyName, status = excluded.status, data = excluded.data",[a.id,a.timestamp,a.provider,a.model,a.connectionId,a.apiKey,a.apiKeyName,a.status,(0,e.s)(a)])}let d=b.get("SELECT COUNT(*) as c FROM requestDetails");d&&d.c>c.maxRecords&&b.run("DELETE FROM requestDetails WHERE id IN (SELECT id FROM requestDetails ORDER BY timestamp ASC LIMIT ?)",[d.c-c.maxRecords])})}}catch(a){console.error("[requestDetailsRepo] Batch write failed:",a)}finally{ad=!1}}}async function ag(a){let b=await aa();b.enabled&&(ab.push(a),ab.length>=b.batchSize?(ac&&(clearTimeout(ac),ac=null),af().catch(a=>console.error("[requestDetailsRepo] flush err:",a))):ac||(ac=setTimeout(()=>{ac=null,af().catch(()=>{})},b.flushIntervalMs)))}async function ah(a={}){let b=await (0,d.getAdapter)(),c=[],f=[];a.provider&&(c.push("provider = ?"),f.push(a.provider)),a.model&&(c.push("model = ?"),f.push(a.model)),a.connectionId&&(c.push("connectionId = ?"),f.push(a.connectionId)),a.status&&(c.push("status = ?"),f.push(a.status)),a.startDate&&(c.push("timestamp >= ?"),f.push(new Date(a.startDate).toISOString())),a.endDate&&(c.push("timestamp <= ?"),f.push(new Date(a.endDate).toISOString()));let g=c.length?`WHERE ${c.join(" AND ")}`:"",h=b.get(`SELECT COUNT(*) as c FROM requestDetails ${g}`,f),i=h?h.c:0,j=a.page||1,k=a.pageSize||50,l=Math.ceil(i/k);return{details:b.all(`SELECT data FROM requestDetails ${g} ORDER BY timestamp DESC LIMIT ? OFFSET ?`,[...f,k,(j-1)*k]).map(a=>(0,e.q)(a.data,{})),pagination:{page:j,pageSize:k,totalItems:i,totalPages:l,hasNext:j<l,hasPrev:j>1}}}async function ai(){return(await (0,d.getAdapter)()).all("SELECT DISTINCT provider FROM requestDetails WHERE provider IS NOT NULL ORDER BY provider ASC").map(a=>a.provider)}async function aj(a){let b=(await (0,d.getAdapter)()).get("SELECT data FROM requestDetails WHERE id = ?",[a]);return b?(0,e.q)(b.data,null):null}let ak=async()=>{ac&&(clearTimeout(ac),ac=null),ab.length>0&&await af()};async function al(){let a=await (0,d.getAdapter)(),{exportSettings:b}=await Promise.resolve().then(c.bind(c,70609)),f={settings:await b(),providerConnections:a.all("SELECT * FROM providerConnections").map(a=>({...(0,e.q)(a.data,{}),id:a.id,provider:a.provider,authType:a.authType,name:a.name,email:a.email,priority:a.priority,isActive:1===a.isActive,createdAt:a.createdAt,updatedAt:a.updatedAt})),providerNodes:a.all("SELECT * FROM providerNodes").map(a=>({...(0,e.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt})),proxyPools:a.all("SELECT * FROM proxyPools").map(a=>({...(0,e.q)(a.data,{}),id:a.id,isActive:1===a.isActive,testStatus:a.testStatus,createdAt:a.createdAt,updatedAt:a.updatedAt})),apiKeys:a.all("SELECT * FROM apiKeys").map(a=>({id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive,createdAt:a.createdAt})),combos:a.all("SELECT * FROM combos").map(a=>({id:a.id,name:a.name,kind:a.kind,models:(0,e.q)(a.models,[]),createdAt:a.createdAt,updatedAt:a.updatedAt})),modelAliases:{},customModels:[],mitmAlias:{},pricing:{}};for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'modelAliases'"))f.modelAliases[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'customModels'"))f.customModels.push((0,e.q)(b.value));for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'mitmAlias'"))f.mitmAlias[b.key]=(0,e.q)(b.value);for(let b of a.all("SELECT key, value FROM kv WHERE scope = 'pricing'"))f.pricing[b.key]=(0,e.q)(b.value);return f}async function am(a){if(!a||"object"!=typeof a||Array.isArray(a))throw Error("Invalid database payload");let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let c of(b.run("DELETE FROM settings"),b.run("DELETE FROM providerConnections"),b.run("DELETE FROM providerNodes"),b.run("DELETE FROM proxyPools"),b.run("DELETE FROM apiKeys"),b.run("DELETE FROM combos"),b.run("DELETE FROM kv WHERE scope IN ('modelAliases', 'customModels', 'mitmAlias', 'pricing')"),a.settings&&b.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(a.settings)]),a.providerConnections||[])){let{id:a,provider:d,authType:f,name:g,email:h,priority:i,isActive:j,createdAt:k,updatedAt:l,...m}=c;b.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[a,d,f||"oauth",g||null,h||null,i||null,+(!1!==j),(0,e.s)(m),k||new Date().toISOString(),l||new Date().toISOString()])}for(let c of a.providerNodes||[]){let{id:a,type:d,name:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,d||null,f||null,(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.proxyPools||[]){let{id:a,isActive:d,testStatus:f,createdAt:g,updatedAt:h,...i}=c;b.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[a,+(!1!==d),f||"unknown",(0,e.s)(i),g||new Date().toISOString(),h||new Date().toISOString()])}for(let c of a.apiKeys||[])b.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.key,c.name||null,c.machineId||null,+(!1!==c.isActive),c.createdAt||new Date().toISOString()]);for(let c of a.combos||[])b.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c.id,c.name,c.kind||null,(0,e.s)(c.models||[]),c.createdAt||new Date().toISOString(),c.updatedAt||new Date().toISOString()]);for(let[c,d]of Object.entries(a.modelAliases||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[c,(0,e.s)(d)]);for(let c of a.customModels||[]){let a=`${c.providerAlias}|${c.id}|${c.type||"llm"}`;b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[a,(0,e.s)(c)])}for(let[c,d]of Object.entries(a.mitmAlias||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[c,(0,e.s)(d||{})]);for(let[c,d]of Object.entries(a.pricing||{}))b.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[c,(0,e.s)(d||{})])}),await al()}process.off("beforeExit",ak),process.off("SIGINT",ak),process.off("SIGTERM",ak),process.off("exit",ak),process.on("beforeExit",ak),process.on("SIGINT",ak),process.on("SIGTERM",ak),process.on("exit",ak)},57252:(a,b,c)=>{"use strict";c.d(b,{getAdapter:()=>k});var d=c(73468);global._dbAdapter||(global._dbAdapter={instance:null,initPromise:null,logged:!1});let e=global._dbAdapter;async function f(){if(!process.versions.bun)return null;try{let{createBunSqliteAdapter:a}=await c.e(3405).then(c.bind(c,73405));return await a(d.AL)}catch(a){return console.warn(`[DB] bun:sqlite unavailable: ${a.message}`),null}}async function g(){if(process.versions.bun)return null;try{let{createBetterSqliteAdapter:a}=await c.e(3040).then(c.bind(c,23040));return a(d.AL)}catch(a){return console.warn(`[DB] better-sqlite3 unavailable: ${a.message}`),null}}async function h(){if(process.versions.bun)return null;let[a,b]=process.versions.node.split(".").map(Number);if(a<22||22===a&&b<5)return null;try{let{createNodeSqliteAdapter:a}=await c.e(7006).then(c.bind(c,17006));return await a(d.AL)}catch(a){return console.warn(`[DB] node:sqlite unavailable: ${a.message}`),null}}async function i(){try{let{createSqlJsAdapter:a}=await c.e(4539).then(c.bind(c,54539));return await a(d.AL)}catch(a){return console.warn(`[DB] sql.js unavailable: ${a.message}`),null}}async function j(){(0,d.Jh)();let a=await f();if(a||(a=await g()),a||(a=await h()),a||(a=await i()),!a)throw Error("[DB] No SQLite driver available (bun/better/node/sql.js all failed)");e.logged||(console.log(`[DB] Driver: ${a.driver} | file: ${d.AL}`),e.logged=!0);let{runMigrationOnce:b}=await c.e(8057).then(c.bind(c,88057));return await b(a),a}async function k(){return e.instance?e.instance:(e.initPromise||(e.initPromise=j().then(a=>(e.instance=a,a))),e.initPromise)}},70609:(a,b,c)=>{"use strict";c.d(b,{Xx:()=>m,exportSettings:()=>n,getSettings:()=>l});var d=c(57252),e=c(90118);let f=process.env.HEADROOM_URL||"http://localhost:8787",g={cloudEnabled:!1,tunnelEnabled:!1,tunnelUrl:"",tunnelProvider:"cloudflare",tailscaleEnabled:!1,tailscaleUrl:"",stickyRoundRobinLimit:3,providerStrategies:{},comboStrategy:"fallback",comboStickyRoundRobinLimit:1,comboStrategies:{},requireLogin:!0,requireApiKey:"true"===process.env.REQUIRE_API_KEY,allowRemoteNoApiKey:!1,tunnelDashboardAccess:!0,authMode:"password",oidcIssuerUrl:"",oidcClientId:"",oidcClientSecret:"",oidcScopes:"openid profile email",oidcLoginLabel:"Sign in with OIDC",enableObservability:!0,observabilityMaxRecords:1e3,observabilityBatchSize:20,observabilityFlushIntervalMs:5e3,observabilityMaxJsonSize:5,outboundProxyEnabled:!1,outboundProxyUrl:"",outboundNoProxy:"",mitmRouterBaseUrl:"http://localhost:20128",dnsToolEnabled:{},rtkEnabled:!0,headroomEnabled:!1,headroomUrl:f,headroomCompressUserMessages:!1,cavemanEnabled:!1,cavemanLevel:"full",ponytailEnabled:!1,ponytailLevel:"full"};async function h(){let a=(await (0,d.getAdapter)()).get("SELECT data FROM settings WHERE id = 1");return a?(0,e.q)(a.data,{}):{}}function i(a){let b={...g,...a||{}};for(let[a,c]of Object.entries(g))void 0===b[a]&&("outboundProxyEnabled"===a&&"string"==typeof b.outboundProxyUrl&&b.outboundProxyUrl.trim()?b[a]=!0:b[a]=c);return b}let j=null,k=0;async function l(){let a=Date.now();return j&&a-k<5e3||(j=i(await h()),k=a),j}async function m(a){let b,c=await (0,d.getAdapter)();return c.transaction(()=>{let d=c.get("SELECT data FROM settings WHERE id = 1");b={...d?(0,e.q)(d.data,{}):{},...a},c.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,e.s)(b)])}),j=null,i(b)}async function n(){return await h()}},72408:(a,b,c)=>{"use strict";c.d(b,{KJ:()=>l,VT:()=>n,getPricingForModel:()=>k,r4:()=>j,yF:()=>m});var d=c(57252),e=c(90118);let f=(0,c(92772).U)("pricing"),g={value:null,expiresAt:0};function h(){g={value:null,expiresAt:0}}async function i(){return await f.getAll()}async function j(){let a=Date.now();if(g.value&&g.expiresAt>a)return g.value;let b=await i(),{PROVIDER_PRICING:d}=await c.e(7010).then(c.bind(c,87010)),e={};for(let[a,c]of Object.entries(d))if(e[a]={...c},b[a])for(let[c,d]of Object.entries(b[a]))e[a][c]=e[a][c]?{...e[a][c],...d}:d;for(let[a,c]of Object.entries(b))if(e[a])for(let[b,d]of Object.entries(c))e[a][b]||(e[a][b]=d);else e[a]={...c};return g={value:e,expiresAt:a+5e3},e}async function k(a,b){if(!b)return null;let d=await i();if(a&&d[a]?.[b])return d[a][b];let{getPricingForModel:e}=await c.e(7010).then(c.bind(c,87010));return e(a,b)}async function l(a){let b=await (0,d.getAdapter)();return b.transaction(()=>{for(let[c,d]of Object.entries(a)){let a=b.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[c]),f={...a&&(0,e.q)(a.value,{})||{}};for(let[a,b]of Object.entries(d))f[a]=b;b.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[c,(0,e.s)(f)])}}),h(),await i()}async function m(a,b){if(!a)return await i();let c=await (0,d.getAdapter)();return c.transaction(()=>{if(!b)return void c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]);let d=c.get("SELECT value FROM kv WHERE scope = 'pricing' AND key = ?",[a]),f=d&&(0,e.q)(d.value,{})||{};delete f[b],0===Object.keys(f).length?c.run("DELETE FROM kv WHERE scope = 'pricing' AND key = ?",[a]):c.run("INSERT INTO kv(scope, key, value) VALUES('pricing', ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,(0,e.s)(f)])}),h(),await i()}async function n(){return await f.clear(),h(),{}}},73468:(a,b,c)=>{"use strict";c.d(b,{AL:()=>j,HG:()=>i,Jh:()=>m,KQ:()=>k,Or:()=>l});var d=c(76760),e=c.n(d),f=c(73024),g=c.n(f),h=c(88590);let i=e().join(h.n,"db"),j=e().join(i,"data.sqlite"),k=e().join(i,"backups"),l={main:e().join(h.n,"db.json"),usage:e().join(h.n,"usage.json"),disabled:e().join(h.n,"disabledModels.json"),details:e().join(h.n,"request-details.json")};function m(){for(let a of[h.n,i,k])g().existsSync(a)||g().mkdirSync(a,{recursive:!0})}},81950:(a,b,c)=>{"use strict";c.d(b,{L9:()=>r,OM:()=>j,S8:()=>o,fv:()=>l,getMitmAlias:()=>q,o5:()=>k,uL:()=>p,uv:()=>n});var d=c(57252),e=c(90118),f=c(92772);let g=(0,f.U)("modelAliases"),h=(0,f.U)("customModels"),i=(0,f.U)("mitmAlias");async function j(){return await g.getAll()}async function k(a,b){await g.set(a,b)}async function l(a){await g.remove(a)}function m(a,b,c){return`${a}|${b}|${c}`}async function n(){return Object.values(await h.getAll())}async function o({providerAlias:a,id:b,type:c="llm",name:f}){let g=m(a,b,c),h=await (0,d.getAdapter)(),i=!1;return h.transaction(()=>{if(h.get("SELECT 1 FROM kv WHERE scope = 'customModels' AND key = ?",[g]))return;let d=(0,e.s)({providerAlias:a,id:b,type:c,name:f||b});h.run("INSERT INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[g,d]),i=!0}),i}async function p({providerAlias:a,id:b,type:c="llm"}){await h.remove(m(a,b,c))}async function q(a){return a?await i.get(a)||{}:await i.getAll()}async function r(a,b){await i.set(a,b||{})}},88590:(a,b,c)=>{"use strict";c.d(b,{n:()=>l});var d=c(73024),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j="9router";function k(){return"win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),j):g().join(i().homedir(),`.${j}`)}let l=function(){let a,b=process.env.DATA_DIR;if(!b)return k();if((a=b.toLowerCase().replace(/\\/g,"/")).includes("smoke")||/^\/tmp\/9router-data-/.test(a)||"darwin"===process.platform&&a.includes("/var/folders/")){let a=k();return console.warn(`[DATA_DIR] '${b}' looks like a temp/smoke directory; using persistent default '${a}' instead. Set DATA_DIR to an explicit persistent path (e.g. /app/data) to override.`),a}if("win32"===process.platform&&/^\//.test(b))return console.warn(`[DATA_DIR] '${b}' is a Unix path on Windows → fallback to default`),k();try{return e().mkdirSync(b,{recursive:!0}),b}catch(a){if(a?.code==="EACCES"||a?.code==="EPERM")return console.warn(`[DATA_DIR] '${b}' not writable → fallback ~/.${j}`),k();throw a}}()},88731:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createProviderNode:()=>k,deleteProviderNode:()=>m,getProviderNodeById:()=>j,getProviderNodes:()=>i,updateProviderNode:()=>l});var d=c(77598),e=c(57252),f=c(90118);function g(a){return a?{...(0,f.q)(a.data,{}),id:a.id,type:a.type,name:a.name,createdAt:a.createdAt,updatedAt:a.updatedAt}:null}function h(a,b){let c=function(a){let{id:b,type:c,name:d,createdAt:e,updatedAt:g,...h}=a;return{id:b,type:c??null,name:d??null,data:(0,f.s)(h),createdAt:e,updatedAt:g}}(b);a.run(`INSERT INTO providerNodes(id, type, name, data, createdAt, updatedAt)
19
19
  VALUES(?, ?, ?, ?, ?, ?)
20
20
  ON CONFLICT(id) DO UPDATE SET
21
21
  type=excluded.type, name=excluded.name, data=excluded.data, updatedAt=excluded.updatedAt`,[c.id,c.type,c.name,c.data,c.createdAt,c.updatedAt])}async function i(a={}){let b=await (0,e.getAdapter)(),c=[],d=[];a.type&&(c.push("type = ?"),d.push(a.type));let f=`SELECT * FROM providerNodes${c.length?` WHERE ${c.join(" AND ")}`:""}`;return b.all(f,d).map(g)}async function j(a){return g((await (0,e.getAdapter)()).get("SELECT * FROM providerNodes WHERE id = ?",[a]))}async function k(a){let b=await (0,e.getAdapter)(),c=new Date().toISOString(),f={id:a.id||(0,d.randomUUID)(),type:a.type,name:a.name,prefix:a.prefix,apiType:a.apiType,baseUrl:a.baseUrl,createdAt:c,updatedAt:c};return h(b,f),f}async function l(a,b){let c=await (0,e.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM providerNodes WHERE id = ?",[a]);if(!e)return;let f={...g(e),...b,updatedAt:new Date().toISOString()};h(c,f),d=f}),d}async function m(a){let b=await (0,e.getAdapter)(),c=null;return b.transaction(()=>{let d=b.get("SELECT * FROM providerNodes WHERE id = ?",[a]);d&&(c=g(d),b.run("DELETE FROM providerNodes WHERE id = ?",[a]))}),c}},90118:(a,b,c)=>{"use strict";function d(a,b=null){if(null==a)return b;if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}function e(a){return JSON.stringify(a??null)}c.d(b,{q:()=>d,s:()=>e})},92772:(a,b,c)=>{"use strict";c.d(b,{U:()=>f});var d=c(57252),e=c(90118);function f(a){return{async get(b,c=null){let f=(await (0,d.getAdapter)()).get("SELECT value FROM kv WHERE scope = ? AND key = ?",[a,b]);return f?(0,e.q)(f.value,c):c},async getAll(){let b=(await (0,d.getAdapter)()).all("SELECT key, value FROM kv WHERE scope = ?",[a]),c={};for(let a of b)c[a.key]=(0,e.q)(a.value);return c},async set(b,c){(await (0,d.getAdapter)()).run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,b,(0,e.s)(c)])},async setMany(b){let c=await (0,d.getAdapter)();c.transaction(()=>{for(let[d,f]of Object.entries(b))c.run("INSERT INTO kv(scope, key, value) VALUES(?, ?, ?) ON CONFLICT(scope, key) DO UPDATE SET value = excluded.value",[a,d,(0,e.s)(f)])})},async remove(b){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ? AND key = ?",[a,b])},async clear(){(await (0,d.getAdapter)()).run("DELETE FROM kv WHERE scope = ?",[a])}}}},92898:(a,b,c)=>{"use strict";c.r(b),c.d(b,{createApiKey:()=>k,deleteApiKey:()=>m,getApiKeyById:()=>j,getApiKeys:()=>i,updateApiKey:()=>l,validateApiKey:()=>n});var d=c(77598),e=c(57252);function f(a){if(null==a)return null;try{return JSON.parse(a)}catch{return null}}function g(a){return null==a?null:JSON.stringify(Array.isArray(a)?a:[])}function h(a){return a?{id:a.id,key:a.key,name:a.name,machineId:a.machineId,isActive:1===a.isActive||!0===a.isActive,createdAt:a.createdAt,allowedProviders:f(a.allowedProviders),allowedCombos:f(a.allowedCombos),allowedKinds:f(a.allowedKinds)}:null}async function i(){return(await (0,e.getAdapter)()).all("SELECT * FROM apiKeys ORDER BY createdAt ASC").map(h)}async function j(a){return h((await (0,e.getAdapter)()).get("SELECT * FROM apiKeys WHERE id = ?",[a]))}async function k(a,b){if(!b)throw Error("machineId is required");let[f,{generateApiKeyWithMachine:g}]=await Promise.all([(0,e.getAdapter)(),c.e(6470).then(c.bind(c,36470))]),h=g(b),i={id:(0,d.randomUUID)(),name:a,key:h.key,machineId:b,isActive:!0,createdAt:new Date().toISOString(),allowedProviders:null,allowedCombos:null,allowedKinds:null};return f.run("INSERT INTO apiKeys(id, key, name, machineId, isActive, createdAt, allowedProviders, allowedCombos, allowedKinds) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)",[i.id,i.key,i.name,i.machineId,1,i.createdAt,null,null,null]),i}async function l(a,b){let c=await (0,e.getAdapter)(),d=null;return c.transaction(()=>{let e=c.get("SELECT * FROM apiKeys WHERE id = ?",[a]);if(!e)return;let f={...h(e)};void 0!==b.isActive&&(f.isActive=b.isActive),void 0!==b.name&&(f.name=b.name),"allowedProviders"in b&&(f.allowedProviders=b.allowedProviders),"allowedCombos"in b&&(f.allowedCombos=b.allowedCombos),"allowedKinds"in b&&(f.allowedKinds=b.allowedKinds),c.run("UPDATE apiKeys SET key = ?, name = ?, machineId = ?, isActive = ?, allowedProviders = ?, allowedCombos = ?, allowedKinds = ? WHERE id = ?",[f.key,f.name,f.machineId,+!!f.isActive,g(f.allowedProviders),g(f.allowedCombos),g(f.allowedKinds),a]),d=f}),d}async function m(a){let b=(await (0,e.getAdapter)()).run("DELETE FROM apiKeys WHERE id = ?",[a]);return(b?.changes??0)>0}async function n(a){let b=(await (0,e.getAdapter)()).get("SELECT * FROM apiKeys WHERE key = ?",[a]);return b&&(1===b.isActive||!0===b.isActive)?h(b):null}},95522:()=>{}};