@sifxprime/krouter 0.5.162 → 0.5.163

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 (285) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +10 -10
  3. package/app/.next-cli-build/build-manifest.json +2 -2
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +4 -4
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  57. package/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  58. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  59. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  60. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  61. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  62. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  64. package/app/.next-cli-build/server/app/_not-found.rsc +4 -4
  65. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  66. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
  67. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  68. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  69. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  70. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  71. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  72. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  73. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  74. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  75. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  76. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  77. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  78. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  79. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  80. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  81. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  83. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  84. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  85. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  86. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  87. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  88. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  89. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  90. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  91. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  92. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  93. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  94. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  95. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  97. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  98. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  101. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  124. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  125. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  126. package/app/.next-cli-build/server/app/callback.html +1 -1
  127. package/app/.next-cli-build/server/app/callback.rsc +4 -4
  128. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  129. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  130. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +4 -4
  131. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  132. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  133. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +6 -6
  134. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  135. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  136. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  137. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  138. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +6 -6
  139. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  140. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  141. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  142. package/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  143. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +6 -6
  144. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  145. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  146. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  147. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  148. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +6 -6
  149. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  150. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  151. package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
  152. package/app/.next-cli-build/server/app/dashboard/environment.rsc +6 -6
  153. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +6 -6
  154. package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +6 -6
  155. package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +2 -2
  156. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  157. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  158. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +6 -6
  159. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  160. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  161. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  162. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  163. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +6 -6
  164. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  165. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  166. package/app/.next-cli-build/server/app/dashboard/presidio.html +1 -1
  167. package/app/.next-cli-build/server/app/dashboard/presidio.rsc +5 -5
  168. package/app/.next-cli-build/server/app/dashboard/presidio.segments/!KGRhc2hib2FyZCk/dashboard/presidio/__PAGE__.segment.rsc +5 -5
  169. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_full.segment.rsc +5 -5
  170. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_tree.segment.rsc +2 -2
  171. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  172. package/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  173. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +6 -6
  174. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  175. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  176. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  177. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  178. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +6 -6
  179. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  180. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  181. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  182. package/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  183. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +6 -6
  184. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  185. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  186. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  187. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  188. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +6 -6
  189. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  190. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  191. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  192. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +6 -6
  193. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +6 -6
  194. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  195. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  196. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  197. package/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  198. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +7 -7
  199. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  200. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  201. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  202. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  203. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  204. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  205. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  206. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  207. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +4 -4
  208. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  209. package/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  210. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +6 -6
  211. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  212. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  213. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  214. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +6 -6
  215. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +6 -6
  216. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  217. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  218. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  219. package/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  220. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +6 -6
  221. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  222. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  223. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  224. package/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  225. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +6 -6
  226. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  227. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  228. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  229. package/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  230. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +6 -6
  231. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  232. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  233. package/app/.next-cli-build/server/app/index.html +1 -1
  234. package/app/.next-cli-build/server/app/index.rsc +4 -4
  235. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +4 -4
  236. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  237. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  238. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  239. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  240. package/app/.next-cli-build/server/app/landing.html +1 -1
  241. package/app/.next-cli-build/server/app/landing.rsc +4 -4
  242. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  243. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  244. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +4 -4
  245. package/app/.next-cli-build/server/app/login/page.js +1 -1
  246. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  247. package/app/.next-cli-build/server/app/login.html +1 -1
  248. package/app/.next-cli-build/server/app/login.rsc +5 -5
  249. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  250. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  251. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +5 -5
  252. package/app/.next-cli-build/server/app/page.js +1 -1
  253. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  254. package/app/.next-cli-build/server/app-paths-manifest.json +10 -10
  255. package/app/.next-cli-build/server/chunks/1738.js +2 -2
  256. package/app/.next-cli-build/server/chunks/2365.js +1 -1
  257. package/app/.next-cli-build/server/chunks/3120.js +31 -0
  258. package/app/.next-cli-build/server/chunks/4404.js +1 -1
  259. package/app/.next-cli-build/server/chunks/5330.js +2 -10
  260. package/app/.next-cli-build/server/chunks/5470.js +1 -1
  261. package/app/.next-cli-build/server/chunks/5681.js +1 -1
  262. package/app/.next-cli-build/server/chunks/5718.js +1 -1
  263. package/app/.next-cli-build/server/chunks/6200.js +1 -1
  264. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  265. package/app/.next-cli-build/server/chunks/8590.js +1 -1
  266. package/app/.next-cli-build/server/chunks/8895.js +2 -2
  267. package/app/.next-cli-build/server/chunks/9376.js +51 -0
  268. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  269. package/app/.next-cli-build/server/pages/404.html +1 -1
  270. package/app/.next-cli-build/server/pages/500.html +1 -1
  271. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  272. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  273. package/app/.next-cli-build/static/chunks/1321-19562ff5aa8052cc.js +1 -0
  274. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-c88a929e34f9b002.js +11 -0
  275. package/app/.next-cli-build/static/css/{96a7e44d8ae325d4.css → e8f53fd8cd2766ce.css} +1 -1
  276. package/app/cli/package.json +1 -1
  277. package/app/package.json +1 -1
  278. package/package.json +1 -1
  279. package/app/.next-cli-build/server/chunks/4921.js +0 -1
  280. package/app/.next-cli-build/server/chunks/7153.js +0 -1
  281. package/app/.next-cli-build/server/chunks/8361.js +0 -23
  282. package/app/.next-cli-build/static/chunks/1321-1cd76f0c09008d25.js +0 -1
  283. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1a405c510f10994f.js +0 -11
  284. /package/app/.next-cli-build/static/{-JYtyz8OZjeWIc1-TrSED → OUojMJ_8yOarwHA7Hk5LT}/_buildManifest.js +0 -0
  285. /package/app/.next-cli-build/static/{-JYtyz8OZjeWIc1-TrSED → OUojMJ_8yOarwHA7Hk5LT}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/36966cca54120369-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/f408a041a2395281.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/96a7e44d8ae325d4.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-53609978799ebbca.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-6f8e9cdd84d0eb47.js" async=""></script><script src="/_next/static/chunks/7504-6f7ca1eab428dd5e.js" async=""></script><script src="/_next/static/chunks/1321-1cd76f0c09008d25.js" async=""></script><script src="/_next/static/chunks/5497-8ce793eef3eb912e.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-799f966f7a1927db.js" async=""></script><script src="/_next/static/chunks/app/layout-a39bb90fce7728eb.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#0a0a0a"/><title>kRouter — Kodelyth AI Infrastructure</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();</script><script>var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px "Material Symbols Outlined"').then(f).catch(f);setTimeout(f,3000)}else{f()}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_6b9622 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-53609978799ebbca.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"7504\",\"static/chunks/7504-6f7ca1eab428dd5e.js\",\"1321\",\"static/chunks/1321-1cd76f0c09008d25.js\",\"5497\",\"static/chunks/5497-8ce793eef3eb912e.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-799f966f7a1927db.js\"],\"ThemeProvider\"]\n3:I[94635,[\"1321\",\"static/chunks/1321-1cd76f0c09008d25.js\",\"7177\",\"static/chunks/app/layout-a39bb90fce7728eb.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/36966cca54120369-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/f408a041a2395281.css\",\"style\"]\n:HL[\"/_next/static/css/96a7e44d8ae325d4.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f408a041a2395281.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/96a7e44d8ae325d4.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \\\"Material Symbols Outlined\\\"').then(f).catch(f);setTimeout(f,3000)}else{f()}\"}}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_6b9622 font-sans antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"-JYtyz8OZjeWIc1-TrSED\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\nf:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"kRouter — Kodelyth AI Infrastructure\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$Lf\",\"5\",{}]]\n"])</script></body></html>
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/36966cca54120369-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/e4af272ccee01ff0-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/f408a041a2395281.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/e8f53fd8cd2766ce.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-53609978799ebbca.js"/><script src="/_next/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js" async=""></script><script src="/_next/static/chunks/3794-83acfce05009cf38.js" async=""></script><script src="/_next/static/chunks/main-app-6f8e9cdd84d0eb47.js" async=""></script><script src="/_next/static/chunks/7504-6f7ca1eab428dd5e.js" async=""></script><script src="/_next/static/chunks/1321-19562ff5aa8052cc.js" async=""></script><script src="/_next/static/chunks/5497-8ce793eef3eb912e.js" async=""></script><script src="/_next/static/chunks/app/(dashboard)/layout-799f966f7a1927db.js" async=""></script><script src="/_next/static/chunks/app/layout-a39bb90fce7728eb.js" async=""></script><meta name="robots" content="noindex"/><meta name="theme-color" content="#0a0a0a"/><title>kRouter — Kodelyth AI Infrastructure</title><meta name="description" content="One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth."/><link rel="manifest" href="/manifest.webmanifest"/><link rel="icon" href="/favicon.ico?603d046c9a6fdfbb" type="image/x-icon" sizes="16x16"/><link rel="icon" href="/favicon.svg"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script>(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();</script><script>var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px "Material Symbols Outlined"').then(f).catch(f);setTimeout(f,3000)}else{f()}</script><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_f367f3 __variable_6b9622 font-sans antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-53609978799ebbca.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[21110,[\"7504\",\"static/chunks/7504-6f7ca1eab428dd5e.js\",\"1321\",\"static/chunks/1321-19562ff5aa8052cc.js\",\"5497\",\"static/chunks/5497-8ce793eef3eb912e.js\",\"9305\",\"static/chunks/app/(dashboard)/layout-799f966f7a1927db.js\"],\"ThemeProvider\"]\n3:I[94635,[\"1321\",\"static/chunks/1321-19562ff5aa8052cc.js\",\"7177\",\"static/chunks/app/layout-a39bb90fce7728eb.js\"],\"RuntimeI18nProvider\"]\n4:I[57121,[],\"\"]\n5:I[74581,[],\"\"]\n6:I[90484,[],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[90484,[],\"ViewportBoundary\"]\nc:I[90484,[],\"MetadataBoundary\"]\ne:I[27123,[],\"default\",1]\n:HL[\"/_next/static/media/36966cca54120369-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/e4af272ccee01ff0-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/f408a041a2395281.css\",\"style\"]\n:HL[\"/_next/static/css/e8f53fd8cd2766ce.css\",\"style\"]\n9:X\n0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"_not-found\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/f408a041a2395281.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/e8f53fd8cd2766ce.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'\u0026\u0026m)){document.documentElement.classList.add('dark')}}catch(e){}})();\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts\u0026\u0026d.fonts.load){d.fonts.load('24px \\\"Material Symbols Outlined\\\"').then(f).catch(f);setTimeout(f,3000)}else{f()}\"}}]]}],[\"$\",\"body\",null,{\"className\":\"__variable_f367f3 __variable_6b9622 font-sans antialiased\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"OUojMJ_8yOarwHA7Hk5LT\"}\n9:C\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"2\",{\"name\":\"theme-color\",\"content\":\"#0a0a0a\"}]]\nf:I[86869,[],\"IconMark\"]\n8:null\nd:[[\"$\",\"title\",\"0\",{\"children\":\"kRouter — Kodelyth AI Infrastructure\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.webmanifest\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?603d046c9a6fdfbb\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"}],[\"$\",\"link\",\"4\",{\"rel\":\"icon\",\"href\":\"/favicon.svg\"}],[\"$\",\"$Lf\",\"5\",{}]]\n"])</script></body></html>
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-1cd76f0c09008d25.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
3
- 3:I[94635,["1321","static/chunks/1321-1cd76f0c09008d25.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
2
+ 2:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-19562ff5aa8052cc.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
3
+ 3:I[94635,["1321","static/chunks/1321-19562ff5aa8052cc.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
4
4
  4:I[57121,[],""]
5
5
  5:I[74581,[],""]
6
6
  6:I[90484,[],"OutletBoundary"]
@@ -11,9 +11,9 @@ e:I[27123,[],"default",1]
11
11
  :HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
12
12
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/css/f408a041a2395281.css","style"]
14
- :HL["/_next/static/css/96a7e44d8ae325d4.css","style"]
14
+ :HL["/_next/static/css/e8f53fd8cd2766ce.css","style"]
15
15
  9:X
16
- 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/96a7e44d8ae325d4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,null]},null,false,"$9"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"-JYtyz8OZjeWIc1-TrSED"}
16
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e8f53fd8cd2766ce.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,null]},null,false,"$9"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"OUojMJ_8yOarwHA7Hk5LT"}
17
17
  9:C
