@sifxprime/krouter 0.5.166 → 0.5.167

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 (860) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +14 -14
  3. package/app/.next-cli-build/build-manifest.json +5 -5
  4. package/app/.next-cli-build/prerender-manifest.json +29 -29
  5. package/app/.next-cli-build/react-loadable-manifest.json +2 -2
  6. package/app/.next-cli-build/required-server-files.json +16 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/environment/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page.js +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/presidio/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/_global-error/page.js +1 -1
  58. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  60. package/app/.next-cli-build/server/app/_global-error.rsc +15 -11
  61. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +15 -11
  62. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -16
  63. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +3 -1
  64. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  65. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  67. package/app/.next-cli-build/server/app/_not-found.rsc +26 -16
  68. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +26 -16
  69. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +32 -22
  70. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -1
  71. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  72. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  73. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  74. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  75. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  76. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  77. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  78. package/app/.next-cli-build/server/app/api/cache/route.js +1 -1
  79. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +6 -6
  80. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  81. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  82. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  83. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +3 -3
  84. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  85. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  86. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  87. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  88. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  89. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  90. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  91. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +4 -4
  92. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -3
  93. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  94. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  95. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  96. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  97. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  99. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  101. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  103. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/health/route.js +1 -1
  105. package/app/.next-cli-build/server/app/api/import/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/init/route.js +1 -1
  107. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  109. package/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  112. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  117. package/app/.next-cli-build/server/app/api/mitm/cert/route.js +1 -1
  118. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  120. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  121. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/models/live/route.js +1 -1
  123. package/app/.next-cli-build/server/app/api/models/live-by-connection/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/models/preview/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  127. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  128. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  129. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  131. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  134. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  136. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  137. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  138. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  139. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  141. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  142. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  143. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +2 -2
  144. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  145. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  147. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/providers/health/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  150. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  151. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  152. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  154. package/app/.next-cli-build/server/app/api/providers/zenith/log/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/providers/zenith/route.js +1 -1
  156. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  158. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  160. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  162. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  163. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  164. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  165. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  166. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  167. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  168. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  169. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/settings/environment/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/settings/presidio/route.js +3 -3
  172. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  176. package/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  178. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  179. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  181. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  183. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  185. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  187. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  190. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  191. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  193. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  195. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  197. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  198. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  200. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +2 -2
  201. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  206. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  207. package/app/.next-cli-build/server/app/api/v1/models/[...model]/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  209. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  211. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  212. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/v1/search/route.js +2 -2
  214. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  216. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  218. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  220. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  222. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  224. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  225. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  226. package/app/.next-cli-build/server/app/callback.html +1 -1
  227. package/app/.next-cli-build/server/app/callback.rsc +29 -18
  228. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +29 -18
  229. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -1
  230. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +37 -26
  231. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  232. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +31 -18
  233. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +38 -26
  234. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +31 -18
  235. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +5 -1
  236. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  237. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +34 -19
  238. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +40 -27
  239. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +34 -19
  240. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +5 -1
  241. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  242. package/app/.next-cli-build/server/app/dashboard/combos.rsc +35 -21
  243. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +42 -30
  244. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +35 -21
  245. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +5 -1
  246. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  247. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +33 -19
  248. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +39 -27
  249. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +33 -19
  250. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +5 -1
  251. package/app/.next-cli-build/server/app/dashboard/environment.html +1 -1
  252. package/app/.next-cli-build/server/app/dashboard/environment.rsc +34 -21
  253. package/app/.next-cli-build/server/app/dashboard/environment.segments/!KGRhc2hib2FyZCk/dashboard/environment/__PAGE__.segment.rsc +41 -30
  254. package/app/.next-cli-build/server/app/dashboard/environment.segments/_full.segment.rsc +34 -21
  255. package/app/.next-cli-build/server/app/dashboard/environment.segments/_tree.segment.rsc +5 -1
  256. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  257. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +36 -23
  258. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +44 -32
  259. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +36 -23
  260. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +6 -1
  261. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  262. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +33 -18
  263. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +40 -26
  264. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +33 -18
  265. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +5 -1
  266. package/app/.next-cli-build/server/app/dashboard/presidio.html +1 -1
  267. package/app/.next-cli-build/server/app/dashboard/presidio.rsc +34 -21
  268. package/app/.next-cli-build/server/app/dashboard/presidio.segments/!KGRhc2hib2FyZCk/dashboard/presidio/__PAGE__.segment.rsc +41 -30
  269. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_full.segment.rsc +34 -21
  270. package/app/.next-cli-build/server/app/dashboard/presidio.segments/_tree.segment.rsc +5 -1
  271. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  272. package/app/.next-cli-build/server/app/dashboard/profile.rsc +34 -21
  273. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +41 -30
  274. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +34 -21
  275. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +5 -1
  276. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  277. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +35 -23
  278. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +44 -32
  279. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +35 -23
  280. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +6 -1
  281. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  282. package/app/.next-cli-build/server/app/dashboard/providers.rsc +34 -21
  283. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +41 -30
  284. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +34 -21
  285. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +5 -1
  286. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  287. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +34 -21
  288. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +41 -30
  289. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +34 -21
  290. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +5 -1
  291. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  292. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +31 -18
  293. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +38 -26
  294. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +31 -18
  295. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +5 -1
  296. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  297. package/app/.next-cli-build/server/app/dashboard/quota.rsc +32 -19
  298. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +39 -28
  299. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +32 -19
  300. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +5 -1
  301. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  302. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  303. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +31 -18
  305. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +31 -18
  306. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +5 -1
  307. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +40 -27
  308. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/skills.rsc +34 -21
  310. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +41 -30
  311. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +34 -21
  312. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +5 -1
  313. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  314. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +31 -18
  315. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +38 -26
  316. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +31 -18
  317. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +5 -1
  318. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/translator.rsc +34 -21
  320. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +41 -30
  321. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +34 -21
  322. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +5 -1
  323. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  324. package/app/.next-cli-build/server/app/dashboard/usage.rsc +34 -21
  325. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +41 -30
  326. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +34 -21
  327. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +5 -1
  328. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  329. package/app/.next-cli-build/server/app/dashboard.rsc +32 -19
  330. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +38 -25
  331. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +32 -19
  332. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +4 -1
  333. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -1
  334. package/app/.next-cli-build/server/app/index.html +1 -1
  335. package/app/.next-cli-build/server/app/index.rsc +24 -15
  336. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +29 -20
  337. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +24 -15
  338. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -1
  339. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  340. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  341. package/app/.next-cli-build/server/app/landing.html +1 -1
  342. package/app/.next-cli-build/server/app/landing.rsc +30 -18
  343. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +30 -18
  344. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -1
  345. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +38 -26
  346. package/app/.next-cli-build/server/app/login/page.js +1 -1
  347. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  348. package/app/.next-cli-build/server/app/login.html +1 -1
  349. package/app/.next-cli-build/server/app/login.rsc +29 -18
  350. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +29 -18
  351. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +3 -1
  352. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +37 -26
  353. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  354. package/app/.next-cli-build/server/app/page.js +1 -1
  355. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  356. package/app/.next-cli-build/server/app-paths-manifest.json +14 -14
  357. package/app/.next-cli-build/server/chunks/1220.js +3 -3
  358. package/app/.next-cli-build/server/chunks/1344.js +2 -2
  359. package/app/.next-cli-build/server/chunks/1350.js +1 -1
  360. package/app/.next-cli-build/server/chunks/1450.js +1 -1
  361. package/app/.next-cli-build/server/chunks/1738.js +1 -1
  362. package/app/.next-cli-build/server/chunks/1813.js +23 -1
  363. package/app/.next-cli-build/server/chunks/2430.js +215 -31
  364. package/app/.next-cli-build/server/chunks/2722.js +6 -6
  365. package/app/.next-cli-build/server/chunks/2750.js +1 -1
  366. package/app/.next-cli-build/server/chunks/2970.js +163 -23
  367. package/app/.next-cli-build/server/chunks/3120.js +1 -1
  368. package/app/.next-cli-build/server/chunks/369.js +5 -5
  369. package/app/.next-cli-build/server/chunks/4161.js +1 -1
  370. package/app/.next-cli-build/server/chunks/4177.js +1 -1
  371. package/app/.next-cli-build/server/chunks/4306.js +1 -1
  372. package/app/.next-cli-build/server/chunks/4380.js +1 -1
  373. package/app/.next-cli-build/server/chunks/4730.js +2 -2
  374. package/app/.next-cli-build/server/chunks/4884.js +1 -1
  375. package/app/.next-cli-build/server/chunks/523.js +1 -1
  376. package/app/.next-cli-build/server/chunks/5330.js +2 -2
  377. package/app/.next-cli-build/server/chunks/5433.js +1 -1
  378. package/app/.next-cli-build/server/chunks/5470.js +3 -3
  379. package/app/.next-cli-build/server/chunks/5573.js +1 -1
  380. package/app/.next-cli-build/server/chunks/5718.js +1 -1
  381. package/app/.next-cli-build/server/chunks/595.js +1 -1
  382. package/app/.next-cli-build/server/chunks/6182.js +2 -2
  383. package/app/.next-cli-build/server/chunks/7153.js +1 -1
  384. package/app/.next-cli-build/server/chunks/7774.js +13 -13
  385. package/app/.next-cli-build/server/chunks/7833.js +1 -1
  386. package/app/.next-cli-build/server/chunks/8238.js +1 -1
  387. package/app/.next-cli-build/server/chunks/8895.js +1 -1
  388. package/app/.next-cli-build/server/chunks/8962.js +1 -1
  389. package/app/.next-cli-build/server/chunks/9055.js +2 -2
  390. package/app/.next-cli-build/server/chunks/9958.js +1 -1
  391. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  392. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  393. package/app/.next-cli-build/server/middleware.js +186 -24
  394. package/app/.next-cli-build/server/pages/404.html +1 -1
  395. package/app/.next-cli-build/server/pages/500.html +1 -1
  396. package/app/.next-cli-build/server/preview-props.json +5 -0
  397. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  398. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  399. package/app/.next-cli-build/static/chunks/1321-3997ec181addbfaa.js +1 -0
  400. package/app/.next-cli-build/static/chunks/3794-39f2d5bb0d40336b.js +52 -0
  401. package/app/.next-cli-build/static/chunks/4bd1b696-8cd12253b448cc13.js +1 -0
  402. package/app/.next-cli-build/static/chunks/5353-0085e26d68aca1f0.js +1 -0
  403. package/app/.next-cli-build/static/chunks/5772-9e7c7f235304c527.js +3 -0
  404. package/app/.next-cli-build/static/chunks/6069-31c2febe26d36d92.js +73 -0
  405. package/app/.next-cli-build/static/chunks/{6357.aa5754cdb37976a7.js → 6357.5f2532e76bf2cc51.js} +1 -1
  406. package/app/.next-cli-build/static/chunks/7504-5249aa88b6205df1.js +64 -0
  407. package/app/.next-cli-build/static/chunks/8202.69dace5daa86686d.js +1 -0
  408. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-8a99890727166f8a.js +1 -0
  409. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-ce0c6b650a822e25.js +1 -0
  410. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-589743e8ea1d9673.js +11 -0
  411. package/app/.next-cli-build/static/chunks/main-00cd8c01f6f6e461.js +5 -0
  412. package/app/.next-cli-build/static/chunks/{webpack-53609978799ebbca.js → webpack-cc312041cf710f25.js} +1 -1
  413. package/app/cli/package.json +1 -1
  414. package/app/node_modules/@next/env/package.json +1 -1
  415. package/app/node_modules/nanoid/package.json +3 -3
  416. package/app/node_modules/next/dist/build/analysis/get-page-static-info.js +58 -76
  417. package/app/node_modules/next/dist/build/babel/loader/get-config.js +7 -16
  418. package/app/node_modules/next/dist/build/babel/plugins/next-font-unsupported.js +1 -5
  419. package/app/node_modules/next/dist/build/babel/plugins/next-page-config.js +5 -25
  420. package/app/node_modules/next/dist/build/babel/plugins/next-page-disallow-re-export-all-exports.js +1 -5
  421. package/app/node_modules/next/dist/build/babel/plugins/next-ssg-transform.js +4 -20
  422. package/app/node_modules/next/dist/build/browser-variant-modules.js +1 -0
  423. package/app/node_modules/next/dist/build/create-compiler-aliases.js +19 -11
  424. package/app/node_modules/next/dist/build/define-env.js +12 -18
  425. package/app/node_modules/next/dist/build/entries.js +132 -8
  426. package/app/node_modules/next/dist/build/get-babel-loader-config.js +10 -10
  427. package/app/node_modules/next/dist/build/get-convention-file-base-name.js +29 -0
  428. package/app/node_modules/next/dist/build/get-static-info-including-layouts.js +0 -1
  429. package/app/node_modules/next/dist/build/handle-externals.js +1 -5
  430. package/app/node_modules/next/dist/build/load-jsconfig.js +1 -5
  431. package/app/node_modules/next/dist/build/lockfile.js +1 -5
  432. package/app/node_modules/next/dist/build/next-config-ts/transpile-config.js +1 -5
  433. package/app/node_modules/next/dist/build/nft.js +119 -0
  434. package/app/node_modules/next/dist/build/normalize-catchall-routes.js +18 -66
  435. package/app/node_modules/next/dist/build/print-build-errors.js +57 -7
  436. package/app/node_modules/next/dist/build/route-discovery.js +32 -4
  437. package/app/node_modules/next/dist/build/segment-config/app/app-segment-config.js +19 -5
  438. package/app/node_modules/next/dist/build/segment-config/app/app-segments.js +120 -29
  439. package/app/node_modules/next/dist/build/segment-config/app/collect-root-param-keys.js +1 -5
  440. package/app/node_modules/next/dist/build/static-paths/app/extract-pathname-route-param-segments-from-loader-tree.js +8 -2
  441. package/app/node_modules/next/dist/build/static-paths/app.js +230 -133
  442. package/app/node_modules/next/dist/build/static-paths/pages.js +8 -40
  443. package/app/node_modules/next/dist/build/static-paths/param-matching.js +200 -0
  444. package/app/node_modules/next/dist/build/swc/index.js +92 -162
  445. package/app/node_modules/next/dist/build/utils.js +180 -90
  446. package/app/node_modules/next/dist/build/webpack/cache-invalidation.js +1 -5
  447. package/app/node_modules/next/dist/build/webpack/config/blocks/css/plugins.js +7 -35
  448. package/app/node_modules/next/dist/build/webpack/loaders/css-loader/src/CssSyntaxError.js +0 -5
  449. package/app/node_modules/next/dist/build/webpack/loaders/css-loader/src/camelcase.js +1 -5
  450. package/app/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js +5 -25
  451. package/app/node_modules/next/dist/build/webpack/loaders/css-loader/src/plugins/postcss-import-parser.js +4 -20
  452. package/app/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/index.js +3 -16
  453. package/app/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/interface.js +0 -1
  454. package/app/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/loader.js +2 -10
  455. package/app/node_modules/next/dist/build/webpack/loaders/next-flight-css-loader.js +1 -5
  456. package/app/node_modules/next/dist/build/webpack/loaders/next-flight-loader/index.js +3 -15
  457. package/app/node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js +3 -15
  458. package/app/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Error.js +0 -5
  459. package/app/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/Warning.js +0 -5
  460. package/app/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js +2 -10
  461. package/app/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/index.js +2 -6
  462. package/app/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/file-protocol.js +2 -10
  463. package/app/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/join-function.js +1 -5
  464. package/app/node_modules/next/dist/build/webpack/loaders/resolve-url-loader/lib/postcss.js +1 -5
  465. package/app/node_modules/next/dist/build/webpack/plugins/build-manifest-plugin.js +1 -5
  466. package/app/node_modules/next/dist/build/webpack/plugins/deferred-entries-plugin.js +9 -0
  467. package/app/node_modules/next/dist/build/webpack/plugins/flight-manifest-plugin.js +2 -6
  468. package/app/node_modules/next/dist/build/webpack/plugins/middleware-plugin.js +1 -5
  469. package/app/node_modules/next/dist/build/webpack/plugins/next-trace-entrypoints-plugin.js +2 -10
  470. package/app/node_modules/next/dist/build/webpack/plugins/next-types-plugin/index.js +3 -1
  471. package/app/node_modules/next/dist/build/webpack/plugins/slow-module-detection-plugin.js +3 -15
  472. package/app/node_modules/next/dist/build/webpack/plugins/subresource-integrity-plugin.js +1 -5
  473. package/app/node_modules/next/dist/build/webpack-config.js +16 -33
  474. package/app/node_modules/next/dist/cli/next-test.js +4 -0
  475. package/app/node_modules/next/dist/client/app-call-server.js +16 -18
  476. package/app/node_modules/next/dist/client/components/app-router-instance.js +43 -187
  477. package/app/node_modules/next/dist/client/components/{segment-cache/navigation.js → app-router-state.js} +88 -334
  478. package/app/node_modules/next/dist/client/components/app-router-utils.js +1 -5
  479. package/app/node_modules/next/dist/client/components/app-router.js +83 -74
  480. package/app/node_modules/next/dist/client/components/dev-root-http-access-fallback-boundary.js +1 -5
  481. package/app/node_modules/next/dist/client/components/forbidden.js +2 -10
  482. package/app/node_modules/next/dist/client/components/handle-isr-error.js +19 -4
  483. package/app/node_modules/next/dist/client/components/instant-samples.js +4 -11
  484. package/app/node_modules/next/dist/client/components/links.js +6 -7
  485. package/app/node_modules/next/dist/client/components/navigation-dynamic-rendering.js +3 -3
  486. package/app/node_modules/next/dist/client/components/navigation-untracked.js +1 -2
  487. package/app/node_modules/next/dist/client/components/navigation.js +2 -6
  488. package/app/node_modules/next/dist/client/components/navigation.react-server.js +1 -5
  489. package/app/node_modules/next/dist/client/components/navigator.js +73 -0
  490. package/app/node_modules/next/dist/client/components/not-found.js +1 -5
  491. package/app/node_modules/next/dist/client/components/prefetch.js +83 -0
  492. package/app/node_modules/next/dist/client/components/readonly-url-search-params.js +0 -5
  493. package/app/node_modules/next/dist/client/components/redirect.js +3 -15
  494. package/app/node_modules/next/dist/client/components/{router-reducer/ppr-navigations.js → render-tree.js} +365 -400
  495. package/app/node_modules/next/dist/client/components/router-reducer/compute-changed-path.js +13 -5
  496. package/app/node_modules/next/dist/client/components/router-reducer/create-initial-router-state.js +67 -54
  497. package/app/node_modules/next/dist/client/components/router-reducer/create-router-cache-key.js +1 -7
  498. package/app/node_modules/next/dist/client/components/router-reducer/create-segment-key.js +42 -0
  499. package/app/node_modules/next/dist/client/components/router-reducer/fetch-server-response.js +71 -50
  500. package/app/node_modules/next/dist/client/components/router-reducer/is-navigating-to-new-root-layout.js +4 -4
  501. package/app/node_modules/next/dist/client/components/router-reducer/reducers/hmr-refresh-reducer.js +2 -2
  502. package/app/node_modules/next/dist/client/components/router-reducer/reducers/navigate-reducer.js +5 -5
  503. package/app/node_modules/next/dist/client/components/router-reducer/reducers/refresh-reducer.js +11 -8
  504. package/app/node_modules/next/dist/client/components/router-reducer/reducers/restore-reducer.js +12 -9
  505. package/app/node_modules/next/dist/client/components/router-reducer/reducers/server-action-reducer.js +30 -29
  506. package/app/node_modules/next/dist/client/components/router-reducer/reducers/server-patch-reducer.js +5 -5
  507. package/app/node_modules/next/dist/client/components/router-reducer/router-reducer.js +2 -10
  508. package/app/node_modules/next/dist/client/components/segment-cache/bfcache.js +11 -21
  509. package/app/node_modules/next/dist/client/components/segment-cache/cache.js +1168 -1181
  510. package/app/node_modules/next/dist/client/components/segment-cache/decode-server-response.js +419 -0
  511. package/app/node_modules/next/dist/client/components/segment-cache/navigation-testing-lock.js +1 -1
  512. package/app/node_modules/next/dist/client/components/segment-cache/optimistic-routes.js +77 -82
  513. package/app/node_modules/next/dist/client/components/segment-cache/scheduler.js +464 -425
  514. package/app/node_modules/next/dist/client/components/segment-cache/types.js +12 -3
  515. package/app/node_modules/next/dist/client/components/segment-cache/vary-path.js +140 -126
  516. package/app/node_modules/next/dist/client/components/sequential-router-queue.js +163 -0
  517. package/app/node_modules/next/dist/client/components/unauthorized.js +2 -10
  518. package/app/node_modules/next/dist/client/components/unstable-rethrow.js +1 -2
  519. package/app/node_modules/next/dist/client/components/use-action-queue.js +2 -10
  520. package/app/node_modules/next/dist/client/dev/debug-channel.js +6 -323
  521. package/app/node_modules/next/dist/client/dev/hot-reloader/app/hot-reloader-app.js +49 -31
  522. package/app/node_modules/next/dist/client/dev/hot-reloader/app/web-socket.js +14 -21
  523. package/app/node_modules/next/dist/client/dev/hot-reloader/pages/hot-reloader-pages.js +15 -6
  524. package/app/node_modules/next/dist/client/dev/hot-reloader/runtime-error-state.js +72 -0
  525. package/app/node_modules/next/dist/client/flight-data-helpers.js +41 -94
  526. package/app/node_modules/next/dist/client/route-loader.js +6 -30
  527. package/app/node_modules/next/dist/client/route-params.js +34 -12
  528. package/app/node_modules/next/dist/client/router.js +2 -10
  529. package/app/node_modules/next/dist/client/sequential-call-server.js +45 -0
  530. package/app/node_modules/next/dist/compiled/@mswjs/interceptors/ClientRequest/index.js +1 -1
  531. package/app/node_modules/next/dist/compiled/next-devtools/index.js +279 -229
  532. package/app/node_modules/next/dist/compiled/next-server/app-page-experimental.runtime.prod.js +203 -59
  533. package/app/node_modules/next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js +203 -59
  534. package/app/node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js +203 -59
  535. package/app/node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js +203 -59
  536. package/app/node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js +5 -3
  537. package/app/node_modules/next/dist/compiled/next-server/pages-turbo.runtime.prod.js +13 -13
  538. package/app/node_modules/next/dist/compiled/next-server/pages.runtime.prod.js +13 -13
  539. package/app/node_modules/next/dist/compiled/react-is/package.json +1 -1
  540. package/app/node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js +1 -1
  541. package/app/node_modules/next/dist/compiled/unistore/unistore.js +1 -1
  542. package/app/node_modules/next/dist/experimental/testmode/fetch.js +2 -10
  543. package/app/node_modules/next/dist/export/helpers/create-incremental-cache.js +21 -16
  544. package/app/node_modules/next/dist/export/utils.js +21 -8
  545. package/app/node_modules/next/dist/lib/batcher.js +2 -2
  546. package/app/node_modules/next/dist/lib/dist-dir.js +88 -0
  547. package/app/node_modules/next/dist/lib/download-swc.js +2 -10
  548. package/app/node_modules/next/dist/lib/fallback.js +3 -15
  549. package/app/node_modules/next/dist/lib/find-pages-dir.js +2 -10
  550. package/app/node_modules/next/dist/lib/helpers/get-cache-directory.js +1 -5
  551. package/app/node_modules/next/dist/lib/helpers/get-registry.js +1 -5
  552. package/app/node_modules/next/dist/lib/is-error.js +3 -15
  553. package/app/node_modules/next/dist/lib/is-serializable-props.js +6 -35
  554. package/app/node_modules/next/dist/lib/patch-incorrect-lockfile.js +4 -8
  555. package/app/node_modules/next/dist/lib/picocolors.js +10 -0
  556. package/app/node_modules/next/dist/lib/recursive-delete.js +50 -11
  557. package/app/node_modules/next/dist/lib/resolve-from.js +2 -10
  558. package/app/node_modules/next/dist/lib/static-env.js +1 -5
  559. package/app/node_modules/next/dist/lib/typescript/getTypeScriptConfiguration.js +3 -15
  560. package/app/node_modules/next/dist/lib/typescript/missingDependencyError.js +1 -5
  561. package/app/node_modules/next/dist/lib/typescript/runTypeCheck.js +1 -9
  562. package/app/node_modules/next/dist/lib/typescript/runTypeCheckCli.js +0 -1
  563. package/app/node_modules/next/dist/lib/typescript/runTypeScriptCli.js +4 -16
  564. package/app/node_modules/next/dist/lib/verify-partytown-setup.js +1 -5
  565. package/app/node_modules/next/dist/lib/warn-missing-react-dependencies.js +33 -0
  566. package/app/node_modules/next/dist/next-devtools/server/attach-nodejs-debugger-middleware.js +1 -5
  567. package/app/node_modules/next/dist/next-devtools/server/shared.js +3 -2
  568. package/app/node_modules/next/dist/next-devtools/shared/console-error.js +1 -5
  569. package/app/node_modules/next/dist/next-devtools/userspace/app/errors/replay-ssr-only-errors.js +1 -5
  570. package/app/node_modules/next/dist/next-devtools/userspace/app/errors/runtime-error-metadata.js +39 -0
  571. package/app/node_modules/next/dist/next-devtools/userspace/app/errors/stitched-error.js +1 -5
  572. package/app/node_modules/next/dist/next-devtools/userspace/app/errors/use-error-handler.js +48 -19
  573. package/app/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js +1 -5
  574. package/app/node_modules/next/dist/server/accept-header.js +3 -15
  575. package/app/node_modules/next/dist/server/after/after-context.js +5 -25
  576. package/app/node_modules/next/dist/server/after/awaiter.js +1 -5
  577. package/app/node_modules/next/dist/server/after/run-with-after.js +2 -2
  578. package/app/node_modules/next/dist/server/api-utils/index.js +1 -10
  579. package/app/node_modules/next/dist/server/api-utils/node/parse-body.js +3 -15
  580. package/app/node_modules/next/dist/server/app-render/action-async-storage-instance.js +1 -1
  581. package/app/node_modules/next/dist/server/app-render/action-handler.js +104 -141
  582. package/app/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js +1 -1
  583. package/app/node_modules/next/dist/server/app-render/app-render-prerender-utils.js +6 -30
  584. package/app/node_modules/next/dist/server/app-render/app-render-render-utils.js +1 -5
  585. package/app/node_modules/next/dist/server/app-render/app-render-scheduling.js +3 -15
  586. package/app/node_modules/next/dist/server/app-render/app-render.js +1346 -1211
  587. package/app/node_modules/next/dist/server/app-render/async-local-storage.js +11 -6
  588. package/app/node_modules/next/dist/server/app-render/blocking-route-messages.js +119 -70
  589. package/app/node_modules/next/dist/server/app-render/cache-signal.js +61 -35
  590. package/app/node_modules/next/dist/server/app-render/console-async-storage-instance.js +1 -1
  591. package/app/node_modules/next/dist/server/app-render/create-component-tree.js +136 -160
  592. package/app/node_modules/next/dist/server/app-render/create-error-handler.js +12 -6
  593. package/app/node_modules/next/dist/server/app-render/create-transport-tree-from-loader-tree.js +190 -0
  594. package/app/node_modules/next/dist/server/app-render/debug-channel-server.web.js +1 -5
  595. package/app/node_modules/next/dist/server/app-render/dev-validation-scheduler.js +4 -5
  596. package/app/node_modules/next/dist/server/app-render/dev-validation-worker-snapshot.js +3 -1
  597. package/app/node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js +1 -1
  598. package/app/node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js +26 -3
  599. package/app/node_modules/next/dist/server/app-render/dynamic-rendering-client.js +124 -0
  600. package/app/node_modules/next/dist/server/app-render/dynamic-rendering.js +260 -329
  601. package/app/node_modules/next/dist/server/app-render/encryption-utils.js +1 -5
  602. package/app/node_modules/next/dist/server/app-render/instant-validation/boundary-tracking.js +2 -2
  603. package/app/node_modules/next/dist/server/app-render/instant-validation/instant-config.js +4 -12
  604. package/app/node_modules/next/dist/server/app-render/instant-validation/instant-samples.js +13 -62
  605. package/app/node_modules/next/dist/server/app-render/instant-validation/stream-utils.js +2 -10
  606. package/app/node_modules/next/dist/server/app-render/manifests-singleton.js +110 -38
  607. package/app/node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js +1 -1
  608. package/app/node_modules/next/dist/server/app-render/parse-and-validate-flight-router-state.js +3 -15
  609. package/app/node_modules/next/dist/server/app-render/postponed-state.js +87 -51
  610. package/app/node_modules/next/dist/server/app-render/prospective-render-utils.js +2 -6
  611. package/app/node_modules/next/dist/server/app-render/render-in-browser.js +27 -0
  612. package/app/node_modules/next/dist/server/app-render/required-scripts.js +1 -5
  613. package/app/node_modules/next/dist/server/app-render/segment-config/ensure-static.js +206 -0
  614. package/app/node_modules/next/dist/server/app-render/staged-rendering.js +46 -54
  615. package/app/node_modules/next/dist/server/app-render/stream-ops.node.js +18 -12
  616. package/app/node_modules/next/dist/server/app-render/stream-ops.web.js +4 -20
  617. package/app/node_modules/next/dist/server/app-render/sync-io-messages.js +2 -10
  618. package/app/node_modules/next/dist/server/app-render/types.js +2 -1
  619. package/app/node_modules/next/dist/server/app-render/use-flight-response.js +4 -17
  620. package/app/node_modules/next/dist/server/app-render/vary-params.js +12 -11
  621. package/app/node_modules/next/dist/server/app-render/walk-tree-with-flight-router-state.js +95 -97
  622. package/app/node_modules/next/dist/server/app-render/work-async-storage-instance.js +1 -1
  623. package/app/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js +1 -1
  624. package/app/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js +36 -26
  625. package/app/node_modules/next/dist/server/async-storage/draft-mode-provider.js +1 -5
  626. package/app/node_modules/next/dist/server/async-storage/request-store.js +6 -5
  627. package/app/node_modules/next/dist/server/async-storage/work-store.js +24 -26
  628. package/app/node_modules/next/dist/server/base-http/node.js +1 -5
  629. package/app/node_modules/next/dist/server/base-server.js +346 -155
  630. package/app/node_modules/next/dist/server/client-component-renderer-logger.js +129 -28
  631. package/app/node_modules/next/dist/server/config-schema.js +61 -9
  632. package/app/node_modules/next/dist/server/config-shared.js +26 -4
  633. package/app/node_modules/next/dist/server/config.js +154 -332
  634. package/app/node_modules/next/dist/server/dev/debug-channel.js +1 -5
  635. package/app/node_modules/next/dist/server/dev/dev-validation-worker-pool.js +1 -0
  636. package/app/node_modules/next/dist/server/dev/get-source-map-from-file.js +5 -25
  637. package/app/node_modules/next/dist/server/dev/hot-middleware.js +27 -1
  638. package/app/node_modules/next/dist/server/dev/hot-reloader-turbopack.js +338 -200
  639. package/app/node_modules/next/dist/server/dev/hot-reloader-types.js +3 -0
  640. package/app/node_modules/next/dist/server/dev/hot-reloader-webpack.js +26 -20
  641. package/app/node_modules/next/dist/server/dev/messages.js +2 -10
  642. package/app/node_modules/next/dist/server/dev/middleware-turbopack.js +4 -20
  643. package/app/node_modules/next/dist/server/dev/middleware-webpack.js +2 -10
  644. package/app/node_modules/next/dist/server/dev/next-dev-server.js +33 -95
  645. package/app/node_modules/next/dist/server/dev/node-stack-frames.js +2 -19
  646. package/app/node_modules/next/dist/server/dev/on-demand-entry-handler.js +12 -12
  647. package/app/node_modules/next/dist/server/dev/runtime-error-state.js +220 -0
  648. package/app/node_modules/next/dist/server/dev/serialized-errors.js +1 -5
  649. package/app/node_modules/next/dist/server/dev/static-paths-worker.js +16 -15
  650. package/app/node_modules/next/dist/server/dev/turbopack-utils.js +20 -36
  651. package/app/node_modules/next/dist/server/dev/use-cache-probe-pool.js +1 -0
  652. package/app/node_modules/next/dist/server/dynamic-rendering-utils.js +298 -55
  653. package/app/node_modules/next/dist/server/image-optimizer/detect-content-type.js +229 -0
  654. package/app/node_modules/next/dist/server/image-optimizer/extract-etag.js +53 -0
  655. package/app/node_modules/next/dist/server/image-optimizer/get-image-size.js +25 -0
  656. package/app/node_modules/next/dist/server/image-optimizer/get-max-age.js +41 -0
  657. package/app/node_modules/next/dist/server/image-optimizer/get-previously-cached-image-or-null.js +22 -0
  658. package/app/node_modules/next/dist/server/image-optimizer/image-error.js +23 -0
  659. package/app/node_modules/next/dist/server/image-optimizer/image-type.js +86 -0
  660. package/app/node_modules/next/dist/server/image-optimizer/transform.js +227 -0
  661. package/app/node_modules/next/dist/server/image-optimizer.js +78 -674
  662. package/app/node_modules/next/dist/server/lib/app-info-log.js +19 -9
  663. package/app/node_modules/next/dist/server/lib/cache-handlers/default.js +9 -13
  664. package/app/node_modules/next/dist/server/lib/chrome-devtools-workspace.js +1 -5
  665. package/app/node_modules/next/dist/server/lib/dedupe-fetch.js +1 -5
  666. package/app/node_modules/next/dist/server/lib/dev-bundler-service.js +6 -6
  667. package/app/node_modules/next/dist/server/lib/generate-agent-files.js +158 -35
  668. package/app/node_modules/next/dist/server/lib/i18n-provider.js +1 -5
  669. package/app/node_modules/next/dist/server/lib/incremental-cache/file-system-cache.js +14 -20
  670. package/app/node_modules/next/dist/server/lib/incremental-cache/index.js +19 -29
  671. package/app/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js +1 -5
  672. package/app/node_modules/next/dist/server/lib/lru-cache.js +1 -5
  673. package/app/node_modules/next/dist/server/lib/mock-request.js +24 -120
  674. package/app/node_modules/next/dist/server/lib/module-loader/node-module-loader.js +1 -5
  675. package/app/node_modules/next/dist/server/lib/patch-fetch.js +44 -38
  676. package/app/node_modules/next/dist/server/lib/postponed-request-body.js +1 -5
  677. package/app/node_modules/next/dist/server/lib/render-server.js +2 -10
  678. package/app/node_modules/next/dist/server/lib/router-server.js +106 -36
  679. package/app/node_modules/next/dist/server/lib/router-utils/build-data-route.js +26 -3
  680. package/app/node_modules/next/dist/server/lib/router-utils/cache-life-type-utils.js +14 -45
  681. package/app/node_modules/next/dist/server/lib/router-utils/decode-path-params.js +1 -5
  682. package/app/node_modules/next/dist/server/lib/router-utils/filesystem.js +212 -31
  683. package/app/node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js +61 -1
  684. package/app/node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js +1 -5
  685. package/app/node_modules/next/dist/server/lib/router-utils/normalize-catchall-routes.js +320 -0
  686. package/app/node_modules/next/dist/server/lib/router-utils/proxy-request.js +2 -2
  687. package/app/node_modules/next/dist/server/lib/router-utils/resolve-routes.js +17 -11
  688. package/app/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js +258 -76
  689. package/app/node_modules/next/dist/server/lib/router-utils/strict-route-matching-config.js +28 -0
  690. package/app/node_modules/next/dist/server/lib/router-utils/typegen.js +56 -10
  691. package/app/node_modules/next/dist/server/lib/start-server.js +48 -38
  692. package/app/node_modules/next/dist/server/lib/trace/constants.js +40 -0
  693. package/app/node_modules/next/dist/server/lib/trace/request-insights-identity.js +1 -3
  694. package/app/node_modules/next/dist/server/lib/trace/tracer.js +10 -10
  695. package/app/node_modules/next/dist/server/lib/utils.js +66 -15
  696. package/app/node_modules/next/dist/server/load-components.js +7 -2
  697. package/app/node_modules/next/dist/server/load-manifest.external.js +16 -17
  698. package/app/node_modules/next/dist/server/mcp/tools/utils/browser-communication.js +2 -10
  699. package/app/node_modules/next/dist/server/mcp/tools/utils/format-errors.js +5 -5
  700. package/app/node_modules/next/dist/server/next-server.js +130 -124
  701. package/app/node_modules/next/dist/server/next.js +25 -37
  702. package/app/node_modules/next/dist/server/node-environment-extensions/console-dim.external.js +1 -2
  703. package/app/node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js +115 -62
  704. package/app/node_modules/next/dist/server/node-environment-extensions/global-behaviors.js +1 -5
  705. package/app/node_modules/next/dist/server/node-environment-extensions/io-utils.js +11 -10
  706. package/app/node_modules/next/dist/server/node-environment-extensions/process-error-handlers.js +0 -9
  707. package/app/node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js +1 -12
  708. package/app/node_modules/next/dist/server/normalizers/built/app/app-page-normalizer.js +1 -1
  709. package/app/node_modules/next/dist/server/normalizers/request/base-path.js +1 -5
  710. package/app/node_modules/next/dist/server/normalizers/request/next-data.js +1 -5
  711. package/app/node_modules/next/dist/server/normalizers/request/prefix.js +1 -5
  712. package/app/node_modules/next/dist/server/patch-error-inspect.js +19 -11
  713. package/app/node_modules/next/dist/server/pipe-readable.js +42 -30
  714. package/app/node_modules/next/dist/server/render-result.js +5 -17
  715. package/app/node_modules/next/dist/server/render.js +37 -183
  716. package/app/node_modules/next/dist/server/request/fallback-params.js +23 -9
  717. package/app/node_modules/next/dist/server/response-cache/index.js +54 -32
  718. package/app/node_modules/next/dist/server/response-cache/utils.js +1 -5
  719. package/app/node_modules/next/dist/server/resume-data-cache/cache-store.js +18 -0
  720. package/app/node_modules/next/dist/server/resume-data-cache/resume-data-cache.js +51 -49
  721. package/app/node_modules/next/dist/server/revalidation-utils.js +15 -13
  722. package/app/node_modules/next/dist/server/route-modules/app-page/dev-render-context.js +23 -0
  723. package/app/node_modules/next/dist/server/route-modules/app-page/helpers/prerender-manifest-matcher.js +5 -4
  724. package/app/node_modules/next/dist/server/route-modules/app-page/module.js +13 -1
  725. package/app/node_modules/next/dist/server/route-modules/app-page/module.render.js +26 -11
  726. package/app/node_modules/next/dist/server/route-modules/app-page/parse-request-headers.js +58 -0
  727. package/app/node_modules/next/dist/server/route-modules/app-page/vendored/rsc/entrypoints.js +1 -5
  728. package/app/node_modules/next/dist/server/route-modules/app-page/vendored/ssr/entrypoints.js +1 -5
  729. package/app/node_modules/next/dist/server/route-modules/pages/module.render.js +1 -5
  730. package/app/node_modules/next/dist/server/route-modules/pages/pages-handler.js +20 -16
  731. package/app/node_modules/next/dist/server/route-modules/route-module.js +57 -61
  732. package/app/node_modules/next/dist/server/serve-static.js +1 -5
  733. package/app/node_modules/next/dist/server/setup-http-agent-env.js +1 -5
  734. package/app/node_modules/next/dist/server/stream-utils/encoded-tags.js +1 -1
  735. package/app/node_modules/next/dist/server/stream-utils/node-web-streams-helper.js +7 -11
  736. package/app/node_modules/next/dist/server/typescript/constant.js +2 -0
  737. package/app/node_modules/next/dist/server/typescript/rules/config.js +29 -2
  738. package/app/node_modules/next/dist/server/use-cache/cache-life-profile.js +6 -30
  739. package/app/node_modules/next/dist/server/use-cache/constants.js +1 -5
  740. package/app/node_modules/next/dist/server/use-cache/handlers.js +27 -36
  741. package/app/node_modules/next/dist/server/use-cache/tiered-cache-handler.js +6 -4
  742. package/app/node_modules/next/dist/server/web/adapter.js +14 -35
  743. package/app/node_modules/next/dist/server/web/error.js +0 -15
  744. package/app/node_modules/next/dist/server/web/globals.js +3 -15
  745. package/app/node_modules/next/dist/server/web/next-url.js +1 -5
  746. package/app/node_modules/next/dist/server/web/sandbox/context.js +10 -34
  747. package/app/node_modules/next/dist/server/web/sandbox/sandbox.js +1 -5
  748. package/app/node_modules/next/dist/server/web/spec-extension/adapters/headers.js +0 -5
  749. package/app/node_modules/next/dist/server/web/spec-extension/adapters/next-request.js +1 -5
  750. package/app/node_modules/next/dist/server/web/spec-extension/adapters/request-cookies.js +0 -5
  751. package/app/node_modules/next/dist/server/web/spec-extension/fetch-event.js +2 -10
  752. package/app/node_modules/next/dist/server/web/spec-extension/response.js +2 -10
  753. package/app/node_modules/next/dist/server/web/utils.js +1 -5
  754. package/app/node_modules/next/dist/server/web/web-on-close.js +2 -10
  755. package/app/node_modules/next/dist/shared/lib/app-router-types.js +38 -28
  756. package/app/node_modules/next/dist/shared/lib/constants.js +5 -0
  757. package/app/node_modules/next/dist/shared/lib/deployment-id.js +1 -1
  758. package/app/node_modules/next/dist/shared/lib/errors/code-frame.js +3 -2
  759. package/app/node_modules/next/dist/shared/lib/errors/empty-generate-static-params-error.js +1 -5
  760. package/app/node_modules/next/dist/shared/lib/errors/ensure-static-gsp-errors.js +30 -0
  761. package/app/node_modules/next/dist/shared/lib/errors/hard-deprecated-config-error.js +0 -5
  762. package/app/node_modules/next/dist/shared/lib/errors/incompatible-parallel-route-slots-error.js +36 -0
  763. package/app/node_modules/next/dist/shared/lib/errors/missing-canonical-interception-routes-error.js +20 -0
  764. package/app/node_modules/next/dist/shared/lib/errors/unmatched-app-pages-error.js +20 -0
  765. package/app/node_modules/next/dist/shared/lib/get-rspack.js +1 -5
  766. package/app/node_modules/next/dist/shared/lib/html-context.shared-runtime.js +1 -5
  767. package/app/node_modules/next/dist/shared/lib/image-config.js +52 -1
  768. package/app/node_modules/next/dist/shared/lib/instant-messages.js +2 -10
  769. package/app/node_modules/next/dist/shared/lib/invariant-error.js +0 -5
  770. package/app/node_modules/next/dist/shared/lib/lazy-dynamic/react-browser-bailout.js +45 -0
  771. package/app/node_modules/next/dist/shared/lib/magic-identifier.js +5 -25
  772. package/app/node_modules/next/dist/shared/lib/match-remote-pattern.js +1 -5
  773. package/app/node_modules/next/dist/shared/lib/router/router.js +95 -77
  774. package/app/node_modules/next/dist/shared/lib/router/routes/app.js +3 -15
  775. package/app/node_modules/next/dist/shared/lib/router/utils/app-paths.js +6 -1
  776. package/app/node_modules/next/dist/shared/lib/router/utils/get-dynamic-param.js +4 -12
  777. package/app/node_modules/next/dist/shared/lib/router/utils/interception-routes.js +63 -20
  778. package/app/node_modules/next/dist/shared/lib/router/utils/parse-relative-url.js +1 -5
  779. package/app/node_modules/next/dist/shared/lib/router/utils/prepare-destination.js +1 -5
  780. package/app/node_modules/next/dist/shared/lib/router/utils/querystring.js +31 -0
  781. package/app/node_modules/next/dist/shared/lib/router/utils/resolve-param-value.js +1 -5
  782. package/app/node_modules/next/dist/shared/lib/router/utils/route-matcher.js +1 -5
  783. package/app/node_modules/next/dist/shared/lib/router/utils/sorted-routes.js +11 -55
  784. package/app/node_modules/next/dist/shared/lib/rsc-transport.js +108 -0
  785. package/app/node_modules/next/dist/shared/lib/segment-cache/segment-value-encoding.js +0 -13
  786. package/app/node_modules/next/dist/shared/lib/segment-cache/vary-params-decoding.js +48 -27
  787. package/app/node_modules/next/dist/shared/lib/segment.js +1 -13
  788. package/app/node_modules/next/dist/shared/lib/turbopack/compilation-events.js +7 -7
  789. package/app/node_modules/next/dist/shared/lib/turbopack/internal-error.js +2 -7
  790. package/app/node_modules/next/dist/shared/lib/turbopack/manifest-loader.js +2 -6
  791. package/app/node_modules/next/dist/shared/lib/turbopack/utils.js +3 -11
  792. package/app/node_modules/next/dist/shared/lib/utils.js +2 -11
  793. package/app/node_modules/next/dist/shared/lib/zod.js +2 -6
  794. package/app/node_modules/next/dist/telemetry/anonymous-meta.js +1 -1
  795. package/app/node_modules/next/dist/telemetry/detached-flush.js +8 -15
  796. package/app/node_modules/next/dist/telemetry/events/build.js +1 -2
  797. package/app/node_modules/next/dist/telemetry/events/swc-load-failure.js +1 -1
  798. package/app/node_modules/next/dist/telemetry/events/version.js +2 -2
  799. package/app/node_modules/next/dist/telemetry/post-telemetry-payload.js +1 -5
  800. package/app/node_modules/next/dist/telemetry/storage.js +31 -19
  801. package/app/node_modules/next/dist/trace/report/index.js +5 -2
  802. package/app/node_modules/next/dist/trace/report/to-json-build.js +4 -2
  803. package/app/node_modules/next/dist/trace/report/to-json.js +141 -97
  804. package/app/node_modules/next/dist/trace/trace.js +14 -9
  805. package/app/node_modules/next/package.json +12 -11
  806. package/app/package.json +4 -4
  807. package/app/server.js +1 -1
  808. package/app/src/mitm/server.js +43 -39
  809. package/package.json +1 -1
  810. package/app/.next-cli-build/static/chunks/1321-c5b3011761e0228b.js +0 -1
  811. package/app/.next-cli-build/static/chunks/3794-83acfce05009cf38.js +0 -52
  812. package/app/.next-cli-build/static/chunks/4bd1b696-8a4ab4fdf0ae305a.js +0 -1
  813. package/app/.next-cli-build/static/chunks/5353-d31cc8d476bc534e.js +0 -1
  814. package/app/.next-cli-build/static/chunks/5772-6cf78180ecf9dce0.js +0 -3
  815. package/app/.next-cli-build/static/chunks/6069-7e7f824c6e2d4291.js +0 -73
  816. package/app/.next-cli-build/static/chunks/7504-6f7ca1eab428dd5e.js +0 -64
  817. package/app/.next-cli-build/static/chunks/8202.1ffc6ce531e066ce.js +0 -1
  818. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-90b9aed7279ea50e.js +0 -1
  819. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-eaf6e24edeca4e51.js +0 -1
  820. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-2f53d5dd5b247cf1.js +0 -11
  821. package/app/.next-cli-build/static/chunks/main-1eaba0b776683ce7.js +0 -5
  822. package/app/node_modules/next/dist/build/webpack/loaders/lightningcss-loader/src/minify.js +0 -94
  823. package/app/node_modules/next/dist/client/components/match-segments.js +0 -32
  824. package/app/node_modules/next/dist/client/components/router-reducer/reducers/find-head-in-cache.js +0 -63
  825. package/app/node_modules/next/dist/client/components/segment-cache/prefetch.js +0 -32
  826. package/app/node_modules/next/dist/compiled/webpack-sources3/index.js +0 -1
  827. package/app/node_modules/next/dist/compiled/webpack-sources3/package.json +0 -1
  828. package/app/node_modules/next/dist/lib/detached-promise.js +0 -32
  829. package/app/node_modules/next/dist/lib/error-telemetry-utils.js +0 -42
  830. package/app/node_modules/next/dist/next-devtools/server/get-next-error-feedback-middleware.js +0 -42
  831. package/app/node_modules/next/dist/server/app-render/create-flight-router-state-from-loader-tree.js +0 -154
  832. package/app/node_modules/next/dist/server/lib/experimental/ppr.js +0 -47
  833. package/app/node_modules/next/dist/server/lib/params-utils.js +0 -70
  834. package/app/node_modules/next/dist/server/lib/router-utils/is-postpone.js +0 -16
  835. package/app/node_modules/next/dist/server/route-matcher-managers/default-route-matcher-manager.js +0 -239
  836. package/app/node_modules/next/dist/server/route-matcher-managers/dev-route-matcher-manager.js +0 -120
  837. package/app/node_modules/next/dist/server/route-matcher-providers/app-page-route-matcher-provider.js +0 -55
  838. package/app/node_modules/next/dist/server/route-matcher-providers/app-route-route-matcher-provider.js +0 -43
  839. package/app/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-page-route-matcher-provider.js +0 -91
  840. package/app/node_modules/next/dist/server/route-matcher-providers/dev/dev-app-route-route-matcher-provider.js +0 -112
  841. package/app/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-api-route-matcher-provider.js +0 -77
  842. package/app/node_modules/next/dist/server/route-matcher-providers/dev/dev-pages-route-matcher-provider.js +0 -77
  843. package/app/node_modules/next/dist/server/route-matcher-providers/dev/file-cache-route-matcher-provider.js +0 -28
  844. package/app/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/batched-file-reader.js +0 -106
  845. package/app/node_modules/next/dist/server/route-matcher-providers/dev/helpers/file-reader/default-file-reader.js +0 -42
  846. package/app/node_modules/next/dist/server/route-matcher-providers/helpers/cached-route-matcher-provider.js +0 -30
  847. package/app/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/node-manifest-loader.js +0 -34
  848. package/app/node_modules/next/dist/server/route-matcher-providers/helpers/manifest-loaders/server-manifest-loader.js +0 -20
  849. package/app/node_modules/next/dist/server/route-matcher-providers/manifest-route-matcher-provider.js +0 -21
  850. package/app/node_modules/next/dist/server/route-matcher-providers/pages-api-route-matcher-provider.js +0 -55
  851. package/app/node_modules/next/dist/server/route-matcher-providers/pages-route-matcher-provider.js +0 -64
  852. package/app/node_modules/next/dist/server/route-matchers/app-page-route-matcher.js +0 -18
  853. package/app/node_modules/next/dist/server/route-matchers/app-route-route-matcher.js +0 -15
  854. package/app/node_modules/next/dist/server/route-matchers/locale-route-matcher.js +0 -68
  855. package/app/node_modules/next/dist/server/route-matchers/pages-api-route-matcher.js +0 -30
  856. package/app/node_modules/next/dist/server/route-matchers/pages-route-matcher.js +0 -30
  857. package/app/node_modules/next/dist/server/route-matchers/route-matcher.js +0 -54
  858. package/app/node_modules/next/dist/telemetry/events/error-feedback.js +0 -31
  859. /package/app/.next-cli-build/static/{i0cMBMqFdYWpbajovDyfY → KAn3kSXbD7TmQ0msMIDxv}/_buildManifest.js +0 -0
  860. /package/app/.next-cli-build/static/{i0cMBMqFdYWpbajovDyfY → KAn3kSXbD7TmQ0msMIDxv}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=7473,a.ids=[7473],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")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{a.exports=require("os")},28367:(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/auth/status/route",pathname:"/api/auth/status",filename:"route",bundlePath:"app/api/auth/status/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/auth/status/route.js",nextConfigOutput:"standalone",userland:()=>c(81143),...{}}),{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/auth/status/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)}}},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33792:(a,b,c)=>{c.d(b,{Dc:()=>s,OZ:()=>v,YK:()=>q,dY:()=>t,nz:()=>w,tm:()=>u});var d=c(86935),e=c(69614),f=c(34013),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(77598),l=c.n(k),m=c(49120),n=c(89718);let o=new Set(["...","generate-a-long-random-string","change-me-to-a-long-random-secret","your-secure-secret-change-this-to-random-string","your-secure-secret-change-this","9router-default-secret-change-me","votre-secret-s\xe9curis\xe9-changez-le","tu-secreto-seguro-c\xe1mbialo","your-secure-secret","your-secret","generated-secret-here"]),p=new TextEncoder().encode(function(){let a,b=process.env.JWT_SECRET,c=b?(a=b.trim().normalize("NFC"),o.has(a.toLowerCase())?"a documentation placeholder":a.length<32?"shorter than 32 characters":null):null;if(b&&!c)return b;let d=j().join(m.n,"jwt-secret"),e=a=>{b&&!globalThis.__krouterJwtSecretWarned&&(globalThis.__krouterJwtSecretWarned=!0,console.warn(`[auth] Ignoring JWT_SECRET: it is ${c}, so anyone could forge dashboard sessions. ${a} Sessions are no longer shared with other instances using that JWT_SECRET; to share them, set the same long random value on each (openssl rand -hex 32).`))};try{let a=h().readFileSync(d,"utf8").trim();return e(`Using the secret saved in ${d}.`),a}catch{}e(`Generated a new secret in ${d}; existing sessions must log in again.`),h().mkdirSync(m.n,{recursive:!0});let f=l().randomBytes(32).toString("hex");return h().writeFileSync(d,f,{mode:384}),f}());function q(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function r(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("24h").sign(p)}async function s(a){if(!a)return!1;try{return await (0,e.V)(a,p),!0}catch{return!1}}async function t(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,p);return b}catch{return null}}async function u(a,b,c={}){let d=await r(c);a.set("auth_token",d,{httpOnly:!0,secure:q(b),sameSite:"lax",path:"/"})}function v(a){a.delete("auth_token")}async function w(a){if("string"!=typeof a||!a)return!1;let b=await (0,n.mt)(),c=b?.password;return c?f.Ay.compare(a,c):a===(process.env.INITIAL_PASSWORD||"123456")}},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},55511:a=>{a.exports=require("crypto")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77309:(a,b,c)=>{c.d(b,{EJ:()=>n,GY:()=>q,HO:()=>v,Ir:()=>p,Mj:()=>o,Pf:()=>r,Rj:()=>y,Ui:()=>x,gR:()=>t,hT:()=>s,iw:()=>m,sP:()=>u,x8:()=>w});var d=c(77598),e=c.n(d),f=c(37221),g=c(69614),h=c(89718);let i="openid profile email",j="Sign in with OIDC";function k(a){return(a||"").trim().replace(/\/+$/,"")}function l(a){return(a||i).trim()||i}function m(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return k(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return k(new URL(a.url).origin)}function n(a){return!!(k(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function o(){let a=await (0,h.mt)();return["oidc","both"].includes(a.authMode)&&n(a)?{issuerUrl:k(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:l(a.oidcScopes),loginLabel:(a.oidcLoginLabel||j).trim()||j}:null}async function p(a){let b=`${k(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function q(){let a=e().randomBytes(32).toString("base64url"),b=e().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function r(){return e().randomBytes(16).toString("base64url")}function s(){return e().randomBytes(16).toString("base64url")}function t({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=i,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",l(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function u({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function v({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}async function w({idToken:a,issuer:b,audience:c,jwksUri:d,nonce:e}){let h=(0,f.RD)(new URL(d)),{payload:i}=await (0,g.V)(a,h,{issuer:b,audience:c,nonce:e});return i}function x(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function y(a={}){return a.email||""}},77598:a=>{a.exports=require("node:crypto")},80099:a=>{a.exports=require("node:sqlite")},81143:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>i});var d=c(23211),e=c(65573),f=c(89718),g=c(77309),h=c(33792);async function i(){try{let a=await (0,f.mt)(),b=await (0,e.UL)(),c=await (0,h.dY)(b.get("auth_token")?.value),i=!1!==a.requireLogin,j=a.authMode||"password",k=String(c?.oidcName||"").trim(),l=String(c?.oidcEmail||"").trim(),m=k||l||(c?.oidc?"OIDC user":"Password user"),n=c?.oidc?"OIDC":"Password";return d.NextResponse.json({requireLogin:i,authenticated:!!c,authMode:j,oidcConfigured:(0,g.EJ)(a),oidcLoginLabel:(a.oidcLoginLabel||"Sign in with OIDC").trim()||"Sign in with OIDC",hasPassword:!!a.password,displayName:m,loginMethod:n,oidcName:k||null,oidcEmail:l||null,oidcLogin:!!c?.oidc})}catch{return d.NextResponse.json({requireLogin:!0,authenticated:!1,authMode:"password",oidcConfigured:!1,oidcLoginLabel:"Sign in with OIDC",hasPassword:!1,displayName:"Password user",loginMethod:"Password",oidcName:null,oidcEmail:null,oidcLogin:!1})}}},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q9:()=>d.Q9,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9248)},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,6935,2391,5573,4306,4884],()=>b(b.s=28367));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=7473,a.ids=[7473],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")},8128:a=>{a.exports=require("next/dist/server/runtime-reacts.external.js")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{a.exports=require("os")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33792:(a,b,c)=>{c.d(b,{Dc:()=>s,OZ:()=>v,YK:()=>q,dY:()=>t,nz:()=>w,tm:()=>u});var d=c(86935),e=c(69614),f=c(34013),g=c(73024),h=c.n(g),i=c(76760),j=c.n(i),k=c(77598),l=c.n(k),m=c(49120),n=c(89718);let o=new Set(["...","generate-a-long-random-string","change-me-to-a-long-random-secret","your-secure-secret-change-this-to-random-string","your-secure-secret-change-this","9router-default-secret-change-me","votre-secret-s\xe9curis\xe9-changez-le","tu-secreto-seguro-c\xe1mbialo","your-secure-secret","your-secret","generated-secret-here"]),p=new TextEncoder().encode(function(){let a,b=process.env.JWT_SECRET,c=b?(a=b.trim().normalize("NFC"),o.has(a.toLowerCase())?"a documentation placeholder":a.length<32?"shorter than 32 characters":null):null;if(b&&!c)return b;let d=j().join(m.n,"jwt-secret"),e=a=>{b&&!globalThis.__krouterJwtSecretWarned&&(globalThis.__krouterJwtSecretWarned=!0,console.warn(`[auth] Ignoring JWT_SECRET: it is ${c}, so anyone could forge dashboard sessions. ${a} Sessions are no longer shared with other instances using that JWT_SECRET; to share them, set the same long random value on each (openssl rand -hex 32).`))};try{let a=h().readFileSync(d,"utf8").trim();return e(`Using the secret saved in ${d}.`),a}catch{}e(`Generated a new secret in ${d}; existing sessions must log in again.`),h().mkdirSync(m.n,{recursive:!0});let f=l().randomBytes(32).toString("hex");return h().writeFileSync(d,f,{mode:384}),f}());function q(a){let b="true"===process.env.AUTH_COOKIE_SECURE,c=a?.headers?.get?.("x-forwarded-proto");return b||"https"===c}async function r(a={}){return new d.P({authenticated:!0,...a}).setProtectedHeader({alg:"HS256"}).setIssuedAt().setExpirationTime("24h").sign(p)}async function s(a){if(!a)return!1;try{return await (0,e.V)(a,p),!0}catch{return!1}}async function t(a){if(!a)return null;try{let{payload:b}=await (0,e.V)(a,p);return b}catch{return null}}async function u(a,b,c={}){let d=await r(c);a.set("auth_token",d,{httpOnly:!0,secure:q(b),sameSite:"lax",path:"/"})}function v(a){a.delete("auth_token")}async function w(a){if("string"!=typeof a||!a)return!1;let b=await (0,n.mt)(),c=b?.password;return c?f.Ay.compare(a,c):a===(process.env.INITIAL_PASSWORD||"123456")}},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},55511:a=>{a.exports=require("crypto")},58087:(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/auth/status/route",pathname:"/api/auth/status",filename:"route",bundlePath:"app/api/auth/status/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/auth/status/route.js",nextConfigOutput:"standalone",userland:()=>c(81143),...{}}),{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/auth/status/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,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,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!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.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:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||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);T&&M||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)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,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=Q.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")||K,g=`${P} ${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(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},76760:a=>{a.exports=require("node:path")},77309:(a,b,c)=>{c.d(b,{EJ:()=>n,GY:()=>q,HO:()=>v,Ir:()=>p,Mj:()=>o,Pf:()=>r,Rj:()=>y,Ui:()=>x,gR:()=>t,hT:()=>s,iw:()=>m,sP:()=>u,x8:()=>w});var d=c(77598),e=c.n(d),f=c(37221),g=c(69614),h=c(89718);let i="openid profile email",j="Sign in with OIDC";function k(a){return(a||"").trim().replace(/\/+$/,"")}function l(a){return(a||i).trim()||i}function m(a){let b=process.env.BASE_URL||process.env.NEXT_PUBLIC_BASE_URL||"";if(b)return k(b);let c=a?.headers?.get?.("x-forwarded-proto")||"",d=a?.headers?.get?.("x-forwarded-host")||a?.headers?.get?.("host")||"";if(d){let b=(c||new URL(a.url).protocol||"http:").replace(/:$/,"");return`${b}://${d}`.replace(/\/+$/,"")}return k(new URL(a.url).origin)}function n(a){return!!(k(a?.oidcIssuerUrl)&&(a?.oidcClientId||"").trim()&&(a?.oidcClientSecret||"").trim())}async function o(){let a=await (0,h.mt)();return["oidc","both"].includes(a.authMode)&&n(a)?{issuerUrl:k(a.oidcIssuerUrl),clientId:a.oidcClientId.trim(),clientSecret:a.oidcClientSecret.trim(),scopes:l(a.oidcScopes),loginLabel:(a.oidcLoginLabel||j).trim()||j}:null}async function p(a){let b=`${k(a)}/.well-known/openid-configuration`,c=await fetch(b,{cache:"no-store"});if(!c.ok)throw Error(`Failed to load OIDC discovery document from ${b}`);return await c.json()}function q(){let a=e().randomBytes(32).toString("base64url"),b=e().createHash("sha256").update(a).digest("base64url");return{verifier:a,challenge:b}}function r(){return e().randomBytes(16).toString("base64url")}function s(){return e().randomBytes(16).toString("base64url")}function t({authorizationEndpoint:a,clientId:b,redirectUri:c,scopes:d=i,state:e,nonce:f,codeChallenge:g}){let h=new URL(a);return h.searchParams.set("response_type","code"),h.searchParams.set("client_id",b),h.searchParams.set("redirect_uri",c),h.searchParams.set("scope",l(d)),h.searchParams.set("state",e),h.searchParams.set("nonce",f),h.searchParams.set("code_challenge",g),h.searchParams.set("code_challenge_method","S256"),h.toString()}async function u({tokenEndpoint:a,clientId:b,clientSecret:c,code:d,redirectUri:e,codeVerifier:f}){let g=new URLSearchParams({grant_type:"authorization_code",client_id:b,code:d,redirect_uri:e,code_verifier:f});c&&g.set("client_secret",c);let h=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:g}),i=await h.json().catch(()=>({}));if(!h.ok)throw Error(i?.error_description||i?.error||`OIDC token exchange failed (${h.status})`);return i}async function v({tokenEndpoint:a,clientId:b,clientSecret:c,redirectUri:d}){if(!c)return{tested:!1,valid:null,message:"No client secret was provided, so secret validation was skipped."};let e=new URLSearchParams({grant_type:"authorization_code",client_id:b,client_secret:c,code:"__oidc_test_invalid_code__",redirect_uri:d,code_verifier:"__oidc_test_invalid_verifier__"}),f=await fetch(a,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}),g=await f.json().catch(()=>({})),h=(g?.error||"").toLowerCase(),i=g?.error_description||g?.error||"";return f.ok?{tested:!0,valid:!0,message:"Client secret was accepted by the token endpoint.",raw:g}:"invalid_client"===h||"unauthorized_client"===h||/client.*(invalid|failed|mismatch)/i.test(i)?{tested:!0,valid:!1,message:i||"Client secret is not valid.",raw:g}:"invalid_grant"===h||"invalid_code"===h||/grant|code/i.test(i)?{tested:!0,valid:!0,message:"Client secret was accepted; the token exchange failed only because the test authorization code is invalid.",raw:g}:{tested:!0,valid:null,message:i||`Token endpoint responded with ${f.status}`,raw:g}}async function w({idToken:a,issuer:b,audience:c,jwksUri:d,nonce:e}){let h=(0,f.RD)(new URL(d)),{payload:i}=await (0,g.V)(a,h,{issuer:b,audience:c,nonce:e});return i}function x(a={}){return a.preferred_username||a.email||a.name||a.given_name||a.sub||"OIDC user"}function y(a={}){return a.email||""}},77598:a=>{a.exports=require("node:crypto")},80099:a=>{a.exports=require("node:sqlite")},81143:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>i});var d=c(23211),e=c(65573),f=c(89718),g=c(77309),h=c(33792);async function i(){try{let a=await (0,f.mt)(),b=await (0,e.UL)(),c=await (0,h.dY)(b.get("auth_token")?.value),i=!1!==a.requireLogin,j=a.authMode||"password",k=String(c?.oidcName||"").trim(),l=String(c?.oidcEmail||"").trim(),m=k||l||(c?.oidc?"OIDC user":"Password user"),n=c?.oidc?"OIDC":"Password";return d.NextResponse.json({requireLogin:i,authenticated:!!c,authMode:j,oidcConfigured:(0,g.EJ)(a),oidcLoginLabel:(a.oidcLoginLabel||"Sign in with OIDC").trim()||"Sign in with OIDC",hasPassword:!!a.password,displayName:m,loginMethod:n,oidcName:k||null,oidcEmail:l||null,oidcLogin:!!c?.oidc})}catch{return d.NextResponse.json({requireLogin:!0,authenticated:!1,authMode:"password",oidcConfigured:!1,oidcLoginLabel:"Sign in with OIDC",hasPassword:!1,displayName:"Password user",loginMethod:"Password",oidcName:null,oidcEmail:null,oidcLogin:!1})}}},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q9:()=>d.Q9,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9248)},94735:a=>{a.exports=require("events")}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,6935,2391,5573,4306,4884],()=>b(b.s=58087));module.exports=c})();
