omniroute 3.0.6 → 3.0.7

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 (242) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +2 -2
  5. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  47. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  56. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  62. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js +2 -2
  71. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js.nft.json +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  74. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  80. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  83. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  84. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/400/page.js +2 -2
  86. package/app/.next/server/app/400/page.js.nft.json +1 -1
  87. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/401/page.js +2 -2
  89. package/app/.next/server/app/401/page.js.nft.json +1 -1
  90. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/403/page.js +2 -2
  92. package/app/.next/server/app/403/page.js.nft.json +1 -1
  93. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/408/page.js +2 -2
  95. package/app/.next/server/app/408/page.js.nft.json +1 -1
  96. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/429/page.js +2 -2
  98. package/app/.next/server/app/429/page.js.nft.json +1 -1
  99. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/500/page.js +2 -2
  101. package/app/.next/server/app/500/page.js.nft.json +1 -1
  102. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/502/page.js +2 -2
  104. package/app/.next/server/app/502/page.js.nft.json +1 -1
  105. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/503/page.js +2 -2
  107. package/app/.next/server/app/503/page.js.nft.json +1 -1
  108. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/_global-error/page.js +1 -1
  110. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  111. package/app/.next/server/app/_global-error.html +2 -2
  112. package/app/.next/server/app/_global-error.rsc +1 -1
  113. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  114. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  115. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  117. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  118. package/app/.next/server/app/_not-found/page.js +2 -2
  119. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  120. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/logs/console/route.js +1 -1
  122. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  123. package/app/.next/server/app/api/openapi/spec/route.js +1 -1
  124. package/app/.next/server/app/api/openapi/spec/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/settings/proxy/test/route.js +7 -2
  126. package/app/.next/server/app/api/settings/proxy/test/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/translator/load/route.js +1 -1
  128. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/translator/save/route.js +1 -1
  130. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/usage/[connectionId]/route.js +6 -5
  132. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  133. package/app/.next/server/app/callback/page.js +2 -2
  134. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  135. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/docs/page.js +2 -2
  137. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  138. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/forbidden/page.js +2 -2
  140. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  141. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/forgot-password/page.js +2 -2
  143. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  144. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/landing/page.js +2 -2
  146. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  147. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/login/page.js +2 -2
  149. package/app/.next/server/app/login/page.js.nft.json +1 -1
  150. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/maintenance/page.js +2 -2
  152. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  153. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/offline/page.js +2 -2
  155. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  156. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/page.js +2 -2
  158. package/app/.next/server/app/page.js.nft.json +1 -1
  159. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/privacy/page.js +2 -2
  161. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  162. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/status/page.js +2 -2
  164. package/app/.next/server/app/status/page.js.nft.json +1 -1
  165. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/terms/page.js +2 -2
  167. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  168. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  169. package/app/.next/server/chunks/[root-of-the-server]__051203a6._.js +2 -2
  170. package/app/.next/server/chunks/[root-of-the-server]__0891af92._.js +1 -1
  171. package/app/.next/server/chunks/{[root-of-the-server]__fea5312b._.js → [root-of-the-server]__1a67cabb._.js} +2 -2
  172. package/app/.next/server/chunks/[root-of-the-server]__1f2b0d89._.js +1 -1
  173. package/app/.next/server/chunks/[root-of-the-server]__228deb98._.js +6 -0
  174. package/app/.next/server/chunks/[root-of-the-server]__3aa1672b._.js +3 -0
  175. package/app/.next/server/chunks/{[root-of-the-server]__9d50d114._.js → [root-of-the-server]__3e31c0c5._.js} +2 -2
  176. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  177. package/app/.next/server/chunks/[root-of-the-server]__4e5a04c2._.js +1 -1
  178. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  179. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  180. package/app/.next/server/chunks/[root-of-the-server]__7d0781e8._.js +6 -0
  181. package/app/.next/server/chunks/[root-of-the-server]__7fa4d14e._.js +1 -1
  182. package/app/.next/server/chunks/{[root-of-the-server]__6ff1ab32._.js → [root-of-the-server]__ab1817d2._.js} +2 -2
  183. package/app/.next/server/chunks/{[root-of-the-server]__e376e668._.js → [root-of-the-server]__b2d1faff._.js} +2 -2
  184. package/app/.next/server/chunks/{[root-of-the-server]__192ce3e4._.js → [root-of-the-server]__b974107a._.js} +2 -2
  185. package/app/.next/server/chunks/[root-of-the-server]__d49fae76._.js +3 -0
  186. package/app/.next/server/chunks/{[root-of-the-server]__1a89bfa5._.js → [root-of-the-server]__d6de923d._.js} +3 -3
  187. package/app/.next/server/chunks/_05c48915._.js +1 -1
  188. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  189. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  190. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  191. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  192. package/app/.next/server/chunks/_68683848._.js +1 -1
  193. package/app/.next/server/chunks/_85c0d9b3._.js +1 -1
  194. package/app/.next/server/chunks/_d13cbb6d._.js +3 -0
  195. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  196. package/app/.next/server/chunks/open-sse_config_providerModels_ts_04541468._.js +1 -1
  197. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_2f74ec2a._.js +1 -1
  198. package/app/.next/server/chunks/open-sse_config_providerRegistry_ts_dec0f840._.js +1 -1
  199. package/app/.next/server/chunks/ssr/{[root-of-the-server]__d5a9e5ee._.js → [root-of-the-server]__62183d3b._.js} +2 -2
  200. package/app/.next/server/chunks/ssr/{[root-of-the-server]__e4499d60._.js → [root-of-the-server]__7a1929fd._.js} +2 -2
  201. package/app/.next/server/chunks/ssr/{[root-of-the-server]__18da985c._.js → [root-of-the-server]__9c6249ab._.js} +2 -2
  202. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  203. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  204. package/app/.next/server/chunks/ssr/_19b3d5b1._.js +1 -1
  205. package/app/.next/server/chunks/ssr/open-sse_config_providerModels_ts_4cac55e2._.js +1 -1
  206. package/app/.next/server/chunks/ssr/src_608e5edc._.js +1 -1
  207. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_936a9ee0._.js +1 -1
  208. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_playground_page_tsx_06c08266._.js +2 -2
  209. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_9e20fb8d._.js +1 -1
  210. package/app/.next/server/middleware.js +1 -1
  211. package/app/.next/server/pages/500.html +2 -2
  212. package/app/.next/server/server-reference-manifest.js +1 -1
  213. package/app/.next/server/server-reference-manifest.json +1 -1
  214. package/app/.next/static/chunks/{c4538578367f8d6e.js → 29003ec8ef226c62.js} +2 -2
  215. package/app/.next/static/chunks/{98a065e472ead1c5.js → 58d319dd9faa8901.js} +1 -1
  216. package/app/.next/static/chunks/6350bc1d56a7114c.js +2 -0
  217. package/app/.next/static/chunks/{339b27cecfee41d1.js → 84065c05df1a3a1a.js} +1 -1
  218. package/app/.next/static/chunks/9330486b16098458.js +1 -0
  219. package/app/.next/static/chunks/a622fa7a630e2dc2.js +1 -0
  220. package/app/CHANGELOG.md +22 -0
  221. package/app/docs/openapi.yaml +1 -1
  222. package/app/open-sse/config/providerRegistry.ts +7 -1
  223. package/app/open-sse/services/signatureCache.ts +5 -0
  224. package/app/package-lock.json +2 -2
  225. package/app/package.json +1 -1
  226. package/app/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.tsx +40 -0
  227. package/app/src/app/(dashboard)/dashboard/playground/page.tsx +39 -40
  228. package/app/src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx +1 -2
  229. package/app/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx +1 -1
  230. package/app/src/app/api/settings/proxy/test/route.ts +21 -1
  231. package/app/src/app/api/usage/[connectionId]/route.ts +83 -35
  232. package/package.json +1 -1
  233. package/app/.next/server/chunks/[root-of-the-server]__5dcab57b._.js +0 -6
  234. package/app/.next/server/chunks/[root-of-the-server]__643f87ad._.js +0 -3
  235. package/app/.next/server/chunks/[root-of-the-server]__765c4417._.js +0 -3
  236. package/app/.next/server/chunks/[root-of-the-server]__7afe1e49._.js +0 -3
  237. package/app/.next/static/chunks/0e39e279bf7e4cd9.js +0 -2
  238. package/app/.next/static/chunks/3f18998354dd49b9.js +0 -1
  239. package/app/.next/static/chunks/f62c550263d8bca8.js +0 -1
  240. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_buildManifest.js +0 -0
  241. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_clientMiddlewareManifest.json +0 -0
  242. /package/app/.next/static/{4vzx2qUM_tiJPdpx_Hiqj → kmbT_1tKg7aSbEcFkhAUg}/_ssgManifest.js +0 -0
