omniroute 2.8.1 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +1 -0
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/prerender-manifest.json +3 -3
  5. package/app/.next/routes-manifest.json +6 -0
  6. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/a2a/page.js.nft.json +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/agents/page.js.nft.json +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page.js.nft.json +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  35. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  38. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/mcp/page.js.nft.json +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/page.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page.js.nft.json +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  85. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  86. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/400/page.js +1 -1
  88. package/app/.next/server/app/400/page.js.nft.json +1 -1
  89. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/401/page.js +1 -1
  91. package/app/.next/server/app/401/page.js.nft.json +1 -1
  92. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/403/page.js +1 -1
  94. package/app/.next/server/app/403/page.js.nft.json +1 -1
  95. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/408/page.js +1 -1
  97. package/app/.next/server/app/408/page.js.nft.json +1 -1
  98. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/429/page.js +1 -1
  100. package/app/.next/server/app/429/page.js.nft.json +1 -1
  101. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/500/page.js +1 -1
  103. package/app/.next/server/app/500/page.js.nft.json +1 -1
  104. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/502/page.js +1 -1
  106. package/app/.next/server/app/502/page.js.nft.json +1 -1
  107. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/503/page.js +1 -1
  109. package/app/.next/server/app/503/page.js.nft.json +1 -1
  110. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/_global-error/page.js +1 -1
  112. package/app/.next/server/app/_global-error/page.js.nft.json +1 -1
  113. package/app/.next/server/app/_global-error.html +2 -2
  114. package/app/.next/server/app/_global-error.rsc +1 -1
  115. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  116. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  117. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  118. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  119. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  120. package/app/.next/server/app/_not-found/page.js +1 -1
  121. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  122. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/acp/agents/route.js.nft.json +1 -1
  124. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  125. package/app/.next/server/app/api/cache/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/backups/route.js.nft.json +1 -1
  129. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  130. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  131. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js.nft.json +1 -1
  133. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  134. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  135. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  136. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js.nft.json +1 -1
  137. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  138. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  139. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +1 -1
  140. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js.nft.json +1 -1
  141. package/app/.next/server/app/api/cli-tools/status/route.js.nft.json +1 -1
  142. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  143. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  144. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  145. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  146. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  147. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  148. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  149. package/app/.next/server/app/api/compliance/audit-log/route.js.nft.json +1 -1
  150. package/app/.next/server/app/api/db-backups/export/route.js.nft.json +1 -1
  151. package/app/.next/server/app/api/db-backups/exportAll/route.js.nft.json +1 -1
  152. package/app/.next/server/app/api/db-backups/import/route.js.nft.json +1 -1
  153. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/fallback/chains/route.js.nft.json +1 -1
  155. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  156. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  158. package/app/.next/server/app/api/logs/console/route.js.nft.json +1 -1
  159. package/app/.next/server/app/api/logs/detail/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/logs/export/route/app-paths-manifest.json +3 -0
  161. package/app/.next/server/app/api/logs/export/route/build-manifest.json +11 -0
  162. package/app/.next/server/app/api/logs/export/route/server-reference-manifest.json +4 -0
  163. package/app/.next/server/app/api/logs/export/route.js +7 -0
  164. package/app/.next/server/app/api/logs/export/route.js.map +5 -0
  165. package/app/.next/server/app/api/logs/export/route.js.nft.json +1 -0
  166. package/app/.next/server/app/api/logs/export/route_client-reference-manifest.js +2 -0
  167. package/app/.next/server/app/api/mcp/sse/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/mcp/status/route.js.nft.json +1 -1
  169. package/app/.next/server/app/api/mcp/stream/route.js.nft.json +1 -1
  170. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  172. package/app/.next/server/app/api/models/openrouter-catalog/route.js.nft.json +1 -1
  173. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  175. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  177. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  179. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  181. package/app/.next/server/app/api/policies/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  183. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  184. package/app/.next/server/app/api/pricing/sync/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/provider-metrics/route.js.nft.json +1 -1
  186. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  187. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  188. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  190. package/app/.next/server/app/api/providers/[id]/refresh/route.js.nft.json +1 -1
  191. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  193. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  196. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  198. package/app/.next/server/app/api/resilience/reset/route.js.nft.json +1 -1
  199. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/search/providers/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/search/stats/route.js.nft.json +1 -1
  202. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -1
  203. package/app/.next/server/app/api/settings/codex-service-tier/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -1
  206. package/app/.next/server/app/api/settings/proxies/assignments/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/settings/proxies/bulk-assign/route.js.nft.json +1 -1
  208. package/app/.next/server/app/api/settings/proxies/health/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/settings/proxies/migrate/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/settings/proxies/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  212. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  215. package/app/.next/server/app/api/settings/task-routing/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/storage/health/route.js +1 -1
  218. package/app/.next/server/app/api/storage/health/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  220. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  221. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  222. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  223. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  225. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  226. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  227. package/app/.next/server/app/api/usage/budget/route.js.nft.json +1 -1
  228. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  230. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  231. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  232. package/app/.next/server/app/api/usage/proxy-logs/route.js.nft.json +1 -1
  233. package/app/.next/server/app/api/usage/quota/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  235. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  236. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  237. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  238. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/v1/completions/route.js.nft.json +1 -1
  240. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  242. package/app/.next/server/app/api/v1/management/proxies/assignments/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/v1/management/proxies/bulk-assign/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/v1/management/proxies/health/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/v1/management/proxies/route.js.nft.json +1 -1
  246. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  247. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  248. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  250. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  254. package/app/.next/server/app/api/v1/responses/[...path]/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  256. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  258. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  260. package/app/.next/server/app/callback/page.js +1 -1
  261. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  262. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  263. package/app/.next/server/app/docs/page.js +1 -1
  264. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  265. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  266. package/app/.next/server/app/forbidden/page.js +1 -1
  267. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  268. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  269. package/app/.next/server/app/forgot-password/page.js +1 -1
  270. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  271. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/landing/page.js +1 -1
  273. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  274. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  275. package/app/.next/server/app/login/page.js +1 -1
  276. package/app/.next/server/app/login/page.js.nft.json +1 -1
  277. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  278. package/app/.next/server/app/maintenance/page.js +1 -1
  279. package/app/.next/server/app/maintenance/page.js.nft.json +1 -1
  280. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  281. package/app/.next/server/app/offline/page.js +1 -1
  282. package/app/.next/server/app/offline/page.js.nft.json +1 -1
  283. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  284. package/app/.next/server/app/page.js +1 -1
  285. package/app/.next/server/app/page.js.nft.json +1 -1
  286. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  287. package/app/.next/server/app/privacy/page.js +1 -1
  288. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  289. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  290. package/app/.next/server/app/status/page.js +1 -1
  291. package/app/.next/server/app/status/page.js.nft.json +1 -1
  292. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  293. package/app/.next/server/app/terms/page.js +1 -1
  294. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  295. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  296. package/app/.next/server/app-paths-manifest.json +1 -0
  297. package/app/.next/server/chunks/[root-of-the-server]__09c944b3._.js +1 -1
  298. package/app/.next/server/chunks/{[root-of-the-server]__52346ca4._.js → [root-of-the-server]__561d1987._.js} +2 -2
  299. package/app/.next/server/chunks/[root-of-the-server]__7d9b23e7._.js +1 -1
  300. package/app/.next/server/chunks/[root-of-the-server]__80e3bfc3._.js +2 -2
  301. package/app/.next/server/chunks/[root-of-the-server]__84e445b2._.js +1 -1
  302. package/app/.next/server/chunks/[root-of-the-server]__85096f79._.js +1 -1
  303. package/app/.next/server/chunks/[root-of-the-server]__9230ee98._.js +3 -0
  304. package/app/.next/server/chunks/[root-of-the-server]__92cb0def._.js +2 -2
  305. package/app/.next/server/chunks/[root-of-the-server]__a4403ad8._.js +3 -0
  306. package/app/.next/server/chunks/{[root-of-the-server]__87186578._.js → [root-of-the-server]__d142dcb5._.js} +2 -2
  307. package/app/.next/server/chunks/{[root-of-the-server]__dc47ee64._.js → [root-of-the-server]__d4563e10._.js} +3 -3
  308. package/app/.next/server/chunks/{[root-of-the-server]__43a4e384._.js → [root-of-the-server]__d780e24b._.js} +2 -2
  309. package/app/.next/server/chunks/[root-of-the-server]__db2f9fe0._.js +1 -1
  310. package/app/.next/server/chunks/{[root-of-the-server]__167585da._.js → [root-of-the-server]__e27a89bd._.js} +3 -3
  311. package/app/.next/server/chunks/_05c48915._.js +1 -1
  312. package/app/.next/server/chunks/_1244636c._.js +3 -3
  313. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  314. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  315. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  316. package/app/.next/server/chunks/_68683848._.js +1 -1
  317. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  318. package/app/.next/server/chunks/_next-internal_server_app_api_logs_export_route_actions_659d16c3.js +3 -0
  319. package/app/.next/server/chunks/src_shared_constants_pricing_ts_0fddbb51._.js +1 -1
  320. package/app/.next/server/chunks/src_shared_constants_pricing_ts_4245a86e._.js +1 -1
  321. package/app/.next/server/chunks/src_shared_constants_pricing_ts_65de0558._.js +1 -1
  322. package/app/.next/server/chunks/ssr/{[root-of-the-server]__efdd7f81._.js → [root-of-the-server]__7ae68a0e._.js} +2 -2
  323. package/app/.next/server/chunks/ssr/[root-of-the-server]__9affb65e._.js +1 -1
  324. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  325. package/app/.next/server/chunks/ssr/{[root-of-the-server]__788f5583._.js → [root-of-the-server]__b6544c47._.js} +2 -2
  326. package/app/.next/server/chunks/ssr/src_5dd5869e._.js +1 -1
  327. package/app/.next/server/chunks/ssr/src_app_(dashboard)_dashboard_settings_pricing_page_tsx_5aff4262._.js +1 -1
  328. package/app/.next/server/chunks/ssr/src_shared_constants_pricing_ts_a704230a._.js +1 -1
  329. package/app/.next/server/middleware.js +1 -1
  330. package/app/.next/server/pages/500.html +2 -2
  331. package/app/.next/server/server-reference-manifest.js +1 -1
  332. package/app/.next/server/server-reference-manifest.json +1 -1
  333. package/app/.next/static/chunks/{b5cc103e16794392.js → 18934c9ed2a28555.js} +1 -1
  334. package/app/.next/static/chunks/374fe2b2c612c189.js +1 -0
  335. package/app/.next/static/chunks/{1ef9ea85406a01d6.js → 8ec4e086bf58dca6.js} +1 -1
  336. package/app/.next/static/chunks/af071ff826ecff1b.css +1 -0
  337. package/app/CHANGELOG.md +20 -0
  338. package/app/docs/openapi.yaml +1 -1
  339. package/app/open-sse/handlers/chatCore.ts +14 -8
  340. package/app/open-sse/utils/stream.ts +27 -0
  341. package/app/package-lock.json +2 -2
  342. package/app/package.json +1 -1
  343. package/app/src/app/(dashboard)/dashboard/logs/page.tsx +119 -11
  344. package/app/src/app/api/logs/export/route.ts +58 -0
  345. package/app/src/shared/constants/pricing.ts +71 -1
  346. package/package.json +1 -1
  347. package/app/.next/server/chunks/[root-of-the-server]__4308f91a._.js +0 -3
  348. package/app/.next/static/chunks/02afac1b585d8219.css +0 -1
  349. package/app/.next/static/chunks/b36fd5a7c702d808.js +0 -1
  350. /package/app/.next/static/{JoLoKHY_9DVANe7Qs4D0K → sRyjByTPg8ioL4UQ1sX-q}/_buildManifest.js +0 -0
  351. /package/app/.next/static/{JoLoKHY_9DVANe7Qs4D0K → sRyjByTPg8ioL4UQ1sX-q}/_clientMiddlewareManifest.json +0 -0
  352. /package/app/.next/static/{JoLoKHY_9DVANe7Qs4D0K → sRyjByTPg8ioL4UQ1sX-q}/_ssgManifest.js +0 -0