@@ -1 +1 @@
1
- (()=>{var a={};a.id=5616,a.ids=[5616],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},9999:(a,b,c)=>{"use strict";c.d(b,{$S:()=>l,$T:()=>m,QS:()=>n,e3:()=>o});var d=c(77598),e=c.n(d);let f=globalThis;f.__krouterResponseCache||(f.__krouterResponseCache=new Map,f.__krouterResponseCacheStats={hits:0,misses:0,skipped:0,bytesSaved:0,tokensSaved:0,lastResetAt:Date.now()});let g=f.__krouterResponseCache,h=f.__krouterResponseCacheStats;function i({model:a,body:b}){let c=JSON.stringify({model:a,system:b?.system??null,instructions:b?.instructions??null,messages:b?.messages??null,input:b?.input??null,contents:b?.contents??null,temperature:b?.temperature??null,max_tokens:b?.max_tokens??b?.max_output_tokens??null,tools:b?.tools??null,tool_choice:b?.tool_choice??null,response_format:b?.response_format??null});return e().createHash("sha256").update(c).digest("hex")}let j=new Set(["antigravity","ag","gemini","gemini-cli","gc"]);function k(a,b=null){if(!a||"object"!=typeof a||!0===a.stream||"number"==typeof a.temperature&&a.temperature>.3||"required"===a.tool_choice)return!1;let c=function(a){if("string"!=typeof a)return null;let b=a.indexOf("/");return b>0?a.slice(0,b):null}(b);if(c&&j.has(c))return!1;let d=a.max_tokens??a.max_output_tokens??null;return"number"!=typeof d||!(d<32)}function l({model:a,body:b}){if(!k(b,a))return h.skipped++,null;let c=i({model:a,body:b}),d=g.get(c);return d?d.expiresAt<Date.now()?(g.delete(c),h.misses++,null):(g.delete(c),g.set(c,d),h.hits++,h.bytesSaved+=d.bodyBytes||0,h.tokensSaved+=d.estimatedTokens||0,d):(h.misses++,null)}function m({model:a,body:b,status:c,contentType:d,responseBody:e,estimatedTokens:f=0,ttlMs:h=3e5,maxEntries:j=500}){if(!k(b,a)||200!==c||!e||"string"==typeof e&&e.length<100)return!1;let l=i({model:a,body:b}),n="string"==typeof e?e:JSON.stringify(e),o={key:l,status:c,contentType:d||"application/json",body:n,bodyBytes:Buffer.byteLength(n,"utf-8"),estimatedTokens:f,expiresAt:Date.now()+h,storedAt:Date.now(),model:a};for(g.set(l,o);g.size>j;){let a=g.keys().next().value;if(void 0===a)break;g.delete(a)}return!0}function n(){let a=h.hits+h.misses;return{enabled:!0,entries:g.size,hits:h.hits,misses:h.misses,skipped:h.skipped,hitRate:a>0?h.hits/a:0,bytesSaved:h.bytesSaved,tokensSaved:h.tokensSaved,lastResetAt:h.lastResetAt}}function o(){g.clear(),h.hits=0,h.misses=0,h.skipped=0,h.bytesSaved=0,h.tokensSaved=0,h.lastResetAt=Date.now()}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},56133:(a,b,c)=>{"use strict";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/cache/route",pathname:"/api/cache",filename:"route",bundlePath:"app/api/cache/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/cache/route.js",nextConfigOutput:"standalone",userland:()=>c(93212),...{}}),{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/cache/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)}}},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},93212:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>h,GET:()=>g,dynamic:()=>f});var d=c(23211),e=c(9999);let f="force-dynamic";async function g(){return d.NextResponse.json((0,e.QS)(),{headers:{"Cache-Control":"no-store"}})}async function h(){return(0,e.e3)(),d.NextResponse.json({ok:!0})}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=56133));module.exports=c})();
1
+ (()=>{var a={};a.id=5616,a.ids=[5616],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},8128:a=>{"use strict";a.exports=require("next/dist/server/runtime-reacts.external.js")},9999:(a,b,c)=>{"use strict";c.d(b,{$S:()=>l,$T:()=>m,QS:()=>n,e3:()=>o});var d=c(77598),e=c.n(d);let f=globalThis;f.__krouterResponseCache||(f.__krouterResponseCache=new Map,f.__krouterResponseCacheStats={hits:0,misses:0,skipped:0,bytesSaved:0,tokensSaved:0,lastResetAt:Date.now()});let g=f.__krouterResponseCache,h=f.__krouterResponseCacheStats;function i({model:a,body:b}){let c=JSON.stringify({model:a,system:b?.system??null,instructions:b?.instructions??null,messages:b?.messages??null,input:b?.input??null,contents:b?.contents??null,temperature:b?.temperature??null,max_tokens:b?.max_tokens??b?.max_output_tokens??null,tools:b?.tools??null,tool_choice:b?.tool_choice??null,response_format:b?.response_format??null});return e().createHash("sha256").update(c).digest("hex")}let j=new Set(["antigravity","ag","gemini","gemini-cli","gc"]);function k(a,b=null){if(!a||"object"!=typeof a||!0===a.stream||"number"==typeof a.temperature&&a.temperature>.3||"required"===a.tool_choice)return!1;let c=function(a){if("string"!=typeof a)return null;let b=a.indexOf("/");return b>0?a.slice(0,b):null}(b);if(c&&j.has(c))return!1;let d=a.max_tokens??a.max_output_tokens??null;return"number"!=typeof d||!(d<32)}function l({model:a,body:b}){if(!k(b,a))return h.skipped++,null;let c=i({model:a,body:b}),d=g.get(c);return d?d.expiresAt<Date.now()?(g.delete(c),h.misses++,null):(g.delete(c),g.set(c,d),h.hits++,h.bytesSaved+=d.bodyBytes||0,h.tokensSaved+=d.estimatedTokens||0,d):(h.misses++,null)}function m({model:a,body:b,status:c,contentType:d,responseBody:e,estimatedTokens:f=0,ttlMs:h=3e5,maxEntries:j=500}){if(!k(b,a)||200!==c||!e||"string"==typeof e&&e.length<100)return!1;let l=i({model:a,body:b}),n="string"==typeof e?e:JSON.stringify(e),o={key:l,status:c,contentType:d||"application/json",body:n,bodyBytes:Buffer.byteLength(n,"utf-8"),estimatedTokens:f,expiresAt:Date.now()+h,storedAt:Date.now(),model:a};for(g.set(l,o);g.size>j;){let a=g.keys().next().value;if(void 0===a)break;g.delete(a)}return!0}function n(){let a=h.hits+h.misses;return{enabled:!0,entries:g.size,hits:h.hits,misses:h.misses,skipped:h.skipped,hitRate:a>0?h.hits/a:0,bytesSaved:h.bytesSaved,tokensSaved:h.tokensSaved,lastResetAt:h.lastResetAt}}function o(){g.clear(),h.hits=0,h.misses=0,h.skipped=0,h.bytesSaved=0,h.tokensSaved=0,h.lastResetAt=Date.now()}},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},33873:a=>{"use strict";a.exports=require("path")},44870:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},55511:a=>{"use strict";a.exports=require("crypto")},63033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},77598:a=>{"use strict";a.exports=require("node:crypto")},78335:()=>{},86439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87305:(a,b,c)=>{"use strict";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/cache/route",pathname:"/api/cache",filename:"route",bundlePath:"app/api/cache/route"},distDir:".next-cli-build",relativeProjectDir:"",resolvedPagePath:"/home/runner/work/krouter/krouter/src/app/api/cache/route.js",nextConfigOutput:"standalone",userland:()=>c(93212),...{}}),{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/cache/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,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,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!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.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:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||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);T&&M||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)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,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=Q.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")||K,g=`${P} ${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(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},93212:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DELETE:()=>h,GET:()=>g,dynamic:()=>f});var d=c(23211),e=c(9999);let f="force-dynamic";async function g(){return d.NextResponse.json((0,e.QS)(),{headers:{"Cache-Control":"no-store"}})}async function h(){return(0,e.e3)(),d.NextResponse.json({ok:!0})}},96487:()=>{}};var b=require("../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813],()=>b(b.s=87305));module.exports=c})();
@@ -1,19 +1,19 @@
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,"00f8bbcf2e8b7bdfccd0c2da198743ea4a2059be0a",null),(0,d.A)(B,"4034d601a2b96d886db81063fc7a8d5ba9a9273ac2",null),(0,d.A)(C,"00dcab6f71194fa5719bb5e0e6f0c4dcdb63cb04ec",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,"00c8804b182b13e9a4af6c72b39f14d8450756ace6",null),(0,d.A)(v,"403f3b55e7775f15b0d10c3b575601c6d79cce45e5",null),(0,d.A)(w,"00598e13702297b927ca23d36ed9b100a5d4e6c991",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:()=>w,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"],v={CLAUDE_CODE_MAX_CONTEXT_TOKENS:["198000","298000","498000","998000"],API_TIMEOUT_MS:["600000"]};async function w(){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]}),Object.entries(v).forEach(([a,c])=>{c.includes(b.env[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,w]),(0,d.A)(s,"005087d266e030214ccbc000f9f0e9e6f1820b3943",null),(0,d.A)(t,"40f46b4083614f8a469e6962b0dfe1a9d631ddb30f",null),(0,d.A)(w,"0033c2c4aa1affe6f719194fb14e9049ebdffa5d2c",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,"007fbbe8d96e20df7a79a5ff541f28e412fb6dabef",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>s,GET:()=>q,POST:()=>r});var d=c(49796),e=c(23211),f=c(79984),g=c(79748),h=c.n(g),i=c(33873),j=c.n(i),k=c(21820),l=c.n(k),m=c(24424);let n=()=>{let a=l().homedir(),b=l().platform();return"win32"===b?j().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?j().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):j().join(a,".config","Code","User","chatLanguageModels.json")},o=async()=>{try{let a=await h().readFile(n(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},p=a=>"kRouter"===a.name;async function q(){try{let a=await o(),b=Array.isArray(a)&&a.find(p)||null;return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!Array.isArray(a)&&a.some(p),configPath:n(),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 r(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 g=n();await h().mkdir(j().dirname(g),{recursive:!0});let i=[];try{let a=await h().readFile(g,"utf-8"),b=JSON.parse(a);i=Array.isArray(b)?b:[]}catch{}let k=`${b}/chat/completions#models.ai.azure.com`,l=await (0,f.k)(c),m={name:"kRouter",vendor:"azure",apiKey:l,models:d.map(a=>({id:a,name:a,url:k,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},o=i.findIndex(p);return o>=0?i[o]=m:i.push(m),await h().writeFile(g,JSON.stringify(i,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:g})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function s(){try{let a=n(),b=[];try{let c=await h().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=>!p(a)),await h().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,m.D)([q,r,s]),(0,d.A)(q,"001eb877aee84a5d4c5979e0832eaee2f6f559e6fc",null),(0,d.A)(r,"406726a8c82da48bfe281b89c9042af35d8b1a68ca",null),(0,d.A)(s,"00aac26608d168da28018cefb809e4352f3e56b375",null)},21093:(a,b,c)=>{c.r(b),c.d(b,{"000d4b09e232133f9d6350224b81798700c8504d36":()=>o.DELETE,"00195efafd84441445a2c45927fcdd03866baac128":()=>g.GET,"001aae30b7c69f030d4f4d876a1b6b1f9a37ed83b4":()=>j.DELETE,"001eb877aee84a5d4c5979e0832eaee2f6f559e6fc":()=>k.GET,"00246b9c1131877eafc0e53652a4cafb003eba07d0":()=>i.GET,"0033c2c4aa1affe6f719194fb14e9049ebdffa5d2c":()=>e.DELETE,"0037805420bc70c00682f8a4e448e6d221ae3ba35d":()=>n.DELETE,"005087d266e030214ccbc000f9f0e9e6f1820b3943":()=>e.GET,"00598e13702297b927ca23d36ed9b100a5d4e6c991":()=>m.DELETE,"007fbbe8d96e20df7a79a5ff541f28e412fb6dabef":()=>d.GET,"0090c35a37c4fe2af357dd07c37f4f6e5feb43aa72":()=>l.GET,"009f98d75f69f231d69a59f8215dd9027258a08301":()=>o.GET,"00aac26608d168da28018cefb809e4352f3e56b375":()=>k.DELETE,"00b3b85d60d49b4e96e4d43ca7b067a8f4e2d6d907":()=>n.GET,"00bb6b592c853ddf965a7cdfb0839534b813f6ca4b":()=>f.GET,"00c8804b182b13e9a4af6c72b39f14d8450756ace6":()=>m.GET,"00d6ab22df36fbd5b841e29859a95c1f0368bf30c2":()=>i.DELETE,"00db8fe8ec994692e65d3bc215c089bc10a3abec3b":()=>g.DELETE,"00dcab6f71194fa5719bb5e0e6f0c4dcdb63cb04ec":()=>h.DELETE,"00f8bbcf2e8b7bdfccd0c2da198743ea4a2059be0a":()=>h.GET,"00ff7b5765661b9b4c01926c96fda17e8aaabed591":()=>j.GET,"402efe305c58cb1856f43af66ae80a98bda584a1fb":()=>g.POST,"4034d601a2b96d886db81063fc7a8d5ba9a9273ac2":()=>h.POST,"403da83a9474fd9f36903f81f78a5f9a9aa1a740f4":()=>o.POST,"403f3b55e7775f15b0d10c3b575601c6d79cce45e5":()=>m.POST,"4048fee99b6852f01d9995da673ff542b4789db333":()=>f.POST,"405548a38d064b25b17f64dd99cb9bc1647b6f00ca":()=>i.POST,"406726a8c82da48bfe281b89c9042af35d8b1a68ca":()=>k.POST,"40696ed7ab3b14ebc88b85ae870ce4d5cb9869aea6":()=>f.PATCH,"406ed783cbc6e33aea697fde3f41aaeb59a871c643":()=>f.DELETE,"40979ea428a458408b7adc3b4e097fad838107b314":()=>j.POST,"40d2a07abffdc3061127c123c0ea2768d76b69dcba":()=>l.DELETE,"40d42774f38d32c0d155c24d109f8dd9a1f9471cd8":()=>l.POST,"40f0caa41a6256acf0a1e6019274296a8797a5344c":()=>n.POST,"40f46b4083614f8a469e6962b0dfe1a9d631ddb30f":()=>e.POST});var d=c(19593),e=c(14833),f=c(72452),g=c(29657),h=c(4126),i=c(21757),j=c(21350),k=c(20703),l=c(46298),m=c(8304),n=c(67116),o=c(48074)},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,"00687889d15c381d0ed0c752f40beb5bfd33af89b1",null),(0,d.A)(B,"4031a0a19abd06e2d887eea3bdb157307c245ad233",null),(0,d.A)(C,"00c8c2461ffdce4ef74d3abc533874bf8dbeb95e44",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,"007e39499e53ff43c40f6b9fda703cd360f567c703",null),(0,d.A)(v,"402b570d4fd429e776590e5e0d391d99e59bad02a9",null),(0,d.A)(w,"0090aa237dcbcaece954ef4cd341d10f9198377366",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:()=>w,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"],v={CLAUDE_CODE_MAX_CONTEXT_TOKENS:["198000","298000","498000","998000"],API_TIMEOUT_MS:["600000"]};async function w(){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]}),Object.entries(v).forEach(([a,c])=>{c.includes(b.env[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,w]),(0,d.A)(s,"00c21461e4b3e65bee8762103f981e7262a2ea78ea",null),(0,d.A)(t,"403cf669b4417bdcd9f4f7ea679659cdd80356f97b",null),(0,d.A)(w,"00c0d59a4584909fd2df91a63d225344b99e28975b",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,"0070bc031287f55930e0372868c62d31f0ad334edb",null)},20703:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>s,GET:()=>q,POST:()=>r});var d=c(49796),e=c(23211),f=c(79984),g=c(79748),h=c.n(g),i=c(33873),j=c.n(i),k=c(21820),l=c.n(k),m=c(24424);let n=()=>{let a=l().homedir(),b=l().platform();return"win32"===b?j().join(process.env.APPDATA||a,"Code","User","chatLanguageModels.json"):"darwin"===b?j().join(a,"Library","Application Support","Code","User","chatLanguageModels.json"):j().join(a,".config","Code","User","chatLanguageModels.json")},o=async()=>{try{let a=await h().readFile(n(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},p=a=>"kRouter"===a.name;async function q(){try{let a=await o(),b=Array.isArray(a)&&a.find(p)||null;return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!Array.isArray(a)&&a.some(p),configPath:n(),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 r(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 g=n();await h().mkdir(j().dirname(g),{recursive:!0});let i=[];try{let a=await h().readFile(g,"utf-8"),b=JSON.parse(a);i=Array.isArray(b)?b:[]}catch{}let k=`${b}/chat/completions#models.ai.azure.com`,l=await (0,f.k)(c),m={name:"kRouter",vendor:"azure",apiKey:l,models:d.map(a=>({id:a,name:a,url:k,toolCalling:!0,vision:!1,maxInputTokens:128e3,maxOutputTokens:16e3}))},o=i.findIndex(p);return o>=0?i[o]=m:i.push(m),await h().writeFile(g,JSON.stringify(i,null,2)),e.NextResponse.json({success:!0,message:"Copilot settings applied! Reload VS Code to take effect.",configPath:g})}catch(a){return console.log("Error updating copilot settings:",a),e.NextResponse.json({error:"Failed to update copilot settings"},{status:500})}}async function s(){try{let a=n(),b=[];try{let c=await h().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=>!p(a)),await h().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,m.D)([q,r,s]),(0,d.A)(q,"0021da6426e9fa5abbed09c2ba1dcd96f584b0e54a",null),(0,d.A)(r,"407b6b5674b3d46bafc1f2efc182af8016bfa2a6e7",null),(0,d.A)(s,"008ce7f9a668116c2ce4f0423223c4302eb0a35949",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}"
5
- api_key: \${OPENAI_API_KEY}
5
+ api_key: $\{OPENAI_API_KEY}
6
6
  `,s.test(b)?b.replace(s,c):b.length>0?`${c}
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,"00246b9c1131877eafc0e53652a4cafb003eba07d0",null),(0,d.A)(x,"405548a38d064b25b17f64dd99cb9bc1647b6f00ca",null),(0,d.A)(y,"00d6ab22df36fbd5b841e29859a95c1f0368bf30c2",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,"00195efafd84441445a2c45927fcdd03866baac128",null),(0,d.A)(w,"402efe305c58cb1856f43af66ae80a98bda584a1fb",null),(0,d.A)(x,"00db8fe8ec994692e65d3bc215c089bc10a3abec3b",null)},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>D,GET:()=>B,POST:()=>C});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(30869),o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>k().join(m().homedir(),".cline","data"),r=()=>k().join(q(),"globalState.json"),s=()=>k().join(q(),"secrets.json"),t=()=>k().join(q(),"settings","providers.json"),u="openai-compatible",v=a=>{try{let b=new URL(String(a).trim());if("http:"!==b.protocol&&"https:"!==b.protocol)return null;let c=b.pathname.replace(/\/+$/,"");return`${b.origin}${c.endsWith("/v1")?c:`${c}/v1`}`}catch{return null}},w=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 cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},x=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}},y=async()=>{try{return await x(t())}catch(a){if(a instanceof SyntaxError)return null;throw a}},z=async a=>{let b=t();await i().mkdir(k().dirname(b),{recursive:!0,mode:448});let c=`${b}.${process.pid}.tmp`;await i().writeFile(c,`${JSON.stringify(a,null,2)}
11
- `,{mode:384}),await i().rename(c,b)},A=async a=>{let b=a?await a.text():"";if(!b.trim())return[];try{let{baseUrls:a}=JSON.parse(b);return Array.isArray(a)&&a.every(a=>"string"==typeof a)?a:null}catch{return null}};async function B(){try{if(!await w())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await x(r());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.actModeOpenAiModelId??a?.openAiModelId},hasKRouter:!!a&&("openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider)&&((a="")=>a.includes("localhost")||a.includes("127.0.0.1")||a.includes("krouter"))(a.openAiBaseUrl||""),globalStatePath:r()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function C(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(![b,c,d].every(a=>"string"==typeof a&&""!==a.trim()))return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let f=v(b);if(!f)return e.NextResponse.json({error:"baseUrl must be a valid URL"},{status:400});let g=await x(r())||{},h=await x(s())||{},j=await y();await i().mkdir(q(),{recursive:!0});let k={...g,actModeApiProvider:"openai",planModeApiProvider:"openai",openAiBaseUrl:f,openAiModelId:d,actModeOpenAiModelId:d,planModeOpenAiModelId:d};return await i().writeFile(r(),JSON.stringify(k,null,2)),await i().writeFile(s(),JSON.stringify({...h,openAiApiKey:c},null,2),{mode:384}),await i().chmod(s(),384).catch(()=>{}),await z(((a,{baseUrl:b,apiKey:c,model:d})=>{let e=a||{},f=e.providers||{},g=f[u]?.settings||{};return{...e,version:e.version??1,modes:e.modes||{},providers:{...f,[u]:{settings:{...g,provider:u,apiKey:c,model:d,baseUrl:b},updatedAt:new Date().toISOString(),tokenSource:"manual"}},lastUsedProvider:u}})(j,{baseUrl:f,apiKey:c,model:d})),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:r()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function D(a){try{let b=await A(a);if(!b)return e.NextResponse.json({error:"baseUrls must be a list of URLs"},{status:400});let c=await x(r()),d=((a,b)=>{let c=a?.providers?.[u]?.settings?.baseUrl;if(!c||!b.has(v(c)))return null;let{[u]:d,...e}=a.providers,{lastUsedProvider:f,...g}=a,h=f&&f!==u?f:e.cline?"cline":Object.keys(e)[0];return{...g,providers:e,...h?{lastUsedProvider:h}:{}}})(await y(),((a=[])=>{let b=process.env.PORT||n.h0.appPort;return new Set([`http://localhost:${b}`,`http://127.0.0.1:${b}`,...a].map(v).filter(Boolean))})(b));if(d&&await z(d),!c)return e.NextResponse.json({success:!0,message:d?"kRouter settings removed from Cline":"No settings file to reset"});"openai"===c.actModeApiProvider&&(delete c.openAiBaseUrl,delete c.openAiModelId,delete c.actModeOpenAiModelId,delete c.planModeOpenAiModelId,c.actModeApiProvider="cline",c.planModeApiProvider="cline"),await i().writeFile(r(),JSON.stringify(c,null,2));let f=await x(s())||{};return delete f.openAiApiKey,await i().writeFile(s(),JSON.stringify(f,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,o.D)([B,C,D]),(0,d.A)(B,"0090c35a37c4fe2af357dd07c37f4f6e5feb43aa72",null),(0,d.A)(C,"40d42774f38d32c0d155c24d109f8dd9a1f9471cd8",null),(0,d.A)(D,"40d2a07abffdc3061127c123c0ea2768d76b69dcba",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}"
12
- `;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,"009f98d75f69f231d69a59f8215dd9027258a08301",null),(0,d.A)(C,"403da83a9474fd9f36903f81f78a5f9a9aa1a740f4",null),(0,d.A)(D,"000d4b09e232133f9d6350224b81798700c8504d36",null)},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},55511:a=>{a.exports=require("crypto")},58750:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>z,GET:()=>x,POST:()=>y,dynamic:()=>n});var d=c(23211),e=c(79646),f=c(28354),g=c(79748),h=c.n(g),i=c(33873),j=c.n(i),k=c(21820),l=c.n(k),m=c(52750);let n="force-dynamic",o=(0,f.promisify)(e.exec),p=()=>j().join(l().homedir(),".codex"),q=()=>j().join(p(),"config.toml"),r=a=>a??{},s=(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},t=(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]]},u=async()=>{try{let a="win32"===l().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where codex":"which codex",{windowsHide:!0,env:b}),!0}catch{try{return await h().access(q()),!0}catch{return!1}}},v=async()=>{try{let a=q();return await h().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}},w="krouter";async function x(){try{if(!await u())return d.NextResponse.json({installed:!1,config:null,message:"Codex CLI is not installed"});let a=await v();return d.NextResponse.json({installed:!0,config:a,hasKRouter:!!a&&(a.includes(`model_provider = "${w}"`)||a.includes(`[model_providers.${w}]`)),activeProvider:(a=>{let b;if(!a)return null;try{b=(0,m.M)(a)}catch{return null}let c="string"==typeof b?.model_provider?b.model_provider:"";if(!c)return null;let d=b.model_providers?.[c],e="string"==typeof d?.base_url?d.base_url:"",f=d?.http_headers?.Authorization,g="string"==typeof f?f.match(/^Bearer\s+(.+)$/i):null;return{name:c,baseUrl:e,apiKey:g?g[1].trim():""}})(a),configPath:q()})}catch(a){return console.log("Error checking codex settings:",a),d.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:e,subagentModel:f}=await a.json();if(!b||!c||!e)return d.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let g=p(),i=q();await h().mkdir(g,{recursive:!0});let j={};try{let a=await h().readFile(i,"utf-8");j=r((0,m.M)(a))}catch{}j.model=e,j.model_provider=w;let k=b.endsWith("/v1")?b:`${b}/v1`;s(j,`model_providers.${w}`,{name:"kRouter",base_url:k,wire_api:"responses",http_headers:{Authorization:`Bearer ${c}`}}),t(j,"agents.subagent"),s(j,"agents.default_subagent_model",f||e);let l=(0,m.q)(j);return await h().writeFile(i,l),d.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:i})}catch(a){return console.log("Error updating codex settings:",a),d.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function z(){try{let a=q(),b={};try{let c=await h().readFile(a,"utf-8");b=r((0,m.M)(c))}catch(a){if("ENOENT"===a.code)return d.NextResponse.json({success:!0,message:"No config file to reset"});throw a}b.model_provider===w&&(delete b.model,delete b.model_provider),t(b,`model_providers.${w}`),t(b,"agents.default_subagent_model"),t(b,"agents.subagent");let c=(0,m.q)(b);await h().writeFile(a,c);let e=j().join(p(),"auth.json");try{let a=await h().readFile(e,"utf-8"),b=JSON.parse(a);delete b.OPENAI_API_KEY,delete b.auth_mode,0===Object.keys(b).length?await h().unlink(e):await h().writeFile(e,JSON.stringify(b,null,2))}catch{}return d.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting codex settings:",a),d.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}},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:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79984),g=c(79646),h=c(28354),i=c(79748),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c.n(m),o=c(24424);let p=(0,h.promisify)(g.exec),q=()=>l().join(n().homedir(),".deepseek"),r=()=>l().join(q(),"config.toml"),s=`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,"000bcf0ea1117c79c745dcbd8ee12f89f5f356d29d",null),(0,d.A)(x,"402e8968a477ee58757d9798c809c9d0a90d330a2a",null),(0,d.A)(y,"002e770d91f5f8d6da1ac9ce4cffe9458d16ef8bda",null)},21820:a=>{a.exports=require("os")},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,"007d1284d4a441031ee24436800d5265c3520b5c24",null),(0,d.A)(w,"403055e13ee429c257079e5cfa5808a67456a6822e",null),(0,d.A)(x,"00ff8b9caf6ac25456f0a6e62487950cb526586c4f",null)},33873:a=>{a.exports=require("path")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46293:a=>{a.exports=require("sql.js")},46298:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>D,GET:()=>B,POST:()=>C});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(30869),o=c(24424);let p=(0,g.promisify)(f.exec),q=()=>k().join(m().homedir(),".cline","data"),r=()=>k().join(q(),"globalState.json"),s=()=>k().join(q(),"secrets.json"),t=()=>k().join(q(),"settings","providers.json"),u="openai-compatible",v=a=>{try{let b=new URL(String(a).trim());if("http:"!==b.protocol&&"https:"!==b.protocol)return null;let c=b.pathname.replace(/\/+$/,"");return`${b.origin}${c.endsWith("/v1")?c:`${c}/v1`}`}catch{return null}},w=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 cline":"which cline",{windowsHide:!0,env:b}),!0}catch{try{return await i().access(r()),!0}catch{return!1}}},x=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}},y=async()=>{try{return await x(t())}catch(a){if(a instanceof SyntaxError)return null;throw a}},z=async a=>{let b=t();await i().mkdir(k().dirname(b),{recursive:!0,mode:448});let c=`${b}.${process.pid}.tmp`;await i().writeFile(c,`${JSON.stringify(a,null,2)}
11
+ `,{mode:384}),await i().rename(c,b)},A=async a=>{let b=a?await a.text():"";if(!b.trim())return[];try{let{baseUrls:a}=JSON.parse(b);return Array.isArray(a)&&a.every(a=>"string"==typeof a)?a:null}catch{return null}};async function B(){try{if(!await w())return e.NextResponse.json({installed:!1,settings:null,message:"Cline CLI is not installed"});let a=await x(r());return e.NextResponse.json({installed:!0,settings:{actModeApiProvider:a?.actModeApiProvider,planModeApiProvider:a?.planModeApiProvider,openAiBaseUrl:a?.openAiBaseUrl,openAiModelId:a?.actModeOpenAiModelId??a?.openAiModelId},hasKRouter:!!a&&("openai"===a.actModeApiProvider||"openai"===a.planModeApiProvider)&&((a="")=>a.includes("localhost")||a.includes("127.0.0.1")||a.includes("krouter"))(a.openAiBaseUrl||""),globalStatePath:r()})}catch(a){return console.log("Error checking cline settings:",a),e.NextResponse.json({error:"Failed to check cline settings"},{status:500})}}async function C(a){try{let{baseUrl:b,apiKey:c,model:d}=await a.json();if(![b,c,d].every(a=>"string"==typeof a&&""!==a.trim()))return e.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let f=v(b);if(!f)return e.NextResponse.json({error:"baseUrl must be a valid URL"},{status:400});let g=await x(r())||{},h=await x(s())||{},j=await y();await i().mkdir(q(),{recursive:!0});let k={...g,actModeApiProvider:"openai",planModeApiProvider:"openai",openAiBaseUrl:f,openAiModelId:d,actModeOpenAiModelId:d,planModeOpenAiModelId:d};return await i().writeFile(r(),JSON.stringify(k,null,2)),await i().writeFile(s(),JSON.stringify({...h,openAiApiKey:c},null,2),{mode:384}),await i().chmod(s(),384).catch(()=>{}),await z(((a,{baseUrl:b,apiKey:c,model:d})=>{let e=a||{},f=e.providers||{},g=f[u]?.settings||{};return{...e,version:e.version??1,modes:e.modes||{},providers:{...f,[u]:{settings:{...g,provider:u,apiKey:c,model:d,baseUrl:b},updatedAt:new Date().toISOString(),tokenSource:"manual"}},lastUsedProvider:u}})(j,{baseUrl:f,apiKey:c,model:d})),e.NextResponse.json({success:!0,message:"Cline settings applied successfully!",globalStatePath:r()})}catch(a){return console.log("Error updating cline settings:",a),e.NextResponse.json({error:"Failed to update cline settings"},{status:500})}}async function D(a){try{let b=await A(a);if(!b)return e.NextResponse.json({error:"baseUrls must be a list of URLs"},{status:400});let c=await x(r()),d=((a,b)=>{let c=a?.providers?.[u]?.settings?.baseUrl;if(!c||!b.has(v(c)))return null;let{[u]:d,...e}=a.providers,{lastUsedProvider:f,...g}=a,h=f&&f!==u?f:e.cline?"cline":Object.keys(e)[0];return{...g,providers:e,...h?{lastUsedProvider:h}:{}}})(await y(),((a=[])=>{let b=process.env.PORT||n.h0.appPort;return new Set([`http://localhost:${b}`,`http://127.0.0.1:${b}`,...a].map(v).filter(Boolean))})(b));if(d&&await z(d),!c)return e.NextResponse.json({success:!0,message:d?"kRouter settings removed from Cline":"No settings file to reset"});"openai"===c.actModeApiProvider&&(delete c.openAiBaseUrl,delete c.openAiModelId,delete c.actModeOpenAiModelId,delete c.planModeOpenAiModelId,c.actModeApiProvider="cline",c.planModeApiProvider="cline"),await i().writeFile(r(),JSON.stringify(c,null,2));let f=await x(s())||{};return delete f.openAiApiKey,await i().writeFile(s(),JSON.stringify(f,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,o.D)([B,C,D]),(0,d.A)(B,"0094e5fb9f8b3485909b5f64d15796aeefd82d2aad",null),(0,d.A)(C,"400a40bf591c039e8d3bce80681da091861d9a5fb0",null),(0,d.A)(D,"409b52169ba5826c86ce2755aa01a4551057c1ce95",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}"
12
+ `;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,"000131200e28abc5636ef0060004cbae7ec60f3e20",null),(0,d.A)(C,"40ac51ae8d4a9db305c25d20eacc00370ce526e637",null),(0,d.A)(D,"00bd2de82b12330c452e771aa60718f393f89543b5",null)},50122:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},55511:a=>{a.exports=require("crypto")},56967:(a,b,c)=>{c.r(b),c.d(b,{"000131200e28abc5636ef0060004cbae7ec60f3e20":()=>o.GET,"000bcf0ea1117c79c745dcbd8ee12f89f5f356d29d":()=>i.GET,"0021da6426e9fa5abbed09c2ba1dcd96f584b0e54a":()=>k.GET,"002e770d91f5f8d6da1ac9ce4cffe9458d16ef8bda":()=>i.DELETE,"005319b505cb2ce7fd95ceaa28b862172f66ff67fe":()=>n.GET,"00687889d15c381d0ed0c752f40beb5bfd33af89b1":()=>h.GET,"0070bc031287f55930e0372868c62d31f0ad334edb":()=>d.GET,"007d1284d4a441031ee24436800d5265c3520b5c24":()=>g.GET,"007e39499e53ff43c40f6b9fda703cd360f567c703":()=>m.GET,"008bcefb722ad5873f035de3952fa490254e922609":()=>j.GET,"008ce7f9a668116c2ce4f0423223c4302eb0a35949":()=>k.DELETE,"0090aa237dcbcaece954ef4cd341d10f9198377366":()=>m.DELETE,"0094e5fb9f8b3485909b5f64d15796aeefd82d2aad":()=>l.GET,"009f2bd6c012c54beadb47cb4d5af9d8e8084426e3":()=>j.DELETE,"00bd2de82b12330c452e771aa60718f393f89543b5":()=>o.DELETE,"00c0d59a4584909fd2df91a63d225344b99e28975b":()=>e.DELETE,"00c21461e4b3e65bee8762103f981e7262a2ea78ea":()=>e.GET,"00c8c2461ffdce4ef74d3abc533874bf8dbeb95e44":()=>h.DELETE,"00ed3eed3fe18268f76a4711f5a65b2821d4df6cc5":()=>n.DELETE,"00f632607fe7e4d24fdf5c792cdc13a98eee4d987c":()=>f.GET,"00ff8b9caf6ac25456f0a6e62487950cb526586c4f":()=>g.DELETE,"400a40bf591c039e8d3bce80681da091861d9a5fb0":()=>l.POST,"40228ae79e9bb5888ba10ff0439ca4cc509244c501":()=>f.POST,"402b570d4fd429e776590e5e0d391d99e59bad02a9":()=>m.POST,"402e8968a477ee58757d9798c809c9d0a90d330a2a":()=>i.POST,"403055e13ee429c257079e5cfa5808a67456a6822e":()=>g.POST,"4031a0a19abd06e2d887eea3bdb157307c245ad233":()=>h.POST,"403cf669b4417bdcd9f4f7ea679659cdd80356f97b":()=>e.POST,"40669983c4b35aed8d0d4492c3c6e56fef8bb3b4d2":()=>f.PATCH,"406b350303b7747f504a83918aa2f892e754da4754":()=>n.POST,"407b6b5674b3d46bafc1f2efc182af8016bfa2a6e7":()=>k.POST,"409b52169ba5826c86ce2755aa01a4551057c1ce95":()=>l.DELETE,"409d1c3e7a1bd05d400988a1b45a821e4b3c4ee186":()=>f.DELETE,"40ac51ae8d4a9db305c25d20eacc00370ce526e637":()=>o.POST,"40c39a4586ead6fe7bd2793c482962eaccf9596ca8":()=>j.POST});var d=c(19593),e=c(14833),f=c(72452),g=c(29657),h=c(4126),i=c(21757),j=c(21350),k=c(20703),l=c(46298),m=c(8304),n=c(67116),o=c(48074)},58750:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>z,GET:()=>x,POST:()=>y,dynamic:()=>n});var d=c(23211),e=c(79646),f=c(28354),g=c(79748),h=c.n(g),i=c(33873),j=c.n(i),k=c(21820),l=c.n(k),m=c(52750);let n="force-dynamic",o=(0,f.promisify)(e.exec),p=()=>j().join(l().homedir(),".codex"),q=()=>j().join(p(),"config.toml"),r=a=>a??{},s=(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},t=(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]]},u=async()=>{try{let a="win32"===l().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await o(a?"where codex":"which codex",{windowsHide:!0,env:b}),!0}catch{try{return await h().access(q()),!0}catch{return!1}}},v=async()=>{try{let a=q();return await h().readFile(a,"utf-8")}catch(a){if("ENOENT"===a.code)return null;throw a}},w="krouter";async function x(){try{if(!await u())return d.NextResponse.json({installed:!1,config:null,message:"Codex CLI is not installed"});let a=await v();return d.NextResponse.json({installed:!0,config:a,hasKRouter:!!a&&(a.includes(`model_provider = "${w}"`)||a.includes(`[model_providers.${w}]`)),activeProvider:(a=>{let b;if(!a)return null;try{b=(0,m.M)(a)}catch{return null}let c="string"==typeof b?.model_provider?b.model_provider:"";if(!c)return null;let d=b.model_providers?.[c],e="string"==typeof d?.base_url?d.base_url:"",f=d?.http_headers?.Authorization,g="string"==typeof f?f.match(/^Bearer\s+(.+)$/i):null;return{name:c,baseUrl:e,apiKey:g?g[1].trim():""}})(a),configPath:q()})}catch(a){return console.log("Error checking codex settings:",a),d.NextResponse.json({error:"Failed to check codex settings"},{status:500})}}async function y(a){try{let{baseUrl:b,apiKey:c,model:e,subagentModel:f}=await a.json();if(!b||!c||!e)return d.NextResponse.json({error:"baseUrl, apiKey and model are required"},{status:400});let g=p(),i=q();await h().mkdir(g,{recursive:!0});let j={};try{let a=await h().readFile(i,"utf-8");j=r((0,m.M)(a))}catch{}j.model=e,j.model_provider=w;let k=b.endsWith("/v1")?b:`${b}/v1`;s(j,`model_providers.${w}`,{name:"kRouter",base_url:k,wire_api:"responses",http_headers:{Authorization:`Bearer ${c}`}}),t(j,"agents.subagent"),s(j,"agents.default_subagent_model",f||e);let l=(0,m.q)(j);return await h().writeFile(i,l),d.NextResponse.json({success:!0,message:"Codex settings applied successfully!",configPath:i})}catch(a){return console.log("Error updating codex settings:",a),d.NextResponse.json({error:"Failed to update codex settings"},{status:500})}}async function z(){try{let a=q(),b={};try{let c=await h().readFile(a,"utf-8");b=r((0,m.M)(c))}catch(a){if("ENOENT"===a.code)return d.NextResponse.json({success:!0,message:"No config file to reset"});throw a}b.model_provider===w&&(delete b.model,delete b.model_provider),t(b,`model_providers.${w}`),t(b,"agents.default_subagent_model"),t(b,"agents.subagent");let c=(0,m.q)(b);await h().writeFile(a,c);let e=j().join(p(),"auth.json");try{let a=await h().readFile(e,"utf-8"),b=JSON.parse(a);delete b.OPENAI_API_KEY,delete b.auth_mode,0===Object.keys(b).length?await h().unlink(e):await h().writeFile(e,JSON.stringify(b,null,2))}catch{}return d.NextResponse.json({success:!0,message:"kRouter settings removed successfully"})}catch(a){return console.log("Error resetting codex settings:",a),d.NextResponse.json({error:"Failed to reset codex settings"},{status:500})}}},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:()=>x,GET:()=>v,POST:()=>w});var d=c(49796),e=c(23211),f=c(79984),g=c(79646),h=c(28354),i=c(79748),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c.n(m),o=c(24424);let p=(0,h.promisify)(g.exec),q=()=>l().join(n().homedir(),".deepseek"),r=()=>l().join(q(),"config.toml"),s=`provider = "deepseek"
13
13
  `,t=async()=>{try{let a="win32"===n().platform();return await p(a?"where deepseek":"which deepseek",{windowsHide:!0}),!0}catch{try{return await j().access(r()),!0}catch{return!1}}},u=async()=>{try{return await j().readFile(r(),"utf-8")}catch(a){if("ENOENT"===a.code)return"";throw a}};async function v(){try{if(!await t())return e.NextResponse.json({installed:!1,settings:null,message:"DeepSeek TUI is not installed"});let a=await u(),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:r()})}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 w(a){try{var b;let c,{baseUrl:d,apiKey:g,model:h}=await a.json();if(!d||!h)return e.NextResponse.json({error:"baseUrl and model are required"},{status:400});let i=q();await j().mkdir(i,{recursive:!0});let k=(b=await (0,f.k)(g),c=d.endsWith("/v1")?d:`${d}/v1`,`provider = "openai"