@@ -33,6 +33,7 @@ export default function CLIToolsPageClient({ machineId }) {
33
33
  const [apiKeys, setApiKeys] = useState([]);
34
34
  const [toolStatuses, setToolStatuses] = useState({});
35
35
  const [statusesLoaded, setStatusesLoaded] = useState(false);
36
+ const [dynamicModels, setDynamicModels] = useState([]);
36
37
  const translateOrFallback = useCallback(
37
38
  (key, fallback, values = undefined) => {
38
39
  try {
@@ -49,6 +50,7 @@ export default function CLIToolsPageClient({ machineId }) {
49
50
  loadCloudSettings();
50
51
  fetchApiKeys();
51
52
  fetchToolStatuses();
53
+ fetchDynamicModels();
52
54
  }, []);
53
55
 
54
56
  const loadCloudSettings = async () => {
@@ -107,6 +109,18 @@ export default function CLIToolsPageClient({ machineId }) {
107
109
  }
108
110
  };
109
111
 
112
+ const fetchDynamicModels = async () => {
113
+ try {
114
+ const res = await fetch("/v1/models");
115
+ if (res.ok) {
116
+ const data = await res.json();
117
+ setDynamicModels(data?.data || []);
118
+ }
119
+ } catch (error) {
120
+ console.log("Error fetching dynamic models:", error);
121
+ }
122
+ };
123
+
110
124
  const getActiveProviders = () => {
111
125
  return connections.filter((c) => c.isActive !== false);
112
126
  };
@@ -116,6 +130,7 @@ export default function CLIToolsPageClient({ machineId }) {
116
130
  const models = [];
117
131
  const seenModels = new Set();
118
132
 
133
+ // First: add static models from the constants
119
134
  activeProviders.forEach((conn) => {
120
135
  const alias = PROVIDER_ID_TO_ALIAS[conn.provider] || conn.provider;
121
136
  const providerModels = getModelsByProviderId(conn.provider);
@@ -135,6 +150,31 @@ export default function CLIToolsPageClient({ machineId }) {
135
150
  });
136
151
  });
137
152
 
153
+ // Second: add dynamic models from /v1/models (fills gaps for Kiro, OpenCode, custom providers)
154
+ const activeProviderIds = new Set(activeProviders.map((c) => c.provider));
155
+ const activeAliases = new Set(
156
+ activeProviders.map((c) => PROVIDER_ID_TO_ALIAS[c.provider] || c.provider)
157
+ );
158
+ dynamicModels.forEach((dm) => {
159
+ const modelId = dm.id || dm;
160
+ if (seenModels.has(modelId)) return;
161
+ // Parse alias/model format
162
+ const slashIdx = modelId.indexOf("/");
163
+ if (slashIdx === -1) return;
164
+ const alias = modelId.substring(0, slashIdx);
165
+ const bareModel = modelId.substring(slashIdx + 1);
166
+ if (!activeAliases.has(alias) && !activeProviderIds.has(alias)) return;
167
+ seenModels.add(modelId);
168
+ models.push({
169
+ value: modelId,
170
+ label: modelId,
171
+ provider: alias,
172
+ alias: alias,
173
+ connectionName: "",
174
+ modelId: bareModel,
175
+ });
176
+ });
177
+
138
178
  return models;
139
179
  };
140
180
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useState, useEffect, useCallback, useRef } from "react";
4
4
  import { Card, Button, Select, Badge } from "@/shared/components";
5
+ import { ALIAS_TO_ID } from "@/shared/constants/providers";
5
6
  import dynamic from "next/dynamic";
6
7
 
7
8
  const Editor = dynamic(() => import("@monaco-editor/react"), { ssr: false });
@@ -189,7 +190,7 @@ function ImageResultsInline({ data }: { data: any }) {
189
190
  export default function PlaygroundPage() {
190
191
  const [models, setModels] = useState<ModelInfo[]>([]);
191
192
  const [providers, setProviders] = useState<ProviderOption[]>([]);
192
- const [connections, setConnections] = useState<ConnectionOption[]>([]);
193
+ const [allConnections, setAllConnections] = useState<ConnectionOption[]>([]);
193
194
  const [selectedProvider, setSelectedProvider] = useState("");
194
195
  const [selectedModel, setSelectedModel] = useState("");
195
196
  const [selectedConnection, setSelectedConnection] = useState("");
@@ -214,39 +215,16 @@ export default function PlaygroundPage() {
214
215
  const isImageEndpoint = selectedEndpoint === "images";
215
216
  const supportsVision = isChatEndpoint && isVisionModel(selectedModel);
216
217
 
217
- // Load connections for a given provider (called imperatively)
218
- const loadConnections = useCallback((provider: string) => {
219
- if (!provider) {
220
- setConnections([]);
221
- setSelectedConnection("");
222
- return;
223
- }
224
- fetch("/api/providers/client")
225
- .then((res) => res.json())
226
- .then((data) => {
227
- const allConns: ConnectionOption[] = [];
228
- for (const p of data?.providers || []) {
229
- if (p.id !== provider) continue;
230
- for (const conn of p.connections || []) {
231
- allConns.push({
232
- id: conn.id,
233
- name: conn.name || conn.id,
234
- provider: p.id,
235
- authType: conn.authType || "apiKey",
236
- });
237
- }
238
- }
239
- setConnections(allConns);
240
- setSelectedConnection("");
241
- })
242
- .catch(() => {
243
- setConnections([]);
244
- setSelectedConnection("");
245
- });
246
- }, []);
218
+ // Load connections for a given provider filtered from allConnections
219
+ const providerConnections = allConnections.filter((c) => {
220
+ if (!selectedProvider) return false;
221
+ const resolvedProvider = ALIAS_TO_ID[selectedProvider] || selectedProvider;
222
+ return c.provider === resolvedProvider || c.provider === selectedProvider;
223
+ });
247
224
 
248
- // Fetch models and initialize first provider
225
+ // Fetch models and ALL connections at startup
249
226
  useEffect(() => {
227
+ // Fetch models
250
228
  fetch("/v1/models")
251
229
  .then((res) => res.json())
252
230
  .then((data) => {
@@ -264,11 +242,27 @@ export default function PlaygroundPage() {
264
242
  setProviders(providerOpts);
265
243
  if (providerOpts.length > 0) {
266
244
  setSelectedProvider(providerOpts[0].value);
267
- loadConnections(providerOpts[0].value);
268
245
  }
269
246
  })
270
247
  .catch(() => {});
271
- }, [loadConnections]);
248
+
249
+ // Fetch ALL connections (once)
250
+ fetch("/api/providers/client")
251
+ .then((res) => res.json())
252
+ .then((data) => {
253
+ const conns: ConnectionOption[] = [];
254
+ for (const conn of data?.connections || []) {
255
+ conns.push({
256
+ id: conn.id,
257
+ name: conn.name || conn.email || conn.id,
258
+ provider: conn.provider,
259
+ authType: conn.authType || "apiKey",
260
+ });
261
+ }
262
+ setAllConnections(conns);
263
+ })
264
+ .catch(() => {});
265
+ }, []);
272
266
 
273
267
  const filteredModels = models
274
268
  .filter((m) => !selectedProvider || m.id.startsWith(selectedProvider + "/"))
@@ -285,7 +279,6 @@ export default function PlaygroundPage() {
285
279
  const handleProviderChange = (newProvider: string) => {
286
280
  setSelectedProvider(newProvider);
287
281
  setSelectedConnection("");
288
- loadConnections(newProvider);
289
282
  const providerModels = models
290
283
  .filter((m) => !newProvider || m.id.startsWith(newProvider + "/"))
291
284
  .map((m) => m.id);
@@ -527,18 +520,24 @@ export default function PlaygroundPage() {
527
520
  </div>
528
521
  )}
529
522
 
530
- {/* Account/Connection — shown when provider has multiple connections */}
531
- {!isSearchEndpoint && connections.length > 1 && (
523
+ {/* Account/Keyalways shown when provider is selected */}
524
+ {!isSearchEndpoint && (
532
525
  <div className="flex-1 w-full">
533
526
  <label className="block text-xs font-medium text-text-muted mb-1.5 uppercase tracking-wider">
534
- Account
527
+ Account / Key
535
528
  </label>
536
529
  <Select
537
530
  value={selectedConnection}
538
531
  onChange={(e: any) => setSelectedConnection(e.target.value)}
539
532
  options={[
540
- { value: "", label: `All (${connections.length} accounts)` },
541
- ...connections.map((c) => ({
533
+ {
534
+ value: "",
535
+ label:
536
+ providerConnections.length > 0
537
+ ? `Auto (${providerConnections.length} accounts)`
538
+ : "No accounts",
539
+ },
540
+ ...providerConnections.map((c) => ({
542
541
  value: c.id,
543
542
  label: c.name,
544
543
  })),
@@ -209,12 +209,11 @@ export default function ProxyRegistryManager() {
209
209
  method: "POST",
210
210
  headers: { "Content-Type": "application/json" },
211
211
  body: JSON.stringify({
212
+ proxyId: item.id,
212
213
  proxy: {
213
214
  type: item.type || "http",
214
215
  host: item.host,
215
216
  port: String(item.port || 8080),
216
- username: item.username,
217
- password: item.password,
218
217
  },
219
218
  }),
220
219
  });
@@ -511,7 +511,7 @@ export default function ProviderLimits() {
511
511
  </div>
512
512
 
513
513
  {/* Account rows */}
514
- <div className="rounded-xl border border-border overflow-hidden bg-bg-subtle">
514
+ <div className="rounded-xl border border-border overflow-hidden bg-surface">
515
515
  {/* Table header */}
516
516
  <div
517
517
  className="items-center px-4 py-2.5 border-b border-border text-[11px] font-semibold uppercase tracking-wider text-text-muted"
@@ -8,6 +8,7 @@ import {
8
8
  import { testProxySchema } from "@/shared/validation/schemas";
9
9
  import { isValidationFailure, validateBody } from "@/shared/validation/helpers";
10
10
  import { createErrorResponse, createErrorResponseFromUnknown } from "@/lib/api/errorResponse";
11
+ import { getProxyById } from "@/lib/localDb";
11
12
 
12
13
  const BASE_SUPPORTED_PROXY_TYPES = new Set(["http", "https"]);
13
14
 
@@ -56,7 +57,26 @@ export async function POST(request: Request) {
56
57
  type: "invalid_request",
57
58
  });
58
59
  }
59
- const { proxy } = validation.data;
60
+ let { proxy } = validation.data;
61
+
62
+ // If a proxyId is provided, look up the real (non-redacted) credentials from DB.
63
+ // The frontend sends redacted credentials (***) from listProxies(), so we need
64
+ // the actual secrets for testing.
65
+ const body = rawBody as Record<string, unknown>;
66
+ const proxyId = typeof body.proxyId === "string" ? body.proxyId.trim() : null;
67
+ if (proxyId) {
68
+ const dbProxy = await getProxyById(proxyId, { includeSecrets: true });
69
+ if (dbProxy) {
70
+ proxy = {
71
+ ...proxy,
72
+ host: proxy.host || dbProxy.host,
73
+ port: proxy.port || String(dbProxy.port),
74
+ type: proxy.type || dbProxy.type,
75
+ username: dbProxy.username,
76
+ password: dbProxy.password,
77
+ };
78
+ }
79
+ }
60
80
 
61
81
  const proxyType = String(proxy.type || "http").toLowerCase();
62
82
  if (proxyType === "socks5" && !isSocks5ProxyEnabled()) {
@@ -135,50 +135,98 @@ export async function GET(
135
135
  // so that both credential refresh AND usage fetch go through the proxy.
136
136
  const proxyInfo = await resolveProxyForConnection(connectionId);
137
137
 
138
- // Wrap BOTH credential refresh and usage fetch inside proxy context.
139
- // Codex accounts behind SOCKS5 proxies need the proxy active during token refresh too.
140
- const { usage, refreshed } = (await runWithProxyContext(proxyInfo?.proxy || null, async () => {
141
- let conn = connection;
142
- let wasRefreshed = false;
138
+ // Helper: perform credential refresh + usage fetch
139
+ const fetchUsageWithContext = async (proxyConfig: unknown) => {
140
+ return runWithProxyContext(proxyConfig, async () => {
141
+ let conn = connection;
142
+ let wasRefreshed = false;
143
143
 
144
- // Refresh credentials if needed using executor
145
- try {
146
- const result = await refreshAndUpdateCredentials(conn);
147
- conn = result.connection;
148
- wasRefreshed = result.refreshed;
144
+ // Refresh credentials if needed using executor
145
+ try {
146
+ const result = await refreshAndUpdateCredentials(conn);
147
+ conn = result.connection;
148
+ wasRefreshed = result.refreshed;
149
149
 
150
- // Sync to cloud only if token was refreshed
151
- if (wasRefreshed) {
152
- await syncToCloudIfEnabled();
150
+ // Sync to cloud only if token was refreshed
151
+ if (wasRefreshed) {
152
+ await syncToCloudIfEnabled();
153
+ }
154
+ } catch (refreshError) {
155
+ console.error("[Usage API] Credential refresh failed:", refreshError);
156
+ throw refreshError;
153
157
  }
154
- } catch (refreshError) {
155
- console.error("[Usage API] Credential refresh failed:", refreshError);
156
- throw refreshError;
158
+
159
+ // Fetch usage from provider API
160
+ const usageData = await getUsageForProvider(conn);
161
+ connection = conn; // propagate updated connection for status sync below
162
+ return { usage: usageData, refreshed: wasRefreshed };
163
+ });
164
+ };
165
+
166
+ // Check if a usage result indicates a network-level error (proxy can't relay)
167
+ const isNetworkFailure = (usageResult: any): boolean => {
168
+ const msg = usageResult?.usage?.message;
169
+ if (typeof msg !== "string") return false;
170
+ return (
171
+ msg.includes("fetch failed") ||
172
+ msg.includes("ECONNREFUSED") ||
173
+ msg.includes("ETIMEDOUT") ||
174
+ msg.includes("Proxy unreachable") ||
175
+ msg.includes("UND_ERR_CONNECT_TIMEOUT")
176
+ );
177
+ };
178
+
179
+ let result: any;
180
+ const proxyConfig = proxyInfo?.proxy || null;
181
+ try {
182
+ result = await fetchUsageWithContext(proxyConfig);
183
+ } catch (proxyError: any) {
184
+ const isAuthError =
185
+ proxyError?.message?.includes?.("refresh") || proxyError?.message?.includes?.("Credential");
186
+
187
+ if (isAuthError) {
188
+ return Response.json(
189
+ { error: `Credential refresh failed: ${proxyError.message}` },
190
+ { status: 401 }
191
+ );
157
192
  }
158
193
 
159
- // Fetch usage from provider API
160
- const usageData = await getUsageForProvider(conn);
161
- connection = conn; // propagate updated connection for status sync below
162
- return { usage: usageData, refreshed: wasRefreshed };
163
- }).catch((refreshError: any) => {
164
- // If error originated from credential refresh, return 401
165
- if (
166
- refreshError?.message?.includes?.("refresh") ||
167
- refreshError?.message?.includes?.("Credential")
168
- ) {
169
- return { __authError: true, message: refreshError.message };
194
+ // If proxy was active and it's a network error (thrown), retry without proxy
195
+ const isThrownNetworkError =
196
+ proxyError?.message === "fetch failed" ||
197
+ proxyError?.code === "PROXY_UNREACHABLE" ||
198
+ proxyError?.code === "UND_ERR_CONNECT_TIMEOUT" ||
199
+ proxyError?.cause?.code === "ECONNREFUSED";
200
+
201
+ if (proxyConfig && isThrownNetworkError) {
202
+ console.warn(
203
+ `[Usage API] Proxy fetch threw for ${connectionId}, retrying without proxy:`,
204
+ proxyError?.message
205
+ );
206
+ result = await fetchUsageWithContext(null);
207
+ } else {
208
+ throw proxyError;
170
209
  }
171
- throw refreshError;
172
- })) as any;
173
-
174
- // Handle auth errors from credential refresh
175
- if (usage?.__authError) {
176
- return Response.json(
177
- { error: `Credential refresh failed: ${usage.message}` },
178
- { status: 401 }
210
+ }
211
+
212
+ // If the usage result contains a network error AND a proxy was active,
213
+ // retry without proxy. getCodexUsage() catches fetch errors internally
214
+ // and returns {message: "Failed to fetch..."} instead of throwing.
215
+ if (proxyConfig && isNetworkFailure(result)) {
216
+ console.warn(
217
+ `[Usage API] Proxy usage returned network error for ${connectionId}, retrying without proxy:`,
218
+ result.usage?.message
179
219
  );
220
+ try {
221
+ result = await fetchUsageWithContext(null);
222
+ } catch (directError: any) {
223
+ console.error("[Usage API] Direct fetch also failed:", directError?.message);
224
+ throw directError;
225
+ }
180
226
  }
181
227
 
228
+ const { usage, refreshed } = result;
229
+
182
230
  // Populate quota cache for quota-aware account selection
183
231
  if (isRecord(usage?.quotas)) {
184
232
  setQuotaCache(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "description": "Smart AI Router with auto fallback — route to FREE & cheap models, zero downtime. Works with Cursor, Cline, Claude Desktop, Codex, and any OpenAI-compatible tool.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,6 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var n=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,s=Object.prototype.hasOwnProperty,a={},c={RequestCookies:()=>g,ResponseCookies:()=>y,parseCookie:()=>u,parseSetCookie:()=>p,stringifyCookie:()=>d};for(var l in c)n(a,l,{get:c[l],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),n=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?n:`${n}; ${r.join("; ")}`}function u(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[n,i]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=i?i:"true"))}catch{}}return t}function p(e){if(!e)return;let[[t,r],...n]=u(e),{domain:i,expires:o,httponly:s,maxage:a,path:c,samesite:l,secure:d,partitioned:p,priority:g}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,m,x={name:t,value:decodeURIComponent(r),domain:i,...o&&{expires:new Date(o)},...s&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:c,...l&&{sameSite:h.includes(y=(y=l).toLowerCase())?y:void 0},...d&&{secure:!0},...g&&{priority:f.includes(m=(m=g).toLowerCase())?m:void 0},...p&&{partitioned:!0}};let e={};for(let t in x)x[t]&&(e[t]=x[t]);return e}}t.exports=((e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))s.call(e,r)||void 0===r||n(e,r,{get:()=>t[r],enumerable:!(a=i(t,r))||a.enumerable});return e})(n({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],f=["low","medium","high"],g=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of u(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===n).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,n=this._parsed;return n.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(n).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,n;this._parsed=new Map,this._headers=e;const i=null!=(n=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?n:[];for(const e of Array.isArray(i)?i:function(e){if(!e)return[];var t,r,n,i,o,s=[],a=0;function c(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,o=!1;c();)if(","===(r=e.charAt(a))){for(n=a,a+=1,c(),i=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(o=!0,a=i,s.push(e.substring(t,n)),t=a):a=n+1}else a+=1;(!o||a>=e.length)&&s.push(e.substring(t,e.length))}return s}(i)){const t=p(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let n="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===n)}has(e){return this._parsed.has(e)}set(...e){let[t,r,n]=1===e.length?[e[0].name,e[0].value,e[0]]:e,i=this._parsed;return i.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...n})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(i,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},785148,(e,t,r)=>{t.exports=e.x("better-sqlite3",()=>require("better-sqlite3"))},256770,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let n="omniroute";function i(){try{return r.default.homedir()}catch{return process.cwd()}}function o(e){if("string"!=typeof e)return null;let r=e.trim();return r?t.default.resolve(r):null}function s(){return t.default.join(i(),`.${n}`)}function a(){i();let e=o(process.env.XDG_CONFIG_HOME);return e?t.default.join(e,n):s()}function c({isCloud:e=!1}={}){if(e)return"/tmp";let t=o(process.env.DATA_DIR);return t||a()}function l(e,r){return!!e&&!!r&&t.default.resolve(e)===t.default.resolve(r)}e.s(["APP_NAME",0,n,"getDefaultDataDir",()=>a,"getLegacyDotDataDir",()=>s,"isSamePath",()=>l,"resolveDataDir",()=>c])},439951,e=>{"use strict";var t=e.i(157763);function r(){try{return(0,t.getDbInstance)()}catch{return null}}function n(e){let t=r();if(t)try{t.prepare(`
2
- INSERT INTO audit_log (action, actor, target, details, ip_address)
3
- VALUES (?, ?, ?, ?, ?)
4
- `).run(e.action,e.actor||"system",e.target||null,"object"==typeof e.details?JSON.stringify(e.details):e.details||null,e.ipAddress||null)}catch{}}function i(e={}){let t=r();if(!t)return[];let n=[],o=[];e.action&&(n.push("action = ?"),o.push(e.action)),e.actor&&(n.push("actor = ?"),o.push(e.actor));let s=n.length>0?`WHERE ${n.join(" AND ")}`:"",a=e.limit||100,c=e.offset||0;return t.prepare(`SELECT * FROM audit_log ${s} ORDER BY timestamp DESC LIMIT ? OFFSET ?`).all(...o,a,c).map(e=>({...e,details:e.details?JSON.parse(String(e.details)):null}))}parseInt(process.env.LOG_RETENTION_DAYS||"90",10);let o=new Set,s=new Map,a=!1,c=!1;for(let e of(process.env.NO_LOG_API_KEY_IDS||"").split(",").map(e=>e.trim()).filter(Boolean))o.add(e);function l(e,t){t?o.add(e):o.delete(e),s.set(e,{value:t,timestamp:Date.now()})}function d(e){if(!e)return!1;if(o.has(e))return!0;let t=function(e){let t=r();if(!t||!e||!function(e){if(a)return c;try{c=e.prepare("PRAGMA table_info(api_keys)").all().some(e=>"no_log"===e.name)}catch{c=!1}return a=!0,c}(t))return!1;let n=s.get(e);if(n&&Date.now()-n.timestamp<3e4)return n.value;try{let r=t.prepare("SELECT no_log FROM api_keys WHERE id = ?").get(e),n=!!(r&&1===Number(r.no_log));return s.set(e,{value:n,timestamp:Date.now()}),n}catch{return!1}}(e);return t&&o.add(e),t}e.s(["getAuditLog",()=>i,"isNoLog",()=>d,"logAuditEvent",()=>n,"setNoLog",()=>l])},663370,632802,477468,e=>{"use strict";let t=new TextEncoder,r=new TextDecoder;function n(...e){let t=new Uint8Array(e.reduce((e,{length:t})=>e+t,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}function i(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>127)throw TypeError("non-ASCII string encountered in encode()");t[r]=n}return t}function o(e){if(Uint8Array.prototype.toBase64)return e.toBase64();let t=[];for(let r=0;r<e.length;r+=32768)t.push(String.fromCharCode.apply(null,e.subarray(r,r+32768)));return btoa(t.join(""))}function s(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(e);let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function a(e){if(Uint8Array.fromBase64)return Uint8Array.fromBase64("string"==typeof e?e:r.decode(e),{alphabet:"base64url"});let t=e;t instanceof Uint8Array&&(t=r.decode(t)),t=t.replace(/-/g,"+").replace(/_/g,"/");try{return s(t)}catch{throw TypeError("The input to be decoded is not correctly encoded.")}}function c(e){let r=e;return("string"==typeof r&&(r=t.encode(r)),Uint8Array.prototype.toBase64)?r.toBase64({alphabet:"base64url",omitPadding:!0}):o(r).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}e.s(["concat",()=>n,"decoder",0,r,"encode",()=>i,"encoder",0,t],632802),e.s(["decodeBase64",()=>s,"encodeBase64",()=>o],477468),e.s(["decode",()=>a,"encode",()=>c],663370)},865466,e=>{"use strict";class t extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(e,t){super(e,t),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}}class r extends t{static code="ERR_JWT_CLAIM_VALIDATION_FAILED";code="ERR_JWT_CLAIM_VALIDATION_FAILED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class n extends t{static code="ERR_JWT_EXPIRED";code="ERR_JWT_EXPIRED";claim;reason;payload;constructor(e,t,r="unspecified",n="unspecified"){super(e,{cause:{claim:r,reason:n,payload:t}}),this.claim=r,this.reason=n,this.payload=t}}class i extends t{static code="ERR_JOSE_ALG_NOT_ALLOWED";code="ERR_JOSE_ALG_NOT_ALLOWED"}class o extends t{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"}class s extends t{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"}class a extends t{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"}class c extends t{[Symbol.asyncIterator];static code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";code="ERR_JWKS_MULTIPLE_MATCHING_KEYS";constructor(e="multiple matching keys found in the JSON Web Key Set",t){super(e,t)}}class l extends t{static code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";code="ERR_JWS_SIGNATURE_VERIFICATION_FAILED";constructor(e="signature verification failed",t){super(e,t)}}e.s(["JOSEAlgNotAllowed",()=>i,"JOSENotSupported",()=>o,"JWSInvalid",()=>s,"JWSSignatureVerificationFailed",()=>l,"JWTClaimValidationFailed",()=>r,"JWTExpired",()=>n,"JWTInvalid",()=>a])},177278,e=>{"use strict";function t(e){if("object"!=typeof e||null===e||"[object Object]"!==Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function r(...e){let t,n=e.filter(Boolean);if(0===n.length||1===n.length)return!0;for(let e of n){let r=Object.keys(e);if(!t||0===t.size){t=new Set(r);continue}for(let e of r){if(t.has(e))return!1;t.add(e)}}return!0}e.s(["isDisjoint",()=>r,"isJWK",0,e=>t(e)&&"string"==typeof e.kty,"isObject",()=>t,"isPrivateJWK",0,e=>"oct"!==e.kty&&("AKP"===e.kty&&"string"==typeof e.priv||"string"==typeof e.d),"isPublicJWK",0,e=>"oct"!==e.kty&&void 0===e.d&&void 0===e.priv,"isSecretJWK",0,e=>"oct"===e.kty&&"string"==typeof e.k])},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},250875,e=>{"use strict";var t=e.i(233405),r=e.i(522734);async function n(i=null){let o=i||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt";try{let n=function(){try{let e=process.env.SystemRoot||process.env.windir||"C:\\Windows",n=`${e}\\System32\\REG.exe`;if((0,r.existsSync)(n)){let e=(0,t.execFileSync)(n,["QUERY","HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"],{encoding:"utf8",timeout:5e3}),r=e.split("REG_SZ")[1]?.replace(/\r+|\n+|\s+/gi,"")?.toLowerCase();if(r&&r.length>8)return r}}catch{}try{let e=(0,t.execSync)("ioreg -rd1 -c IOPlatformExpertDevice",{encoding:"utf8",timeout:5e3});if(e.includes("IOPlatformUUID")){let t=e.split("IOPlatformUUID")[1]?.split("\n")[0]?.replace(/=|\s+|"/gi,"")?.toLowerCase();if(t&&t.length>8)return t}}catch{}try{for(let e of["/etc/machine-id","/var/lib/dbus/machine-id"])if((0,r.existsSync)(e)){let t=(0,r.readFileSync)(e,"utf8").trim().toLowerCase();if(t.length>8)return t}}catch{}try{let e=(0,t.execSync)("hostname",{encoding:"utf8",timeout:5e3}).trim().toLowerCase();if(e)return e}catch{}try{return e.r(446786).hostname().toLowerCase()}catch{}return"unknown-machine"}();return(await e.A(485685)).createHash("sha256").update(n+o).digest("hex").substring(0,16)}catch(t){console.log("Error getting machine ID:",t);try{return(await e.A(485685)).randomUUID()}catch{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})}}}e.s(["getConsistentMachineId",()=>n])},639173,e=>{"use strict";e.i(245272);var t=e.i(385498),r=e.i(186920),n=e.i(151205),i=e.i(125852);let o=process.env.CLOUD_URL||process.env.NEXT_PUBLIC_CLOUD_URL,s=Number(process.env.CLOUD_SYNC_TIMEOUT_MS||12e3);function a(e){return e&&"object"==typeof e&&!Array.isArray(e)?e:{}}function c(e){if("string"==typeof e||"number"==typeof e||e instanceof Date){let t=new Date(e).getTime();return Number.isFinite(t)?t:0}return 0}async function l(e,t={},r=s){let n=new AbortController,i=setTimeout(()=>n.abort(),r);try{return await fetch(e,{...t,signal:n.signal})}finally{clearTimeout(i)}}async function d(e,s=null){let a;if(!o)return{error:"NEXT_PUBLIC_CLOUD_URL is not configured"};let c=await (0,t.getProviderConnections)(),p=await (0,r.getModelAliases)(),h=await (0,n.getCombos)(),f=await (0,i.getApiKeys)();try{a=await l(`${o}/sync/${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({providers:c,modelAliases:p,combos:h,apiKeys:f})})}catch(e){return{error:e?.name==="AbortError"?"Cloud sync timeout":"Cloud sync request failed"}}if(!a.ok){let e=await a.text(),t=e.length>200?e.slice(0,200)+"…":e;return console.log(`Cloud sync failed (${a.status}):`,t),{error:"Cloud sync failed"}}let g=await a.json();g.data&&g.data.providers&&await u(g.data.providers);let y={success:!0,message:"Synced successfully",changes:g.changes};return s&&(y.createdKey=s),y}async function u(e){let r=a(e);for(let e of(await (0,t.getProviderConnections)())){var n;let i=a(e),o="string"==typeof(n=i.id)&&n.trim().length>0?n:null;if(!o)continue;let s=a(r[o]);if(0!==Object.keys(s).length){if(c(s.updatedAt)>c(i.updatedAt)){let e={accessToken:s.accessToken,refreshToken:s.refreshToken,expiresAt:s.expiresAt,expiresIn:s.expiresIn,providerSpecificData:s.providerSpecificData||i.providerSpecificData,testStatus:s.status||"active",lastError:s.lastError,lastErrorAt:s.lastErrorAt,errorCode:s.errorCode,rateLimitedUntil:s.rateLimitedUntil,updatedAt:s.updatedAt};await (0,t.updateProviderConnection)(o,e)}}}}e.s(["CLOUD_URL",()=>o,"fetchWithTimeout",()=>l,"syncToCloud",()=>d])},496727,e=>{"use strict";e.s(["FORMATS",0,{OPENAI:"openai",OPENAI_RESPONSES:"openai-responses",OPENAI_RESPONSE:"openai-response",CLAUDE:"claude",GEMINI:"gemini",GEMINI_CLI:"gemini-cli",CODEX:"codex",ANTIGRAVITY:"antigravity",KIRO:"kiro",CURSOR:"cursor"}])},827957,e=>{"use strict";var t=e.i(663370),r=e.i(293233),n=e.i(177278),i=e.i(865466),o=e.i(632802),s=e.i(48215),a=e.i(252665),c=e.i(18083),l=e.i(913658);class d{#e;#t;#r;constructor(e){if(!(e instanceof Uint8Array))throw TypeError("payload must be an instance of Uint8Array");this.#e=e}setProtectedHeader(e){return(0,l.assertNotSet)(this.#t,"setProtectedHeader"),this.#t=e,this}setUnprotectedHeader(e){return(0,l.assertNotSet)(this.#r,"setUnprotectedHeader"),this.#r=e,this}async sign(e,l){let d,u,p,h;if(!this.#t&&!this.#r)throw new i.JWSInvalid("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!(0,n.isDisjoint)(this.#t,this.#r))throw new i.JWSInvalid("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let f={...this.#t,...this.#r},g=(0,a.validateCrit)(i.JWSInvalid,new Map([["b64",!0]]),l?.crit,this.#t,f),y=!0;if(g.has("b64")&&"boolean"!=typeof(y=this.#t.b64))throw new i.JWSInvalid('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:m}=f;if("string"!=typeof m||!m)throw new i.JWSInvalid('JWS "alg" (Algorithm) Header Parameter missing or invalid');(0,s.checkKeyType)(m,e,"sign"),y?(d=(0,t.encode)(this.#e),u=(0,o.encode)(d)):(u=this.#e,d=""),this.#t?(p=(0,t.encode)(JSON.stringify(this.#t)),h=(0,o.encode)(p)):(p="",h=new Uint8Array);let x=(0,o.concat)(h,(0,o.encode)("."),u),E=await (0,c.normalizeKey)(e,m),_=await (0,r.sign)(m,E,x),v={signature:(0,t.encode)(_),payload:d};return this.#r&&(v.header=this.#r),this.#t&&(v.protected=p),v}}class u{#n;constructor(e){this.#n=new d(e)}setProtectedHeader(e){return this.#n.setProtectedHeader(e),this}async sign(e,t){let r=await this.#n.sign(e,t);if(void 0===r.payload)throw TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}}var p=e.i(224472);class h{#t;#i;constructor(e={}){this.#i=new p.JWTClaimsBuilder(e)}setIssuer(e){return this.#i.iss=e,this}setSubject(e){return this.#i.sub=e,this}setAudience(e){return this.#i.aud=e,this}setJti(e){return this.#i.jti=e,this}setNotBefore(e){return this.#i.nbf=e,this}setExpirationTime(e){return this.#i.exp=e,this}setIssuedAt(e){return this.#i.iat=e,this}setProtectedHeader(e){return this.#t=e,this}async sign(e,t){let r=new u(this.#i.data());if(r.setProtectedHeader(this.#t),Array.isArray(this.#t?.crit)&&this.#t.crit.includes("b64")&&!1===this.#t.b64)throw new i.JWTInvalid("JWTs MUST NOT use unencoded payload");return r.sign(e,t)}}e.s(["SignJWT",()=>h],827957)},982406,e=>{"use strict";var t=e.i(250875);async function r(){return await (0,t.getConsistentMachineId)()}e.s(["getMachineId",()=>r])},307488,e=>e.a(async(t,r)=>{try{e.i(245272);var n=e.i(385498),i=e.i(548941),o=e.i(982406),s=e.i(312215),a=e.i(6751),c=e.i(639173),l=e.i(444675),d=e.i(25687),u=t([a]);async function p(){try{let e=await (0,o.getMachineId)();if(!e)return;await (0,c.syncToCloud)(e)}catch(e){console.error("[Usage API] Error syncing to cloud:",e)}}async function h(e){let t=(0,a.getExecutor)(e.provider),r={accessToken:e.accessToken,refreshToken:e.refreshToken,expiresAt:e.tokenExpiresAt,providerSpecificData:e.providerSpecificData,copilotToken:e.providerSpecificData?.copilotToken,copilotTokenExpiresAt:e.providerSpecificData?.copilotTokenExpiresAt};if(!t.needsRefresh(r))return{connection:e,refreshed:!1};let i=await t.refreshCredentials(r,console);if(!i){if("github"===e.provider&&e.accessToken)return{connection:e,refreshed:!1};throw Error("Failed to refresh credentials. Please re-authorize the connection.")}let o={updatedAt:new Date().toISOString()};return i.accessToken&&(o.accessToken=i.accessToken),i.refreshToken&&(o.refreshToken=i.refreshToken),i.expiresIn?o.tokenExpiresAt=new Date(Date.now()+1e3*i.expiresIn).toISOString():i.expiresAt&&(o.tokenExpiresAt=i.expiresAt),(i.copilotToken||i.copilotTokenExpiresAt)&&(o.providerSpecificData={...e.providerSpecificData,copilotToken:i.copilotToken,copilotTokenExpiresAt:i.copilotTokenExpiresAt}),await (0,n.updateProviderConnection)(e.id,o),{connection:{...e,...o},refreshed:!0}}async function f(e,{params:t}){try{var r;let{connectionId:e}=await t,o=await (0,n.getProviderConnectionById)(e);if(!o)return Response.json({error:"Connection not found"},{status:404});if("oauth"!==o.authType)return Response.json({message:"Usage not available for API key connections"});let a=await (0,i.resolveProxyForConnection)(e),{usage:c,refreshed:u}=await (0,l.runWithProxyContext)(a?.proxy||null,async()=>{let e=o,t=!1;try{let r=await h(e);e=r.connection,(t=r.refreshed)&&await p()}catch(e){throw console.error("[Usage API] Credential refresh failed:",e),e}let r=await (0,s.getUsageForProvider)(e);return o=e,{usage:r,refreshed:t}}).catch(e=>{if(e?.message?.includes?.("refresh")||e?.message?.includes?.("Credential"))return{__authError:!0,message:e.message};throw e});if(c?.__authError)return Response.json({error:`Credential refresh failed: ${c.message}`},{status:401});r=c?.quotas,null===r||"object"!=typeof r||Array.isArray(r)||(0,d.setQuotaCache)(e,o.provider,c.quotas);let f="string"==typeof c?.message?c.message.toLowerCase():"";if((f.includes("token expired")||f.includes("access denied")||f.includes("re-authenticate")||f.includes("unauthorized"))&&"expired"!==o.testStatus)try{await (0,n.updateProviderConnection)(o.id,{testStatus:"expired",lastErrorType:"token_expired",lastErrorAt:new Date().toISOString()})}catch(e){console.error("[Usage API] Failed to sync expired status to DB:",e)}return Response.json(c)}catch(e){return console.error("[Usage API] Error fetching usage:",e),console.error("[Usage API] Error stack:",e.stack),Response.json({error:e.message},{status:500})}}[a]=u.then?(await u)():u,e.s(["GET",()=>f]),r()}catch(e){r(e)}},!1),589356,e=>e.a(async(t,r)=>{try{var n=e.i(747909),i=e.i(174017),o=e.i(996250),s=e.i(759756),a=e.i(561916),c=e.i(174677),l=e.i(869741),d=e.i(316795),u=e.i(487718),p=e.i(995169),h=e.i(47587),f=e.i(666012),g=e.i(570101),y=e.i(626937),m=e.i(10372),x=e.i(193695);e.i(52474);var E=e.i(600220),_=e.i(307488),v=t([_]);[_]=v.then?(await v)():v;let R=new n.AppRouteRouteModule({definition:{kind:i.RouteKind.APP_ROUTE,page:"/api/usage/[connectionId]/route",pathname:"/api/usage/[connectionId]",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/usage/[connectionId]/route.ts",nextConfigOutput:"standalone",userland:_}),{workAsyncStorage:S,workUnitAsyncStorage:I,serverHooks:C}=R;function A(){return(0,o.patchFetch)({workAsyncStorage:S,workUnitAsyncStorage:I})}async function w(e,t,r){R.isDev&&(0,s.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/usage/[connectionId]/route";n=n.replace(/\/index$/,"")||"/";let o=await R.prepare(e,t,{srcPage:n,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:_,params:v,nextConfig:A,parsedUrl:w,isDraftMode:S,prerenderManifest:I,routerServerContext:C,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:D}=o,k=(0,l.normalizeAppPath)(n),N=!!(I.dynamicRoutes[k]||I.routes[O]),U=async()=>((null==C?void 0:C.render404)?await C.render404(e,t,w,!1):t.end("This page could not be found"),null);if(N&&!S){let e=!!I.routes[O],t=I.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await U();throw new x.NoFallbackError}}let j=null;!N||R.isDev||S||(j=O,j="/index"===j?"/":j);let H=!0===R.isDev||!N,L=N&&!H;D&&P&&(0,c.setManifestsSingleton)({page:n,clientReferenceManifest:P,serverActionsManifest:D});let J=e.method||"GET",M=(0,a.getTracer)(),W=M.getActiveScopeSpan(),$={params:v,prerenderManifest:I,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:H,incrementalCache:(0,s.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,i)=>R.onRequestError(e,t,n,i,C)},sharedContext:{buildId:_}},q=new d.NodeNextRequest(e),F=new d.NodeNextResponse(t),K=u.NextRequestAdapter.fromNodeNextRequest(q,(0,u.signalFromNodeResponse)(t));try{let o=async e=>R.handle(K,$).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=r.get("next.route");if(i){let t=`${J} ${i}`;e.setAttributes({"next.route":i,"http.route":i,"next.span_name":t}),e.updateName(t)}else e.updateName(`${J} ${n}`)}),c=!!(0,s.getRequestMeta)(e,"minimalMode"),l=async s=>{var a,l;let d=async({previousCacheEntry:i})=>{try{if(!c&&T&&b&&!i)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await o(s);e.fetchMetrics=$.renderOpts.fetchMetrics;let a=$.renderOpts.pendingWaitUntil;a&&r.waitUntil&&(r.waitUntil(a),a=void 0);let l=$.renderOpts.collectedTags;if(!N)return await (0,f.sendResponse)(q,F,n,$.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,g.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==$.renderOpts.collectedRevalidate&&!($.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&$.renderOpts.collectedRevalidate,i=void 0===$.renderOpts.collectedExpire||$.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:$.renderOpts.collectedExpire;return{value:{kind:E.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:i}}}}catch(t){throw(null==i?void 0:i.isStale)&&await R.onRequestError(e,t,{routerKind:"App Router",routePath:n,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),t}},u=await R.handleResponse({req:e,nextConfig:A,cacheKey:j,routeKind:i.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:I,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:b,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:c});if(!N)return null;if((null==u||null==(a=u.value)?void 0:a.kind)!==E.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});c||t.setHeader("x-nextjs-cache",T?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let p=(0,g.fromNodeOutgoingHttpHeaders)(u.value.headers);return c&&N||p.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||p.get("Cache-Control")||p.set("Cache-Control",(0,y.getCacheControlHeader)(u.cacheControl)),await (0,f.sendResponse)(q,F,new Response(u.value.body,{headers:p,status:u.value.status||200})),null};W?await l(W):await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${J} ${n}`,kind:a.SpanKind.SERVER,attributes:{"http.method":J,"http.target":e.url}},l))}catch(t){if(t instanceof x.NoFallbackError||await R.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:L,isOnDemandRevalidate:T})},!1,C),N)throw t;return await (0,f.sendResponse)(q,F,new Response(null,{status:500})),null}}e.s(["handler",()=>w,"patchFetch",()=>A,"routeModule",()=>R,"serverHooks",()=>C,"workAsyncStorage",()=>S,"workUnitAsyncStorage",()=>I]),r()}catch(e){r(e)}},!1),606102,e=>{e.v(e=>Promise.resolve().then(()=>e(548941)))},789543,e=>{e.v(e=>Promise.resolve().then(()=>e(385498)))},579042,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_utils_apiKey_ts_fa113e09._.js"].map(t=>e.l(t))).then(()=>t(65448)))},49794,e=>{e.v(t=>Promise.all(["server/chunks/src_shared_constants_pricing_ts_65de0558._.js"].map(t=>e.l(t))).then(()=>t(404503)))},386305,e=>{e.v(e=>Promise.resolve().then(()=>e(878947)))},485685,e=>{e.v(e=>Promise.resolve().then(()=>e(254799)))},605589,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_localDb_ts_83220848._.js"].map(t=>e.l(t))).then(()=>t(969738)))},901259,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_http2_740a89f0._.js"].map(t=>e.l(t))).then(()=>t(925328)))}];
5
-
6
- //# sourceMappingURL=%5Broot-of-the-server%5D__5dcab57b._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyNames,a=Object.prototype.hasOwnProperty,i={},l={RequestCookies:()=>m,ResponseCookies:()=>y,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>u};for(var p in l)s(i,p,{get:l[p],enumerable:!0});function u(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:o,httponly:a,maxage:i,path:l,samesite:p,secure:u,partitioned:c,priority:m}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var y,f,g={name:t,value:decodeURIComponent(r),domain:n,...o&&{expires:new Date(o)},...a&&{httpOnly:!0},..."string"==typeof i&&{maxAge:Number(i)},path:l,...p&&{sameSite:h.includes(y=(y=p).toLowerCase())?y:void 0},...u&&{secure:!0},...m&&{priority:x.includes(f=(f=m).toLowerCase())?f:void 0},...c&&{partitioned:!0}};let e={};for(let t in g)g[t]&&(e[t]=g[t]);return e}}t.exports=((e,t,r,i)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of o(t))a.call(e,r)||void 0===r||s(e,r,{get:()=>t[r],enumerable:!(i=n(t,r))||i.enumerable});return e})(s({},"__esModule",{value:!0}),i);var h=["strict","lax","none"],x=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>u(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>u(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},y=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,o,a=[],i=0;function l(){for(;i<e.length&&/\s/.test(e.charAt(i));)i+=1;return i<e.length}for(;i<e.length;){for(t=i,o=!1;l();)if(","===(r=e.charAt(i))){for(s=i,i+=1,l(),n=i;i<e.length&&"="!==(r=e.charAt(i))&&";"!==r&&","!==r;)i+=1;i<e.length&&"="===e.charAt(i)?(o=!0,i=n,a.push(e.substring(t,s)),t=i):i=s+1}else i+=1;(!o||i>=e.length)&&a.push(e.substring(t,e.length))}return a}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=u(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(u).join("; ")}}},97793,e=>{"use strict";let t=new Set(["host","connection","content-length","keep-alive","proxy-connection","transfer-encoding","te","trailer","upgrade"].map(e=>e.toLowerCase()));function r(e){return t.has(String(e).trim().toLowerCase())}e.s(["isForbiddenUpstreamHeaderName",()=>r])},254799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},677850,e=>e.a(async(t,r)=>{try{let t=await e.y("zod");e.n(t),r()}catch(e){r(e)}},!0),200392,e=>e.a(async(t,r)=>{try{var s=e.i(677850),n=t([s]);function o(e,t){let r=e.safeParse(t);if(r.success)return{success:!0,data:r.data};let s=Array.isArray(r.error?.issues)?r.error.issues:[];return{success:!1,error:{message:"Invalid request",details:s.map(e=>({field:e.path.join("."),message:e.message}))}}}function a(e){return!1===e.success}[s]=n.then?(await n)():n,s.z.object({password:s.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",()=>a,"validateBody",()=>o]),r()}catch(e){r(e)}},!1),750227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},761095,(e,t,r)=>{t.exports=e.x("node:net",()=>require("node:net"))},478500,(e,t,r)=>{t.exports=e.x("node:async_hooks",()=>require("node:async_hooks"))},57328,(e,t,r)=>{t.exports=e.x("node:assert",()=>require("node:assert"))},347299,(e,t,r)=>{t.exports=e.x("node:http",()=>require("node:http"))},81111,(e,t,r)=>{t.exports=e.x("node:stream",()=>require("node:stream"))},483324,(e,t,r)=>{t.exports=e.x("node:querystring",()=>require("node:querystring"))},687769,(e,t,r)=>{t.exports=e.x("node:events",()=>require("node:events"))},677652,(e,t,r)=>{t.exports=e.x("node:diagnostics_channel",()=>require("node:diagnostics_channel"))},812057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},685560,(e,t,r)=>{t.exports=e.x("node:tls",()=>require("node:tls"))},951615,(e,t,r)=>{t.exports=e.x("node:buffer",()=>require("node:buffer"))},727028,(e,t,r)=>{t.exports=e.x("node:zlib",()=>require("node:zlib"))},874096,(e,t,r)=>{t.exports=e.x("node:perf_hooks",()=>require("node:perf_hooks"))},107417,(e,t,r)=>{t.exports=e.x("node:util/types",()=>require("node:util/types"))},925127,(e,t,r)=>{t.exports=e.x("node:worker_threads",()=>require("node:worker_threads"))},246479,(e,t,r)=>{t.exports=e.x("node:http2",()=>require("node:http2"))},857764,(e,t,r)=>{t.exports=e.x("node:url",()=>require("node:url"))},241293,(e,t,r)=>{t.exports=e.x("node:console",()=>require("node:console"))},912714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},26910,(e,t,r)=>{t.exports=e.x("node:timers",()=>require("node:timers"))},495879,(e,t,r)=>{t.exports=e.x("node:dns",()=>require("node:dns"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},858235,e=>{"use strict";var t=e.i(254799);function r(e){let r=(0,t.randomUUID)(),s=e.type||(e.status>=500?"server_error":404===e.status?"not_found":409===e.status?"conflict":"invalid_request");return Response.json({error:{message:e.message,type:s,details:e.details},requestId:r},{status:e.status})}function s(e,t="Unexpected server error"){return r({status:Number(e?.status)||500,message:"string"==typeof e?.message?e.message:t,type:e?.type,details:e?.details})}e.s(["createErrorResponse",()=>r,"createErrorResponseFromUnknown",()=>s])},636686,e=>e.a(async(t,r)=>{try{var s=e.i(936689),n=e.i(273599),o=e.i(676088),a=e.i(200392),i=e.i(858235),l=t([o,a]);[o,a]=l.then?(await l)():l;let d=new Set(["http","https"]);function p(e,t){return e instanceof Error&&e.message?e.message:t}async function u(e){let t;try{t=await e.json()}catch{return(0,i.createErrorResponse)({status:400,message:"Invalid JSON body",type:"invalid_request"})}try{let e,r=(0,a.validateBody)(o.testProxySchema,t);if((0,a.isValidationFailure)(r))return(0,i.createErrorResponse)({status:400,message:r.error.message,details:r.error.details,type:"invalid_request"});let{proxy:l}=r.data,u=String(l.type||"http").toLowerCase();if("socks5"===u&&!(0,n.isSocks5ProxyEnabled)())return(0,i.createErrorResponse)({status:400,message:"SOCKS5 proxy is disabled (set ENABLE_SOCKS5_PROXY=true to enable)",type:"invalid_request"});if(u.startsWith("socks")&&"socks5"!==u||!((0,n.isSocks5ProxyEnabled)()?new Set([...d,"socks5"]):d).has(u))return(0,i.createErrorResponse)({status:400,message:`proxy.type must be ${(0,n.isSocks5ProxyEnabled)()?"http, https, or socks5":"http or https"}`,type:"invalid_request"});try{let t=(0,n.proxyConfigToUrl)({type:u,host:l.host,port:l.port,username:l.username||"",password:l.password||""},{allowSocks5:(0,n.isSocks5ProxyEnabled)()});if(!t)return(0,i.createErrorResponse)({status:400,message:"Invalid proxy configuration",type:"invalid_request"});e=t}catch(e){return(0,i.createErrorResponse)({status:400,message:p(e,"Invalid proxy configuration"),type:"invalid_request"})}let c=(0,n.proxyUrlForLogs)(e),h=Date.now(),x=new AbortController,m=setTimeout(()=>x.abort(),1e4),y=(0,n.createProxyDispatcher)(e);try{let e,t=await (0,s.request)("https://api.ipify.org?format=json",{method:"GET",dispatcher:y,signal:x.signal,headersTimeout:1e4,bodyTimeout:1e4}),r=await t.body.text();try{let t=JSON.parse(r);e=t&&"object"==typeof t?t:{ip:String(t)}}catch{e={ip:r.trim()}}return Response.json({success:!0,publicIp:e.ip||null,latencyMs:Date.now()-h,proxyUrl:c})}catch(e){return Response.json({success:!1,error:e instanceof Error&&"AbortError"===e.name?"Connection timeout (10s)":p(e,"Connection failed"),latencyMs:Date.now()-h,proxyUrl:c})}finally{clearTimeout(m)}}catch(e){return(0,i.createErrorResponseFromUnknown)(e,"Unexpected server error")}}e.s(["POST",()=>u]),r()}catch(e){r(e)}},!1),797951,e=>e.a(async(t,r)=>{try{var s=e.i(747909),n=e.i(174017),o=e.i(996250),a=e.i(759756),i=e.i(561916),l=e.i(174677),p=e.i(869741),u=e.i(316795),d=e.i(487718),c=e.i(995169),h=e.i(47587),x=e.i(666012),m=e.i(570101),y=e.i(626937),f=e.i(10372),g=e.i(193695);e.i(52474);var v=e.i(600220),w=e.i(636686),R=t([w]);[w]=R.then?(await R)():R;let _=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/settings/proxy/test/route",pathname:"/api/settings/proxy/test",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/settings/proxy/test/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:q,workUnitAsyncStorage:C,serverHooks:A}=_;function b(){return(0,o.patchFetch)({workAsyncStorage:q,workUnitAsyncStorage:C})}async function E(e,t,r){_.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/settings/proxy/test/route";s=s.replace(/\/index$/,"")||"/";let o=await _.prepare(e,t,{srcPage:s,multiZoneDraftMode:!1});if(!o)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:w,params:R,nextConfig:b,parsedUrl:E,isDraftMode:q,prerenderManifest:C,routerServerContext:A,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,resolvedPathname:O,clientReferenceManifest:P,serverActionsManifest:j}=o,N=(0,p.normalizeAppPath)(s),T=!!(C.dynamicRoutes[N]||C.routes[O]),U=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,E,!1):t.end("This page could not be found"),null);if(T&&!q){let e=!!C.routes[O],t=C.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(b.experimental.adapterPath)return await U();throw new g.NoFallbackError}}let D=null;!T||_.isDev||q||(D=O,D="/index"===D?"/":D);let I=!0===_.isDev||!T,$=T&&!I;j&&P&&(0,l.setManifestsSingleton)({page:s,clientReferenceManifest:P,serverActionsManifest:j});let H=e.method||"GET",M=(0,i.getTracer)(),F=M.getActiveScopeSpan(),L={params:R,prerenderManifest:C,renderOpts:{experimental:{authInterrupts:!!b.experimental.authInterrupts},cacheComponents:!!b.cacheComponents,supportsDynamicResponse:I,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:b.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,n)=>_.onRequestError(e,t,s,n,A)},sharedContext:{buildId:w}},K=new u.NodeNextRequest(e),B=new u.NodeNextResponse(t),z=d.NextRequestAdapter.fromNodeNextRequest(K,(0,d.signalFromNodeResponse)(t));try{let o=async e=>_.handle(z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${s}`)}),l=!!(0,a.getRequestMeta)(e,"minimalMode"),p=async a=>{var i,p;let u=async({previousCacheEntry:n})=>{try{if(!l&&S&&k&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await o(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&r.waitUntil&&(r.waitUntil(i),i=void 0);let p=L.renderOpts.collectedTags;if(!T)return await (0,x.sendResponse)(K,B,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(s.headers);p&&(t[f.NEXT_CACHE_TAGS_HEADER]=p),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=f.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=f.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await _.onRequestError(e,t,{routerKind:"App Router",routePath:s,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,A),t}},d=await _.handleResponse({req:e,nextConfig:b,cacheKey:D,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:k,responseGenerator:u,waitUntil:r.waitUntil,isMinimalMode:l});if(!T)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(p=d.value)?void 0:p.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",S?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),q&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(d.value.headers);return l&&T||c.delete(f.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,y.getCacheControlHeader)(d.cacheControl)),await (0,x.sendResponse)(K,B,new Response(d.value.body,{headers:c,status:d.value.status||200})),null};F?await p(F):await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${s}`,kind:i.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},p))}catch(t){if(t instanceof g.NoFallbackError||await _.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:$,isOnDemandRevalidate:S})},!1,A),T)throw t;return await (0,x.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>E,"patchFetch",()=>b,"routeModule",()=>_,"serverHooks",()=>A,"workAsyncStorage",()=>q,"workUnitAsyncStorage",()=>C]),r()}catch(e){r(e)}},!1)];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__643f87ad._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var s=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=Object.getOwnPropertyNames,o=Object.prototype.hasOwnProperty,a={},p={RequestCookies:()=>f,ResponseCookies:()=>x,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>u};for(var l in p)s(a,l,{get:p[l],enumerable:!0});function u(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),s=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?s:`${s}; ${r.join("; ")}`}function d(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[s,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(s,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...s]=d(e),{domain:n,expires:i,httponly:o,maxage:a,path:p,samesite:l,secure:u,partitioned:c,priority:f}=Object.fromEntries(s.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var x,g,y={name:t,value:decodeURIComponent(r),domain:n,...i&&{expires:new Date(i)},...o&&{httpOnly:!0},..."string"==typeof a&&{maxAge:Number(a)},path:p,...l&&{sameSite:h.includes(x=(x=l).toLowerCase())?x:void 0},...u&&{secure:!0},...f&&{priority:m.includes(g=(g=f).toLowerCase())?g:void 0},...c&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,r,a)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of i(t))o.call(e,r)||void 0===r||s(e,r,{get:()=>t[r],enumerable:!(a=n(t,r))||a.enumerable});return e})(s({},"__esModule",{value:!0}),a);var h=["strict","lax","none"],m=["low","medium","high"],f=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of d(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===s).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,s=this._parsed;return s.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(s).map(([e,t])=>u(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>u(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},x=class{constructor(e){var t,r,s;this._parsed=new Map,this._headers=e;const n=null!=(s=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?s:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,s,n,i,o=[],a=0;function p(){for(;a<e.length&&/\s/.test(e.charAt(a));)a+=1;return a<e.length}for(;a<e.length;){for(t=a,i=!1;p();)if(","===(r=e.charAt(a))){for(s=a,a+=1,p(),n=a;a<e.length&&"="!==(r=e.charAt(a))&&";"!==r&&","!==r;)a+=1;a<e.length&&"="===e.charAt(a)?(i=!0,a=n,o.push(e.substring(t,s)),t=a):a=s+1}else a+=1;(!i||a>=e.length)&&o.push(e.substring(t,e.length))}return o}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let s="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===s)}has(e){return this._parsed.has(e)}set(...e){let[t,r,s]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...s})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=u(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(u).join("; ")}}}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__765c4417._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[677850,e=>e.a(async(t,r)=>{try{let t=await e.y("zod");e.n(t),r()}catch(e){r(e)}},!0),200392,e=>e.a(async(t,r)=>{try{var a=e.i(677850),n=t([a]);function s(e,t){let r=e.safeParse(t);if(r.success)return{success:!0,data:r.data};let a=Array.isArray(r.error?.issues)?r.error.issues:[];return{success:!1,error:{message:"Invalid request",details:a.map(e=>({field:e.path.join("."),message:e.message}))}}}function i(e){return!1===e.success}[a]=n.then?(await n)():n,a.z.object({password:a.z.string().min(1,"Password is required").max(200)}),e.s(["isValidationFailure",()=>i,"validateBody",()=>s]),r()}catch(e){r(e)}},!1),918622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},556704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},832319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},324725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},193695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},442315,(e,t,r)=>{"use strict";t.exports=e.r(918622)},347540,(e,t,r)=>{"use strict";t.exports=e.r(442315).vendored["react-rsc"].React},819481,(e,t,r)=>{"use strict";var a=Object.defineProperty,n=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>m,ResponseCookies:()=>g,parseCookie:()=>p,parseSetCookie:()=>c,stringifyCookie:()=>d};for(var u in l)a(o,u,{get:l[u],enumerable:!0});function d(e){var t;let r=["path"in e&&e.path&&`Path=${e.path}`,"expires"in e&&(e.expires||0===e.expires)&&`Expires=${("number"==typeof e.expires?new Date(e.expires):e.expires).toUTCString()}`,"maxAge"in e&&"number"==typeof e.maxAge&&`Max-Age=${e.maxAge}`,"domain"in e&&e.domain&&`Domain=${e.domain}`,"secure"in e&&e.secure&&"Secure","httpOnly"in e&&e.httpOnly&&"HttpOnly","sameSite"in e&&e.sameSite&&`SameSite=${e.sameSite}`,"partitioned"in e&&e.partitioned&&"Partitioned","priority"in e&&e.priority&&`Priority=${e.priority}`].filter(Boolean),a=`${e.name}=${encodeURIComponent(null!=(t=e.value)?t:"")}`;return 0===r.length?a:`${a}; ${r.join("; ")}`}function p(e){let t=new Map;for(let r of e.split(/; */)){if(!r)continue;let e=r.indexOf("=");if(-1===e){t.set(r,"true");continue}let[a,n]=[r.slice(0,e),r.slice(e+1)];try{t.set(a,decodeURIComponent(null!=n?n:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...a]=p(e),{domain:n,expires:s,httponly:i,maxage:o,path:l,samesite:u,secure:d,partitioned:c,priority:m}=Object.fromEntries(a.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,x,y={name:t,value:decodeURIComponent(r),domain:n,...s&&{expires:new Date(s)},...i&&{httpOnly:!0},..."string"==typeof o&&{maxAge:Number(o)},path:l,...u&&{sameSite:h.includes(g=(g=u).toLowerCase())?g:void 0},...d&&{secure:!0},...m&&{priority:f.includes(x=(x=m).toLowerCase())?x:void 0},...c&&{partitioned:!0}};let e={};for(let t in y)y[t]&&(e[t]=y[t]);return e}}t.exports=((e,t,r,o)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let r of s(t))i.call(e,r)||void 0===r||a(e,r,{get:()=>t[r],enumerable:!(o=n(t,r))||o.enumerable});return e})(a({},"__esModule",{value:!0}),o);var h=["strict","lax","none"],f=["low","medium","high"],m=class{constructor(e){this._parsed=new Map,this._headers=e;const t=e.get("cookie");if(t)for(const[e,r]of p(t))this._parsed.set(e,{name:e,value:r})}[Symbol.iterator](){return this._parsed[Symbol.iterator]()}get size(){return this._parsed.size}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed);if(!e.length)return r.map(([e,t])=>t);let a="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(([e])=>e===a).map(([e,t])=>t)}has(e){return this._parsed.has(e)}set(...e){let[t,r]=1===e.length?[e[0].name,e[0].value]:e,a=this._parsed;return a.set(t,{name:t,value:r}),this._headers.set("cookie",Array.from(a).map(([e,t])=>d(t)).join("; ")),this}delete(e){let t=this._parsed,r=Array.isArray(e)?e.map(e=>t.delete(e)):t.delete(e);return this._headers.set("cookie",Array.from(t).map(([e,t])=>d(t)).join("; ")),r}clear(){return this.delete(Array.from(this._parsed.keys())),this}[Symbol.for("edge-runtime.inspect.custom")](){return`RequestCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(e=>`${e.name}=${encodeURIComponent(e.value)}`).join("; ")}},g=class{constructor(e){var t,r,a;this._parsed=new Map,this._headers=e;const n=null!=(a=null!=(r=null==(t=e.getSetCookie)?void 0:t.call(e))?r:e.get("set-cookie"))?a:[];for(const e of Array.isArray(n)?n:function(e){if(!e)return[];var t,r,a,n,s,i=[],o=0;function l(){for(;o<e.length&&/\s/.test(e.charAt(o));)o+=1;return o<e.length}for(;o<e.length;){for(t=o,s=!1;l();)if(","===(r=e.charAt(o))){for(a=o,o+=1,l(),n=o;o<e.length&&"="!==(r=e.charAt(o))&&";"!==r&&","!==r;)o+=1;o<e.length&&"="===e.charAt(o)?(s=!0,o=n,i.push(e.substring(t,a)),t=o):o=a+1}else o+=1;(!s||o>=e.length)&&i.push(e.substring(t,e.length))}return i}(n)){const t=c(e);t&&this._parsed.set(t.name,t)}}get(...e){let t="string"==typeof e[0]?e[0]:e[0].name;return this._parsed.get(t)}getAll(...e){var t;let r=Array.from(this._parsed.values());if(!e.length)return r;let a="string"==typeof e[0]?e[0]:null==(t=e[0])?void 0:t.name;return r.filter(e=>e.name===a)}has(e){return this._parsed.has(e)}set(...e){let[t,r,a]=1===e.length?[e[0].name,e[0].value,e[0]]:e,n=this._parsed;return n.set(t,function(e={name:"",value:""}){return"number"==typeof e.expires&&(e.expires=new Date(e.expires)),e.maxAge&&(e.expires=new Date(Date.now()+1e3*e.maxAge)),(null===e.path||void 0===e.path)&&(e.path="/"),e}({name:t,value:r,...a})),function(e,t){for(let[,r]of(t.delete("set-cookie"),e)){let e=d(r);t.append("set-cookie",e)}}(n,this._headers),this}delete(...e){let[t,r]="string"==typeof e[0]?[e[0]]:[e[0].name,e[0]];return this.set({...r,name:t,value:"",expires:new Date(0)})}[Symbol.for("edge-runtime.inspect.custom")](){return`ResponseCookies ${JSON.stringify(Object.fromEntries(this._parsed))}`}toString(){return[...this._parsed.values()].map(d).join("; ")}}},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},97793,e=>{"use strict";let t=new Set(["host","connection","content-length","keep-alive","proxy-connection","transfer-encoding","te","trailer","upgrade"].map(e=>e.toLowerCase()));function r(e){return t.has(String(e).trim().toLowerCase())}e.s(["isForbiddenUpstreamHeaderName",()=>r])},768630,e=>e.a(async(t,r)=>{try{var a=e.i(89171),n=e.i(522734),s=e.i(814747),i=e.i(676088),o=e.i(200392),l=t([i,o]);async function u(e){let t;try{t=await e.json()}catch{return a.NextResponse.json({success:!1,error:{message:"Invalid request",details:[{field:"body",message:"Invalid JSON body"}]}},{status:400})}try{let e=(0,o.validateBody)(i.translatorSaveSchema,t);if((0,o.isValidationFailure)(e))return a.NextResponse.json({success:!1,error:e.error},{status:400});let{file:r,content:l}=e.data;if(!["1_req_client.json","2_req_source.json","3_req_openai.json","4_req_target.json","5_res_provider.txt"].includes(r))return a.NextResponse.json({success:!1,error:"Invalid file name"},{status:400});let u=s.default.join(process.cwd(),"logs","translator");n.default.existsSync(u)||n.default.mkdirSync(u,{recursive:!0});let d=s.default.join(u,r);return n.default.writeFileSync(d,l,"utf-8"),a.NextResponse.json({success:!0})}catch(e){return console.error("Error saving file:",e),a.NextResponse.json({success:!1,error:"Failed to save file"},{status:500})}}[i,o]=l.then?(await l)():l,e.s(["POST",()=>u]),r()}catch(e){r(e)}},!1),676527,e=>e.a(async(t,r)=>{try{var a=e.i(747909),n=e.i(174017),s=e.i(996250),i=e.i(759756),o=e.i(561916),l=e.i(174677),u=e.i(869741),d=e.i(316795),p=e.i(487718),c=e.i(995169),h=e.i(47587),f=e.i(666012),m=e.i(570101),g=e.i(626937),x=e.i(10372),y=e.i(193695);e.i(52474);var v=e.i(600220),R=e.i(768630),w=t([R]);[R]=w.then?(await w)():w;let A=new a.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/translator/save/route",pathname:"/api/translator/save",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/translator/save/route.ts",nextConfigOutput:"standalone",userland:R}),{workAsyncStorage:C,workUnitAsyncStorage:E,serverHooks:S}=A;function _(){return(0,s.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:E})}async function b(e,t,r){A.isDev&&(0,i.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/translator/save/route";a=a.replace(/\/index$/,"")||"/";let s=await A.prepare(e,t,{srcPage:a,multiZoneDraftMode:!1});if(!s)return t.statusCode=400,t.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve()),null;let{buildId:R,params:w,nextConfig:_,parsedUrl:b,isDraftMode:C,prerenderManifest:E,routerServerContext:S,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,resolvedPathname:k,clientReferenceManifest:N,serverActionsManifest:P}=s,q=(0,u.normalizeAppPath)(a),T=!!(E.dynamicRoutes[q]||E.routes[k]),I=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(T&&!C){let e=!!E.routes[k],t=E.dynamicRoutes[q];if(t&&!1===t.fallback&&!e){if(_.experimental.adapterPath)return await I();throw new y.NoFallbackError}}let $=null;!T||A.isDev||C||($=k,$="/index"===$?"/":$);let U=!0===A.isDev||!T,D=T&&!U;P&&N&&(0,l.setManifestsSingleton)({page:a,clientReferenceManifest:N,serverActionsManifest:P});let H=e.method||"GET",M=(0,o.getTracer)(),F=M.getActiveScopeSpan(),L={params:w,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!_.experimental.authInterrupts},cacheComponents:!!_.cacheComponents,supportsDynamicResponse:U,incrementalCache:(0,i.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:_.cacheLife,waitUntil:r.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>A.onRequestError(e,t,a,n,S)},sharedContext:{buildId:R}},B=new d.NodeNextRequest(e),K=new d.NodeNextResponse(t),z=p.NextRequestAdapter.fromNodeNextRequest(B,(0,p.signalFromNodeResponse)(t));try{let s=async e=>A.handle(z,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=M.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=r.get("next.route");if(n){let t=`${H} ${n}`;e.setAttributes({"next.route":n,"http.route":n,"next.span_name":t}),e.updateName(t)}else e.updateName(`${H} ${a}`)}),l=!!(0,i.getRequestMeta)(e,"minimalMode"),u=async i=>{var o,u;let d=async({previousCacheEntry:n})=>{try{if(!l&&j&&O&&!n)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let a=await s(i);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&r.waitUntil&&(r.waitUntil(o),o=void 0);let u=L.renderOpts.collectedTags;if(!T)return await (0,f.sendResponse)(B,K,a,L.renderOpts.pendingWaitUntil),null;{let e=await a.blob(),t=(0,m.toNodeOutgoingHttpHeaders)(a.headers);u&&(t[x.NEXT_CACHE_TAGS_HEADER]=u),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:a.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==n?void 0:n.isStale)&&await A.onRequestError(e,t,{routerKind:"App Router",routePath:a,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,S),t}},p=await A.handleResponse({req:e,nextConfig:_,cacheKey:$,routeKind:n.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:j,revalidateOnlyGenerated:O,responseGenerator:d,waitUntil:r.waitUntil,isMinimalMode:l});if(!T)return null;if((null==p||null==(o=p.value)?void 0:o.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(u=p.value)?void 0:u.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});l||t.setHeader("x-nextjs-cache",j?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),C&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,m.fromNodeOutgoingHttpHeaders)(p.value.headers);return l&&T||c.delete(x.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,g.getCacheControlHeader)(p.cacheControl)),await (0,f.sendResponse)(B,K,new Response(p.value.body,{headers:c,status:p.value.status||200})),null};F?await u(F):await M.withPropagatedContext(e.headers,()=>M.trace(c.BaseServerSpan.handleRequest,{spanName:`${H} ${a}`,kind:o.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},u))}catch(t){if(t instanceof y.NoFallbackError||await A.onRequestError(e,t,{routerKind:"App Router",routePath:q,routeType:"route",revalidateReason:(0,h.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:j})},!1,S),T)throw t;return await (0,f.sendResponse)(B,K,new Response(null,{status:500})),null}}e.s(["handler",()=>b,"patchFetch",()=>_,"routeModule",()=>A,"serverHooks",()=>S,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>E]),r()}catch(e){r(e)}},!1)];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__7afe1e49._.js.map