18
18
  b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]
19
19
  f:I[86869,[],"IconMark"]
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-1cd76f0c09008d25.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
3
- 3:I[94635,["1321","static/chunks/1321-1cd76f0c09008d25.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
2
+ 2:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-19562ff5aa8052cc.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
3
+ 3:I[94635,["1321","static/chunks/1321-19562ff5aa8052cc.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
4
4
  4:I[57121,[],""]
5
5
  5:I[74581,[],""]
6
6
  6:I[90484,[],"OutletBoundary"]
@@ -11,9 +11,9 @@ e:I[27123,[],"default",1]
11
11
  :HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
12
12
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
13
13
  :HL["/_next/static/css/f408a041a2395281.css","style"]
14
- :HL["/_next/static/css/96a7e44d8ae325d4.css","style"]
14
+ :HL["/_next/static/css/e8f53fd8cd2766ce.css","style"]
15
15
  9:X
16
- 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/96a7e44d8ae325d4.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,null]},null,false,"$9"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"-JYtyz8OZjeWIc1-TrSED"}
16
+ 0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["_not-found",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e8f53fd8cd2766ce.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$L2",null,{"children":["$","$L3",null,{"children":["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L4",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L5",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],{},null,false,null]},null,false,"$9"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"OUojMJ_8yOarwHA7Hk5LT"}
17
17
  9:C
18
18
  b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]
19
19
  f:I[86869,[],"IconMark"]
@@ -6,14 +6,14 @@
6
6
  9:I[86869,[],"IconMark"]
7
7
  b:I[57121,[],""]
8
8
  c:I[74581,[],""]