14
14
 
15
15
  [providers.openai]
16
16
  base_url = "${c}"
17
17
  api_key = "${b}"
18
18
  model = "${h}"
19
- `);return await j().writeFile(r(),k),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:r()})}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 x(){try{let a=r();try{await j().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await j().writeFile(a,s),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,o.D)([v,w,x]),(0,d.A)(v,"00b3b85d60d49b4e96e4d43ca7b067a8f4e2d6d907",null),(0,d.A)(w,"40f0caa41a6256acf0a1e6019274296a8797a5344c",null),(0,d.A)(x,"0037805420bc70c00682f8a4e448e6d221ae3ba35d",null)},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>B,GET:()=>y,PATCH:()=>A,POST:()=>z});var d=c(49796),e=c(23211),f=c(79984),g=c(79646),h=c(28354),i=c(79748),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c.n(m),o=c(24424);let p=(0,h.promisify)(g.exec),q=()=>l().join(n().homedir(),".config","opencode"),r=()=>l().join(q(),"opencode.json"),s=async()=>{try{let a="win32"===n().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await p(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await j().access(r()),!0}catch{return!1}}},t=async()=>{try{let a=await j().readFile(r(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},u="krouter",v="krouter/",w=/^krouter\//,x=a=>a?.provider?.[u]??null;async function y(){try{if(!await s())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await t(),b=x(a),c=b?.models||{};return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!x(a),configPath:r(),opencode:{models:Object.keys(c),activeModel:w.test(a?.model||"")?a.model.replace(w,""):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 z(a){try{let{baseUrl:b,apiKey:c,model:d,models:g,activeModel:h,subagentModel:i}=await a.json(),k=Array.isArray(g)?g.slice():"string"==typeof d?[d]:[];if(!b||0===k.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let l=q(),m=r();await j().mkdir(l,{recursive:!0});let n={};try{let a=await j().readFile(m,"utf-8");n=JSON.parse(a)}catch{}let o=b.endsWith("/v1")?b:`${b}/v1`,p=await (0,f.k)(c),s=i||k[0];n.provider||(n.provider={});let t=x(n)||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(t.options={...t.options,baseURL:o,apiKey:p},t.models=t.models||{},k))a&&"string"==typeof a&&(t.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(n.provider[u]=t,""===h)n.model="";else{let a=h||k[0];a&&(n.model=`${v}${a}`)}return n.agent||(n.agent={}),n.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`${v}${s}`},await j().writeFile(m,JSON.stringify(n,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:m})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function A(a){try{let{clearActiveModel:b}=await a.json(),c=r(),d={};try{let a=await j().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&&w.test(d.model||"")&&(d.model=""),await j().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 B(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=r(),f={};try{let a=await j().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=x(f),h=f.provider?.[u]?u:null;if(c&&g?.models&&h){if(delete g.models[c],0===Object.keys(g.models).length)delete f.provider[u],w.test(f.model||"")&&delete f.model;else if(f.model===`${v}${c}`){let a=Object.keys(g.models);f.model=`${v}${a[0]}`}}else f.provider&&delete f.provider[u],w.test(f.model||"")&&delete f.model;return w.test(f.agent?.explorer?.model||"")&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await j().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,o.D)([y,z,A,B]),(0,d.A)(y,"00bb6b592c853ddf965a7cdfb0839534b813f6ca4b",null),(0,d.A)(z,"4048fee99b6852f01d9995da673ff542b4789db333",null),(0,d.A)(A,"40696ed7ab3b14ebc88b85ae870ce4d5cb9869aea6",null),(0,d.A)(B,"406ed783cbc6e33aea697fde3f41aaeb59a871c643",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")},79984:(a,b,c)=>{c.d(b,{k:()=>f});var d=c(89718);let e=new Set(["sk_krouter","sk_9router"]);async function f(a){let b="string"==typeof a?a.trim():"";if(b&&!e.has(b))return b;try{let a=await (0,d.PX)();return a.find(a=>a.isActive)?.key||""}catch(a){return console.log("Error reading API keys for CLI tool config:",a),""}}},80099:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q9:()=>d.Q9,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9248)},94735:a=>{a.exports=require("events")},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,369,9055,4884,4404,5024,5681,1350],()=>b(b.s=22321));module.exports=c})();
19
+ `);return await j().writeFile(r(),k),e.NextResponse.json({success:!0,message:"DeepSeek TUI settings applied successfully!",configPath:r()})}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 x(){try{let a=r();try{await j().access(a)}catch{return e.NextResponse.json({success:!0,message:"No config file to reset"})}return await j().writeFile(a,s),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,o.D)([v,w,x]),(0,d.A)(v,"005319b505cb2ce7fd95ceaa28b862172f66ff67fe",null),(0,d.A)(w,"406b350303b7747f504a83918aa2f892e754da4754",null),(0,d.A)(x,"00ed3eed3fe18268f76a4711f5a65b2821d4df6cc5",null)},69389:(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,previewProps:J}=f,K=(0,j.normalizeAppPath)(d),L=!!C.routes[G]&&(v.isDev||(0,t.isRouteCacheOwner)(G,v.cacheOwner,C.routes[G])),M=!!(C.dynamicRoutes[K]||L),N=async()=>((null==D?void 0:D.render404)?await D.render404(a,b,A,!1):b.end("This page could not be found"),null);if(M&&!B){let a=C.dynamicRoutes[K];if(a&&!1===a.fallback&&!L){if(z.adapterPath)return await N();throw new s.NoFallbackError}}let O=null;!M||v.isDev||B||(O="/index"===(O=G)?"/":O),I&&H&&(0,i.setManifestsSingleton)({page:d,clientReferenceManifest:H,serverActionsManifest:I});let P=a.method||"GET",Q=(0,h.getTracer)(),R=Q.getActiveScopeSpan(),S=!!(null==D?void 0:D.isWrappedByNextServer),T=!!(0,g.getRequestMeta)(a,"minimalMode"),U=(0,g.getRequestMeta)(a,"incrementalCache")||await v.getIncrementalCache(a,z,J,C,T);null==U||U.resetRequestCache(),globalThis.__incrementalCache=U;let V={params:y,previewProps:J,renderOpts:{experimental:{authInterrupts:!!z.experimental.authInterrupts,useCacheTimeout:z.experimental.useCacheTimeout,durableUseCacheEntries:!!z.experimental.durableUseCacheEntries},cacheComponents:!!z.cacheComponents,validationLevel:z.experimental.instantInsights.validationLevel,isDraftMode:B,incrementalCache:U,hmrRefreshHash:(0,g.getRequestMeta)(a,"hmrRefreshHash"),cacheLifeProfiles:z.cacheLife,staticPageGenerationTimeout:z.staticPageGenerationTimeout,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0},sharedContext:{buildId:w,deploymentId:x}},W=new k.NodeNextRequest(a),X=new k.NodeNextResponse(b),Y=l.NextRequestAdapter.fromNodeNextRequest(W,(0,l.signalFromNodeResponse)(b)),Z=async({previousCacheEntry:e})=>{try{if(!T&&E&&F&&!e)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let d=null===O?await v.handle(Y,V):await v.prerender(Y,V);a.fetchMetrics=V.renderOpts.fetchMetrics;let f=V.renderOpts.pendingWaitUntil;f&&c.waitUntil&&(c.waitUntil(f),f=void 0);let g=V.renderOpts.collectedTags;if(!M)return await (0,o.I)(W,X,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!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,e=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=r.INFINITE_CACHE?!1!==c&&c>0?z.expireTime:void 0:V.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:null!==O,isOnDemandRevalidate:E})},!1,D),b}},$=async(d,f)=>{try{var g,i;let d=await v.handleResponse({req:a,nextConfig:z,cacheKey:O,routeKind:e.RouteKind.APP_ROUTE,isFallback:!1,previewProps:J,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:E,revalidateOnlyGenerated:F,responseGenerator:Z,waitUntil:c.waitUntil,isMinimalMode:T});if(null!==d&&"error"in d)throw d.error;if(!M)return;if((null==d||null==(g=d.value)?void 0:g.kind)!==u.CachedRouteKind.APP_ROUTE)throw Error(`Invariant: app-route received invalid cache entry ${null==d||null==(i=d.value)?void 0:i.kind}`);T||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);T&&M||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)(W,X,new Response(d.value.body,{headers:f,status:d.value.status||200}));return}catch(c){if(c instanceof s.NoFallbackError||await v.onRequestError(a,c,{routerKind:"App Router",routePath:K,routeType:"route",revalidateReason:(0,n.getRevalidateReason)({isStaticGeneration:null!==O,isOnDemandRevalidate:E})},!1,D),M)throw c;if(b.headersSent){if(d){let a=c instanceof Error?c:Error("Unknown app route error");d.recordException(a),d.setStatus({code:h.SpanStatusCode.ERROR,message:a.message}),d.setAttribute("error.type",a.name)}b.writableEnded||b.destroyed||b.end()}else await (0,o.I)(W,X,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=Q.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")||K,g=`${P} ${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(S&&R)await $(R,void 0);else{let b=Q.getActiveScopeSpan();await Q.withPropagatedContext(a.headers,()=>Q.trace(m.BaseServerSpan.handleRequest,{spanName:`${P} ${d}`,kind:h.SpanKind.SERVER,attributes:{"http.method":P,"http.target":a.url}},a=>$(a,b)),void 0,!S)}}},72452:(a,b,c)=>{c.r(b),c.d(b,{DELETE:()=>B,GET:()=>y,PATCH:()=>A,POST:()=>z});var d=c(49796),e=c(23211),f=c(79984),g=c(79646),h=c(28354),i=c(79748),j=c.n(i),k=c(33873),l=c.n(k),m=c(21820),n=c.n(m),o=c(24424);let p=(0,h.promisify)(g.exec),q=()=>l().join(n().homedir(),".config","opencode"),r=()=>l().join(q(),"opencode.json"),s=async()=>{try{let a="win32"===n().platform(),b=a?{...process.env,PATH:`${process.env.APPDATA}\\npm;${process.env.PATH}`}:process.env;return await p(a?"where opencode":"which opencode",{windowsHide:!0,env:b}),!0}catch{try{return await j().access(r()),!0}catch{return!1}}},t=async()=>{try{let a=await j().readFile(r(),"utf-8");return JSON.parse(a)}catch(a){if("ENOENT"===a.code)return null;throw a}},u="krouter",v="krouter/",w=/^krouter\//,x=a=>a?.provider?.[u]??null;async function y(){try{if(!await s())return e.NextResponse.json({installed:!1,config:null,message:"OpenCode CLI is not installed"});let a=await t(),b=x(a),c=b?.models||{};return e.NextResponse.json({installed:!0,config:a,hasKRouter:!!x(a),configPath:r(),opencode:{models:Object.keys(c),activeModel:w.test(a?.model||"")?a.model.replace(w,""):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 z(a){try{let{baseUrl:b,apiKey:c,model:d,models:g,activeModel:h,subagentModel:i}=await a.json(),k=Array.isArray(g)?g.slice():"string"==typeof d?[d]:[];if(!b||0===k.length)return e.NextResponse.json({error:"baseUrl and at least one model are required"},{status:400});let l=q(),m=r();await j().mkdir(l,{recursive:!0});let n={};try{let a=await j().readFile(m,"utf-8");n=JSON.parse(a)}catch{}let o=b.endsWith("/v1")?b:`${b}/v1`,p=await (0,f.k)(c),s=i||k[0];n.provider||(n.provider={});let t=x(n)||{npm:"@ai-sdk/openai-compatible",options:{},models:{}};for(let a of(t.options={...t.options,baseURL:o,apiKey:p},t.models=t.models||{},k))a&&"string"==typeof a&&(t.models[a]={name:a,modalities:{input:["text","image"],output:["text"]}});if(n.provider[u]=t,""===h)n.model="";else{let a=h||k[0];a&&(n.model=`${v}${a}`)}return n.agent||(n.agent={}),n.agent.explorer={description:"Fast explorer subagent for codebase exploration",mode:"subagent",model:`${v}${s}`},await j().writeFile(m,JSON.stringify(n,null,2)),e.NextResponse.json({success:!0,message:"OpenCode settings applied successfully!",configPath:m})}catch(a){return console.log("Error applying opencode settings:",a),e.NextResponse.json({error:"Failed to apply settings"},{status:500})}}async function A(a){try{let{clearActiveModel:b}=await a.json(),c=r(),d={};try{let a=await j().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&&w.test(d.model||"")&&(d.model=""),await j().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 B(a){try{let{searchParams:b}=new URL(a.url),c=b.get("model"),d=r(),f={};try{let a=await j().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=x(f),h=f.provider?.[u]?u:null;if(c&&g?.models&&h){if(delete g.models[c],0===Object.keys(g.models).length)delete f.provider[u],w.test(f.model||"")&&delete f.model;else if(f.model===`${v}${c}`){let a=Object.keys(g.models);f.model=`${v}${a[0]}`}}else f.provider&&delete f.provider[u],w.test(f.model||"")&&delete f.model;return w.test(f.agent?.explorer?.model||"")&&(delete f.agent.explorer,0===Object.keys(f.agent).length&&delete f.agent),await j().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,o.D)([y,z,A,B]),(0,d.A)(y,"00f632607fe7e4d24fdf5c792cdc13a98eee4d987c",null),(0,d.A)(z,"40228ae79e9bb5888ba10ff0439ca4cc509244c501",null),(0,d.A)(A,"40669983c4b35aed8d0d4492c3c6e56fef8bb3b4d2",null),(0,d.A)(B,"409d1c3e7a1bd05d400988a1b45a821e4b3c4ee186",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")},79984:(a,b,c)=>{c.d(b,{k:()=>f});var d=c(89718);let e=new Set(["sk_krouter","sk_9router"]);async function f(a){let b="string"==typeof a?a.trim():"";if(b&&!e.has(b))return b;try{let a=await (0,d.PX)();return a.find(a=>a.isActive)?.key||""}catch(a){return console.log("Error reading API keys for CLI tool config:",a),""}}},80099:a=>{a.exports=require("node:sqlite")},81787:a=>{a.exports=require("bun:sqlite")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},87550:a=>{a.exports=require("better-sqlite3")},89718:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q9:()=>d.Q9,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(9248)},94735:a=>{a.exports=require("events")},94755:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(50122);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}}};var b=require("../../../../webpack-runtime.js");b.C(a);var c=b.X(0,[2970,1813,369,9055,4884,4404,5024,5681,1350],()=>b(b.s=69389));module.exports=c})();