@@ -1,27 +1,135 @@
1
1
  "use client";
2
2
 
3
- import { useState } from "react";
3
+ import { useState, useRef, useEffect } from "react";
4
4
  import { RequestLoggerV2, ProxyLogger, SegmentedControl } from "@/shared/components";
5
5
  import ConsoleLogViewer from "@/shared/components/ConsoleLogViewer";
6
6
  import AuditLogTab from "./AuditLogTab";
7
7
  import { useTranslations } from "next-intl";
8
8
 
9
+ const TIME_RANGES = [
10
+ { label: "1h", hours: 1 },
11
+ { label: "6h", hours: 6 },
12
+ { label: "12h", hours: 12 },
13
+ { label: "24h", hours: 24 },
14
+ ];
15
+
16
+ const TAB_TO_LOG_TYPE: Record<string, string> = {
17
+ "request-logs": "request-logs",
18
+ "proxy-logs": "proxy-logs",
19
+ "audit-logs": "call-logs",
20
+ console: "call-logs",
21
+ };
22
+
9
23
  export default function LogsPage() {
10
24
  const [activeTab, setActiveTab] = useState("request-logs");
25
+ const [showExport, setShowExport] = useState(false);
26
+ const [exporting, setExporting] = useState(false);
27
+ const dropdownRef = useRef<HTMLDivElement>(null);
11
28
  const t = useTranslations("logs");
12
29
 
30
+ useEffect(() => {
31
+ function handleClickOutside(e: MouseEvent) {
32
+ if (dropdownRef.current && !dropdownRef.current.contains(e.target as Node)) {
33
+ setShowExport(false);
34
+ }
35
+ }
36
+ document.addEventListener("mousedown", handleClickOutside);
37
+ return () => document.removeEventListener("mousedown", handleClickOutside);
38
+ }, []);
39
+
40
+ async function handleExport(hours: number) {
41
+ setExporting(true);
42
+ setShowExport(false);
43
+ try {
44
+ const logType = TAB_TO_LOG_TYPE[activeTab] || "call-logs";
45
+ const res = await fetch(`/api/logs/export?hours=${hours}&type=${logType}`);
46
+ if (!res.ok) throw new Error("Export failed");
47
+ const blob = await res.blob();
48
+ const url = URL.createObjectURL(blob);
49
+ const a = document.createElement("a");
50
+ a.href = url;
51
+ a.download = `omniroute-${logType}-${hours}h-${new Date().toISOString().slice(0, 10)}.json`;
52
+ document.body.appendChild(a);
53
+ a.click();
54
+ document.body.removeChild(a);
55
+ URL.revokeObjectURL(url);
56
+ } catch (err) {
57
+ console.error("Export failed:", err);
58
+ } finally {
59
+ setExporting(false);
60
+ }
61
+ }
62
+
13
63
  return (
14
64
  <div className="flex flex-col gap-6">
15
- <SegmentedControl
16
- options={[
17
- { value: "request-logs", label: t("requestLogs") },
18
- { value: "proxy-logs", label: t("proxyLogs") },
19
- { value: "audit-logs", label: t("auditLog") },
20
- { value: "console", label: t("console") },
21
- ]}
22
- value={activeTab}
23
- onChange={setActiveTab}
24
- />
65
+ <div className="flex items-center justify-between gap-4 flex-wrap">
66
+ <SegmentedControl
67
+ options={[
68
+ { value: "request-logs", label: t("requestLogs") },
69
+ { value: "proxy-logs", label: t("proxyLogs") },
70
+ { value: "audit-logs", label: t("auditLog") },
71
+ { value: "console", label: t("console") },
72
+ ]}
73
+ value={activeTab}
74
+ onChange={setActiveTab}
75
+ />
76
+
77
+ <div className="relative" ref={dropdownRef}>
78
+ <button
79
+ id="export-logs-btn"
80
+ onClick={() => setShowExport(!showExport)}
81
+ disabled={exporting}
82
+ className="flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg
83
+ bg-[var(--card-bg,#1e1e2e)] border border-[var(--border,#333)]
84
+ text-[var(--text-secondary,#aaa)] hover:text-[var(--text-primary,#fff)]
85
+ hover:border-[var(--accent,#7c3aed)] transition-all duration-200
86
+ disabled:opacity-50 disabled:cursor-not-allowed"
87
+ >
88
+ <svg
89
+ width="16"
90
+ height="16"
91
+ viewBox="0 0 16 16"
92
+ fill="none"
93
+ stroke="currentColor"
94
+ strokeWidth="1.5"
95
+ >
96
+ <path
97
+ d="M8 2v8m0 0l-3-3m3 3l3-3M3 12h10"
98
+ strokeLinecap="round"
99
+ strokeLinejoin="round"
100
+ />
101
+ </svg>
102
+ {exporting ? "Exporting..." : "Export"}
103
+ </button>
104
+
105
+ {showExport && (
106
+ <div
107
+ className="absolute right-0 top-full mt-1 z-50 min-w-[140px] rounded-lg
108
+ bg-[var(--card-bg,#1e1e2e)] border border-[var(--border,#333)]
109
+ shadow-xl overflow-hidden animate-in fade-in"
110
+ >
111
+ <div className="px-3 py-2 text-xs text-[var(--text-muted,#666)] border-b border-[var(--border,#333)] font-medium">
112
+ Time Range
113
+ </div>
114
+ {TIME_RANGES.map((range) => (
115
+ <button
116
+ key={range.hours}
117
+ id={`export-${range.hours}h-btn`}
118
+ onClick={() => handleExport(range.hours)}
119
+ className="w-full px-3 py-2 text-sm text-left hover:bg-[var(--hover-bg,#2a2a3e)]
120
+ text-[var(--text-secondary,#aaa)] hover:text-[var(--text-primary,#fff)]
121
+ transition-colors flex items-center justify-between"
122
+ >
123
+ <span>Last {range.label}</span>
124
+ <span className="text-xs text-[var(--text-muted,#666)]">
125
+ {range.hours === 24 ? "default" : ""}
126
+ </span>
127
+ </button>
128
+ ))}
129
+ </div>
130
+ )}
131
+ </div>
132
+ </div>
25
133
 
26
134
  {/* Content */}
27
135
  {activeTab === "request-logs" && <RequestLoggerV2 />}
@@ -0,0 +1,58 @@
1
+ import { getDbInstance } from "@/lib/db/core";
2
+
3
+ /**
4
+ * GET /api/logs/export — export logs as JSON
5
+ * Query params: ?hours=24 (1, 6, 12, 24; default 24)
6
+ * &type=call-logs|request-logs|proxy-logs (default call-logs)
7
+ */
8
+ export async function GET(request: Request) {
9
+ try {
10
+ const { searchParams } = new URL(request.url);
11
+ const hours = Math.min(Math.max(parseInt(searchParams.get("hours") || "24") || 24, 1), 168);
12
+ const logType = searchParams.get("type") || "call-logs";
13
+
14
+ const since = new Date(Date.now() - hours * 3600 * 1000).toISOString();
15
+ const db = getDbInstance();
16
+
17
+ let rows: unknown[] = [];
18
+ let tableName = "";
19
+
20
+ if (logType === "call-logs") {
21
+ tableName = "call_logs";
22
+ const stmt = db.prepare(
23
+ "SELECT * FROM call_logs WHERE timestamp >= @since ORDER BY timestamp DESC"
24
+ );
25
+ rows = stmt.all({ since });
26
+ } else if (logType === "request-logs") {
27
+ tableName = "request_logs";
28
+ const stmt = db.prepare(
29
+ "SELECT * FROM request_logs WHERE timestamp >= @since ORDER BY timestamp DESC"
30
+ );
31
+ rows = stmt.all({ since });
32
+ } else if (logType === "proxy-logs") {
33
+ tableName = "proxy_logs";
34
+ const stmt = db.prepare(
35
+ "SELECT * FROM proxy_logs WHERE timestamp >= @since ORDER BY timestamp DESC"
36
+ );
37
+ rows = stmt.all({ since });
38
+ }
39
+
40
+ const filename = `omniroute-${tableName}-${hours}h-${new Date().toISOString().slice(0, 10)}.json`;
41
+
42
+ return new Response(
43
+ JSON.stringify({ logs: rows, count: rows.length, hours, type: logType }, null, 2),
44
+ {
45
+ status: 200,
46
+ headers: {
47
+ "Content-Type": "application/json",
48
+ "Content-Disposition": `attachment; filename="${filename}"`,
49
+ },
50
+ }
51
+ );
52
+ } catch (error) {
53
+ return Response.json(
54
+ { error: { message: (error as Error).message, type: "server_error" } },
55
+ { status: 500 }
56
+ );
57
+ }
58
+ }
@@ -2,6 +2,47 @@
2
2
  // All rates are in dollars per million tokens ($/1M tokens)
3
3
  // Based on user-provided pricing for Antigravity models and industry standards for others
4
4
 
5
+ // Shared pricing constants to reduce duplication
6
+ const GPT_5_3_CODEX_PRICING = {
7
+ input: 5.0,
8
+ output: 20.0,
9
+ cached: 2.5,
10
+ reasoning: 30.0,
11
+ cache_creation: 5.0,
12
+ };
13
+
14
+ const CLAUDE_OPUS_4_PRICING = {
15
+ input: 15.0,
16
+ output: 75.0,
17
+ cached: 7.5,
18
+ reasoning: 112.5,
19
+ cache_creation: 15.0,
20
+ };
21
+
22
+ const CLAUDE_SONNET_4_PRICING = {
23
+ input: 3.0,
24
+ output: 15.0,
25
+ cached: 1.5,
26
+ reasoning: 15.0,
27
+ cache_creation: 3.0,
28
+ };
29
+
30
+ const CLAUDE_OPUS_46_PRICING = {
31
+ input: 5.0,
32
+ output: 25.0,
33
+ cached: 2.5,
34
+ reasoning: 37.5,
35
+ cache_creation: 5.0,
36
+ };
37
+
38
+ const CLAUDE_SONNET_46_PRICING = {
39
+ input: 3.0,
40
+ output: 15.0,
41
+ cached: 1.5,
42
+ reasoning: 22.5,
43
+ cache_creation: 3.0,
44
+ };
45
+
5
46
  export const DEFAULT_PRICING = {
6
47
  // OAuth Providers (using aliases)
7
48
 
@@ -46,7 +87,14 @@ export const DEFAULT_PRICING = {
46
87
 
47
88
  // OpenAI Codex (cx)
48
89
  cx: {
49
- // Issue #334: add gpt5.4
90
+ // GPT 5.4
91
+ "gpt-5.4": {
92
+ input: 5.0,
93
+ output: 20.0,
94
+ cached: 2.5,
95
+ reasoning: 30.0,
96
+ cache_creation: 5.0,
97
+ },
50
98
  "gpt5.4": {
51
99
  input: 5.0,
52
100
  output: 20.0,
@@ -54,6 +102,19 @@ export const DEFAULT_PRICING = {
54
102
  reasoning: 30.0,
55
103
  cache_creation: 5.0,
56
104
  },
105
+ // GPT 5.3 Codex family (all same pricing tier)
106
+ "gpt-5.3-codex": GPT_5_3_CODEX_PRICING,
107
+ "gpt-5.3-codex-xhigh": GPT_5_3_CODEX_PRICING,
108
+ "gpt-5.3-codex-high": GPT_5_3_CODEX_PRICING,
109
+ "gpt-5.3-codex-low": GPT_5_3_CODEX_PRICING,
110
+ "gpt-5.3-codex-none": GPT_5_3_CODEX_PRICING,
111
+ "gpt-5.1-codex-mini-high": {
112
+ input: 1.5,
113
+ output: 6.0,
114
+ cached: 0.75,
115
+ reasoning: 9.0,
116
+ cache_creation: 1.5,
117
+ },
57
118
  "gpt-5.2-codex": {
58
119
  input: 5.0,
59
120
  output: 20.0,
@@ -525,6 +586,15 @@ export const DEFAULT_PRICING = {
525
586
  reasoning: 37.5,
526
587
  cache_creation: 5.0,
527
588
  },
589
+ // Common model IDs (without dates) used across providers
590
+ // Intentional duplicates of dot-notation variants (e.g. claude-opus-4.6)
591
+ // to cover hyphen-notation IDs (claude-opus-4-6) used by some clients
592
+ "claude-opus-4-6": CLAUDE_OPUS_46_PRICING,
593
+ "claude-sonnet-4-6": CLAUDE_SONNET_46_PRICING,
594
+ "claude-opus-4-5-20251101": CLAUDE_OPUS_4_PRICING,
595
+ "claude-sonnet-4-5-20250929": CLAUDE_SONNET_4_PRICING,
596
+ "claude-sonnet-4": CLAUDE_SONNET_4_PRICING,
597
+ "claude-opus-4": CLAUDE_OPUS_4_PRICING,
528
598
  },
529
599
 
530
600
  // Gemini
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omniroute",
3
- "version": "2.8.1",
3
+ "version": "2.8.2",
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,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"))},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 n=Object.defineProperty,a=Object.getOwnPropertyDescriptor,s=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},l={RequestCookies:()=>m,ResponseCookies:()=>g,parseCookie:()=>d,parseSetCookie:()=>c,stringifyCookie:()=>p};for(var u in l)n(o,u,{get:l[u],enumerable:!0});function p(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 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[n,a]=[r.slice(0,e),r.slice(e+1)];try{t.set(n,decodeURIComponent(null!=a?a:"true"))}catch{}}return t}function c(e){if(!e)return;let[[t,r],...n]=d(e),{domain:a,expires:s,httponly:i,maxage:o,path:l,samesite:u,secure:p,partitioned:c,priority:m}=Object.fromEntries(n.map(([e,t])=>[e.toLowerCase().replace(/-/g,""),t]));{var g,x,v={name:t,value:decodeURIComponent(r),domain:a,...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},...p&&{secure:!0},...m&&{priority:f.includes(x=(x=m).toLowerCase())?x:void 0},...c&&{partitioned:!0}};let e={};for(let t in v)v[t]&&(e[t]=v[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||n(e,r,{get:()=>t[r],enumerable:!(o=a(t,r))||o.enumerable});return e})(n({},"__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 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 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])=>p(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])=>p(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,n;this._parsed=new Map,this._headers=e;const a=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(a)?a:function(e){if(!e)return[];var t,r,n,a,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(n=o,o+=1,l(),a=o;o<e.length&&"="!==(r=e.charAt(o))&&";"!==r&&","!==r;)o+=1;o<e.length&&"="===e.charAt(o)?(s=!0,o=a,i.push(e.substring(t,n)),t=o):o=n+1}else o+=1;(!s||o>=e.length)&&i.push(e.substring(t,e.length))}return i}(a)){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 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,a=this._parsed;return a.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=p(r);t.append("set-cookie",e)}}(a,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(p).join("; ")}}},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},522734,(e,t,r)=>{t.exports=e.x("fs",()=>require("fs"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},256770,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let n="omniroute";function a(){try{return r.default.homedir()}catch{return process.cwd()}}function s(e){if("string"!=typeof e)return null;let r=e.trim();return r?t.default.resolve(r):null}function i(){return t.default.join(a(),`.${n}`)}function o({isCloud:e=!1}={}){let r;if(e)return"/tmp";let l=s(process.env.DATA_DIR);return l?l:(a(),(r=s(process.env.XDG_CONFIG_HOME))?t.default.join(r,n):i())}function l(e,r){return!!e&&!!r&&t.default.resolve(e)===t.default.resolve(r)}e.s(["getLegacyDotDataDir",()=>i,"isSamePath",()=>l,"resolveDataDir",()=>o])},310237,e=>{"use strict";var t=e.i(747909),r=e.i(174017),n=e.i(996250),a=e.i(759756),s=e.i(561916),i=e.i(174677),o=e.i(869741),l=e.i(316795),u=e.i(487718),p=e.i(995169),d=e.i(47587),c=e.i(666012),h=e.i(570101),f=e.i(626937),m=e.i(10372),g=e.i(193695);e.i(52474);var x=e.i(600220),v=e.i(89171),y=e.i(814747),R=e.i(522734),w=e.i(256770);async function A(){try{let e=(0,w.resolveDataDir)({}),t=y.default.join(e,"storage.sqlite"),r=y.default.join(e,"db_backups"),n=0;try{R.default.existsSync(t)&&(n=R.default.statSync(t).size)}catch{}let a=null,s=0;try{if(R.default.existsSync(r)){let e=R.default.readdirSync(r).filter(e=>e.startsWith("db_")&&e.endsWith(".sqlite")).sort().reverse();s=e.length,e.length>0&&(a=R.default.statSync(y.default.join(r,e[0])).mtime.toISOString())}}catch{}let i=process.env.HOME||process.env.USERPROFILE||"",o=t.startsWith(i)?"~"+t.slice(i.length):t;return v.NextResponse.json({driver:"sqlite",dbPath:o,sizeBytes:n,lastBackupAt:a,backupCount:s,retentionDays:90,dataDir:e.startsWith(i)?"~"+e.slice(i.length):e})}catch(e){return console.error("[API] Error getting storage health:",e),v.NextResponse.json({error:e.message},{status:500})}}e.s(["GET",()=>A],901171);var b=e.i(901171);let C=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/storage/health/route",pathname:"/api/storage/health",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/app/api/storage/health/route.ts",nextConfigOutput:"standalone",userland:b}),{workAsyncStorage:_,workUnitAsyncStorage:E,serverHooks:S}=C;function O(){return(0,n.patchFetch)({workAsyncStorage:_,workUnitAsyncStorage:E})}async function j(e,t,n){C.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/storage/health/route";v=v.replace(/\/index$/,"")||"/";let y=await C.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!y)return t.statusCode=400,t.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve()),null;let{buildId:R,params:w,nextConfig:A,parsedUrl:b,isDraftMode:_,prerenderManifest:E,routerServerContext:S,isOnDemandRevalidate:O,revalidateOnlyGenerated:j,resolvedPathname:k,clientReferenceManifest:P,serverActionsManifest:D}=y,N=(0,o.normalizeAppPath)(v),q=!!(E.dynamicRoutes[N]||E.routes[k]),T=async()=>((null==S?void 0:S.render404)?await S.render404(e,t,b,!1):t.end("This page could not be found"),null);if(q&&!_){let e=!!E.routes[k],t=E.dynamicRoutes[N];if(t&&!1===t.fallback&&!e){if(A.experimental.adapterPath)return await T();throw new g.NoFallbackError}}let I=null;!q||C.isDev||_||(I="/index"===(I=k)?"/":I);let $=!0===C.isDev||!q,U=q&&!$;D&&P&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:P,serverActionsManifest:D});let H=e.method||"GET",M=(0,s.getTracer)(),F=M.getActiveScopeSpan(),L={params:w,prerenderManifest:E,renderOpts:{experimental:{authInterrupts:!!A.experimental.authInterrupts},cacheComponents:!!A.cacheComponents,supportsDynamicResponse:$,incrementalCache:(0,a.getRequestMeta)(e,"incrementalCache"),cacheLifeProfiles:A.cacheLife,waitUntil:n.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,n,a)=>C.onRequestError(e,t,n,a,S)},sharedContext:{buildId:R}},K=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),G=u.NextRequestAdapter.fromNodeNextRequest(K,(0,u.signalFromNodeResponse)(t));try{let i=async e=>C.handle(G,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")!==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 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} ${v}`)}),o=!!(0,a.getRequestMeta)(e,"minimalMode"),l=async a=>{var s,l;let u=async({previousCacheEntry:r})=>{try{if(!o&&O&&j&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(a);e.fetchMetrics=L.renderOpts.fetchMetrics;let l=L.renderOpts.pendingWaitUntil;l&&n.waitUntil&&(n.waitUntil(l),l=void 0);let u=L.renderOpts.collectedTags;if(!q)return await (0,c.sendResponse)(K,B,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);u&&(t[m.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>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,n=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:x.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:n}}}}catch(t){throw(null==r?void 0:r.isStale)&&await C.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,S),t}},p=await C.handleResponse({req:e,nextConfig:A,cacheKey:I,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:E,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:j,responseGenerator:u,waitUntil:n.waitUntil,isMinimalMode:o});if(!q)return null;if((null==p||null==(s=p.value)?void 0:s.kind)!==x.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(l=p.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});o||t.setHeader("x-nextjs-cache",O?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),_&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let g=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return o&&q||g.delete(m.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||g.get("Cache-Control")||g.set("Cache-Control",(0,f.getCacheControlHeader)(p.cacheControl)),await (0,c.sendResponse)(K,B,new Response(p.value.body,{headers:g,status:p.value.status||200})),null};F?await l(F):await M.withPropagatedContext(e.headers,()=>M.trace(p.BaseServerSpan.handleRequest,{spanName:`${H} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":H,"http.target":e.url}},l))}catch(t){if(t instanceof g.NoFallbackError||await C.onRequestError(e,t,{routerKind:"App Router",routePath:N,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:O})},!1,S),q)throw t;return await (0,c.sendResponse)(K,B,new Response(null,{status:500})),null}}e.s(["handler",()=>j,"patchFetch",()=>O,"routeModule",()=>C,"serverHooks",()=>S,"workAsyncStorage",()=>_,"workUnitAsyncStorage",()=>E],310237)}];
2
-
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__4308f91a._.js.map