9
- f:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-1cd76f0c09008d25.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
10
- 10:I[94635,["1321","static/chunks/1321-1cd76f0c09008d25.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
9
+ f:I[21110,["7504","static/chunks/7504-6f7ca1eab428dd5e.js","1321","static/chunks/1321-19562ff5aa8052cc.js","5497","static/chunks/5497-8ce793eef3eb912e.js","9305","static/chunks/app/(dashboard)/layout-799f966f7a1927db.js"],"ThemeProvider"]
10
+ 10:I[94635,["1321","static/chunks/1321-19562ff5aa8052cc.js","7177","static/chunks/app/layout-a39bb90fce7728eb.js"],"RuntimeI18nProvider"]
11
11
  :HL["/_next/static/css/f408a041a2395281.css","style"]
12
- :HL["/_next/static/css/96a7e44d8ae325d4.css","style"]
12
+ :HL["/_next/static/css/e8f53fd8cd2766ce.css","style"]
13
13
  6:X
14
14
  e:X
15
15
  e:C
16
- 0:{"buildId":"-JYtyz8OZjeWIc1-TrSED","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"kRouter — Kodelyth AI Infrastructure"}],["$","meta","1",{"name":"description","content":"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?603d046c9a6fdfbb","type":"image/x-icon","sizes":"16x16"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L9","5",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/96a7e44d8ae325d4.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$Lf",null,{"children":["$","$L10",null,{"children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]}]}]}]]}]]}],"isPartial":"$@11","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@12","rootVaryParams":null,"needsRuntimeRequest":"$@13"}
16
+ 0:{"buildId":"OUojMJ_8yOarwHA7Hk5LT","data":[{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":"$@5","staleTime":"$6","varyParams":null},{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L7",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","2",{"name":"theme-color","content":"#0a0a0a"}]]}],["$","div",null,{"hidden":true,"children":["$","$L8",null,{"children":["$","$3",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"kRouter — Kodelyth AI Infrastructure"}],["$","meta","1",{"name":"description","content":"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly. By Kodelyth."}],["$","link","2",{"rel":"manifest","href":"/manifest.webmanifest"}],["$","link","3",{"rel":"icon","href":"/favicon.ico?603d046c9a6fdfbb","type":"image/x-icon","sizes":"16x16"}],["$","link","4",{"rel":"icon","href":"/favicon.svg"}],["$","$L9","5",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":"$@a","staleTime":"$6","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]]}],"isPartial":"$@d","staleTime":"$6","varyParams":"$e"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/f408a041a2395281.css","precedence":"next"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/e8f53fd8cd2766ce.css","precedence":"next"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var s=localStorage.getItem('theme');var t=s?(JSON.parse(s).state||{}).theme:'system';t=t||'system';var m=window.matchMedia('(prefers-color-scheme: dark)').matches;if(t==='dark'||(t==='system'&&m)){document.documentElement.classList.add('dark')}}catch(e){}})();"}}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"var d=document,r=d.documentElement,f=function(){r.classList.add('fonts-loaded')};if(d.fonts&&d.fonts.load){d.fonts.load('24px \"Material Symbols Outlined\"').then(f).catch(f);setTimeout(f,3000)}else{f()}"}}]]}],["$","body",null,{"className":"__variable_f367f3 __variable_6b9622 font-sans antialiased","suppressHydrationWarning":true,"children":["$","$Lf",null,{"children":["$","$L10",null,{"children":["$","$Lb",null,{"parallelRouterKey":"children","template":["$","$Lc",null,{}]}]}]}]}]]}]]}],"isPartial":"$@11","staleTime":"$6","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@12","rootVaryParams":null,"needsRuntimeRequest":"$@13"}
17
17
  4:null
18
18
  6:300
19
19
  13:true
@@ -1,5 +1,5 @@
1
1
  :HL["/_next/static/media/36966cca54120369-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
2
2
  :HL["/_next/static/media/e4af272ccee01ff0-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/css/f408a041a2395281.css","style"]
4
- :HL["/_next/static/css/96a7e44d8ae325d4.css","style"]
5
- 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"-JYtyz8OZjeWIc1-TrSED"}
4
+ :HL["/_next/static/css/e8f53fd8cd2766ce.css","style"]
5
+ 0:{"tree":{"name":"","param":null,"prefetchHints":4176,"slots":{"children":{"name":"_not-found","param":null,"prefetchHints":4192,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":4256,"slots":null}}}}},"staleTime":300,"buildId":"OUojMJ_8yOarwHA7Hk5LT"}
@@ -1,4 +1,4 @@
1
- "use strict";(()=>{var a={};a.id=4761,a.ids=[4761],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4126:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>z,POST:()=>B});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=a=>"string"==typeof a?a:a&&"object"==typeof a?a.primary??"":"",q=()=>k().join(m().homedir(),".openclaw"),r=()=>k().join(q(),"openclaw.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where openclaw":"which openclaw",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},t=async()=>{try{let a=r(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}},u="krouter",v="krouter/",w=/^krouter\//,x=a=>a?.[u]??null,y=async a=>{try{let b=k().join(a,"models.json"),c=await i().readFile(b,"utf-8"),d=JSON.parse(c),e=x(d?.providers)?.models;return e?.[0]?.id||null}catch{return null}};async function z(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Open Claw CLI is not installed"});let a=await t(),b=a?.agents?.list||[],c=await Promise.all(b.map(async a=>{let b=a.agentDir?await y(a.agentDir):null;return{...a,model:p(a.model),currentModel:b}}));return e.NextResponse.json({installed:!0,settings:a,agents:c,hasKRouter:!!x(a?.models?.providers),settingsPath:r()})}catch(a){return console.log("Error checking openclaw settings:",a),e.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}let A=async(a,b,c,d)=>{await i().mkdir(a,{recursive:!0});let e=k().join(a,"models.json"),f={};try{let a=await i().readFile(e,"utf-8");f=JSON.parse(a)}catch{}f.providers||(f.providers={}),f.providers[u]={baseUrl:c,apiKey:d||"your_api_key",api:"openai-completions",models:[{id:b,name:b.split("/").pop()||b}]},await i().writeFile(e,JSON.stringify(f,null,2))};async function B(a){try{let{baseUrl:b,apiKey:c,model:d,agentModels:f={}}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let g=q(),h=r();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=JSON.parse(a)}catch{}j.agents||(j.agents={}),j.agents.defaults||(j.agents.defaults={}),j.agents.defaults.model||(j.agents.defaults.model={}),j.agents.defaults.models||(j.agents.defaults.models={}),j.models||(j.models={}),j.models.providers||(j.models.providers={});let k=b.endsWith("/v1")?b:`${b}/v1`,l=`${v}${d}`;Object.keys(j.agents.defaults.models).filter(a=>w.test(a)).forEach(a=>{delete j.agents.defaults.models[a]}),j.agents.defaults.model.primary=l;let m=new Set([d]);return Object.values(f).forEach(a=>{a&&m.add(a)}),m.forEach(a=>{j.agents.defaults.models[`${v}${a}`]={}}),j.agents.list&&(j.agents.list=j.agents.list.map(a=>{if(w.test(p(a.model))){let{model:b,...c}=a;return c}return a})),j.models.providers[u]={baseUrl:k,apiKey:c||"your_api_key",api:"openai-completions",models:[...m].map(a=>({id:a,name:a.split("/").pop()||a}))},j.agents.list&&(j.agents.list=j.agents.list.map(a=>{let b=f[a.id];return b?{...a,model:`${v}${b}`}:a}),await Promise.all(j.agents.list.map(async a=>{if(!a.agentDir)return;let b=f[a.id];await A(a.agentDir,b||d,k,c)}))),await i().writeFile(h,JSON.stringify(j,null,2)),e.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:h})}catch(a){return console.log("Error updating openclaw settings:",a),e.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function C(){try{let a=r(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}if(b.models&&b.models.providers&&(delete b.models.providers[u],0===Object.keys(b.models.providers).length&&delete b.models.providers),b.agents?.defaults?.models){for(let a of Object.keys(b.agents.defaults.models).filter(a=>w.test(a)))delete b.agents.defaults.models[a];0===Object.keys(b.agents.defaults.models).length&&delete b.agents.defaults.models}return w.test(b.agents?.defaults?.model?.primary||"")&&delete b.agents.defaults.model.primary,await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting openclaw settings:",a),e.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,n.D)([z,B,C]),(0,d.A)(z,"00d74380dd80364a0c97e7de7cfa67e99a78ca53ff",null),(0,d.A)(B,"40975fd88293980f142073398dafab55f527f626b8",null),(0,d.A)(C,"00ff4b29f1efbf4bc03c405f5dd3435ca534278f12",null)},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},8304:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".local","share","kilo"),q=()=>k().join(p(),"auth.json"),r=()=>{let a=m().homedir(),b=m().platform();return"win32"===b?k().join(process.env.APPDATA||a,"Code","User","settings.json"):"darwin"===b?k().join(a,"Library","Application Support","Code","User","settings.json"):k().join(a,".config","Code","User","settings.json")},s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where kilo":"which kilo",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Kilo Code CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{auth:a?Object.keys(a):[]},hasKRouter:(a=>{if(!a)return!1;let b=a["openai-compatible"];if(!b)return!1;let c=b.baseUrl||b.baseURL||"";return c.includes("localhost")||c.includes("127.0.0.1")||c.includes("krouter")})(a),authPath:q()})}catch(a){return console.log("Error checking kilo settings:",a),e.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b:`${b}/v1`,g=await t(q())||{};g["openai-compatible"]={type:"api-key",apiKey:c,baseUrl:f,model:d},await i().writeFile(q(),JSON.stringify(g,null,2));try{let a=await t(r())||{};a["kilocode.customProvider"]={name:"kRouter",baseURL:f,apiKey:c},a["kilocode.defaultModel"]=d,await i().writeFile(r(),JSON.stringify(a,null,2))}catch{}return e.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:q()})}catch(a){return console.log("Error updating kilo settings:",a),e.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});delete a["openai-compatible"],await i().writeFile(q(),JSON.stringify(a,null,2));try{let a=await t(r());a&&(delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i().writeFile(r(),JSON.stringify(a,null,2)))}catch{}return e.NextResponse.json({success:!0,message:"kRouter settings removed from Kilo Code"})}catch(a){return console.log("Error resetting kilo settings:",a),e.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"0013244a29a5d652116392686028232081d5871b77",null),(0,d.A)(v,"408bc4f2d2635bb2f78c247152da20e18046b3f3cb",null),(0,d.A)(w,"003789537c7f592a5c01df0edc7e54c8a50bcb2af1",null)},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14833:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>v,GET:()=>s,POST:()=>t});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>{let a=m().homedir();return k().join(a,".claude","settings.json")},q=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where claude":"which claude",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(p()),!0}catch{return!1}}},r=async()=>{try{let a=p(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function s(){try{if(!await q())return e.NextResponse.json({installed:!1,settings:null,message:"Claude CLI is not installed"});let a=await r(),b=!!a?.env?.ANTHROPIC_BASE_URL;return e.NextResponse.json({installed:!0,hasKRouter:b,settings:a,settingsPath:p()})}catch(a){return console.log("Error checking claude settings:",a),e.NextResponse.json({error:"Failed to check claude settings"},{status:500})}}async function t(a){try{let{env:b}=await a.json();if(!b||"object"!=typeof b)return e.NextResponse.json({error:"Invalid env object"},{status:400});let c=p(),d=k().dirname(c);await i().mkdir(d,{recursive:!0});let f={};try{let a=await i().readFile(c,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"!==a.code)throw a}b.ANTHROPIC_BASE_URL&&(b.ANTHROPIC_BASE_URL=b.ANTHROPIC_BASE_URL.endsWith("/v1")?b.ANTHROPIC_BASE_URL:`${b.ANTHROPIC_BASE_URL}/v1`);let g={...f,hasCompletedOnboarding:!0,env:{...f.env||{},...b}};return await i().writeFile(c,JSON.stringify(g,null,2)),e.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(a){return console.log("Error updating claude settings:",a),e.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let u=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS"];async function v(){try{let a=p(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.env&&(u.forEach(a=>{delete b.env[a]}),0===Object.keys(b.env).length&&delete b.env),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(a){return console.log("Error resetting claude settings:",a),e.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,n.D)([s,t,v]),(0,d.A)(s,"00595feb8c81f986498a0232295ab96b75c3482c39",null),(0,d.A)(t,"405001bc00681c4b8f17135b54a0119ae6d85357e4",null),(0,d.A)(v,"00b2c020ef423e182ba14e02d913602b1377964e08",null)},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19593:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>t});var d=c(49796),e=c(23211),f=c(14833),g=c(58750),h=c(72452),i=c(29657),j=c(4126),k=c(21757),l=c(21350),m=c(20703),n=c(46298),o=c(8304),p=c(67116),q=c(48074),r=c(24424);let s={claude:f.GET,codex:g.GET,opencode:h.GET,droid:i.GET,openclaw:j.GET,hermes:k.GET,cowork:l.GET,copilot:m.GET,cline:n.GET,kilo:o.GET,"deepseek-tui":p.GET,jcode:q.GET};async function t(){let a=await Promise.all(Object.entries(s).map(async([a,b])=>{try{let c=await b(),d=await c.json();return[a,d]}catch{return[a,null]}}));return e.NextResponse.json(Object.fromEntries(a))}(0,r.D)([t]),(0,d.A)(t,"00df41bb1c2a72c53915abe6d1234cfa9029c01d5f",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>r,GET:()=>p,POST:()=>q});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(24424);let m=()=>{let a=k().homedir(),b=k().platform();return"win32"===b?i().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?i().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):i().join(a,".config","Code","User","chatLanguageModels.json")},n=async()=>{try{let a=await g().readFile(m(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},o=a=>"kRouter"===a.name;async function p(){try{let a=await n(),b=Array.isArray(a)&&a.find(o)||null;return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!Array.isArray(a)&&a.some(o),configPath:m(),currentModel:b?.models?.[0]?.id||null,currentUrl:b?.models?.[0]?.url||null})}catch(a){return console.log("Error checking copilot settings:",a),e.NextResponse.json({error:"Failed to check copilot settings"},{status:500})}}async function q(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!d?.length)return e.NextResponse.json({error:"baseUrl and models are required"},{status:400});let f=m();await g().mkdir(i().dirname(f),{recursive:!0});let h=[];try{let a=await g().readFile(f,"utf-8"),b=JSON.parse(a);h=Array.isArray(b)?b:[]}catch{}let j=`${b}/chat/completions#models.ai.azure.com`,k={name:"kRouter",vendor:"azure",apiKey:c||"sk_krouter",models:d.map(a=>({id:a,name:a,url:j,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},l=h.findIndex(o);return l>=0?h[l]=k:h.push(k),await g().writeFile(f,JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:f})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function r(){try{let a=m(),b=[];try{let c=await g().readFile(a,"utf-8"),d=JSON.parse(c);b=Array.isArray(d)?d:[]}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return b=b.filter(a=>!o(a)),await g().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter removed from Copilot config"})}catch(a){return console.log("Error resetting copilot settings:",a),e.NextResponse.json({error:"Failed to reset copilot settings"},{status:500})}}(0,l.D)([p,q,r]),(0,d.A)(p,"00f97f573b3ea76836706b5aad62fabf057415597a",null),(0,d.A)(q,"4047a3aa7b6dcbe1e014fbdfc86fdcb01f4b175615",null),(0,d.A)(r,"00ce639448f662b03f5917a5fab822ef0f8d92c8b2",null)},21757:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>y,GET:()=>w,POST:()=>x});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".hermes"),q=()=>k().join(p(),"config.yaml"),r=()=>k().join(p(),".env"),s=/^model:[ \t]*\r?\n((?:[ \t]+.*\r?\n?|[ \t]*\r?\n)*)/m,t=async()=>{try{let a="win32"===m().platform();return await o(a?"where hermes":"which hermes",{windowsHide:!0}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},u=async()=>{try{return await i().readFile(q(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},v=async()=>{try{return await i().readFile(r(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function w(){try{if(!await t())return e.NextResponse.json({installed:!1,settings:null,message:"Hermes Agent is not installed"});let a=await u(),b=(a=>{let b=a.match(s);if(!b)return null;let c=b[1]||"",d=a=>{let b=c.match(RegExp(`^[ \\t]+${a}:[ \\t]*["']?([^"'\\r\\n]+)["']?`,"m"));return b?b[1].trim():null};return{default:d("default"),provider:d("provider"),base_url:d("base_url")}})(a);return e.NextResponse.json({installed:!0,settings:{model:b},hasKRouter:!!b?.base_url&&"custom"===b.provider&&/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b.base_url),configPath:q()})}catch(a){return console.log("Error checking hermes settings:",a),e.NextResponse.json({error:"Failed to check hermes settings"},{status:500})}}async function x(a){try{var b,c,d,f;let{baseUrl:g,apiKey:h,model:j}=await a.json();if(!g||!j)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let k=p();await i().mkdir(k,{recursive:!0});let l=g.endsWith("/v1")?g:`${g}/v1`,m=(b=await u(),c=`model:
1
+ "use strict";(()=>{var a={};a.id=4761,a.ids=[4761],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4126:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>C,GET:()=>z,POST:()=>B});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=a=>"string"==typeof a?a:a&&"object"==typeof a?a.primary??"":"",q=()=>k().join(m().homedir(),".openclaw"),r=()=>k().join(q(),"openclaw.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where openclaw":"which openclaw",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},t=async()=>{try{let a=r(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}},u="krouter",v="krouter/",w=/^krouter\//,x=a=>a?.[u]??null,y=async a=>{try{let b=k().join(a,"models.json"),c=await i().readFile(b,"utf-8"),d=JSON.parse(c),e=x(d?.providers)?.models;return e?.[0]?.id||null}catch{return null}};async function z(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Open Claw CLI is not installed"});let a=await t(),b=a?.agents?.list||[],c=await Promise.all(b.map(async a=>{let b=a.agentDir?await y(a.agentDir):null;return{...a,model:p(a.model),currentModel:b}}));return e.NextResponse.json({installed:!0,settings:a,agents:c,hasKRouter:!!x(a?.models?.providers),settingsPath:r()})}catch(a){return console.log("Error checking openclaw settings:",a),e.NextResponse.json({error:"Failed to check openclaw settings"},{status:500})}}let A=async(a,b,c,d)=>{await i().mkdir(a,{recursive:!0});let e=k().join(a,"models.json"),f={};try{let a=await i().readFile(e,"utf-8");f=JSON.parse(a)}catch{}f.providers||(f.providers={}),f.providers[u]={baseUrl:c,apiKey:d||"your_api_key",api:"openai-completions",models:[{id:b,name:b.split("/").pop()||b}]},await i().writeFile(e,JSON.stringify(f,null,2))};async function B(a){try{let{baseUrl:b,apiKey:c,model:d,agentModels:f={}}=await a.json();if(!b||!d)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let g=q(),h=r();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=JSON.parse(a)}catch{}j.agents||(j.agents={}),j.agents.defaults||(j.agents.defaults={}),j.agents.defaults.model||(j.agents.defaults.model={}),j.agents.defaults.models||(j.agents.defaults.models={}),j.models||(j.models={}),j.models.providers||(j.models.providers={});let k=b.endsWith("/v1")?b:`${b}/v1`,l=`${v}${d}`;Object.keys(j.agents.defaults.models).filter(a=>w.test(a)).forEach(a=>{delete j.agents.defaults.models[a]}),j.agents.defaults.model.primary=l;let m=new Set([d]);return Object.values(f).forEach(a=>{a&&m.add(a)}),m.forEach(a=>{j.agents.defaults.models[`${v}${a}`]={}}),j.agents.list&&(j.agents.list=j.agents.list.map(a=>{if(w.test(p(a.model))){let{model:b,...c}=a;return c}return a})),j.models.providers[u]={baseUrl:k,apiKey:c||"your_api_key",api:"openai-completions",models:[...m].map(a=>({id:a,name:a.split("/").pop()||a}))},j.agents.list&&(j.agents.list=j.agents.list.map(a=>{let b=f[a.id];return b?{...a,model:`${v}${b}`}:a}),await Promise.all(j.agents.list.map(async a=>{if(!a.agentDir)return;let b=f[a.id];await A(a.agentDir,b||d,k,c)}))),await i().writeFile(h,JSON.stringify(j,null,2)),e.NextResponse.json({success:!0,message:"Open Claw settings applied successfully!",settingsPath:h})}catch(a){return console.log("Error updating openclaw settings:",a),e.NextResponse.json({error:"Failed to update openclaw settings"},{status:500})}}async function C(){try{let a=r(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}if(b.models&&b.models.providers&&(delete b.models.providers[u],0===Object.keys(b.models.providers).length&&delete b.models.providers),b.agents?.defaults?.models){for(let a of Object.keys(b.agents.defaults.models).filter(a=>w.test(a)))delete b.agents.defaults.models[a];0===Object.keys(b.agents.defaults.models).length&&delete b.agents.defaults.models}return w.test(b.agents?.defaults?.model?.primary||"")&&delete b.agents.defaults.model.primary,await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting openclaw settings:",a),e.NextResponse.json({error:"Failed to reset openclaw settings"},{status:500})}}(0,n.D)([z,B,C]),(0,d.A)(z,"000f7c104b28ba0353d0ab706dc48a1beab29a9e46",null),(0,d.A)(B,"4008420bb5801930b123465442bbe3b849d47acd04",null),(0,d.A)(C,"003bc7f961c50fc9a12dbb0689ede23ed79ed17cb8",null)},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},8304:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".local","share","kilo"),q=()=>k().join(p(),"auth.json"),r=()=>{let a=m().homedir(),b=m().platform();return"win32"===b?k().join(process.env.APPDATA||a,"Code","User","settings.json"):"darwin"===b?k().join(a,"Library","Application Support","Code","User","settings.json"):k().join(a,".config","Code","User","settings.json")},s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where kilo":"which kilo",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Kilo Code CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{auth:a?Object.keys(a):[]},hasKRouter:(a=>{if(!a)return!1;let b=a["openai-compatible"];if(!b)return!1;let c=b.baseUrl||b.baseURL||"";return c.includes("localhost")||c.includes("127.0.0.1")||c.includes("krouter")})(a),authPath:q()})}catch(a){return console.log("Error checking kilo settings:",a),e.NextResponse.json({error:"Failed to check kilo settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b:`${b}/v1`,g=await t(q())||{};g["openai-compatible"]={type:"api-key",apiKey:c,baseUrl:f,model:d},await i().writeFile(q(),JSON.stringify(g,null,2));try{let a=await t(r())||{};a["kilocode.customProvider"]={name:"kRouter",baseURL:f,apiKey:c},a["kilocode.defaultModel"]=d,await i().writeFile(r(),JSON.stringify(a,null,2))}catch{}return e.NextResponse.json({success:!0,message:"Kilo Code settings applied successfully!",authPath:q()})}catch(a){return console.log("Error updating kilo settings:",a),e.NextResponse.json({error:"Failed to update kilo settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});delete a["openai-compatible"],await i().writeFile(q(),JSON.stringify(a,null,2));try{let a=await t(r());a&&(delete a["kilocode.customProvider"],delete a["kilocode.defaultModel"],await i().writeFile(r(),JSON.stringify(a,null,2)))}catch{}return e.NextResponse.json({success:!0,message:"kRouter settings removed from Kilo Code"})}catch(a){return console.log("Error resetting kilo settings:",a),e.NextResponse.json({error:"Failed to reset kilo settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"004f7516e5c1ee182b16cd09c934f31fed613e1154",null),(0,d.A)(v,"40adbb5a162c21fe41ec49704e61915eb8e0ca8ae5",null),(0,d.A)(w,"008fcd82505d2efe4c797a119243b19ed7a5256714",null)},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},14833:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>v,GET:()=>s,POST:()=>t});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>{let a=m().homedir();return k().join(a,".claude","settings.json")},q=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where claude":"which claude",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(p()),!0}catch{return!1}}},r=async()=>{try{let a=p(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function s(){try{if(!await q())return e.NextResponse.json({installed:!1,settings:null,message:"Claude CLI is not installed"});let a=await r(),b=!!a?.env?.ANTHROPIC_BASE_URL;return e.NextResponse.json({installed:!0,hasKRouter:b,settings:a,settingsPath:p()})}catch(a){return console.log("Error checking claude settings:",a),e.NextResponse.json({error:"Failed to check claude settings"},{status:500})}}async function t(a){try{let{env:b}=await a.json();if(!b||"object"!=typeof b)return e.NextResponse.json({error:"Invalid env object"},{status:400});let c=p(),d=k().dirname(c);await i().mkdir(d,{recursive:!0});let f={};try{let a=await i().readFile(c,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"!==a.code)throw a}b.ANTHROPIC_BASE_URL&&(b.ANTHROPIC_BASE_URL=b.ANTHROPIC_BASE_URL.endsWith("/v1")?b.ANTHROPIC_BASE_URL:`${b.ANTHROPIC_BASE_URL}/v1`);let g={...f,hasCompletedOnboarding:!0,env:{...f.env||{},...b}};return await i().writeFile(c,JSON.stringify(g,null,2)),e.NextResponse.json({success:!0,message:"Settings updated successfully"})}catch(a){return console.log("Error updating claude settings:",a),e.NextResponse.json({error:"Failed to update claude settings"},{status:500})}}let u=["ANTHROPIC_BASE_URL","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","API_TIMEOUT_MS"];async function v(){try{let a=p(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.env&&(u.forEach(a=>{delete b.env[a]}),0===Object.keys(b.env).length&&delete b.env),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"Settings reset successfully"})}catch(a){return console.log("Error resetting claude settings:",a),e.NextResponse.json({error:"Failed to reset claude settings"},{status:500})}}(0,n.D)([s,t,v]),(0,d.A)(s,"008da315467f49b5aeba334fd70f92483ac5268439",null),(0,d.A)(t,"40b08070566f884bbcc1c82fdd71be34b8974b7330",null),(0,d.A)(v,"00cefb418912601fff0c491d5f981d71da98473d04",null)},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19593:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>t});var d=c(49796),e=c(23211),f=c(14833),g=c(58750),h=c(72452),i=c(29657),j=c(4126),k=c(21757),l=c(21350),m=c(20703),n=c(46298),o=c(8304),p=c(67116),q=c(48074),r=c(24424);let s={claude:f.GET,codex:g.GET,opencode:h.GET,droid:i.GET,openclaw:j.GET,hermes:k.GET,cowork:l.GET,copilot:m.GET,cline:n.GET,kilo:o.GET,"deepseek-tui":p.GET,jcode:q.GET};async function t(){let a=await Promise.all(Object.entries(s).map(async([a,b])=>{try{let c=await b(),d=await c.json();return[a,d]}catch{return[a,null]}}));return e.NextResponse.json(Object.fromEntries(a))}(0,r.D)([t]),(0,d.A)(t,"004a6ffed6ed808711d4c22fceab0f7042d7e037b4",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>r,GET:()=>p,POST:()=>q});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(24424);let m=()=>{let a=k().homedir(),b=k().platform();return"win32"===b?i().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?i().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):i().join(a,".config","Code","User","chatLanguageModels.json")},n=async()=>{try{let a=await g().readFile(m(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},o=a=>"kRouter"===a.name;async function p(){try{let a=await n(),b=Array.isArray(a)&&a.find(o)||null;return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!Array.isArray(a)&&a.some(o),configPath:m(),currentModel:b?.models?.[0]?.id||null,currentUrl:b?.models?.[0]?.url||null})}catch(a){return console.log("Error checking copilot settings:",a),e.NextResponse.json({error:"Failed to check copilot settings"},{status:500})}}async function q(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!d?.length)return e.NextResponse.json({error:"baseUrl and models are required"},{status:400});let f=m();await g().mkdir(i().dirname(f),{recursive:!0});let h=[];try{let a=await g().readFile(f,"utf-8"),b=JSON.parse(a);h=Array.isArray(b)?b:[]}catch{}let j=`${b}/chat/completions#models.ai.azure.com`,k={name:"kRouter",vendor:"azure",apiKey:c||"sk_krouter",models:d.map(a=>({id:a,name:a,url:j,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},l=h.findIndex(o);return l>=0?h[l]=k:h.push(k),await g().writeFile(f,JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:f})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function r(){try{let a=m(),b=[];try{let c=await g().readFile(a,"utf-8"),d=JSON.parse(c);b=Array.isArray(d)?d:[]}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}return b=b.filter(a=>!o(a)),await g().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter removed from Copilot config"})}catch(a){return console.log("Error resetting copilot settings:",a),e.NextResponse.json({error:"Failed to reset copilot settings"},{status:500})}}(0,l.D)([p,q,r]),(0,d.A)(p,"00ec9464bdce50cd89593a12b052e23db23c5a3f76",null),(0,d.A)(q,"40a3b2080f539c10b938197e2047f8c3fe2406e4ce",null),(0,d.A)(r,"003e681d38cb40829133f6c614d08fda371a2455a5",null)},21757:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>y,GET:()=>w,POST:()=>x});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".hermes"),q=()=>k().join(p(),"config.yaml"),r=()=>k().join(p(),".env"),s=/^model:[ \t]*\r?\n((?:[ \t]+.*\r?\n?|[ \t]*\r?\n)*)/m,t=async()=>{try{let a="win32"===m().platform();return await o(a?"where hermes":"which hermes",{windowsHide:!0}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},u=async()=>{try{return await i().readFile(q(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}},v=async()=>{try{return await i().readFile(r(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function w(){try{if(!await t())return e.NextResponse.json({installed:!1,settings:null,message:"Hermes Agent is not installed"});let a=await u(),b=(a=>{let b=a.match(s);if(!b)return null;let c=b[1]||"",d=a=>{let b=c.match(RegExp(`^[ \\t]+${a}:[ \\t]*["']?([^"'\\r\\n]+)["']?`,"m"));return b?b[1].trim():null};return{default:d("default"),provider:d("provider"),base_url:d("base_url")}})(a);return e.NextResponse.json({installed:!0,settings:{model:b},hasKRouter:!!b?.base_url&&"custom"===b.provider&&/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b.base_url),configPath:q()})}catch(a){return console.log("Error checking hermes settings:",a),e.NextResponse.json({error:"Failed to check hermes settings"},{status:500})}}async function x(a){try{var b,c,d,f;let{baseUrl:g,apiKey:h,model:j}=await a.json();if(!g||!j)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let k=p();await i().mkdir(k,{recursive:!0});let l=g.endsWith("/v1")?g:`${g}/v1`,m=(b=await u(),c=`model:
2
2
  default: "${j}"
3
3
  provider: "custom"
4
4
  base_url: "${l}"
@@ -7,12 +7,12 @@
7
7
  ${b}`:c);if(await i().writeFile(q(),m),h){let a,b,c=(d=await v(),f="OPENAI_API_KEY",a=RegExp(`^${f}=.*$`,"m"),b=`${f}=${h}`,a.test(d)?d.replace(a,b):d.length>0&&!d.endsWith("\n")?`${d}
8
8
  ${b}
9
9
  `:`${d}${b}
10
- `);await i().writeFile(r(),c)}return e.NextResponse.json({success:!0,message:"Hermes settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating hermes settings:",a),e.NextResponse.json({error:"Failed to update hermes settings"},{status:500})}}async function y(){try{let a=q(),b="";try{b=await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let c=b.replace(s,"").replace(/^\n+/,"");return await i().writeFile(a,c),e.NextResponse.json({success:!0,message:"krouter model block removed"})}catch(a){return console.log("Error resetting hermes settings:",a),e.NextResponse.json({error:"Failed to reset hermes settings"},{status:500})}}(0,n.D)([w,x,y]),(0,d.A)(w,"00af09deb68be66b882e4861d73771be1eb607a440",null),(0,d.A)(x,"40edd7c0cde2e21b8330b6cb91185926da4e56a0c8",null),(0,d.A)(y,"0018efac508974b691d77eea08939fe35a69b02d30",null)},21820:a=>{a.exports=require("os")},22321:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/cli-tools/all-statuses/route",pathname:"/api/cli-tools/all-statuses",filename:"route",bundlePath:"app/api/cli-tools/all-statuses/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/cli-tools/all-statuses/route.js",nextConfigOutput:"standalone",userland:()=>c(19593),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/cli-tools/all-statuses/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},28354:a=>{a.exports=require("util")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29657:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".factory"),q=()=>k().join(p(),"settings.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where droid":"which droid",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=q(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}},t="custom:kRouter",u=a=>a?.id?.startsWith(t);async function v(){try{if(!await r())return e.NextResponse.json({installed:!1,settings:null,message:"Factory Droid CLI is not installed"});let a=await s();return e.NextResponse.json({installed:!0,settings:a,hasKRouter:!!a&&!!a.customModels&&a.customModels.some(u),settingsPath:q()})}catch(a){return console.log("Error checking droid settings:",a),e.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function w(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g}=await a.json(),h=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===h.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let j=p(),k=q();await i().mkdir(j,{recursive:!0});let l={};try{let a=await i().readFile(k,"utf-8");l=JSON.parse(a)}catch{}l.customModels||(l.customModels=[]),l.customModels=l.customModels.filter(a=>!u(a));let m=b.endsWith("/v1")?b:`${b}/v1`,n=c||"your_api_key",o=0;if("string"==typeof g)if(""===g)o=-1;else{let a=h.indexOf(g);o=a>=0?a:0}for(let a=0;a<h.length;a++){let b=h[a];b&&"string"==typeof b&&l.customModels.push({model:b,id:`${t}-${a}`,index:a,baseUrl:m,apiKey:n,displayName:b,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"})}if(o>=0&&l.customModels[o]){let[a]=l.customModels.splice(o,1);l.customModels.unshift({...a,index:0}),l.customModels.forEach((a,b)=>{a.index=b})}return await i().writeFile(k,JSON.stringify(l,null,2)),e.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:k})}catch(a){return console.log("Error updating droid settings:",a),e.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function x(){try{let a=q(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.customModels&&(b.customModels=b.customModels.filter(a=>!u(a)),0===b.customModels.length&&delete b.customModels),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting droid settings:",a),e.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,n.D)([v,w,x]),(0,d.A)(v,"005cc137580e5cc1e270d9db6d3f2082bed1b59759",null),(0,d.A)(w,"4027aaf6eec108ae53dd6e647710c2f20b73495a8f",null),(0,d.A)(x,"007a14e65e8d524cf0acf1b07ab6d9c7c4461a15cf",null)},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".cline","data"),q=()=>k().join(p(),"globalState.json"),r=()=>k().join(p(),"secrets.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.openAiModelId},hasKRouter:(a=>{if(!a)return!1;let b="openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider,c=a.openAiBaseUrl||"";return b&&(c.includes("localhost")||c.includes("127.0.0.1")||c.includes("krouter"))})(a),globalStatePath:q()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b.slice(0,-3):b,g=await t(q())||{};g.actModeApiProvider="openai",g.planModeApiProvider="openai",g.openAiBaseUrl=f,g.openAiModelId=d,g.planModeOpenAiModelId=d,await i().writeFile(q(),JSON.stringify(g,null,2));let h=await t(r())||{};return h.openAiApiKey=c,await i().writeFile(r(),JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:q()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});"openai"===a.actModeApiProvider&&(delete a.openAiBaseUrl,delete a.openAiModelId,delete a.planModeOpenAiModelId,a.actModeApiProvider="cline",a.planModeApiProvider="cline"),await i().writeFile(q(),JSON.stringify(a,null,2));let b=await t(r())||{};return delete b.openAiApiKey,await i().writeFile(r(),JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed from Cline"})}catch(a){return console.log("Error resetting cline settings:",a),e.NextResponse.json({error:"Failed to reset cline settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"003f5c40a79c4796db3c11c1566c52dd1eff26e71d",null),(0,d.A)(v,"408facf5cfddde0d3a1f62adea09b41571ab506eba",null),(0,d.A)(w,"00607e1b75e7112bf9e8b53f3274ff27dc80927904",null)},48074:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>D,GET:()=>B,POST:()=>C});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(28354),n=c(52750),o=c(24424);let p=(0,m.promisify)(l.exec),q=()=>i().join(k().homedir(),".jcode"),r=()=>i().join(q(),"config.toml"),s="krouter",t="provider-krouter.env",u="JCODE_KROUTER_API_KEY",v=()=>{let a=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config");return i().join(a,"jcode",t)},w=async()=>{try{let a="win32"===k().platform();return await p(a?"where jcode":"which jcode",{windowsHide:!0}),!0}catch{try{return await g().access(q()),!0}catch{return!1}}},x=async()=>{try{let a=r(),b=await g().readFile(a,"utf-8");return(0,n.M)(b)}catch(a){return{providers:{}}}},y=async a=>{let b=r(),c=(0,n.q)(a);await g().writeFile(b,c,"utf-8")},z=async()=>{let a=v();try{let b=await g().readFile(a,"utf-8"),c={};for(let a of b.split("\n")){let b=a.trim();if(!b||b.startsWith("#"))continue;let d=b.indexOf("=");if(d>0){let a=b.slice(0,d).trim(),e=b.slice(d+1).trim();(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),c[a]=e}}return c}catch{return{}}},A=async a=>{let b=v(),c="# jcode provider environment variables\n";for(let[b,d]of Object.entries(a))c+=`${b}="${d}"
11
- `;await g().writeFile(b,c,"utf-8")};async function B(){if(!await w())return e.NextResponse.json({installed:!1,message:"jcode not installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"});let a=await x(),b=(a=>{if(!a||!a.providers)return!1;let b=a.providers;if(b[s])return!0;for(let[a,c]of Object.entries(b))if(c.base_url&&c.base_url.includes("localhost:20128"))return!0;return!1})(a);return e.NextResponse.json({installed:!0,config:a,hasKRouter:b,configPath:r()})}async function C(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!c)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let f=b.endsWith("/v1")?b:`${b}/v1`,h=await x();h.providers||(h.providers={}),h.providers[s]={type:"openai-compatible",base_url:f,auth:"bearer",api_key_env:u,env_file:t,default_model:d&&d.length>0?d[0]:"cc/claude-opus-4-7",requires_api_key:!0};let j=q();await g().mkdir(j,{recursive:!0}),await y(h);let l=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config"),m=i().join(l,"jcode");await g().mkdir(m,{recursive:!0});let n=await z();return n[u]=c,await A(n),e.NextResponse.json({success:!0,message:"jcode configured successfully. Use: jcode --provider-profile krouter",configPath:r()})}catch(a){return console.error("Error configuring jcode:",a),e.NextResponse.json({error:a.message},{status:500})}}async function D(){try{let a=await x();if(!a.providers)return e.NextResponse.json({success:!0,message:"No configuration to remove"});delete a.providers[s],await y(a);let b=await z();return delete b[u],await A(b),e.NextResponse.json({success:!0,message:"kRouter configuration removed from jcode"})}catch(a){return console.error("Error removing jcode configuration:",a),e.NextResponse.json({error:a.message},{status:500})}}(0,o.D)([B,C,D]),(0,d.A)(B,"00ee89fceaba8a72d190b9d490c8ae7d500fc91e99",null),(0,d.A)(C,"40ea00344d7477d6adf8e723aa24819c62e95d5d47",null),(0,d.A)(D,"0085cb50aa8b72c1341acc9cf00744c292deb7014e",null)},55511:a=>{a.exports=require("crypto")},58750:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>y,POST:()=>z});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(52750),o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>k().join(m().homedir(),".codex"),r=()=>k().join(q(),"config.toml"),s=a=>a??{},t=(a,b,c)=>{let d=b.split("."),e=a;for(let a=0;a<d.length-1;a++)(null==e[d[a]]||"object"!=typeof e[d[a]])&&(e[d[a]]={}),e=e[d[a]];e[d[d.length-1]]=c},u=(a,b)=>{let c=b.split("."),d=a;for(let a=0;a<c.length-1;a++)if(null==(d=d?.[c[a]]))return;delete d[c[c.length-1]]},v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await p(a?"where codex":"which codex",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},w=async()=>{try{let a=r();return await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}},x="krouter";async function y(){try{if(!await v())return e.NextResponse.json({installed:!1,config:null,message:"Codex CLI is not installed"});let a=await w();return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!a&&(a.includes(`model_provider = "${x}"`)||a.includes(`[model_providers.${x}]`)),configPath:r()})}catch(a){return console.log("Error checking codex settings:",a),e.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function z(a){try{let{baseUrl:b,apiKey:c,model:d,subagentModel:f}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let g=q(),h=r();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=s((0,n.M)(a))}catch{}j.model=d,j.model_provider=x;let k=b.endsWith("/v1")?b:`${b}/v1`;t(j,`model_providers.${x}`,{name:"kRouter",base_url:k,wire_api:"responses",http_headers:{Authorization:`Bearer ${c}`}}),u(j,"agents.subagent"),t(j,"agents.default_subagent_model",f||d);let l=(0,n.q)(j);return await i().writeFile(h,l),e.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:h})}catch(a){return console.log("Error updating codex settings:",a),e.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function A(){try{let a=r(),b={};try{let c=await i().readFile(a,"utf-8");b=s((0,n.M)(c))}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}b.model_provider===x&&(delete b.model,delete b.model_provider),u(b,`model_providers.${x}`),u(b,"agents.default_subagent_model"),u(b,"agents.subagent");let c=(0,n.q)(b);await i().writeFile(a,c);let d=k().join(q(),"auth.json");try{let a=await i().readFile(d,"utf-8"),b=JSON.parse(a);delete b.OPENAI_API_KEY,delete b.auth_mode,0===Object.keys(b).length?await i().unlink(d):await i().writeFile(d,JSON.stringify(b,null,2))}catch{}return e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting codex settings:",a),e.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}(0,o.D)([y,z,A]),(0,d.A)(y,"000497f151ed75f0a6818a16a687e48e90a8f46183",null),(0,d.A)(z,"40392f31c093bb72147d5e3c5723884233c6574d70",null),(0,d.A)(A,"00fcf53d3b755627fa378081698ecca6322cec52de",null)},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},67116:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".deepseek"),q=()=>k().join(p(),"config.toml"),r=`provider = "deepseek"
10
+ `);await i().writeFile(r(),c)}return e.NextResponse.json({success:!0,message:"Hermes settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating hermes settings:",a),e.NextResponse.json({error:"Failed to update hermes settings"},{status:500})}}async function y(){try{let a=q(),b="";try{b=await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let c=b.replace(s,"").replace(/^\n+/,"");return await i().writeFile(a,c),e.NextResponse.json({success:!0,message:"krouter model block removed"})}catch(a){return console.log("Error resetting hermes settings:",a),e.NextResponse.json({error:"Failed to reset hermes settings"},{status:500})}}(0,n.D)([w,x,y]),(0,d.A)(w,"0000b5945f9eabead73743b092188cae2c92922d3c",null),(0,d.A)(x,"402be818fe557e1a12f76f97970de58a03bf406733",null),(0,d.A)(y,"008f31937f8decdf76ec0b2dc3648c275cb73980ea",null)},21820:a=>{a.exports=require("os")},22321:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>A,patchFetch:()=>z,routeModule:()=>v,serverHooks:()=>y,workAsyncStorage:()=>w,workUnitAsyncStorage:()=>x});var d=c(19225),e=c(84006),f=c(8317),g=c(99373),h=c(34775),i=c(24235),j=c(261),k=c(54365),l=c(90771),m=c(73461),n=c(67798),o=c(92280),p=c(62018),q=c(45696),r=c(47929),s=c(86439),t=c(10246),u=c(37527);let v=new d.AppRouteRouteModule({definition:{kind:e.RouteKind.APP_ROUTE,page:"/api/cli-tools/all-statuses/route",pathname:"/api/cli-tools/all-statuses",filename:"route",bundlePath:"app/api/cli-tools/all-statuses/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/cli-tools/all-statuses/route.js",nextConfigOutput:"standalone",userland:()=>c(19593),...{}}),{workAsyncStorage:w,workUnitAsyncStorage:x,serverHooks:y}=v;function z(){return(0,f.patchFetch)({workAsyncStorage:w,workUnitAsyncStorage:x})}async function A(a,b,c){c.requestMeta&&(0,g.setRequestMeta)(a,c.requestMeta),v.isDev&&(0,g.addRequestMeta)(a,"devRequestTimingInternalsEnd",process.hrtime.bigint());let d="/api/cli-tools/all-statuses/route";"/index"===d&&(d="/");let f=await v.prepare(a,b,{srcPage:d,multiZoneDraftMode:!1});if(!f)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:w,deploymentId:x,params:y,nextConfig:z,parsedUrl:A,isDraftMode:B,prerenderManifest:C,routerServerContext:D,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,resolvedPathname:G,clientReferenceManifest:H,serverActionsManifest:I}=f,J=(0,j.normalizeAppPath)(d),K=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),L=!!(C.dynamicRoutes[J]||K),M=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(L&&!B){let a=C.dynamicRoutes[J];if(a&&!1===a.fallback&&!K){if(z.adapterPath)return await M();throw new s.NoFallbackError}}let N=null;!L||v.isDev||B||(N="/index"===(N=G)?"/":N);let O=!0===v.isDev||!L,P=L&&!O;I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let Q=a.method||"GET",R=(0,h.getTracer)(),S=R.getActiveScopeSpan(),T=!!(null==D?void 0:D.isWrappedByNextServer),U=!!(0,g.getRequestMeta)(a,"minimalMode"),V=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,C,U);null==V||V.resetRequestCache(),globalThis.__incrementalCache=V;let W={params:y,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,supportsDynamicResponse:O,incrementalCache:V,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d,e)=>v.onRequestError(a,b,d,e,D)},sharedContext:{buildId:w,deploymentId:x}},X=new k.NodeNextRequest(a),Y=new k.NodeNextResponse(b),Z=l.NextRequestAdapter.fromNodeNextRequest(X,(0,l.signalFromNodeResponse)(b)),$=async({previousCacheEntry:e})=>{try{if(!U&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=await v.handle(Z,W);a.fetchMetrics=W.renderOpts.fetchMetrics;let f=W.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=W.renderOpts.collectedTags;if(!L)return await (0,o.I)(X,Y,d,f),null;{let a=await d.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(d.headers);g&&(b[r.NEXT_CACHE_TAGS_HEADER]=g),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==W.renderOpts.collectedRevalidate&&!(W.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&W.renderOpts.collectedRevalidate,e=void 0===W.renderOpts.collectedExpire||W.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:W.renderOpts.collectedExpire;return{value:{kind:u.CachedRouteKind.APP_ROUTE,status:d.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:e}}}}catch(b){throw(null==e?void 0:e.isStale)&&await v.onRequestError(a,b,{routerKind:"App Router",routePath:d,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),b}},_=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:N,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:$,waitUntil:c.waitUntil,isMinimalMode:U});if(!L)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});U||b.setHeader("x-nextjs-cache",E?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),B&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let f=(0,p.fromNodeOutgoingHttpHeaders)(d.value.headers);U&&L||f.delete(r.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||b.getHeader("Cache-Control")||f.get("Cache-Control")||f.set("Cache-Control",(0,q.getCacheControlHeader)(d.cacheControl)),await (0,o.I)(X,Y,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(b){if(b instanceof s.NoFallbackError||await v.onRequestError(a,b,{routerKind:"App Router",routePath:J,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:P,isOnDemandRevalidate:E})},!1,D),L)throw b;await (0,o.I)(X,Y,new Response(null,{status:500}));return}finally{(()=>{if(!d)return;let a=b.statusCode;d.setAttributes({"http.status_code":a,"next.rsc":!1}),a&&a>=500&&(d.setStatus({code:h.SpanStatusCode.ERROR}),d.setAttribute("error.type",a.toString()));let c=R.getRootSpanAttributes();if(!c)return;if(c.get("next.span_type")!==m.BaseServerSpan.handleRequest)return console.warn(`Unexpected root span type '${c.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=c.get("next.route")||J,g=`${Q} ${e}`;d.setAttributes({"next.route":e,"http.route":e,"next.span_name":g}),d.updateName(g),f&&f!==d&&(f.setAttribute("http.route",e),f.updateName(g))})()}};if(T&&S)await _(S,void 0);else{let b=R.getActiveScopeSpan();await R.withPropagatedContext(a.headers,()=>R.trace(m.BaseServerSpan.handleRequest,{spanName:`${Q} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":Q,"http.target":a.url}},a=>_(a,b)),void 0,!T)}}},25604:(a,b,c)=>{c.r(b),c.d(b,{"0000b5945f9eabead73743b092188cae2c92922d3c":()=>j.GET,"00014f28ebf4d0ce7005f7bee6343a6017d1ee0ca4":()=>g.GET,"00019f075950b6963d29d3d76c21bd21cee81a3420":()=>o.DELETE,"000f7c104b28ba0353d0ab706dc48a1beab29a9e46":()=>i.GET,"00123d2ecfb8ff28184392e6e5ef2bb8ea39fd0153":()=>p.GET,"0015968d25c5c788463981478074dd6f0d438ad436":()=>k.DELETE,"002840ef421b4e16cc3661d68e1a307ac3fe3e9113":()=>m.DELETE,"003bc7f961c50fc9a12dbb0689ede23ed79ed17cb8":()=>i.DELETE,"003e681d38cb40829133f6c614d08fda371a2455a5":()=>l.DELETE,"004a6ffed6ed808711d4c22fceab0f7042d7e037b4":()=>d.GET,"004f7516e5c1ee182b16cd09c934f31fed613e1154":()=>n.GET,"005c87fcc81890e2c1a2f43c3b96508f063442a79f":()=>k.GET,"006bce080752e5bf80c713949c43af00d510d3d166":()=>o.GET,"007d4f18f9fa35a89aa8b9eb2bced7694c4473747a":()=>h.DELETE,"008ad07ab21c14235013dfec8385f08f12adbb2ade":()=>h.GET,"008da315467f49b5aeba334fd70f92483ac5268439":()=>e.GET,"008f31937f8decdf76ec0b2dc3648c275cb73980ea":()=>j.DELETE,"008fcd82505d2efe4c797a119243b19ed7a5256714":()=>n.DELETE,"00c2a0fe4f696c6a8cc9765ecf7fcc09429509a585":()=>f.DELETE,"00cefb418912601fff0c491d5f981d71da98473d04":()=>e.DELETE,"00dc849e1d21826757abe84e4fc6e3ac19298d37c6":()=>p.DELETE,"00dcc305af768cc017a19c9a6fc034c30687ac0861":()=>m.GET,"00e189ae1d6959ec3c672c8c91dd7376d5d623e04a":()=>f.GET,"00ec9464bdce50cd89593a12b052e23db23c5a3f76":()=>l.GET,"4008420bb5801930b123465442bbe3b849d47acd04":()=>i.POST,"402be818fe557e1a12f76f97970de58a03bf406733":()=>j.POST,"403b4d01f2157d53afcdf284363ed8abfc8f44f73f":()=>o.POST,"40692142d15432fcc08311b6038096cf2adb09d58d":()=>p.POST,"406e81596d57862cef0262ec76cdfa0a2edae87cd4":()=>g.PATCH,"407ad1efc4790f8937057a3a97ec6948067a112680":()=>g.POST,"40a3b2080f539c10b938197e2047f8c3fe2406e4ce":()=>l.POST,"40adbb5a162c21fe41ec49704e61915eb8e0ca8ae5":()=>n.POST,"40b0365c9049300ccd06c91a649e7f419159a26f53":()=>h.POST,"40b08070566f884bbcc1c82fdd71be34b8974b7330":()=>e.POST,"40cb427562a94938f9620b9ac93011b620a7aa79d5":()=>m.POST,"40ec8978c0e29a32d96ed06b804711d882664c3f71":()=>f.POST,"40fbb35ad31f60855ffe3c03f96a6d4b221c32474e":()=>k.POST,"40fbdb11ef4e67f8c3132d0f3c3cdd7a2fa4985887":()=>g.DELETE});var d=c(19593),e=c(14833),f=c(58750),g=c(72452),h=c(29657),i=c(4126),j=c(21757),k=c(21350),l=c(20703),m=c(46298),n=c(8304),o=c(67116),p=c(48074)},28354:a=>{a.exports=require("util")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},29657:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".factory"),q=()=>k().join(p(),"settings.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where droid":"which droid",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=q(),b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}},t="custom:kRouter",u=a=>a?.id?.startsWith(t);async function v(){try{if(!await r())return e.NextResponse.json({installed:!1,settings:null,message:"Factory Droid CLI is not installed"});let a=await s();return e.NextResponse.json({installed:!0,settings:a,hasKRouter:!!a&&!!a.customModels&&a.customModels.some(u),settingsPath:q()})}catch(a){return console.log("Error checking droid settings:",a),e.NextResponse.json({error:"Failed to check droid settings"},{status:500})}}async function w(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g}=await a.json(),h=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===h.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let j=p(),k=q();await i().mkdir(j,{recursive:!0});let l={};try{let a=await i().readFile(k,"utf-8");l=JSON.parse(a)}catch{}l.customModels||(l.customModels=[]),l.customModels=l.customModels.filter(a=>!u(a));let m=b.endsWith("/v1")?b:`${b}/v1`,n=c||"your_api_key",o=0;if("string"==typeof g)if(""===g)o=-1;else{let a=h.indexOf(g);o=a>=0?a:0}for(let a=0;a<h.length;a++){let b=h[a];b&&"string"==typeof b&&l.customModels.push({model:b,id:`${t}-${a}`,index:a,baseUrl:m,apiKey:n,displayName:b,maxOutputTokens:131072,noImageSupport:!1,provider:"openai"})}if(o>=0&&l.customModels[o]){let[a]=l.customModels.splice(o,1);l.customModels.unshift({...a,index:0}),l.customModels.forEach((a,b)=>{a.index=b})}return await i().writeFile(k,JSON.stringify(l,null,2)),e.NextResponse.json({success:!0,message:"Factory Droid settings applied successfully!",settingsPath:k})}catch(a){return console.log("Error updating droid settings:",a),e.NextResponse.json({error:"Failed to update droid settings"},{status:500})}}async function x(){try{let a=q(),b={};try{let c=await i().readFile(a,"utf-8");b=JSON.parse(c)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No settings file to reset"});throw a}return b.customModels&&(b.customModels=b.customModels.filter(a=>!u(a)),0===b.customModels.length&&delete b.customModels),await i().writeFile(a,JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting droid settings:",a),e.NextResponse.json({error:"Failed to reset droid settings"},{status:500})}}(0,n.D)([v,w,x]),(0,d.A)(v,"008ad07ab21c14235013dfec8385f08f12adbb2ade",null),(0,d.A)(w,"40b0365c9049300ccd06c91a649e7f419159a26f53",null),(0,d.A)(x,"007d4f18f9fa35a89aa8b9eb2bced7694c4473747a",null)},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".cline","data"),q=()=>k().join(p(),"globalState.json"),r=()=>k().join(p(),"secrets.json"),s=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async a=>{try{let b=await i().readFile(a,"utf-8");return JSON.parse(b)}catch(a){if("ENOENT"===a.code)return null;throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await t(q());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.openAiModelId},hasKRouter:(a=>{if(!a)return!1;let b="openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider,c=a.openAiBaseUrl||"";return b&&(c.includes("localhost")||c.includes("127.0.0.1")||c.includes("krouter"))})(a),globalStatePath:q()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function v(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});await i().mkdir(p(),{recursive:!0});let f=b.endsWith("/v1")?b.slice(0,-3):b,g=await t(q())||{};g.actModeApiProvider="openai",g.planModeApiProvider="openai",g.openAiBaseUrl=f,g.openAiModelId=d,g.planModeOpenAiModelId=d,await i().writeFile(q(),JSON.stringify(g,null,2));let h=await t(r())||{};return h.openAiApiKey=c,await i().writeFile(r(),JSON.stringify(h,null,2)),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:q()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function w(){try{let a=await t(q());if(!a)return e.NextResponse.json({success:!0,message:"No settings file to reset"});"openai"===a.actModeApiProvider&&(delete a.openAiBaseUrl,delete a.openAiModelId,delete a.planModeOpenAiModelId,a.actModeApiProvider="cline",a.planModeApiProvider="cline"),await i().writeFile(q(),JSON.stringify(a,null,2));let b=await t(r())||{};return delete b.openAiApiKey,await i().writeFile(r(),JSON.stringify(b,null,2)),e.NextResponse.json({success:!0,message:"kRouter settings removed from Cline"})}catch(a){return console.log("Error resetting cline settings:",a),e.NextResponse.json({error:"Failed to reset cline settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"00dcc305af768cc017a19c9a6fc034c30687ac0861",null),(0,d.A)(v,"40cb427562a94938f9620b9ac93011b620a7aa79d5",null),(0,d.A)(w,"002840ef421b4e16cc3661d68e1a307ac3fe3e9113",null)},48074:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>D,GET:()=>B,POST:()=>C});var d=c(49796),e=c(23211),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(21820),k=c.n(j),l=c(79646),m=c(28354),n=c(52750),o=c(24424);let p=(0,m.promisify)(l.exec),q=()=>i().join(k().homedir(),".jcode"),r=()=>i().join(q(),"config.toml"),s="krouter",t="provider-krouter.env",u="JCODE_KROUTER_API_KEY",v=()=>{let a=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config");return i().join(a,"jcode",t)},w=async()=>{try{let a="win32"===k().platform();return await p(a?"where jcode":"which jcode",{windowsHide:!0}),!0}catch{try{return await g().access(q()),!0}catch{return!1}}},x=async()=>{try{let a=r(),b=await g().readFile(a,"utf-8");return(0,n.M)(b)}catch(a){return{providers:{}}}},y=async a=>{let b=r(),c=(0,n.q)(a);await g().writeFile(b,c,"utf-8")},z=async()=>{let a=v();try{let b=await g().readFile(a,"utf-8"),c={};for(let a of b.split("\n")){let b=a.trim();if(!b||b.startsWith("#"))continue;let d=b.indexOf("=");if(d>0){let a=b.slice(0,d).trim(),e=b.slice(d+1).trim();(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))&&(e=e.slice(1,-1)),c[a]=e}}return c}catch{return{}}},A=async a=>{let b=v(),c="# jcode provider environment variables\n";for(let[b,d]of Object.entries(a))c+=`${b}="${d}"
11
+ `;await g().writeFile(b,c,"utf-8")};async function B(){if(!await w())return e.NextResponse.json({installed:!1,message:"jcode not installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"});let a=await x(),b=(a=>{if(!a||!a.providers)return!1;let b=a.providers;if(b[s])return!0;for(let[a,c]of Object.entries(b))if(c.base_url&&c.base_url.includes("localhost:20128"))return!0;return!1})(a);return e.NextResponse.json({installed:!0,config:a,hasKRouter:b,configPath:r()})}async function C(a){try{let{baseUrl:b,apiKey:c,models:d}=await a.json();if(!b||!c)return e.NextResponse.json({error:"baseUrl and apiKey are required"},{status:400});let f=b.endsWith("/v1")?b:`${b}/v1`,h=await x();h.providers||(h.providers={}),h.providers[s]={type:"openai-compatible",base_url:f,auth:"bearer",api_key_env:u,env_file:t,default_model:d&&d.length>0?d[0]:"cc/claude-opus-4-7",requires_api_key:!0};let j=q();await g().mkdir(j,{recursive:!0}),await y(h);let l=process.env.XDG_CONFIG_HOME||i().join(k().homedir(),".config"),m=i().join(l,"jcode");await g().mkdir(m,{recursive:!0});let n=await z();return n[u]=c,await A(n),e.NextResponse.json({success:!0,message:"jcode configured successfully. Use: jcode --provider-profile krouter",configPath:r()})}catch(a){return console.error("Error configuring jcode:",a),e.NextResponse.json({error:a.message},{status:500})}}async function D(){try{let a=await x();if(!a.providers)return e.NextResponse.json({success:!0,message:"No configuration to remove"});delete a.providers[s],await y(a);let b=await z();return delete b[u],await A(b),e.NextResponse.json({success:!0,message:"kRouter configuration removed from jcode"})}catch(a){return console.error("Error removing jcode configuration:",a),e.NextResponse.json({error:a.message},{status:500})}}(0,o.D)([B,C,D]),(0,d.A)(B,"00123d2ecfb8ff28184392e6e5ef2bb8ea39fd0153",null),(0,d.A)(C,"40692142d15432fcc08311b6038096cf2adb09d58d",null),(0,d.A)(D,"00dc849e1d21826757abe84e4fc6e3ac19298d37c6",null)},55511:a=>{a.exports=require("crypto")},58750:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>y,POST:()=>z});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(52750),o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>k().join(m().homedir(),".codex"),r=()=>k().join(q(),"config.toml"),s=a=>a??{},t=(a,b,c)=>{let d=b.split("."),e=a;for(let a=0;a<d.length-1;a++)(null==e[d[a]]||"object"!=typeof e[d[a]])&&(e[d[a]]={}),e=e[d[a]];e[d[d.length-1]]=c},u=(a,b)=>{let c=b.split("."),d=a;for(let a=0;a<c.length-1;a++)if(null==(d=d?.[c[a]]))return;delete d[c[c.length-1]]},v=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await p(a?"where codex":"which codex",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},w=async()=>{try{let a=r();return await i().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}},x="krouter";async function y(){try{if(!await v())return e.NextResponse.json({installed:!1,config:null,message:"Codex CLI is not installed"});let a=await w();return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!a&&(a.includes(`model_provider = "${x}"`)||a.includes(`[model_providers.${x}]`)),configPath:r()})}catch(a){return console.log("Error checking codex settings:",a),e.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function z(a){try{let{baseUrl:b,apiKey:c,model:d,subagentModel:f}=await a.json();if(!b||!c||!d)return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let g=q(),h=r();await i().mkdir(g,{recursive:!0});let j={};try{let a=await i().readFile(h,"utf-8");j=s((0,n.M)(a))}catch{}j.model=d,j.model_provider=x;let k=b.endsWith("/v1")?b:`${b}/v1`;t(j,`model_providers.${x}`,{name:"kRouter",base_url:k,wire_api:"responses",http_headers:{Authorization:`Bearer ${c}`}}),u(j,"agents.subagent"),t(j,"agents.default_subagent_model",f||d);let l=(0,n.q)(j);return await i().writeFile(h,l),e.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:h})}catch(a){return console.log("Error updating codex settings:",a),e.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function A(){try{let a=r(),b={};try{let c=await i().readFile(a,"utf-8");b=s((0,n.M)(c))}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}b.model_provider===x&&(delete b.model,delete b.model_provider),u(b,`model_providers.${x}`),u(b,"agents.default_subagent_model"),u(b,"agents.subagent");let c=(0,n.q)(b);await i().writeFile(a,c);let d=k().join(q(),"auth.json");try{let a=await i().readFile(d,"utf-8"),b=JSON.parse(a);delete b.OPENAI_API_KEY,delete b.auth_mode,0===Object.keys(b).length?await i().unlink(d):await i().writeFile(d,JSON.stringify(b,null,2))}catch{}return e.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting codex settings:",a),e.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}(0,o.D)([y,z,A]),(0,d.A)(y,"00e189ae1d6959ec3c672c8c91dd7376d5d623e04a",null),(0,d.A)(z,"40ec8978c0e29a32d96ed06b804711d882664c3f71",null),(0,d.A)(A,"00c2a0fe4f696c6a8cc9765ecf7fcc09429509a585",null)},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},67116:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>w,GET:()=>u,POST:()=>v});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".deepseek"),q=()=>k().join(p(),"config.toml"),r=`provider = "deepseek"
12
12
  `,s=async()=>{try{let a="win32"===m().platform();return await o(a?"where deepseek":"which deepseek",{windowsHide:!0}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},t=async()=>{try{return await i().readFile(q(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function u(){try{if(!await s())return e.NextResponse.json({installed:!1,settings:null,message:"DeepSeek TUI is not installed"});let a=await t(),b=(a=>{let b={},c=b;for(let d of a.split(/\r?\n/)){let a=d.trim();if(!a||a.startsWith("#"))continue;let e=a.match(/^\[([^\]]+)\]$/);if(e){let a=e[1];b[a]||(b[a]={}),c=b[a];continue}let f=a.match(/^(\w+)\s*=\s*"([^"]*)"$/);if(f){c[f[1]]=f[2];continue}let g=a.match(/^(\w+)\s*=\s*(.+)$/);g&&(c[g[1]]=g[2].trim())}return b})(a);return e.NextResponse.json({installed:!0,settings:b,hasKRouter:(a=>{if(!a||"openai"!==a.provider)return!1;let b=a["providers.openai"];return!!b?.base_url&&/localhost|127\.0\.0\.1|0\.0\.0\.0/.test(b.base_url)})(b),configPath:q()})}catch(a){return console.log("Error checking deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to check deepseek-tui settings"},{status:500})}}async function v(a){try{var b;let c,{baseUrl:d,apiKey:f,model:g}=await a.json();if(!d||!g)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let h=p();await i().mkdir(h,{recursive:!0});let j=(b=f||"sk_krouter",c=d.endsWith("/v1")?d:`${d}/v1`,`provider = "openai"
13
13
 
14
14
  [providers.openai]
15
15
  base_url = "${c}"
16
16
  api_key = "${b}"
17
17
  model = "${g}"
18
- `);return await i().writeFile(q(),j),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to update deepseek-tui settings"},{status:500})}}async function w(){try{let a=q();try{await i().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await i().writeFile(a,r),e.NextResponse.json({success:!0,message:"krouter config reset to DeepSeek defaults"})}catch(a){return console.log("Error resetting deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to reset deepseek-tui settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"006d4796193039b92ebc88d32ac49a3b5a9d72d91e",null),(0,d.A)(v,"403f6c518195dd501d33291bebb251d7d4b7f5b24c",null),(0,d.A)(w,"00df07f36823e3cb84d8daca62fa2ee447452e5add",null)},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>x,PATCH:()=>z,POST:()=>y});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".config","opencode"),q=()=>k().join(p(),"opencode.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=await i().readFile(q(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},t="krouter",u="krouter/",v=/^krouter\//,w=a=>a?.provider?.[t]??null;async function x(){try{if(!await r())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await s(),b=w(a),c=b?.models||{};return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!w(a),configPath:q(),opencode:{models:Object.keys(c),activeModel:v.test(a?.model||"")?a.model.replace(v,""):null,baseURL:b?.options?.baseURL||null}})}catch(a){return console.log("Error checking opencode settings:",a),e.NextResponse.json({error:"Failed to check opencode settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g,subagentModel:h}=await a.json(),j=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===j.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let k=p(),l=q();await i().mkdir(k,{recursive:!0});let m={};try{let a=await i().readFile(l,"utf-8");m=JSON.parse(a)}catch{}let n=b.endsWith("/v1")?b:`${b}/v1`,o=h||j[0];m.provider||(m.provider={});let r=w(m)||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(r.options={...r.options,baseURL:n,apiKey:c||"sk_krouter"},r.models=r.models||{},j))a&&"string"==typeof a&&(r.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(m.provider[t]=r,""===g)m.model="";else{let a=g||j[0];a&&(m.model=`${u}${a}`)}return m.agent||(m.agent={}),m.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`${u}${o}`},await i().writeFile(l,JSON.stringify(m,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:l})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function z(a){try{let{clearActiveModel:b}=await a.json(),c=q(),d={};try{let a=await i().readFile(c,"utf-8");d=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file found"});throw a}return!0===b&&v.test(d.model||"")&&(d.model=""),await i().writeFile(c,JSON.stringify(d,null,2)),e.NextResponse.json({success:!0,message:"Settings updated"})}catch(a){return console.log("Error patching opencode settings:",a),e.NextResponse.json({error:"Failed to patch settings"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=q(),f={};try{let a=await i().readFile(d,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let g=w(f),h=f.provider?.[t]?t:null;if(c&&g?.models&&h){if(delete g.models[c],0===Object.keys(g.models).length)delete f.provider[t],v.test(f.model||"")&&delete f.model;else if(f.model===`${u}${c}`){let a=Object.keys(g.models);f.model=`${u}${a[0]}`}}else f.provider&&delete f.provider[t],v.test(f.model||"")&&delete f.model;return v.test(f.agent?.explorer?.model||"")&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await i().writeFile(d,JSON.stringify(f,null,2)),e.NextResponse.json({success:!0,message:c?`Model "${c}" removed`:"kRouter settings removed from OpenCode"})}catch(a){return console.log("Error resetting opencode settings:",a),e.NextResponse.json({error:"Failed to reset opencode settings"},{status:500})}}(0,n.D)([x,y,z,A]),(0,d.A)(x,"00e513a607e50896109adb031377060ca3e0c02650",null),(0,d.A)(y,"40a2f082441b020b61054d83065a5f93a8b7136b00",null),(0,d.A)(z,"4043c9f59be105e44ea0027bf31cd294ac32b8fe2c",null),(0,d.A)(A,"401e832deafc184fc11142af3eb6abffce0e9965d4",null)},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},77664:(a,b,c)=>{c.r(b),c.d(b,{"000497f151ed75f0a6818a16a687e48e90a8f46183":()=>f.GET,"0013244a29a5d652116392686028232081d5871b77":()=>n.GET,"0018efac508974b691d77eea08939fe35a69b02d30":()=>j.DELETE,"003789537c7f592a5c01df0edc7e54c8a50bcb2af1":()=>n.DELETE,"003f5c40a79c4796db3c11c1566c52dd1eff26e71d":()=>m.GET,"00595feb8c81f986498a0232295ab96b75c3482c39":()=>e.GET,"005cc137580e5cc1e270d9db6d3f2082bed1b59759":()=>h.GET,"00607e1b75e7112bf9e8b53f3274ff27dc80927904":()=>m.DELETE,"006d4796193039b92ebc88d32ac49a3b5a9d72d91e":()=>o.GET,"0076ed82abae8fe5e79b51e3926d5b4a0489b79267":()=>k.GET,"007a14e65e8d524cf0acf1b07ab6d9c7c4461a15cf":()=>h.DELETE,"0085cb50aa8b72c1341acc9cf00744c292deb7014e":()=>p.DELETE,"00af09deb68be66b882e4861d73771be1eb607a440":()=>j.GET,"00b2c020ef423e182ba14e02d913602b1377964e08":()=>e.DELETE,"00ce639448f662b03f5917a5fab822ef0f8d92c8b2":()=>l.DELETE,"00d55af6416c3e8b1ab7626d7ca2b3b0fd4165ff19":()=>k.DELETE,"00d74380dd80364a0c97e7de7cfa67e99a78ca53ff":()=>i.GET,"00df07f36823e3cb84d8daca62fa2ee447452e5add":()=>o.DELETE,"00df41bb1c2a72c53915abe6d1234cfa9029c01d5f":()=>d.GET,"00e513a607e50896109adb031377060ca3e0c02650":()=>g.GET,"00ee89fceaba8a72d190b9d490c8ae7d500fc91e99":()=>p.GET,"00f97f573b3ea76836706b5aad62fabf057415597a":()=>l.GET,"00fcf53d3b755627fa378081698ecca6322cec52de":()=>f.DELETE,"00ff4b29f1efbf4bc03c405f5dd3435ca534278f12":()=>i.DELETE,"401e832deafc184fc11142af3eb6abffce0e9965d4":()=>g.DELETE,"4027aaf6eec108ae53dd6e647710c2f20b73495a8f":()=>h.POST,"40392f31c093bb72147d5e3c5723884233c6574d70":()=>f.POST,"403f6c518195dd501d33291bebb251d7d4b7f5b24c":()=>o.POST,"4043c9f59be105e44ea0027bf31cd294ac32b8fe2c":()=>g.PATCH,"4047a3aa7b6dcbe1e014fbdfc86fdcb01f4b175615":()=>l.POST,"405001bc00681c4b8f17135b54a0119ae6d85357e4":()=>e.POST,"408bc4f2d2635bb2f78c247152da20e18046b3f3cb":()=>n.POST,"408facf5cfddde0d3a1f62adea09b41571ab506eba":()=>m.POST,"40975fd88293980f142073398dafab55f527f626b8":()=>i.POST,"40a2f082441b020b61054d83065a5f93a8b7136b00":()=>g.POST,"40c47dca7cfd02501505fe02017df40bf5d9e5cedb":()=>k.POST,"40ea00344d7477d6adf8e723aa24819c62e95d5d47":()=>p.POST,"40edd7c0cde2e21b8330b6cb91185926da4e56a0c8":()=>j.POST});var d=c(19593),e=c(14833),f=c(58750),g=c(72452),h=c(29657),i=c(4126),j=c(21757),k=c(21350),l=c(20703),m=c(46298),n=c(8304),o=c(67116),p=c(48074)},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,9528,5024,5681,4404,2365],()=>b(b.s=22321));module.exports=c})();
18
+ `);return await i().writeFile(q(),j),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:q()})}catch(a){return console.log("Error updating deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to update deepseek-tui settings"},{status:500})}}async function w(){try{let a=q();try{await i().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await i().writeFile(a,r),e.NextResponse.json({success:!0,message:"krouter config reset to DeepSeek defaults"})}catch(a){return console.log("Error resetting deepseek-tui settings:",a),e.NextResponse.json({error:"Failed to reset deepseek-tui settings"},{status:500})}}(0,n.D)([u,v,w]),(0,d.A)(u,"006bce080752e5bf80c713949c43af00d510d3d166",null),(0,d.A)(v,"403b4d01f2157d53afcdf284363ed8abfc8f44f73f",null),(0,d.A)(w,"00019f075950b6963d29d3d76c21bd21cee81a3420",null)},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>A,GET:()=>x,PATCH:()=>z,POST:()=>y});var d=c(49796),e=c(23211),f=c(79646),g=c(28354),h=c(79748),i=c.n(h),j=c(33873),k=c.n(j),l=c(21820),m=c.n(l),n=c(24424);let o=(0,g.promisify)(f.exec),p=()=>k().join(m().homedir(),".config","opencode"),q=()=>k().join(p(),"opencode.json"),r=async()=>{try{let a="win32"===m().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(q()),!0}catch{return!1}}},s=async()=>{try{let a=await i().readFile(q(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},t="krouter",u="krouter/",v=/^krouter\//,w=a=>a?.provider?.[t]??null;async function x(){try{if(!await r())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await s(),b=w(a),c=b?.models||{};return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!w(a),configPath:q(),opencode:{models:Object.keys(c),activeModel:v.test(a?.model||"")?a.model.replace(v,""):null,baseURL:b?.options?.baseURL||null}})}catch(a){return console.log("Error checking opencode settings:",a),e.NextResponse.json({error:"Failed to check opencode settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:d,models:f,activeModel:g,subagentModel:h}=await a.json(),j=Array.isArray(f)?f.slice():"string"==typeof d?[d]:[];if(!b||0===j.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let k=p(),l=q();await i().mkdir(k,{recursive:!0});let m={};try{let a=await i().readFile(l,"utf-8");m=JSON.parse(a)}catch{}let n=b.endsWith("/v1")?b:`${b}/v1`,o=h||j[0];m.provider||(m.provider={});let r=w(m)||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(r.options={...r.options,baseURL:n,apiKey:c||"sk_krouter"},r.models=r.models||{},j))a&&"string"==typeof a&&(r.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(m.provider[t]=r,""===g)m.model="";else{let a=g||j[0];a&&(m.model=`${u}${a}`)}return m.agent||(m.agent={}),m.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`${u}${o}`},await i().writeFile(l,JSON.stringify(m,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:l})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function z(a){try{let{clearActiveModel:b}=await a.json(),c=q(),d={};try{let a=await i().readFile(c,"utf-8");d=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file found"});throw a}return!0===b&&v.test(d.model||"")&&(d.model=""),await i().writeFile(c,JSON.stringify(d,null,2)),e.NextResponse.json({success:!0,message:"Settings updated"})}catch(a){return console.log("Error patching opencode settings:",a),e.NextResponse.json({error:"Failed to patch settings"},{status:500})}}async function A(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=q(),f={};try{let a=await i().readFile(d,"utf-8");f=JSON.parse(a)}catch(a){if("ENOENT"===a.code)return e.NextResponse.json({success:!0,message:"No config file to reset"});throw a}let g=w(f),h=f.provider?.[t]?t:null;if(c&&g?.models&&h){if(delete g.models[c],0===Object.keys(g.models).length)delete f.provider[t],v.test(f.model||"")&&delete f.model;else if(f.model===`${u}${c}`){let a=Object.keys(g.models);f.model=`${u}${a[0]}`}}else f.provider&&delete f.provider[t],v.test(f.model||"")&&delete f.model;return v.test(f.agent?.explorer?.model||"")&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await i().writeFile(d,JSON.stringify(f,null,2)),e.NextResponse.json({success:!0,message:c?`Model "${c}" removed`:"kRouter settings removed from OpenCode"})}catch(a){return console.log("Error resetting opencode settings:",a),e.NextResponse.json({error:"Failed to reset opencode settings"},{status:500})}}(0,n.D)([x,y,z,A]),(0,d.A)(x,"00014f28ebf4d0ce7005f7bee6343a6017d1ee0ca4",null),(0,d.A)(y,"407ad1efc4790f8937057a3a97ec6948067a112680",null),(0,d.A)(z,"406e81596d57862cef0262ec76cdfa0a2edae87cd4",null),(0,d.A)(A,"40fbdb11ef4e67f8c3132d0f3c3cdd7a2fa4985887",null)},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77598:a=>{a.exports=require("node:crypto")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,9528,5024,4404,5681,2365],()=>b(b.s=22321));module.exports=c})();