aigetwey 1.3.2 → 1.3.4

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 (566) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dashboard/.next/BUILD_ID +1 -0
  3. package/dashboard/.next/app-path-routes-manifest.json +22 -0
  4. package/dashboard/.next/build/56416d4ae4ce586f.js +6 -0
  5. package/dashboard/.next/build/56416d4ae4ce586f.js.map +5 -0
  6. package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js +206 -0
  7. package/dashboard/.next/build/chunks/[root-of-the-server]__0oj80bi._.js.map +8 -0
  8. package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js +500 -0
  9. package/dashboard/.next/build/chunks/[root-of-the-server]__1f933tp._.js.map +11 -0
  10. package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js +13 -0
  11. package/dashboard/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_0b7xl6g._.js.map +5 -0
  12. package/dashboard/.next/build/chunks/[turbopack]_runtime.js +890 -0
  13. package/dashboard/.next/build/chunks/[turbopack]_runtime.js.map +11 -0
  14. package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js +6824 -0
  15. package/dashboard/.next/build/chunks/node_modules_20v-8wl._.js.map +47 -0
  16. package/dashboard/.next/build/package.json +1 -0
  17. package/dashboard/.next/build-manifest.json +22 -0
  18. package/dashboard/.next/cache/.previewinfo +1 -0
  19. package/dashboard/.next/cache/.rscinfo +1 -0
  20. package/dashboard/.next/diagnostics/build-diagnostics.json +6 -0
  21. package/dashboard/.next/diagnostics/framework.json +1 -0
  22. package/dashboard/.next/diagnostics/route-bundle-stats.json +208 -0
  23. package/dashboard/.next/export-marker.json +6 -0
  24. package/dashboard/.next/fallback-build-manifest.json +13 -0
  25. package/dashboard/.next/images-manifest.json +68 -0
  26. package/dashboard/.next/next-minimal-server.js.nft.json +1 -0
  27. package/dashboard/.next/next-server.js.nft.json +1 -0
  28. package/dashboard/.next/package.json +1 -0
  29. package/dashboard/.next/prerender-manifest.json +306 -0
  30. package/dashboard/.next/required-server-files.js +337 -0
  31. package/dashboard/.next/required-server-files.json +337 -0
  32. package/dashboard/.next/routes-manifest.json +174 -0
  33. package/dashboard/.next/server/app/(console)/combos/page/app-paths-manifest.json +3 -0
  34. package/dashboard/.next/server/app/(console)/combos/page/build-manifest.json +18 -0
  35. package/dashboard/.next/server/app/(console)/combos/page/next-font-manifest.json +11 -0
  36. package/dashboard/.next/server/app/(console)/combos/page/react-loadable-manifest.json +1 -0
  37. package/dashboard/.next/server/app/(console)/combos/page/server-reference-manifest.json +4 -0
  38. package/dashboard/.next/server/app/(console)/combos/page.js +15 -0
  39. package/dashboard/.next/server/app/(console)/combos/page.js.map +5 -0
  40. package/dashboard/.next/server/app/(console)/combos/page.js.nft.json +1 -0
  41. package/dashboard/.next/server/app/(console)/combos/page_client-reference-manifest.js +3 -0
  42. package/dashboard/.next/server/app/(console)/config/page/app-paths-manifest.json +3 -0
  43. package/dashboard/.next/server/app/(console)/config/page/build-manifest.json +18 -0
  44. package/dashboard/.next/server/app/(console)/config/page/next-font-manifest.json +11 -0
  45. package/dashboard/.next/server/app/(console)/config/page/react-loadable-manifest.json +1 -0
  46. package/dashboard/.next/server/app/(console)/config/page/server-reference-manifest.json +4 -0
  47. package/dashboard/.next/server/app/(console)/config/page.js +15 -0
  48. package/dashboard/.next/server/app/(console)/config/page.js.map +5 -0
  49. package/dashboard/.next/server/app/(console)/config/page.js.nft.json +1 -0
  50. package/dashboard/.next/server/app/(console)/config/page_client-reference-manifest.js +3 -0
  51. package/dashboard/.next/server/app/(console)/console/page/app-paths-manifest.json +3 -0
  52. package/dashboard/.next/server/app/(console)/console/page/build-manifest.json +18 -0
  53. package/dashboard/.next/server/app/(console)/console/page/next-font-manifest.json +11 -0
  54. package/dashboard/.next/server/app/(console)/console/page/react-loadable-manifest.json +1 -0
  55. package/dashboard/.next/server/app/(console)/console/page/server-reference-manifest.json +4 -0
  56. package/dashboard/.next/server/app/(console)/console/page.js +15 -0
  57. package/dashboard/.next/server/app/(console)/console/page.js.map +5 -0
  58. package/dashboard/.next/server/app/(console)/console/page.js.nft.json +1 -0
  59. package/dashboard/.next/server/app/(console)/console/page_client-reference-manifest.js +3 -0
  60. package/dashboard/.next/server/app/(console)/endpoint/page/app-paths-manifest.json +3 -0
  61. package/dashboard/.next/server/app/(console)/endpoint/page/build-manifest.json +18 -0
  62. package/dashboard/.next/server/app/(console)/endpoint/page/next-font-manifest.json +11 -0
  63. package/dashboard/.next/server/app/(console)/endpoint/page/react-loadable-manifest.json +1 -0
  64. package/dashboard/.next/server/app/(console)/endpoint/page/server-reference-manifest.json +4 -0
  65. package/dashboard/.next/server/app/(console)/endpoint/page.js +15 -0
  66. package/dashboard/.next/server/app/(console)/endpoint/page.js.map +5 -0
  67. package/dashboard/.next/server/app/(console)/endpoint/page.js.nft.json +1 -0
  68. package/dashboard/.next/server/app/(console)/endpoint/page_client-reference-manifest.js +3 -0
  69. package/dashboard/.next/server/app/(console)/page/app-paths-manifest.json +3 -0
  70. package/dashboard/.next/server/app/(console)/page/build-manifest.json +18 -0
  71. package/dashboard/.next/server/app/(console)/page/next-font-manifest.json +11 -0
  72. package/dashboard/.next/server/app/(console)/page/react-loadable-manifest.json +1 -0
  73. package/dashboard/.next/server/app/(console)/page/server-reference-manifest.json +4 -0
  74. package/dashboard/.next/server/app/(console)/page.js +15 -0
  75. package/dashboard/.next/server/app/(console)/page.js.map +5 -0
  76. package/dashboard/.next/server/app/(console)/page.js.nft.json +1 -0
  77. package/dashboard/.next/server/app/(console)/page_client-reference-manifest.js +3 -0
  78. package/dashboard/.next/server/app/(console)/providers/[id]/page/app-paths-manifest.json +3 -0
  79. package/dashboard/.next/server/app/(console)/providers/[id]/page/build-manifest.json +18 -0
  80. package/dashboard/.next/server/app/(console)/providers/[id]/page/next-font-manifest.json +11 -0
  81. package/dashboard/.next/server/app/(console)/providers/[id]/page/react-loadable-manifest.json +1 -0
  82. package/dashboard/.next/server/app/(console)/providers/[id]/page/server-reference-manifest.json +4 -0
  83. package/dashboard/.next/server/app/(console)/providers/[id]/page.js +15 -0
  84. package/dashboard/.next/server/app/(console)/providers/[id]/page.js.map +5 -0
  85. package/dashboard/.next/server/app/(console)/providers/[id]/page.js.nft.json +1 -0
  86. package/dashboard/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +3 -0
  87. package/dashboard/.next/server/app/(console)/providers/page/app-paths-manifest.json +3 -0
  88. package/dashboard/.next/server/app/(console)/providers/page/build-manifest.json +18 -0
  89. package/dashboard/.next/server/app/(console)/providers/page/next-font-manifest.json +11 -0
  90. package/dashboard/.next/server/app/(console)/providers/page/react-loadable-manifest.json +1 -0
  91. package/dashboard/.next/server/app/(console)/providers/page/server-reference-manifest.json +4 -0
  92. package/dashboard/.next/server/app/(console)/providers/page.js +15 -0
  93. package/dashboard/.next/server/app/(console)/providers/page.js.map +5 -0
  94. package/dashboard/.next/server/app/(console)/providers/page.js.nft.json +1 -0
  95. package/dashboard/.next/server/app/(console)/providers/page_client-reference-manifest.js +3 -0
  96. package/dashboard/.next/server/app/(console)/quota/page/app-paths-manifest.json +3 -0
  97. package/dashboard/.next/server/app/(console)/quota/page/build-manifest.json +18 -0
  98. package/dashboard/.next/server/app/(console)/quota/page/next-font-manifest.json +11 -0
  99. package/dashboard/.next/server/app/(console)/quota/page/react-loadable-manifest.json +1 -0
  100. package/dashboard/.next/server/app/(console)/quota/page/server-reference-manifest.json +4 -0
  101. package/dashboard/.next/server/app/(console)/quota/page.js +15 -0
  102. package/dashboard/.next/server/app/(console)/quota/page.js.map +5 -0
  103. package/dashboard/.next/server/app/(console)/quota/page.js.nft.json +1 -0
  104. package/dashboard/.next/server/app/(console)/quota/page_client-reference-manifest.js +3 -0
  105. package/dashboard/.next/server/app/(console)/tools/[id]/page/app-paths-manifest.json +3 -0
  106. package/dashboard/.next/server/app/(console)/tools/[id]/page/build-manifest.json +18 -0
  107. package/dashboard/.next/server/app/(console)/tools/[id]/page/next-font-manifest.json +11 -0
  108. package/dashboard/.next/server/app/(console)/tools/[id]/page/react-loadable-manifest.json +1 -0
  109. package/dashboard/.next/server/app/(console)/tools/[id]/page/server-reference-manifest.json +4 -0
  110. package/dashboard/.next/server/app/(console)/tools/[id]/page.js +15 -0
  111. package/dashboard/.next/server/app/(console)/tools/[id]/page.js.map +5 -0
  112. package/dashboard/.next/server/app/(console)/tools/[id]/page.js.nft.json +1 -0
  113. package/dashboard/.next/server/app/(console)/tools/[id]/page_client-reference-manifest.js +3 -0
  114. package/dashboard/.next/server/app/(console)/tools/page/app-paths-manifest.json +3 -0
  115. package/dashboard/.next/server/app/(console)/tools/page/build-manifest.json +18 -0
  116. package/dashboard/.next/server/app/(console)/tools/page/next-font-manifest.json +11 -0
  117. package/dashboard/.next/server/app/(console)/tools/page/react-loadable-manifest.json +1 -0
  118. package/dashboard/.next/server/app/(console)/tools/page/server-reference-manifest.json +4 -0
  119. package/dashboard/.next/server/app/(console)/tools/page.js +15 -0
  120. package/dashboard/.next/server/app/(console)/tools/page.js.map +5 -0
  121. package/dashboard/.next/server/app/(console)/tools/page.js.nft.json +1 -0
  122. package/dashboard/.next/server/app/(console)/tools/page_client-reference-manifest.js +3 -0
  123. package/dashboard/.next/server/app/(console)/usage/page/app-paths-manifest.json +3 -0
  124. package/dashboard/.next/server/app/(console)/usage/page/build-manifest.json +18 -0
  125. package/dashboard/.next/server/app/(console)/usage/page/next-font-manifest.json +11 -0
  126. package/dashboard/.next/server/app/(console)/usage/page/react-loadable-manifest.json +1 -0
  127. package/dashboard/.next/server/app/(console)/usage/page/server-reference-manifest.json +4 -0
  128. package/dashboard/.next/server/app/(console)/usage/page.js +16 -0
  129. package/dashboard/.next/server/app/(console)/usage/page.js.map +5 -0
  130. package/dashboard/.next/server/app/(console)/usage/page.js.nft.json +1 -0
  131. package/dashboard/.next/server/app/(console)/usage/page_client-reference-manifest.js +3 -0
  132. package/dashboard/.next/server/app/_global-error/page/app-paths-manifest.json +3 -0
  133. package/dashboard/.next/server/app/_global-error/page/build-manifest.json +18 -0
  134. package/dashboard/.next/server/app/_global-error/page/next-font-manifest.json +6 -0
  135. package/dashboard/.next/server/app/_global-error/page/react-loadable-manifest.json +1 -0
  136. package/dashboard/.next/server/app/_global-error/page/server-reference-manifest.json +4 -0
  137. package/dashboard/.next/server/app/_global-error/page.js +9 -0
  138. package/dashboard/.next/server/app/_global-error/page.js.map +5 -0
  139. package/dashboard/.next/server/app/_global-error/page.js.nft.json +1 -0
  140. package/dashboard/.next/server/app/_global-error/page_client-reference-manifest.js +3 -0
  141. package/dashboard/.next/server/app/_global-error.html +1 -0
  142. package/dashboard/.next/server/app/_global-error.meta +15 -0
  143. package/dashboard/.next/server/app/_global-error.rsc +14 -0
  144. package/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +5 -0
  145. package/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
  146. package/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  147. package/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
  148. package/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  149. package/dashboard/.next/server/app/_not-found/page/app-paths-manifest.json +3 -0
  150. package/dashboard/.next/server/app/_not-found/page/build-manifest.json +18 -0
  151. package/dashboard/.next/server/app/_not-found/page/next-font-manifest.json +11 -0
  152. package/dashboard/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -0
  153. package/dashboard/.next/server/app/_not-found/page/server-reference-manifest.json +4 -0
  154. package/dashboard/.next/server/app/_not-found/page.js +13 -0
  155. package/dashboard/.next/server/app/_not-found/page.js.map +5 -0
  156. package/dashboard/.next/server/app/_not-found/page.js.nft.json +1 -0
  157. package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +3 -0
  158. package/dashboard/.next/server/app/_not-found.html +1 -0
  159. package/dashboard/.next/server/app/_not-found.meta +16 -0
  160. package/dashboard/.next/server/app/_not-found.rsc +20 -0
  161. package/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +20 -0
  162. package/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +6 -0
  163. package/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +9 -0
  164. package/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  165. package/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  166. package/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -0
  167. package/dashboard/.next/server/app/api/cli-detect/[tool]/route/app-paths-manifest.json +3 -0
  168. package/dashboard/.next/server/app/api/cli-detect/[tool]/route/build-manifest.json +9 -0
  169. package/dashboard/.next/server/app/api/cli-detect/[tool]/route/server-reference-manifest.json +4 -0
  170. package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js +7 -0
  171. package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js.map +5 -0
  172. package/dashboard/.next/server/app/api/cli-detect/[tool]/route.js.nft.json +1 -0
  173. package/dashboard/.next/server/app/api/cli-detect/[tool]/route_client-reference-manifest.js +3 -0
  174. package/dashboard/.next/server/app/api/gw/[...path]/route/app-paths-manifest.json +3 -0
  175. package/dashboard/.next/server/app/api/gw/[...path]/route/build-manifest.json +9 -0
  176. package/dashboard/.next/server/app/api/gw/[...path]/route/server-reference-manifest.json +4 -0
  177. package/dashboard/.next/server/app/api/gw/[...path]/route.js +7 -0
  178. package/dashboard/.next/server/app/api/gw/[...path]/route.js.map +5 -0
  179. package/dashboard/.next/server/app/api/gw/[...path]/route.js.nft.json +1 -0
  180. package/dashboard/.next/server/app/api/gw/[...path]/route_client-reference-manifest.js +3 -0
  181. package/dashboard/.next/server/app/api/login/route/app-paths-manifest.json +3 -0
  182. package/dashboard/.next/server/app/api/login/route/build-manifest.json +9 -0
  183. package/dashboard/.next/server/app/api/login/route/server-reference-manifest.json +4 -0
  184. package/dashboard/.next/server/app/api/login/route.js +7 -0
  185. package/dashboard/.next/server/app/api/login/route.js.map +5 -0
  186. package/dashboard/.next/server/app/api/login/route.js.nft.json +1 -0
  187. package/dashboard/.next/server/app/api/login/route_client-reference-manifest.js +3 -0
  188. package/dashboard/.next/server/app/api/logout/route/app-paths-manifest.json +3 -0
  189. package/dashboard/.next/server/app/api/logout/route/build-manifest.json +9 -0
  190. package/dashboard/.next/server/app/api/logout/route/server-reference-manifest.json +4 -0
  191. package/dashboard/.next/server/app/api/logout/route.js +7 -0
  192. package/dashboard/.next/server/app/api/logout/route.js.map +5 -0
  193. package/dashboard/.next/server/app/api/logout/route.js.nft.json +1 -0
  194. package/dashboard/.next/server/app/api/logout/route_client-reference-manifest.js +3 -0
  195. package/dashboard/.next/server/app/api/password/route/app-paths-manifest.json +3 -0
  196. package/dashboard/.next/server/app/api/password/route/build-manifest.json +9 -0
  197. package/dashboard/.next/server/app/api/password/route/server-reference-manifest.json +4 -0
  198. package/dashboard/.next/server/app/api/password/route.js +7 -0
  199. package/dashboard/.next/server/app/api/password/route.js.map +5 -0
  200. package/dashboard/.next/server/app/api/password/route.js.nft.json +1 -0
  201. package/dashboard/.next/server/app/api/password/route_client-reference-manifest.js +3 -0
  202. package/dashboard/.next/server/app/combos.html +1 -0
  203. package/dashboard/.next/server/app/combos.meta +16 -0
  204. package/dashboard/.next/server/app/combos.rsc +25 -0
  205. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +6 -0
  206. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +5 -0
  207. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  208. package/dashboard/.next/server/app/combos.segments/_full.segment.rsc +25 -0
  209. package/dashboard/.next/server/app/combos.segments/_head.segment.rsc +6 -0
  210. package/dashboard/.next/server/app/combos.segments/_index.segment.rsc +9 -0
  211. package/dashboard/.next/server/app/combos.segments/_tree.segment.rsc +5 -0
  212. package/dashboard/.next/server/app/config.html +1 -0
  213. package/dashboard/.next/server/app/config.meta +16 -0
  214. package/dashboard/.next/server/app/config.rsc +25 -0
  215. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +6 -0
  216. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +5 -0
  217. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  218. package/dashboard/.next/server/app/config.segments/_full.segment.rsc +25 -0
  219. package/dashboard/.next/server/app/config.segments/_head.segment.rsc +6 -0
  220. package/dashboard/.next/server/app/config.segments/_index.segment.rsc +9 -0
  221. package/dashboard/.next/server/app/config.segments/_tree.segment.rsc +5 -0
  222. package/dashboard/.next/server/app/console.html +1 -0
  223. package/dashboard/.next/server/app/console.meta +16 -0
  224. package/dashboard/.next/server/app/console.rsc +28 -0
  225. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +9 -0
  226. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +5 -0
  227. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  228. package/dashboard/.next/server/app/console.segments/_full.segment.rsc +28 -0
  229. package/dashboard/.next/server/app/console.segments/_head.segment.rsc +6 -0
  230. package/dashboard/.next/server/app/console.segments/_index.segment.rsc +9 -0
  231. package/dashboard/.next/server/app/console.segments/_tree.segment.rsc +5 -0
  232. package/dashboard/.next/server/app/endpoint.html +1 -0
  233. package/dashboard/.next/server/app/endpoint.meta +16 -0
  234. package/dashboard/.next/server/app/endpoint.rsc +25 -0
  235. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +6 -0
  236. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +5 -0
  237. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  238. package/dashboard/.next/server/app/endpoint.segments/_full.segment.rsc +25 -0
  239. package/dashboard/.next/server/app/endpoint.segments/_head.segment.rsc +6 -0
  240. package/dashboard/.next/server/app/endpoint.segments/_index.segment.rsc +9 -0
  241. package/dashboard/.next/server/app/endpoint.segments/_tree.segment.rsc +5 -0
  242. package/dashboard/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
  243. package/dashboard/.next/server/app/icon.svg/route/build-manifest.json +9 -0
  244. package/dashboard/.next/server/app/icon.svg/route.js +6 -0
  245. package/dashboard/.next/server/app/icon.svg/route.js.map +5 -0
  246. package/dashboard/.next/server/app/icon.svg/route.js.nft.json +1 -0
  247. package/dashboard/.next/server/app/icon.svg.body +8 -0
  248. package/dashboard/.next/server/app/icon.svg.meta +1 -0
  249. package/dashboard/.next/server/app/index.html +1 -0
  250. package/dashboard/.next/server/app/index.meta +15 -0
  251. package/dashboard/.next/server/app/index.rsc +23 -0
  252. package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +6 -0
  253. package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  254. package/dashboard/.next/server/app/index.segments/_full.segment.rsc +23 -0
  255. package/dashboard/.next/server/app/index.segments/_head.segment.rsc +6 -0
  256. package/dashboard/.next/server/app/index.segments/_index.segment.rsc +9 -0
  257. package/dashboard/.next/server/app/index.segments/_tree.segment.rsc +5 -0
  258. package/dashboard/.next/server/app/login/page/app-paths-manifest.json +3 -0
  259. package/dashboard/.next/server/app/login/page/build-manifest.json +18 -0
  260. package/dashboard/.next/server/app/login/page/next-font-manifest.json +11 -0
  261. package/dashboard/.next/server/app/login/page/react-loadable-manifest.json +1 -0
  262. package/dashboard/.next/server/app/login/page/server-reference-manifest.json +4 -0
  263. package/dashboard/.next/server/app/login/page.js +14 -0
  264. package/dashboard/.next/server/app/login/page.js.map +5 -0
  265. package/dashboard/.next/server/app/login/page.js.nft.json +1 -0
  266. package/dashboard/.next/server/app/login/page_client-reference-manifest.js +3 -0
  267. package/dashboard/.next/server/app/login.html +1 -0
  268. package/dashboard/.next/server/app/login.meta +15 -0
  269. package/dashboard/.next/server/app/login.rsc +26 -0
  270. package/dashboard/.next/server/app/login.segments/_full.segment.rsc +26 -0
  271. package/dashboard/.next/server/app/login.segments/_head.segment.rsc +6 -0
  272. package/dashboard/.next/server/app/login.segments/_index.segment.rsc +9 -0
  273. package/dashboard/.next/server/app/login.segments/_tree.segment.rsc +5 -0
  274. package/dashboard/.next/server/app/login.segments/login/__PAGE__.segment.rsc +9 -0
  275. package/dashboard/.next/server/app/login.segments/login.segment.rsc +5 -0
  276. package/dashboard/.next/server/app/providers.html +1 -0
  277. package/dashboard/.next/server/app/providers.meta +16 -0
  278. package/dashboard/.next/server/app/providers.rsc +25 -0
  279. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +6 -0
  280. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +5 -0
  281. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  282. package/dashboard/.next/server/app/providers.segments/_full.segment.rsc +25 -0
  283. package/dashboard/.next/server/app/providers.segments/_head.segment.rsc +6 -0
  284. package/dashboard/.next/server/app/providers.segments/_index.segment.rsc +9 -0
  285. package/dashboard/.next/server/app/providers.segments/_tree.segment.rsc +5 -0
  286. package/dashboard/.next/server/app/quota.html +1 -0
  287. package/dashboard/.next/server/app/quota.meta +16 -0
  288. package/dashboard/.next/server/app/quota.rsc +25 -0
  289. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +6 -0
  290. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +5 -0
  291. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  292. package/dashboard/.next/server/app/quota.segments/_full.segment.rsc +25 -0
  293. package/dashboard/.next/server/app/quota.segments/_head.segment.rsc +6 -0
  294. package/dashboard/.next/server/app/quota.segments/_index.segment.rsc +9 -0
  295. package/dashboard/.next/server/app/quota.segments/_tree.segment.rsc +5 -0
  296. package/dashboard/.next/server/app/tools.html +1 -0
  297. package/dashboard/.next/server/app/tools.meta +16 -0
  298. package/dashboard/.next/server/app/tools.rsc +25 -0
  299. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +6 -0
  300. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +5 -0
  301. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +6 -0
  302. package/dashboard/.next/server/app/tools.segments/_full.segment.rsc +25 -0
  303. package/dashboard/.next/server/app/tools.segments/_head.segment.rsc +6 -0
  304. package/dashboard/.next/server/app/tools.segments/_index.segment.rsc +9 -0
  305. package/dashboard/.next/server/app/tools.segments/_tree.segment.rsc +5 -0
  306. package/dashboard/.next/server/app-paths-manifest.json +22 -0
  307. package/dashboard/.next/server/chunks/[externals]__1j91pjf._.js +3 -0
  308. package/dashboard/.next/server/chunks/[externals]__1j91pjf._.js.map +1 -0
  309. package/dashboard/.next/server/chunks/[externals]__1v5t_x8._.js +3 -0
  310. package/dashboard/.next/server/chunks/[externals]__1v5t_x8._.js.map +1 -0
  311. package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js +3 -0
  312. package/dashboard/.next/server/chunks/[root-of-the-server]__0-6ukjk._.js.map +1 -0
  313. package/dashboard/.next/server/chunks/[root-of-the-server]__043un18._.js +20 -0
  314. package/dashboard/.next/server/chunks/[root-of-the-server]__043un18._.js.map +1 -0
  315. package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js +3 -0
  316. package/dashboard/.next/server/chunks/[root-of-the-server]__07euc03._.js.map +1 -0
  317. package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js +3 -0
  318. package/dashboard/.next/server/chunks/[root-of-the-server]__082azhr._.js.map +1 -0
  319. package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js +3 -0
  320. package/dashboard/.next/server/chunks/[root-of-the-server]__0das32e._.js.map +1 -0
  321. package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js +3 -0
  322. package/dashboard/.next/server/chunks/[root-of-the-server]__0pp7rn-._.js.map +1 -0
  323. package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js +3 -0
  324. package/dashboard/.next/server/chunks/[root-of-the-server]__0uqpr_c._.js.map +1 -0
  325. package/dashboard/.next/server/chunks/[root-of-the-server]__0xuaoik._.js +13 -0
  326. package/dashboard/.next/server/chunks/[root-of-the-server]__0xuaoik._.js.map +1 -0
  327. package/dashboard/.next/server/chunks/[turbopack]_runtime.js +903 -0
  328. package/dashboard/.next/server/chunks/[turbopack]_runtime.js.map +11 -0
  329. package/dashboard/.next/server/chunks/_0digmky._.js +3 -0
  330. package/dashboard/.next/server/chunks/_0digmky._.js.map +1 -0
  331. package/dashboard/.next/server/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js +3 -0
  332. package/dashboard/.next/server/chunks/_next-internal_server_app_api_cli-detect_[tool]_route_actions_0ffw-gg.js.map +1 -0
  333. package/dashboard/.next/server/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js +3 -0
  334. package/dashboard/.next/server/chunks/_next-internal_server_app_api_gw_[___path]_route_actions_0ytl4km.js.map +1 -0
  335. package/dashboard/.next/server/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js +3 -0
  336. package/dashboard/.next/server/chunks/_next-internal_server_app_api_login_route_actions_1apjjct.js.map +1 -0
  337. package/dashboard/.next/server/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js +3 -0
  338. package/dashboard/.next/server/chunks/_next-internal_server_app_api_logout_route_actions_0gzx3on.js.map +1 -0
  339. package/dashboard/.next/server/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js +3 -0
  340. package/dashboard/.next/server/chunks/_next-internal_server_app_api_password_route_actions_0xecc0j.js.map +1 -0
  341. package/dashboard/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +3 -0
  342. package/dashboard/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js.map +1 -0
  343. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0559wxx._.js +3 -0
  344. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0559wxx._.js.map +1 -0
  345. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__09pxn-h._.js +33 -0
  346. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__09pxn-h._.js.map +1 -0
  347. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_fihdn._.js +3 -0
  348. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_fihdn._.js.map +1 -0
  349. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0cx5pj3._.js +3 -0
  350. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0cx5pj3._.js.map +1 -0
  351. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-itp1._.js +3 -0
  352. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-itp1._.js.map +1 -0
  353. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0dk7lif._.js +3 -0
  354. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0dk7lif._.js.map +1 -0
  355. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qvkt1y._.js +3 -0
  356. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0qvkt1y._.js.map +1 -0
  357. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0unr06k._.js +3 -0
  358. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0unr06k._.js.map +1 -0
  359. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0x-617o._.js +3 -0
  360. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0x-617o._.js.map +1 -0
  361. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js +27 -0
  362. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0zf4yft._.js.map +1 -0
  363. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__11t16qi._.js +3 -0
  364. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__11t16qi._.js.map +1 -0
  365. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__12q01a8._.js +3 -0
  366. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__12q01a8._.js.map +1 -0
  367. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__179ut8i._.js +3 -0
  368. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__179ut8i._.js.map +1 -0
  369. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js +33 -0
  370. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1dky4g0._.js.map +1 -0
  371. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1inj1w-._.js +3 -0
  372. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1inj1w-._.js.map +1 -0
  373. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1jidl81._.js +3 -0
  374. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1jidl81._.js.map +1 -0
  375. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1mg2t8f._.js +3 -0
  376. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1mg2t8f._.js.map +1 -0
  377. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w2pq2s._.js +3 -0
  378. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w2pq2s._.js.map +1 -0
  379. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w31jjb._.js +3 -0
  380. package/dashboard/.next/server/chunks/ssr/[root-of-the-server]__1w31jjb._.js.map +1 -0
  381. package/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js +903 -0
  382. package/dashboard/.next/server/chunks/ssr/[turbopack]_runtime.js.map +11 -0
  383. package/dashboard/.next/server/chunks/ssr/_0g1n0z2._.js +3 -0
  384. package/dashboard/.next/server/chunks/ssr/_0g1n0z2._.js.map +1 -0
  385. package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js +3 -0
  386. package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js.map +1 -0
  387. package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js +6 -0
  388. package/dashboard/.next/server/chunks/ssr/_1mumvwn._.js.map +1 -0
  389. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js +3 -0
  390. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_combos_page_actions_07o3lus.js.map +1 -0
  391. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js +3 -0
  392. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_config_page_actions_1d2383s.js.map +1 -0
  393. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js +3 -0
  394. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_console_page_actions_0w-3r_g.js.map +1 -0
  395. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js +3 -0
  396. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_endpoint_page_actions_00tzpzh.js.map +1 -0
  397. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js +3 -0
  398. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_page_actions_0u8zxvt.js.map +1 -0
  399. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js +3 -0
  400. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_[id]_page_actions_20yozi-.js.map +1 -0
  401. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js +3 -0
  402. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_providers_page_actions_1bdc8gv.js.map +1 -0
  403. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js +3 -0
  404. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_quota_page_actions_02l-zu_.js.map +1 -0
  405. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js +3 -0
  406. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_[id]_page_actions_01qi9of.js.map +1 -0
  407. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js +3 -0
  408. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_tools_page_actions_18gis7c.js.map +1 -0
  409. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js +3 -0
  410. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_(console)_usage_page_actions_1twl-ym.js.map +1 -0
  411. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js +3 -0
  412. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +1 -0
  413. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js +3 -0
  414. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +1 -0
  415. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js +3 -0
  416. package/dashboard/.next/server/chunks/ssr/_next-internal_server_app_login_page_actions_04fnjo0.js.map +1 -0
  417. package/dashboard/.next/server/chunks/ssr/node_modules_1ivn_d-._.js +3 -0
  418. package/dashboard/.next/server/chunks/ssr/node_modules_1ivn_d-._.js.map +1 -0
  419. package/dashboard/.next/server/chunks/ssr/node_modules_next_1iemwhs._.js +6 -0
  420. package/dashboard/.next/server/chunks/ssr/node_modules_next_1iemwhs._.js.map +1 -0
  421. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js +6 -0
  422. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_0uboya6._.js.map +1 -0
  423. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1enzot_._.js +3 -0
  424. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1enzot_._.js.map +1 -0
  425. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1map00z._.js +19 -0
  426. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_1map00z._.js.map +1 -0
  427. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js +33 -0
  428. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0bew68i._.js.map +1 -0
  429. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js +3 -0
  430. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +1 -0
  431. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js +3 -0
  432. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +1 -0
  433. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js +3 -0
  434. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0-o-goa.js.map +1 -0
  435. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js +3 -0
  436. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +1 -0
  437. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js +4 -0
  438. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_00x0c-2.js.map +1 -0
  439. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js +4 -0
  440. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_01n345n.js.map +1 -0
  441. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js +4 -0
  442. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_02jwx28.js.map +1 -0
  443. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js +4 -0
  444. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_08g_4le.js.map +1 -0
  445. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js +4 -0
  446. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0_xbpm0.js.map +1 -0
  447. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js +4 -0
  448. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_0tx5zxe.js.map +1 -0
  449. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js +4 -0
  450. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_15dprgl.js.map +1 -0
  451. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js +4 -0
  452. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_18twt8j.js.map +1 -0
  453. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js +4 -0
  454. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_19--w_z.js.map +1 -0
  455. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js +4 -0
  456. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1bycsv3.js.map +1 -0
  457. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js +4 -0
  458. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1i1atml.js.map +1 -0
  459. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js +4 -0
  460. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1n7v8np.js.map +1 -0
  461. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js +4 -0
  462. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_1q72yyr.js.map +1 -0
  463. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js +4 -0
  464. package/dashboard/.next/server/chunks/ssr/node_modules_next_dist_esm_build_templates_app-page_20gk3id.js.map +1 -0
  465. package/dashboard/.next/server/chunks/ssr/src_02ocd5c._.js +3 -0
  466. package/dashboard/.next/server/chunks/ssr/src_02ocd5c._.js.map +1 -0
  467. package/dashboard/.next/server/chunks/ssr/src_0az41dg._.js +3 -0
  468. package/dashboard/.next/server/chunks/ssr/src_0az41dg._.js.map +1 -0
  469. package/dashboard/.next/server/chunks/ssr/src_0wrskl4._.js +3 -0
  470. package/dashboard/.next/server/chunks/ssr/src_0wrskl4._.js.map +1 -0
  471. package/dashboard/.next/server/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js +3 -0
  472. package/dashboard/.next/server/chunks/ssr/src_app_(console)_console_page_tsx_1g8gnmy._.js.map +1 -0
  473. package/dashboard/.next/server/chunks/ssr/src_components_0kr-r_t._.js +3 -0
  474. package/dashboard/.next/server/chunks/ssr/src_components_0kr-r_t._.js.map +1 -0
  475. package/dashboard/.next/server/chunks/ssr/src_components_0nuo5yx._.js +3 -0
  476. package/dashboard/.next/server/chunks/ssr/src_components_0nuo5yx._.js.map +1 -0
  477. package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js +3 -0
  478. package/dashboard/.next/server/chunks/ssr/src_components_10h9ide._.js.map +1 -0
  479. package/dashboard/.next/server/chunks/ssr/src_components_11ckzq_._.js +3 -0
  480. package/dashboard/.next/server/chunks/ssr/src_components_11ckzq_._.js.map +1 -0
  481. package/dashboard/.next/server/chunks/ssr/src_components_12gk6sc._.js +3 -0
  482. package/dashboard/.next/server/chunks/ssr/src_components_12gk6sc._.js.map +1 -0
  483. package/dashboard/.next/server/chunks/ssr/src_components_17nnhsa._.js +3 -0
  484. package/dashboard/.next/server/chunks/ssr/src_components_17nnhsa._.js.map +1 -0
  485. package/dashboard/.next/server/chunks/ssr/src_components_1kc5vh2._.js +3 -0
  486. package/dashboard/.next/server/chunks/ssr/src_components_1kc5vh2._.js.map +1 -0
  487. package/dashboard/.next/server/chunks/ssr/src_components_1zwow63._.js +3 -0
  488. package/dashboard/.next/server/chunks/ssr/src_components_1zwow63._.js.map +1 -0
  489. package/dashboard/.next/server/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js +3 -0
  490. package/dashboard/.next/server/chunks/ssr/src_components_BudgetTracker_tsx_1-xevea._.js.map +1 -0
  491. package/dashboard/.next/server/chunks/ssr/src_components_EndpointView_tsx_0awdzb5._.js +3 -0
  492. package/dashboard/.next/server/chunks/ssr/src_components_EndpointView_tsx_0awdzb5._.js.map +1 -0
  493. package/dashboard/.next/server/chunks/ssr/src_components_ModelPicker_tsx_1jisxh6._.js +3 -0
  494. package/dashboard/.next/server/chunks/ssr/src_components_ModelPicker_tsx_1jisxh6._.js.map +1 -0
  495. package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js +3 -0
  496. package/dashboard/.next/server/chunks/ssr/src_components_ProviderDetail_tsx_06sxu0r._.js.map +1 -0
  497. package/dashboard/.next/server/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js +3 -0
  498. package/dashboard/.next/server/chunks/ssr/src_components_ToolDetail_tsx_0qperd-._.js.map +1 -0
  499. package/dashboard/.next/server/functions-config-manifest.json +14 -0
  500. package/dashboard/.next/server/interception-route-rewrite-manifest.js +1 -0
  501. package/dashboard/.next/server/middleware/middleware-manifest.json +6 -0
  502. package/dashboard/.next/server/middleware-build-manifest.js +22 -0
  503. package/dashboard/.next/server/middleware-manifest.json +6 -0
  504. package/dashboard/.next/server/middleware.js +5 -0
  505. package/dashboard/.next/server/middleware.js.map +5 -0
  506. package/dashboard/.next/server/middleware.js.nft.json +1 -0
  507. package/dashboard/.next/server/next-font-manifest.js +1 -0
  508. package/dashboard/.next/server/next-font-manifest.json +59 -0
  509. package/dashboard/.next/server/pages/404.html +1 -0
  510. package/dashboard/.next/server/pages/500.html +1 -0
  511. package/dashboard/.next/server/pages-manifest.json +4 -0
  512. package/dashboard/.next/server/prefetch-hints.json +1 -0
  513. package/dashboard/.next/server/server-reference-manifest.js +1 -0
  514. package/dashboard/.next/server/server-reference-manifest.json +5 -0
  515. package/dashboard/.next/static/chunks/00415cmd3ji2s.js +1 -0
  516. package/dashboard/.next/static/chunks/05-c3ty_6dwfk.js +1 -0
  517. package/dashboard/.next/static/chunks/05i93ivai9obr.js +1 -0
  518. package/dashboard/.next/static/chunks/0_fo_1xhw25rd.js +1 -0
  519. package/dashboard/.next/static/chunks/0cz1d0mv5g_q7.js +1 -0
  520. package/dashboard/.next/static/chunks/0mk1g55o6kl1e.js +2 -0
  521. package/dashboard/.next/static/chunks/0mr7sg_sr6f99.js +1 -0
  522. package/dashboard/.next/static/chunks/1-r9spn081_wo.js +1 -0
  523. package/dashboard/.next/static/chunks/13ge_ybuj8rl3.js +1 -0
  524. package/dashboard/.next/static/chunks/14mrh2-p_w84d.js +1 -0
  525. package/dashboard/.next/static/chunks/17nxt0zmkvdgv.js +1 -0
  526. package/dashboard/.next/static/chunks/2284qz1hy9776.css +3 -0
  527. package/dashboard/.next/static/chunks/22r7w355mazs8.js +1 -0
  528. package/dashboard/.next/static/chunks/27jktro2p5rq9.js +4 -0
  529. package/dashboard/.next/static/chunks/2t3rqr0rkspb7.js +1 -0
  530. package/dashboard/.next/static/chunks/2zho1fpijk0fu.js +1 -0
  531. package/dashboard/.next/static/chunks/30uw-uiehs39o.js +1 -0
  532. package/dashboard/.next/static/chunks/36ssnkm0cjgq6.js +31 -0
  533. package/dashboard/.next/static/chunks/3i6nr2y3h_7s2.js +1 -0
  534. package/dashboard/.next/static/chunks/3j9pm5otqxm82.js +1 -0
  535. package/dashboard/.next/static/chunks/3jat3x6f_2a6o.js +1 -0
  536. package/dashboard/.next/static/chunks/3nrz6v06gppob.js +1 -0
  537. package/dashboard/.next/static/chunks/40pm83c1_d0jz.js +25 -0
  538. package/dashboard/.next/static/chunks/turbopack-28-wpvvyttgwq.js +1 -0
  539. package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_buildManifest.js +11 -0
  540. package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_clientMiddlewareManifest.js +6 -0
  541. package/dashboard/.next/static/dkqYdDLx-R5NmenO8DP0C/_ssgManifest.js +1 -0
  542. package/dashboard/.next/static/media/13bf9871fe164e7f-s.2f7nqdagzwx2-.woff2 +0 -0
  543. package/dashboard/.next/static/media/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 +0 -0
  544. package/dashboard/.next/static/media/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 +0 -0
  545. package/dashboard/.next/static/media/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 +0 -0
  546. package/dashboard/.next/static/media/3fe682a82f50d426-s.0vfdmo25voy_0.woff2 +0 -0
  547. package/dashboard/.next/static/media/5476f68d60460930-s.2uwcyprjm3xu3.woff2 +0 -0
  548. package/dashboard/.next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2 +0 -0
  549. package/dashboard/.next/static/media/71b036adf157cdcf-s.0bp8oijd_gu96.woff2 +0 -0
  550. package/dashboard/.next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 +0 -0
  551. package/dashboard/.next/static/media/89b21bb081cb7469-s.1fby2rem9ngyr.woff2 +0 -0
  552. package/dashboard/.next/static/media/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 +0 -0
  553. package/dashboard/.next/static/media/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 +0 -0
  554. package/dashboard/.next/static/media/cc545e633e20c56d-s.176arc174-8zp.woff2 +0 -0
  555. package/dashboard/.next/static/media/icon.43yv9zw_mes0x.svg +8 -0
  556. package/dashboard/.next/trace +1 -0
  557. package/dashboard/.next/trace-build +1 -0
  558. package/dashboard/.next/turbopack +0 -0
  559. package/dashboard/.next/types/cache-life.d.ts +145 -0
  560. package/dashboard/.next/types/routes.d.ts +88 -0
  561. package/dashboard/.next/types/validator.ts +223 -0
  562. package/dist/cli.js +16 -5
  563. package/dist/cli.js.map +1 -1
  564. package/package.json +3 -1
  565. package/scripts/postinstall.cjs +66 -0
  566. package/src/cli.ts +16 -5
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ProviderDetail.tsx","../../../../src/components/Checkbox.tsx","../../../../src/components/ModelSelectModal.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useState, useCallback, useRef } from \"react\";\nimport { useRouter } from \"next/navigation\";\nimport { adminApi } from \"@/lib/client\";\nimport { Lamp } from \"@/components/Lamp\";\nimport { Badge, FormatBadge } from \"@/components/Badge\";\nimport { CooldownTimer } from \"@/components/CooldownTimer\";\nimport { RichCard, CardTitle } from \"@/components/RichCard\";\nimport { Button, Input, Field } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\nimport { fmt, Empty } from \"@/components/ui\";\nimport { ModelSelectModal, type DiscoveredModel } from \"@/components/ModelSelectModal\";\nimport { CapacityBadges } from \"@/components/CapacityBadges\";\nimport { ConfirmModal } from \"@/components/ConfirmModal\";\nimport type { MaskedConfig, MaskedProvider, ProviderSnapshot, PingResult } from \"@/lib/gateway\";\n\nexport function ProviderDetail({ id }: { id: string }) {\n const router = useRouter();\n const [provider, setProvider] = useState<MaskedProvider | null>(null);\n const [health, setHealth] = useState<ProviderSnapshot | null>(null);\n const [error, setError] = useState(\"\");\n const [ping, setPing] = useState<PingResult | null>(null);\n const [busy, setBusy] = useState(\"\");\n const [newKey, setNewKey] = useState(\"\");\n const [newKeyName, setNewKeyName] = useState(\"\");\n const [editIdx, setEditIdx] = useState<number | null>(null);\n const [editName, setEditName] = useState(\"\");\n const [editVal, setEditVal] = useState(\"\");\n const [newModel, setNewModel] = useState(\"\");\n const [modelFilter, setModelFilter] = useState(\"\");\n const [discovered, setDiscovered] = useState<DiscoveredModel[] | null>(null);\n const [modelTest, setModelTest] = useState<Record<string, \"testing\" | \"ok\" | \"fail\">>({});\n const [keyTest, setKeyTest] = useState<Record<number, \"testing\" | PingResult>>({});\n const [testingAll, setTestingAll] = useState(false);\n const [testAllSummary, setTestAllSummary] = useState<{ total: number; passed: number; failed: number } | null>(null);\n const stopTestAll = useRef(false);\n const [editingConn, setEditingConn] = useState(false);\n const [connUrl, setConnUrl] = useState(\"\");\n const [connPrefix, setConnPrefix] = useState(\"\");\n const [revealedKeys, setRevealedKeys] = useState<Record<number, string>>({});\n const [confirmDelete, setConfirmDelete] = useState(false);\n\n async function testModel(mid: string) {\n setModelTest((t) => ({ ...t, [mid]: \"testing\" }));\n const r = await adminApi.testModel(id, mid);\n setModelTest((t) => ({ ...t, [mid]: r.ok && r.data?.ok ? \"ok\" : \"fail\" }));\n }\n\n async function testKey(i: number) {\n setKeyTest((t) => ({ ...t, [i]: \"testing\" }));\n const r = await adminApi.testKey(id, i);\n setKeyTest((t) => ({ ...t, [i]: r.data ?? { ok: false, reachable: false, status: 0, error: r.error } }));\n }\n\n async function testAllKeys(count: number) {\n stopTestAll.current = false;\n setTestingAll(true);\n setTestAllSummary(null);\n setKeyTest({});\n let passed = 0;\n let failed = 0;\n for (let i = 0; i < count; i++) {\n if (stopTestAll.current) break;\n setKeyTest((t) => ({ ...t, [i]: \"testing\" }));\n const r = await adminApi.testKey(id, i);\n const result = r.data ?? { ok: false, reachable: false, status: 0, error: r.error };\n setKeyTest((t) => ({ ...t, [i]: result }));\n if (result.ok) passed++;\n else failed++;\n if (i < count - 1 && !stopTestAll.current) await new Promise((resolve) => setTimeout(resolve, 500));\n }\n setTestingAll(false);\n setTestAllSummary({ total: count, passed, failed });\n }\n\n const reload = useCallback(async () => {\n const [cfgRes, provRes] = await Promise.all([fetch(\"/api/gw/admin/config\"), adminApi.providers()]);\n if (!cfgRes.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n const cfg = (await cfgRes.json()) as MaskedConfig;\n const p = cfg.providers.find((x) => x.id === id) ?? null;\n if (!p) {\n setError(`provider \"${id}\" not found`);\n return;\n }\n setError(\"\");\n setProvider(p);\n setHealth(provRes.data?.providers.find((x) => x.id === id) ?? null);\n }, [id]);\n\n useEffect(() => {\n void reload();\n }, [reload]);\n\n if (error) return <Empty>{error}</Empty>;\n if (!provider) return <Empty>Loading…</Empty>;\n\n const keys = provider.api_keys ?? (provider.api_key ? [provider.api_key] : []);\n const q = modelFilter.trim().toLowerCase();\n const shownModels = q ? provider.models.filter((m) => m.id.toLowerCase().includes(q)) : provider.models;\n\n async function run(label: string, fn: () => Promise<{ ok: boolean; error?: string }>) {\n setBusy(label);\n const res = await fn();\n setBusy(\"\");\n if (!res.ok) setError(res.error ?? \"action failed\");\n else {\n setError(\"\");\n await reload();\n }\n }\n\n return (\n <div>\n <button onClick={() => router.push(\"/providers\")} className=\"mb-4 inline-flex items-center gap-1 text-[12px] text-text-muted hover:text-text\">\n <Icon name=\"arrow_back\" size={15} /> Providers\n </button>\n\n <div className=\"mb-6 flex items-center gap-3\">\n <Lamp state={provider.disabled ? \"idle\" : (health?.keys.some((k) => k.healthy) ?? true) ? \"live\" : \"down\"} />\n <div>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">{provider.name || provider.id}</h1>\n {provider.name && <span className=\"text-[12px] text-text-subtle\">{provider.id}/</span>}\n </div>\n <FormatBadge format={provider.format} />\n {provider.free && <Badge tone=\"info\">free</Badge>}\n {provider.service_account && <Badge tone=\"info\">service-account</Badge>}\n {/* enable/disable lives on the Providers list (one place); here we just\n flag the state. Disabled = red badge + the content below fades. */}\n {provider.disabled && <Badge tone=\"down\">disabled</Badge>}\n </div>\n\n <div className={`grid gap-4 lg:grid-cols-2 transition-opacity ${provider.disabled ? \"opacity-50\" : \"\"}`}>\n <RichCard header={<CardTitle title=\"Connection\" />}>\n {editingConn ? (\n <div className=\"space-y-3\">\n <Field label=\"Name\" hint=\"the id — also the call prefix (name/model) & combos\">\n <Input value={connPrefix} onChange={(e) => setConnPrefix(e.target.value)} placeholder=\"e.g. huki\" className=\"font-mono text-[12.5px]\" />\n </Field>\n {connPrefix.trim() && connPrefix.trim() !== id && (\n <p className=\"flex items-start gap-1.5 rounded-brand border border-warning/40 bg-warning/8 px-2.5 py-2 text-[11.5px] text-warning\">\n <Icon name=\"warning\" size={14} className=\"mt-0.5 flex-none\" />\n <span>\n Renaming rewrites the call string. CLI tools pointing at{\" \"}\n <code className=\"tnum\">{id}/…</code> will break until repointed; combos that target it are\n updated automatically.\n </span>\n </p>\n )}\n <Field label=\"Base URL\">\n <Input value={connUrl} onChange={(e) => setConnUrl(e.target.value)} placeholder=\"https://...\" className=\"font-mono text-[12.5px]\" />\n </Field>\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={() => setEditingConn(false)}>Cancel</Button>\n <Button disabled={busy === \"editconn\"} onClick={() => run(\"editconn\", async () => {\n // One identifier: Name == id == call prefix. Rename it (cascades to\n // combos, moves this page to the new id) then apply base_url.\n const newId = connPrefix.trim();\n let activeId = id;\n if (newId && newId !== id) {\n const rr = await adminApi.renameProvider(id, newId);\n if (!rr.ok) return rr;\n activeId = newId;\n }\n const r = await adminApi.editProvider(activeId, { base_url: connUrl.trim() || undefined });\n if (r.ok) {\n setEditingConn(false);\n if (activeId !== id) { router.push(`/providers/${encodeURIComponent(activeId)}`); return r; }\n }\n return r;\n })}>Save</Button>\n </div>\n </div>\n ) : (\n <>\n <div className=\"space-y-2 text-[13px]\">\n <Row k=\"Base URL\" v={provider.base_url} />\n <Row k=\"Format\" v={provider.format} />\n <Row k=\"Cooldown base\" v={`${provider.cooldown_base_ms}ms`} />\n <Row k=\"Max retries\" v={String(provider.max_retries)} />\n </div>\n <div className=\"mt-4 flex items-center gap-2\">\n <Button variant=\"ghost\" onClick={() => { setEditingConn(true); setConnUrl(provider.base_url); setConnPrefix(provider.id); }}>\n <Icon name=\"edit\" size={15} /> Edit\n </Button>\n <Button variant=\"ghost\" disabled={busy === \"test\"} onClick={() => run(\"test\", async () => {\n const r = await adminApi.testProvider(id);\n if (r.ok) setPing(r.data);\n return r;\n })}>\n <Icon name=\"wifi_tethering\" size={16} /> {busy === \"test\" ? \"Testing…\" : \"Test connection\"}\n </Button>\n <Button variant=\"ghost\" disabled={busy === \"discover\"} onClick={() => run(\"discover\", async () => {\n const r = await adminApi.discoverModels(id);\n if (r.ok) setDiscovered(r.data?.models ?? []);\n return r;\n })}>\n <Icon name=\"sync\" size={16} /> {busy === \"discover\" ? \"Fetching…\" : \"Fetch models\"}\n </Button>\n </div>\n {ping && (\n <div className=\"mt-3 text-[12px]\">\n <Badge tone={ping.ok ? \"live\" : ping.reachable ? \"warn\" : \"down\"}>\n {ping.ok ? `ok (${ping.status})` : ping.reachable ? `reachable (${ping.status})` : \"unreachable\"}\n </Badge>\n {ping.error && <span className=\"ml-2 text-text-subtle\">{ping.error}</span>}\n </div>\n )}\n </>\n )}\n </RichCard>\n\n <RichCard\n header={\n <>\n <CardTitle title=\"Keys\" sub={`${keys.length} configured`} />\n <div className=\"flex flex-wrap items-center gap-3\">\n {keys.length > 1 && (\n <Button variant=\"ghost\" disabled={testingAll} onClick={() => testAllKeys(keys.length)}>\n <Icon name={testingAll ? \"progress_activity\" : \"sync\"} size={15} />\n {testingAll ? \"Testing…\" : \"Test All\"}\n </Button>\n )}\n {testingAll && (\n <Button variant=\"ghost\" onClick={() => { stopTestAll.current = true; }}>\n <Icon name=\"stop\" size={15} /> Stop\n </Button>\n )}\n <span className=\"text-[11px] text-text-subtle\">Round Robin</span>\n <button\n onClick={() => {\n const next = provider.strategy === \"round-robin\" ? null : \"round-robin\";\n void adminApi.setProviderStrategy(id, next as \"round-robin\" | null, provider.sticky ?? 1).then(() => reload());\n }}\n className={`relative h-5 w-9 rounded-full transition-colors ${provider.strategy === \"round-robin\" ? \"bg-accent\" : \"bg-border-subtle\"}`}\n aria-label=\"Toggle round-robin\"\n >\n <span className={`absolute left-0.5 top-0.5 h-4 w-4 rounded-full bg-white transition-transform ${provider.strategy === \"round-robin\" ? \"translate-x-[18px]\" : \"translate-x-0\"}`} />\n </button>\n {provider.strategy === \"round-robin\" && (\n <div className=\"flex items-center gap-1.5\">\n <span className=\"text-[11px] text-text-subtle\">Sticky:</span>\n <div className=\"flex items-center rounded-brand border border-border-subtle\">\n <button\n type=\"button\"\n disabled={(provider.sticky ?? 1) <= 1}\n onClick={() => void adminApi.setProviderStrategy(id, \"round-robin\", Math.max(1, (provider.sticky ?? 1) - 1)).then(() => reload())}\n className=\"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text disabled:opacity-30\"\n aria-label=\"Decrease sticky\"\n >\n <Icon name=\"remove\" size={13} />\n </button>\n <span className=\"tnum w-6 text-center text-[11px] text-text\">{provider.sticky ?? 1}</span>\n <button\n type=\"button\"\n onClick={() => void adminApi.setProviderStrategy(id, \"round-robin\", (provider.sticky ?? 1) + 1).then(() => reload())}\n className=\"px-1.5 py-0.5 text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Increase sticky\"\n >\n <Icon name=\"add\" size={13} />\n </button>\n </div>\n </div>\n )}\n </div>\n </>\n }\n >\n {testAllSummary && (\n <div className=\"mb-3 flex items-center gap-2 text-[11.5px]\">\n <Badge tone={testAllSummary.failed === 0 ? \"live\" : \"warn\"}>\n {testAllSummary.total} tested: {testAllSummary.passed} valid, {testAllSummary.failed} failed\n </Badge>\n </div>\n )}\n {keys.length === 0 ? (\n <Empty>No keys (free / service-account provider).</Empty>\n ) : (\n <div className=\"space-y-1.5\">\n {keys.map((k, i) => {\n const ks = health?.keys[i];\n const test = keyTest[i];\n const tested = test && test !== \"testing\" ? test : null;\n const lamp = tested ? (tested.ok ? \"live\" : tested.reachable ? \"idle\" : \"down\") : ks ? (ks.healthy ? \"live\" : \"down\") : \"idle\";\n const name = provider.key_names?.[k];\n const disabled = provider.disabled_keys?.includes(i) ?? false;\n if (editIdx === i) {\n return (\n <div key={i} className=\"space-y-2 rounded-brand border border-accent bg-accent-soft/40 px-3 py-2.5\">\n <Input value={editName} onChange={(e) => setEditName(e.target.value)} placeholder=\"key name (optional)\" />\n <Input value={editVal} onChange={(e) => setEditVal(e.target.value)} placeholder=\"new key value (leave blank to keep)\" className=\"font-mono text-[12.5px]\" />\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={() => setEditIdx(null)}>Cancel</Button>\n <Button disabled={busy === `editkey${i}`} onClick={() => run(`editkey${i}`, async () => {\n const r = await adminApi.editKey(id, i, { name: editName, key: editVal.trim() || undefined });\n if (r.ok) setEditIdx(null);\n return r;\n })}>Save</Button>\n </div>\n </div>\n );\n }\n return (\n <div key={i} className={`rounded-brand border border-border-subtle px-3 py-2${disabled ? \" opacity-60\" : \"\"}`}>\n <div className=\"flex items-center gap-2\">\n {/* reorder */}\n <div className=\"flex flex-col\">\n <button\n onClick={() => run(`reorder${i}up`, () => adminApi.reorderKey(id, i, i - 1))}\n disabled={i === 0}\n className=\"p-0.5 text-text-subtle hover:text-text disabled:opacity-30\"\n aria-label=\"Move up\"\n >\n <Icon name=\"keyboard_arrow_up\" size={14} />\n </button>\n <button\n onClick={() => run(`reorder${i}dn`, () => adminApi.reorderKey(id, i, i + 1))}\n disabled={i === keys.length - 1}\n className=\"p-0.5 text-text-subtle hover:text-text disabled:opacity-30\"\n aria-label=\"Move down\"\n >\n <Icon name=\"keyboard_arrow_down\" size={14} />\n </button>\n </div>\n <Lamp state={lamp} />\n <div className=\"min-w-0 flex-1\">\n {name && <div className=\"text-[12px] font-semibold text-text-muted\">{name}</div>}\n <span className=\"block truncate font-mono text-[12.5px] text-text\">{revealedKeys[i] ?? k}</span>\n </div>\n {revealedKeys[i] && (\n <button\n onClick={() => { void navigator.clipboard.writeText(revealedKeys[i]!); }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Copy key\"\n title=\"Copy to clipboard\"\n >\n <Icon name=\"content_copy\" size={14} />\n </button>\n )}\n {ks && ks.cooldown_ms > 0 && <CooldownTimer ms={ks.cooldown_ms} />}\n {/* actions: reveal > toggle > test > edit > delete */}\n <button\n onClick={async () => {\n if (revealedKeys[i]) { setRevealedKeys((r) => { const n = { ...r }; delete n[i]; return n; }); return; }\n const r = await adminApi.revealKey(id, i);\n if (r.ok && r.data?.key) setRevealedKeys((prev) => ({ ...prev, [i]: r.data!.key }));\n }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={revealedKeys[i] ? \"Hide key\" : \"Show key\"}\n title={revealedKeys[i] ? \"Hide key\" : \"Show key\"}\n >\n <Icon name={revealedKeys[i] ? \"visibility_off\" : \"visibility\"} size={15} />\n </button>\n <button\n onClick={() => run(`toggle${i}`, () => adminApi.toggleKey(id, i, disabled))}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={disabled ? \"Enable key\" : \"Disable key\"}\n title={disabled ? \"Enable this key\" : \"Disable this key\"}\n >\n <Icon name={disabled ? \"toggle_off\" : \"toggle_on\"} size={20} className={disabled ? \"text-text-subtle\" : \"text-success\"} />\n </button>\n <button\n onClick={() => testKey(i)}\n disabled={test === \"testing\"}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text disabled:opacity-60\"\n aria-label={`Check key ${i + 1}`}\n title=\"Check this key against the base URL\"\n >\n <Icon name={test === \"testing\" ? \"progress_activity\" : \"wifi_tethering\"} size={15} />\n </button>\n <button\n onClick={() => { setEditIdx(i); setEditName(name ?? \"\"); setEditVal(\"\"); }}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-text\"\n aria-label={`Edit key ${i + 1}`}\n title=\"Rename or replace this key\"\n >\n <Icon name=\"edit\" size={15} />\n </button>\n <button\n onClick={() => run(`rmkey${i}`, () => adminApi.removeKey(id, i))}\n className=\"flex-none rounded p-1 text-text-subtle transition-colors hover:text-danger\"\n aria-label=\"Remove key\"\n >\n <Icon name=\"delete\" size={15} />\n </button>\n </div>\n {tested && (\n <div className=\"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]\">\n <Badge tone={tested.ok ? \"live\" : tested.reachable ? \"warn\" : \"down\"}>\n {tested.ok ? \"valid\" : tested.reachable ? `reachable (${tested.status})` : \"invalid\"}\n </Badge>\n {tested.error && <span className=\"truncate text-danger\">{tested.error}</span>}\n </div>\n )}\n {!tested && ks?.last_error && (\n <div className=\"mt-1.5 flex items-center gap-2 pl-8 text-[11.5px]\">\n <span className=\"text-danger\">{ks.last_error.status ? `${ks.last_error.status}: ` : \"\"}{ks.last_error.message}</span>\n <span className=\"text-text-subtle\">{new Date(ks.last_error.at).toLocaleTimeString()}</span>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n <div className=\"mt-3 space-y-2\">\n <Input value={newKeyName} onChange={(e) => setNewKeyName(e.target.value)} placeholder=\"key name (optional, e.g. primary)\" />\n <div className=\"flex gap-2\">\n <Input value={newKey} onChange={(e) => setNewKey(e.target.value)} placeholder=\"add a key…\" className=\"font-mono text-[12.5px]\" />\n <Button disabled={!newKey || busy === \"addkey\"} onClick={() => run(\"addkey\", async () => {\n const r = await adminApi.addKey(id, newKey, newKeyName.trim() || undefined);\n if (r.ok) { setNewKey(\"\"); setNewKeyName(\"\"); }\n return r;\n })}>Add</Button>\n </div>\n </div>\n </RichCard>\n\n <RichCard\n className=\"lg:col-span-2\"\n header={\n <>\n <CardTitle title=\"Models served\" sub={`${provider.models.length} in catalog`} />\n {provider.models.length > 0 && (\n <button\n onClick={() => run(\"clear\", () => adminApi.clearModels(id))}\n disabled={busy === \"clear\"}\n className=\"text-[12px] text-text-subtle hover:text-danger\"\n >\n Clear all\n </button>\n )}\n </>\n }\n >\n {provider.models.length === 0 ? (\n <Empty>No models. Add one below, or fetch them for a free/auto provider.</Empty>\n ) : (\n <>\n <p className=\"mb-2.5 text-[12px] text-text-subtle\">\n Call any of these as <span className=\"tnum text-text-muted\">{provider.id}/&lt;model&gt;</span>, as a combo alias, or by the bare id.\n </p>\n {/* filter only earns its space once the catalog is long enough to scroll */}\n {provider.models.length > 8 && (\n <div className=\"mb-2.5 flex items-center gap-2\">\n <div className=\"relative flex-1\">\n <Icon name=\"search\" size={15} className=\"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-text-subtle\" />\n <Input value={modelFilter} onChange={(e) => setModelFilter(e.target.value)} placeholder=\"filter models…\" className=\"pl-8\" />\n </div>\n <span className=\"tnum whitespace-nowrap text-[12px] text-text-subtle\">\n {q ? `${shownModels.length} of ${provider.models.length}` : `${provider.models.length}`}\n </span>\n </div>\n )}\n {shownModels.length === 0 ? (\n <Empty>No model matches “{modelFilter}”.</Empty>\n ) : (\n <div className=\"max-h-[360px] divide-y divide-border-subtle overflow-y-auto rounded-brand border border-border-subtle\">\n {shownModels.map((m) => {\n const st = modelTest[m.id];\n const statusIcon = st === \"ok\" ? \"check_circle\" : st === \"fail\" ? \"cancel\" : \"smart_toy\";\n const statusColor = st === \"ok\" ? \"text-success\" : st === \"fail\" ? \"text-danger\" : \"text-text-subtle\";\n return (\n <div key={m.id} className=\"group flex items-center justify-between gap-3 px-3 py-2 hover:bg-bg\">\n <div className=\"flex min-w-0 items-center gap-2\">\n <Icon name={statusIcon} size={15} className={`flex-none ${statusColor}`} />\n {/* the prefix (= provider id) is what makes the call string; show it aigetwey-style */}\n <span className=\"tnum truncate text-[12.5px]\">\n <span className=\"text-text-subtle\">{provider.id}/</span>\n <span className=\"text-text\">{m.id}</span>\n </span>\n <CapacityBadges model={m.id} provider={provider.id} />\n {(m.price_in !== undefined || m.price_out !== undefined) && (\n <span className=\"tnum whitespace-nowrap text-[11px] text-text-subtle\">\n {fmt.cost(m.price_in ?? 0)}/{fmt.cost(m.price_out ?? 0)} per 1M\n </span>\n )}\n </div>\n <div className=\"flex flex-none items-center gap-0.5\">\n <button\n onClick={() => testModel(m.id)}\n disabled={st === \"testing\"}\n className=\"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-accent disabled:opacity-60\"\n aria-label={`Test ${m.id}`}\n title={st === \"fail\" ? \"Test failed — click to retry\" : \"Test this model\"}\n >\n <Icon name={st === \"testing\" ? \"progress_activity\" : \"science\"} size={15} />\n </button>\n <button\n onClick={() => run(`rmmodel${m.id}`, () => adminApi.removeModel(id, m.id))}\n disabled={busy === `rmmodel${m.id}`}\n className=\"rounded p-1 text-text-subtle transition-colors hover:bg-surface hover:text-danger disabled:opacity-40\"\n aria-label={`Remove ${m.id}`}\n >\n <Icon name=\"delete\" size={16} />\n </button>\n </div>\n </div>\n );\n })}\n </div>\n )}\n </>\n )}\n <div className=\"mt-3 flex gap-2\">\n <Input value={newModel} onChange={(e) => setNewModel(e.target.value)} placeholder=\"add a model id…\" />\n <Button disabled={!newModel || busy === \"addmodel\"} onClick={() => run(\"addmodel\", async () => {\n const r = await adminApi.addModel(id, newModel);\n if (r.ok) setNewModel(\"\");\n return r;\n })}>Add</Button>\n </div>\n </RichCard>\n </div>\n\n {discovered && (\n <ModelSelectModal\n models={discovered}\n busy={busy === \"addmodels\"}\n onClose={() => setDiscovered(null)}\n onAdd={(ids) => run(\"addmodels\", async () => {\n const r = await adminApi.addModels(id, ids);\n if (r.ok) setDiscovered(null);\n return r;\n })}\n />\n )}\n\n <div className=\"mt-6\">\n <Button variant=\"danger\" onClick={() => setConfirmDelete(true)}>\n <Icon name=\"delete\" size={16} /> Remove provider\n </Button>\n </div>\n\n {confirmDelete && (\n <ConfirmModal\n title=\"Remove provider\"\n message={`Delete \"${provider.name ?? id}\"? All keys and model associations will be lost.`}\n confirmLabel=\"Remove\"\n busy={busy === \"rmprov\"}\n onCancel={() => setConfirmDelete(false)}\n onConfirm={() => run(\"rmprov\", async () => {\n const r = await adminApi.removeProvider(id);\n if (r.ok) router.push(\"/providers\");\n else setConfirmDelete(false);\n return r;\n })}\n />\n )}\n </div>\n );\n}\n\nfunction Row({ k, v }: { k: string; v: string }) {\n return (\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-text-subtle\">{k}</span>\n <span className=\"truncate text-text\">{v}</span>\n </div>\n );\n}\n","import { Icon } from \"./Icon\";\n\n/**\n * Themed checkbox. Native checkboxes look out of place on the dark Haulix\n * surface, so this is a button styled to match: filled with the accent + a\n * check glyph when on, a bordered box when off. `indeterminate` renders a dash\n * for \"some selected\" (drives the select-all row).\n */\nexport function Checkbox({\n checked,\n indeterminate,\n onChange,\n className,\n ariaLabel,\n}: {\n checked: boolean;\n indeterminate?: boolean;\n onChange: () => void;\n className?: string;\n ariaLabel?: string;\n}) {\n const on = checked || indeterminate;\n return (\n <button\n type=\"button\"\n role=\"checkbox\"\n aria-checked={indeterminate ? \"mixed\" : checked}\n aria-label={ariaLabel}\n onClick={(e) => {\n e.stopPropagation();\n onChange();\n }}\n className={`flex h-[18px] w-[18px] flex-none items-center justify-center rounded-[5px] border transition-colors ${\n on ? \"border-accent bg-accent text-accent-ink\" : \"border-border bg-bg text-transparent hover:border-text-subtle\"\n }${className ? ` ${className}` : \"\"}`}\n >\n <Icon name={indeterminate ? \"remove\" : \"check\"} size={13} />\n </button>\n );\n}\n","\"use client\";\n\nimport { useState, useMemo } from \"react\";\nimport { Button, Input } from \"@/components/Button\";\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { Icon } from \"@/components/Icon\";\n\nexport interface DiscoveredModel {\n id: string;\n added: boolean; // already in the provider catalog\n}\n\n/**\n * Pick which discovered models to add. Free providers can return hundreds of\n * ids, so this is a filterable checklist (defaulting to only the not-yet-added\n * ones selected) rather than dumping everything into the catalog.\n */\nexport function ModelSelectModal({\n models,\n busy,\n onAdd,\n onClose,\n}: {\n models: DiscoveredModel[];\n busy: boolean;\n onAdd: (ids: string[]) => void;\n onClose: () => void;\n}) {\n const [filter, setFilter] = useState(\"\");\n const [picked, setPicked] = useState<Set<string>>(() => new Set(models.filter((m) => !m.added).map((m) => m.id)));\n\n const shown = useMemo(() => {\n const q = filter.trim().toLowerCase();\n return q ? models.filter((m) => m.id.toLowerCase().includes(q)) : models;\n }, [models, filter]);\n\n function toggle(id: string) {\n setPicked((s) => {\n const next = new Set(s);\n if (next.has(id)) next.delete(id);\n else next.add(id);\n return next;\n });\n }\n\n const shownPickedCount = shown.filter((m) => picked.has(m.id)).length;\n const allShownPicked = shown.length > 0 && shownPickedCount === shown.length;\n const someShownPicked = shownPickedCount > 0 && !allShownPicked;\n function toggleAllShown() {\n setPicked((s) => {\n const next = new Set(s);\n if (allShownPicked) shown.forEach((m) => next.delete(m.id));\n else shown.forEach((m) => next.add(m.id));\n return next;\n });\n }\n\n return (\n <div className=\"fixed inset-0 z-50 grid place-items-center bg-black/50 p-6\" onClick={onClose}>\n <div\n className=\"flex max-h-[80vh] w-full max-w-[480px] flex-col overflow-hidden rounded-brand-lg border border-border bg-surface shadow-elevated\"\n onClick={(e) => e.stopPropagation()}\n >\n <header className=\"flex items-center justify-between border-b border-border-subtle px-4 py-3\">\n <span className=\"text-[14px] font-semibold text-text\">{models.length} models found</span>\n <button onClick={onClose} className=\"text-text-subtle hover:text-text\" aria-label=\"Close\">\n <Icon name=\"close\" size={18} />\n </button>\n </header>\n\n <div className=\"border-b border-border-subtle px-4 py-2.5\">\n <Input value={filter} onChange={(e) => setFilter(e.target.value)} placeholder=\"filter…\" autoFocus />\n </div>\n\n {/* select-all row: an obvious clickable control, not an ambiguous button */}\n {shown.length > 0 && (\n <button\n onClick={toggleAllShown}\n className=\"flex items-center gap-2.5 border-b border-border-subtle px-4 py-2 text-left hover:bg-surface-2\"\n >\n <Checkbox checked={allShownPicked} indeterminate={someShownPicked} onChange={toggleAllShown} ariaLabel=\"Select all\" />\n <span className=\"text-[12.5px] font-medium text-text\">Select all{filter ? \" (filtered)\" : \"\"}</span>\n <span className=\"ml-auto tnum text-[11px] text-text-subtle\">\n {shownPickedCount}/{shown.length}\n </span>\n </button>\n )}\n\n <div className=\"flex-1 overflow-y-auto px-2 py-2\">\n {shown.length === 0 ? (\n <div className=\"px-2 py-6 text-center text-[13px] text-text-muted\">No matches.</div>\n ) : (\n shown.map((m) => {\n const sel = picked.has(m.id);\n return (\n <button\n key={m.id}\n onClick={() => toggle(m.id)}\n className={`flex w-full items-center gap-2.5 rounded-brand border px-2.5 py-2 text-left transition-colors ${\n sel ? \"border-accent/40 bg-accent-soft\" : \"border-transparent hover:bg-surface-2\"\n }`}\n >\n <Checkbox checked={sel} onChange={() => toggle(m.id)} ariaLabel={m.id} />\n <span className=\"flex-1 truncate text-[12.5px] text-text\">{m.id}</span>\n {m.added && <span className=\"text-[11px] text-text-subtle\">in catalog</span>}\n </button>\n );\n })\n )}\n </div>\n\n <footer className=\"flex items-center justify-between gap-3 border-t border-border-subtle bg-bg-alt px-4 py-2.5\">\n <span className=\"tnum text-[12px] text-text-muted\">{picked.size} selected</span>\n <div className=\"flex gap-2\">\n <Button variant=\"ghost\" onClick={onClose}>\n Cancel\n </Button>\n <Button disabled={picked.size === 0 || busy} onClick={() => onAdd([...picked])}>\n {busy ? \"Adding…\" : `Add ${picked.size}`}\n </Button>\n </div>\n </footer>\n </div>\n </div>\n );\n}\n"],"names":["Checkbox","checked","indeterminate","onChange","className","ariaLabel","on","type","role","onClick","e","stopPropagation","name","size"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ module.exports=[95600,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(85732),f=a.i(2693),g=a.i(7078),h=a.i(47444),i=a.i(93026),j=a.i(58918),k=a.i(56173),l=a.i(70200),m=a.i(55690);function n({label:a,children:c,top:d}){return(0,b.jsxs)("div",{className:`grid grid-cols-[7rem_1fr] gap-3 ${d?"items-start":"items-center"}`,children:[(0,b.jsx)("span",{className:`text-[12px] font-medium text-text-subtle ${d?"pt-1.5":""}`,children:a}),(0,b.jsx)("div",{className:"min-w-0",children:c})]})}function o({text:a}){let[d,e]=(0,c.useState)(!1);return(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsx)("pre",{className:"overflow-x-auto rounded-brand border border-border-subtle bg-bg px-3 py-2.5 font-mono text-[12.5px] leading-relaxed text-text",children:a}),(0,b.jsxs)("button",{onClick:()=>{navigator.clipboard.writeText(a),e(!0),setTimeout(()=>e(!1),1200)},className:"absolute right-2 top-2 flex items-center gap-1 rounded-brand border border-border bg-surface px-2 py-1 text-[11px] text-text-muted hover:text-text",children:[(0,b.jsx)(i.Icon,{name:d?"check":"content_copy",size:13})," ",d?"copied":"copy"]})]})}a.s(["ToolDetail",0,function({id:a}){let p=(0,d.useRouter)(),q=(0,l.toolById)(a),[r,s]=(0,c.useState)(null),[t,u]=(0,c.useState)([]),[v,w]=(0,c.useState)(0),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)(""),[B,C]=(0,c.useState)(null),[D,E]=(0,c.useState)(""),[F,G]=(0,c.useState)(""),[H,I]=(0,c.useState)([]),[J,K]=(0,c.useState)([]),[L,M]=(0,c.useState)(!1),[N,O]=(0,c.useState)([]),[P,Q]=(0,c.useState)(""),[R,S]=(0,c.useState)({opus:"",sonnet:"",haiku:""}),T=q?.format==="anthropic",U=(0,c.useCallback)(async()=>{q?.autoConfig&&C((await k.cliConfig.status(q.id)).data)},[q]);async function V(){if(!q||!r)return;G("");let a=`http://127.0.0.1:${r.port}`,b=r.keys.length&&x||void 0;if(T){let c={};R.opus&&(c.opus=R.opus),R.sonnet&&(c.sonnet=R.sonnet),R.haiku&&(c.haiku=R.haiku),E("apply");let d=await k.cliConfig.apply(q.id,{base:a,key:b,models:c});E(""),G(d.ok?"Wrote config ✓":d.error??"failed"),d.ok&&U();return}if(0===N.length)return void G("add at least one model");E("apply");let c=await k.cliConfig.apply(q.id,{base:a,key:b,models:N,active:P});E(""),G(c.ok?"Wrote config ✓":c.error??"failed"),c.ok&&U()}async function W(){if(!q)return;E("reset"),G("");let a=await k.cliConfig.reset(q.id);E(""),a.ok?(G("Removed gateway config ✓"),U()):G(a.error??"failed")}if((0,c.useEffect)(()=>{U()},[U]),(0,c.useEffect)(()=>{B?.installed&&(T&&B.modelSlots?S({opus:B.modelSlots.opus??"",sonnet:B.modelSlots.sonnet??"",haiku:B.modelSlots.haiku??""}):!T&&B.models&&B.models.length>0&&(O(B.models),Q(B.activeModel??B.models[0]??"")))},[B,T]),(0,c.useEffect)(()=>{(async()=>{let[a,b]=await Promise.all([fetch("/api/gw/admin/endpoint"),fetch("/api/gw/admin/config")]);if(!a.ok)return A("could not reach the gateway");if(s(await a.json()),b.ok){let a=await b.json(),c=a.models.map(a=>a.alias);u(c);let d=a.providers.filter(a=>!a.disabled);I([...c,...d.flatMap(a=>a.models.map(b=>`${a.id}/${b.id}`))]);let e=[];for(let a of(c.length&&e.push({label:"Combos",items:c.map(a=>({value:a,label:a}))}),d))a.models.length&&e.push({label:a.id,items:a.models.map(b=>({value:`${a.id}/${b.id}`,label:`${a.id}/${b.id}`}))});K(e)}})()},[]),(0,c.useEffect)(()=>{r&&0!==r.keys.length&&k.adminApi.revealServerKey(v).then(a=>y(a.ok?a.data?.key??"":""))},[r,v]),!q)return(0,b.jsx)(j.Empty,{children:"Unknown tool."});if(z)return(0,b.jsx)(j.Empty,{children:z});if(!r)return(0,b.jsx)(j.Empty,{children:"Loading…"});let X=`http://127.0.0.1:${r.port}`,Y=q.env(X,x).map(a=>`export ${a.name}="${a.value}"`).join("\n"),Z=N.length?N:B?.models??[],$="opencode"===q.id?JSON.stringify({provider:{aigetwey:{npm:"@ai-sdk/openai-compatible",options:{baseURL:`${X}/v1`,apiKey:x||"aigetwey"},models:Object.fromEntries(Z.map(a=>[a,{name:a,modalities:(0,m.modalitiesForModel)(a)}]))}},model:`aigetwey/${P||Z[0]||""}`},null,2):null,_="claude-code"===q.id?JSON.stringify({hasCompletedOnboarding:!0,env:{ANTHROPIC_BASE_URL:X,API_TIMEOUT_MS:"600000",...x?{ANTHROPIC_AUTH_TOKEN:x}:{},...R.opus?{ANTHROPIC_DEFAULT_OPUS_MODEL:R.opus}:{},...R.sonnet?{ANTHROPIC_DEFAULT_SONNET_MODEL:R.sonnet}:{},...R.haiku?{ANTHROPIC_DEFAULT_HAIKU_MODEL:R.haiku}:{}}},null,2):null;return(0,b.jsxs)("div",{children:[(0,b.jsxs)("button",{onClick:()=>p.push("/tools"),className:"mb-4 inline-flex items-center gap-1 text-[12px] text-text-muted hover:text-text",children:[(0,b.jsx)(i.Icon,{name:"arrow_back",size:15})," CLI Tools"]}),(0,b.jsxs)("div",{className:"mb-6 flex items-center gap-3",children:[(0,b.jsx)("span",{className:"flex h-9 w-9 items-center justify-center rounded-brand bg-surface-2 text-text-muted",children:(0,b.jsx)(i.Icon,{name:q.icon,size:20})}),(0,b.jsx)("h1",{className:"text-[22px] font-semibold tracking-tight text-text",children:q.name}),(0,b.jsx)(f.Badge,{tone:"info",children:q.format})]}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[q.autoConfig&&(0,b.jsx)(e.RichCard,{className:"lg:col-span-2",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.CardTitle,{title:"Local setup",sub:"detect this tool on your machine and write its config for you"}),B&&(0,b.jsx)(f.Badge,{tone:B.installed?B.configured?"live":"warn":"neutral",children:B.installed?B.configured?"configured":"detected":"not detected"})]}),children:B?B.installed?(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(n,{label:"Endpoint",children:(0,b.jsx)("span",{className:"tnum text-[12.5px] text-text",children:T?X:`${X}/v1`})}),r.keys.length>0&&(0,b.jsx)(n,{label:"API Key",children:(0,b.jsx)(g.Select,{value:String(v),onChange:a=>w(Number(a.target.value)),className:"max-w-[260px]",children:r.keys.map((a,c)=>(0,b.jsx)("option",{value:c,children:a.name||`key ${c+1}`},c))})}),T?(0,b.jsx)(n,{label:"Models",top:!0,children:(0,b.jsx)("div",{className:"flex flex-col gap-2",children:["opus","sonnet","haiku"].map(a=>(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"w-16 text-[12px] capitalize text-text-subtle",children:a}),(0,b.jsxs)(g.Select,{value:R[a],onChange:b=>S(c=>({...c,[a]:b.target.value})),className:"flex-1",children:[(0,b.jsx)("option",{value:"",children:"— none —"}),H.map(a=>(0,b.jsx)("option",{value:a,children:a},a))]})]},a))})}):(0,b.jsx)(n,{label:"Models",top:!0,children:(0,b.jsxs)("div",{children:[(0,b.jsx)("div",{className:"flex min-h-[34px] flex-wrap gap-1.5 rounded-brand border border-border-subtle bg-bg px-2 py-1.5",children:0===N.length?(0,b.jsx)("span",{className:"text-[12px] text-text-subtle",children:"No models — add one below."}):N.map(a=>(0,b.jsxs)("span",{onClick:()=>Q(b=>b===a?"":a),title:a===P?"active model — click to clear":"click to set active",className:`inline-flex cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[12px] transition-colors ${a===P?"border border-accent bg-accent-soft text-accent":"border border-transparent bg-surface-2 text-text-muted hover:border-border"}`,children:[a===P&&(0,b.jsx)(i.Icon,{name:"star",size:11}),(0,b.jsx)("span",{className:"tnum",children:a}),(0,b.jsx)("button",{onClick:b=>{b.stopPropagation(),O(b=>b.filter(b=>b!==a)),Q(b=>b===a?"":b)},className:"hover:text-danger","aria-label":`Remove ${a}`,children:(0,b.jsx)(i.Icon,{name:"close",size:12})})]},a))}),(0,b.jsxs)("div",{className:"mt-1.5 flex items-center gap-2",children:[(0,b.jsxs)(g.Button,{type:"button",variant:"ghost",onClick:()=>M(!0),children:[(0,b.jsx)(i.Icon,{name:"add",size:15})," Add models"]}),(0,b.jsx)("span",{className:"text-[11.5px] text-text-subtle",children:P?(0,b.jsxs)(b.Fragment,{children:["active: ",(0,b.jsx)("span",{className:"tnum text-accent",children:P})]}):N.length?"click a chip to set active":""})]})]})}),B.configured&&B.baseUrl&&(0,b.jsx)(n,{label:"Current",children:(0,b.jsx)("span",{className:"tnum text-[11.5px] text-text-subtle",children:B.baseUrl})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 border-t border-border-subtle pt-3",children:[(0,b.jsxs)(g.Button,{onClick:V,disabled:"apply"===D,children:[(0,b.jsx)(i.Icon,{name:"apply"===D?"progress_activity":"bolt",size:15}),"apply"===D?"Applying…":B.configured?"Re-apply":"Apply config"]}),B.configured&&(0,b.jsx)(g.Button,{variant:"ghost",onClick:W,disabled:"reset"===D,children:"reset"===D?"Removing…":"Reset"}),F&&(0,b.jsx)("span",{className:"text-[12px] text-text-subtle",children:F}),B.path&&(0,b.jsx)("span",{className:"ml-auto truncate tnum text-[11px] text-text-subtle",children:B.path})]})]}):(0,b.jsx)("p",{className:"text-[12.5px] text-text-muted",children:"Not found on this machine. Install it (above) or paste the manual env below — then re-open this page."}):(0,b.jsx)("p",{className:"text-[12.5px] text-text-subtle",children:"Checking your machine…"})}),q.install&&(0,b.jsx)(e.RichCard,{header:(0,b.jsx)(e.CardTitle,{title:"Install"}),children:(0,b.jsx)(o,{text:q.install})}),(0,b.jsxs)(e.RichCard,{className:q.install?"":"lg:col-span-2",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(e.CardTitle,{title:"Environment",sub:"copy into your shell"}),r.keys.length>1&&(0,b.jsx)(g.Select,{value:String(v),onChange:a=>w(Number(a.target.value)),className:"max-w-[180px]",children:r.keys.map((a,c)=>(0,b.jsx)("option",{value:c,children:a.name||`key ${c+1}`},c))})]}),children:[(0,b.jsx)(o,{text:Y}),0===r.keys.length?(0,b.jsx)("p",{className:"mt-3 text-[12px] text-warning",children:"No gateway key set — auth is disabled. Add one under Endpoint, then it appears here."}):(0,b.jsxs)("p",{className:"mt-3 text-[12px] text-text-subtle",children:["Using key ",(0,b.jsx)("span",{className:"text-text-muted",children:r.keys[v]?.name||`#${v+1}`}),". The real value is filled in above."]})]}),$&&(0,b.jsxs)(e.RichCard,{className:"lg:col-span-2",header:(0,b.jsx)(e.CardTitle,{title:"Manual config",sub:"merge into ~/.config/opencode/opencode.json — every model listed"}),children:[0===Z.length?(0,b.jsx)("p",{className:"text-[12.5px] text-text-muted",children:"Add models above to see them listed here."}):(0,b.jsx)(o,{text:$}),(0,b.jsx)("p",{className:"mt-3 text-[12px] text-text-subtle",children:"Apply does the same merge for you — it keeps any other providers and existing models, only adding these."})]}),_&&(0,b.jsxs)(e.RichCard,{className:"lg:col-span-2",header:(0,b.jsx)(e.CardTitle,{title:"Manual config",sub:"merge the env block into ~/.claude/settings.json"}),children:[(0,b.jsx)(o,{text:_}),(0,b.jsx)("p",{className:"mt-3 text-[12px] text-text-subtle",children:"Apply does the same merge for you — it keeps the rest of your settings, only writing these env keys."})]}),!q.autoConfig&&(0,b.jsxs)(e.RichCard,{className:"lg:col-span-2",header:(0,b.jsx)(e.CardTitle,{title:"Models to call",sub:"name a combo exactly this — the tool will hit it"}),children:[(0,b.jsx)("div",{className:"space-y-1.5",children:q.slots.map(a=>{let c=t.includes(a.alias);return(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-brand border border-border-subtle px-3 py-2",children:[(0,b.jsx)("span",{className:"w-32 flex-none text-[12px] text-text-subtle",children:a.label}),(0,b.jsx)(i.Icon,{name:"arrow_forward",size:14,className:"flex-none text-text-subtle"}),(0,b.jsx)("span",{className:"tnum truncate text-[13px] text-text",children:a.alias}),(0,b.jsx)("span",{className:"ml-auto flex flex-none items-center gap-2",children:c?(0,b.jsx)(f.Badge,{tone:"live",children:"ready"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(f.Badge,{tone:"warn",children:"missing"}),(0,b.jsxs)("button",{type:"button",onClick:()=>p.push("/combos"),className:"inline-flex items-center gap-1 text-[12px] text-accent hover:underline",children:[(0,b.jsx)(i.Icon,{name:"add",size:13})," create"]})]})})]},a.alias)})}),t.length>0&&(0,b.jsxs)("p",{className:"mt-2.5 text-[11px] text-text-subtle",children:["Your combos: ",(0,b.jsx)("span",{className:"tnum text-text-muted",children:t.join(", ")})]})]}),(0,b.jsx)(e.RichCard,{className:"lg:col-span-2",header:(0,b.jsx)(e.CardTitle,{title:"Steps"}),children:(0,b.jsx)("ol",{className:"space-y-2.5",children:q.steps.map((a,c)=>(0,b.jsxs)("li",{className:"flex gap-2.5 text-[13px] text-text-muted",children:[(0,b.jsx)("span",{className:"flex h-5 w-5 flex-none items-center justify-center rounded-full bg-surface-2 tnum text-[11px] text-text",children:c+1}),a]},c))})})]}),L&&(0,b.jsx)(h.ModelPicker,{title:"Add models",note:"Click a model to add it, click again to remove. Then hit Apply.",groups:J,selected:N,onToggle:function(a){N.includes(a)?(O(b=>b.filter(b=>b!==a)),P===a&&Q("")):(O(b=>[...b,a]),P||Q(a))},onClose:()=>M(!1)})]})}])}];
2
+
3
+ //# sourceMappingURL=src_components_ToolDetail_tsx_0qperd-._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/components/ToolDetail.tsx"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useEffect, useState } from \"react\";\nimport { useRouter } from \"next/navigation\";\nimport { RichCard, CardTitle } from \"@/components/RichCard\";\nimport { Badge } from \"@/components/Badge\";\nimport { Button, Select } from \"@/components/Button\";\nimport { ModelPicker, type ModelGroup } from \"@/components/ModelPicker\";\nimport { Icon } from \"@/components/Icon\";\nimport { Empty } from \"@/components/ui\";\nimport { adminApi, cliConfig, type CliStatus } from \"@/lib/client\";\nimport { toolById } from \"@/lib/cliTools\";\nimport { modalitiesForModel } from \"@/lib/capabilities\";\nimport type { EndpointPayload, MaskedConfig } from \"@/lib/gateway\";\n\n/** Step-by-step setup for one CLI tool, with copy-ready env (real key inlined). */\nexport function ToolDetail({ id }: { id: string }) {\n const router = useRouter();\n const tool = toolById(id);\n const [ep, setEp] = useState<EndpointPayload | null>(null);\n const [combos, setCombos] = useState<string[]>([]);\n const [keyIdx, setKeyIdx] = useState(0);\n const [realKey, setRealKey] = useState(\"\");\n const [error, setError] = useState(\"\");\n const [cli, setCli] = useState<CliStatus | null>(null);\n const [cliBusy, setCliBusy] = useState<\"\" | \"apply\" | \"reset\">(\"\");\n const [cliMsg, setCliMsg] = useState(\"\");\n const [allModels, setAllModels] = useState<string[]>([]);\n const [groups, setGroups] = useState<ModelGroup[]>([]);\n const [pickerOpen, setPickerOpen] = useState(false);\n const [picked, setPicked] = useState<string[]>([]); // openai tools: chosen models\n const [active, setActive] = useState(\"\"); // openai tools: default/active model\n const [slots, setSlots] = useState({ opus: \"\", sonnet: \"\", haiku: \"\" }); // claude\n const isAnthropic = tool?.format === \"anthropic\";\n\n function togglePicked(v: string) {\n if (picked.includes(v)) {\n setPicked((p) => p.filter((x) => x !== v));\n if (active === v) setActive(\"\");\n } else {\n setPicked((p) => [...p, v]);\n if (!active) setActive(v);\n }\n }\n\n const loadCli = useCallback(async () => {\n if (!tool?.autoConfig) return;\n const r = await cliConfig.status(tool.id);\n setCli(r.data);\n }, [tool]);\n useEffect(() => { void loadCli(); }, [loadCli]);\n\n // seed the editable selection from whatever is already in the tool's config.\n useEffect(() => {\n if (!cli?.installed) return;\n if (isAnthropic && cli.modelSlots) {\n setSlots({ opus: cli.modelSlots.opus ?? \"\", sonnet: cli.modelSlots.sonnet ?? \"\", haiku: cli.modelSlots.haiku ?? \"\" });\n } else if (!isAnthropic && cli.models && cli.models.length > 0) {\n setPicked(cli.models);\n setActive(cli.activeModel ?? cli.models[0] ?? \"\");\n }\n }, [cli, isAnthropic]);\n\n async function applyCli() {\n if (!tool || !ep) return;\n setCliMsg(\"\");\n const baseUrl = `http://127.0.0.1:${ep.port}`; // gateway root; opencode route appends /v1\n const key = ep.keys.length ? realKey || undefined : undefined;\n if (isAnthropic) {\n const m: Record<string, string> = {};\n if (slots.opus) m.opus = slots.opus;\n if (slots.sonnet) m.sonnet = slots.sonnet;\n if (slots.haiku) m.haiku = slots.haiku;\n setCliBusy(\"apply\");\n const r = await cliConfig.apply(tool.id, { base: baseUrl, key, models: m });\n setCliBusy(\"\");\n setCliMsg(r.ok ? \"Wrote config ✓\" : r.error ?? \"failed\");\n if (r.ok) void loadCli();\n return;\n }\n if (picked.length === 0) { setCliMsg(\"add at least one model\"); return; }\n setCliBusy(\"apply\");\n const r = await cliConfig.apply(tool.id, { base: baseUrl, key, models: picked, active });\n setCliBusy(\"\");\n setCliMsg(r.ok ? \"Wrote config ✓\" : r.error ?? \"failed\");\n if (r.ok) void loadCli();\n }\n\n async function resetCli() {\n if (!tool) return;\n setCliBusy(\"reset\");\n setCliMsg(\"\");\n const r = await cliConfig.reset(tool.id);\n setCliBusy(\"\");\n if (r.ok) { setCliMsg(\"Removed gateway config ✓\"); void loadCli(); }\n else setCliMsg(r.error ?? \"failed\");\n }\n\n useEffect(() => {\n void (async () => {\n const [epRes, cfgRes] = await Promise.all([\n fetch(\"/api/gw/admin/endpoint\"),\n fetch(\"/api/gw/admin/config\"),\n ]);\n if (!epRes.ok) {\n setError(\"could not reach the gateway\");\n return;\n }\n setEp((await epRes.json()) as EndpointPayload);\n if (cfgRes.ok) {\n const cfg = (await cfgRes.json()) as MaskedConfig;\n const aliases = cfg.models.map((m) => m.alias);\n setCombos(aliases);\n // disabled providers are skipped in routing, so hide their models here.\n const liveProviders = cfg.providers.filter((p) => !p.disabled);\n // everything callable: combo aliases + every (enabled) provider/model ref.\n const refs = liveProviders.flatMap((p) => p.models.map((m) => `${p.id}/${m.id}`));\n setAllModels([...aliases, ...refs]);\n // grouped for the picker: Combos first, then one group per provider.\n const grps: ModelGroup[] = [];\n if (aliases.length) grps.push({ label: \"Combos\", items: aliases.map((a) => ({ value: a, label: a })) });\n for (const p of liveProviders) {\n if (p.models.length) grps.push({ label: p.id, items: p.models.map((m) => ({ value: `${p.id}/${m.id}`, label: `${p.id}/${m.id}` })) });\n }\n setGroups(grps);\n }\n })();\n }, []);\n\n // reveal the selected gateway key so the env block is copy-ready (the whole\n // point of this page is to paste a working config locally).\n useEffect(() => {\n if (!ep || ep.keys.length === 0) return;\n void adminApi.revealServerKey(keyIdx).then((r) => setRealKey(r.ok ? r.data?.key ?? \"\" : \"\"));\n }, [ep, keyIdx]);\n\n if (!tool) return <Empty>Unknown tool.</Empty>;\n if (error) return <Empty>{error}</Empty>;\n if (!ep) return <Empty>Loading…</Empty>;\n\n const base = `http://127.0.0.1:${ep.port}`;\n const env = tool.env(base, realKey);\n const block = env.map((e) => `export ${e.name}=\"${e.value}\"`).join(\"\\n\");\n\n // opencode reads models from ~/.config/opencode/opencode.json, not shell env.\n // Show the exact JSON the auto-apply would MERGE — so the models are visible and\n // it's clear nothing else gets replaced (other providers + your other keys stay).\n const ocModels = picked.length ? picked : cli?.models ?? [];\n const opencodeJson =\n tool.id === \"opencode\"\n ? JSON.stringify(\n {\n provider: {\n aigetwey: {\n npm: \"@ai-sdk/openai-compatible\",\n options: { baseURL: `${base}/v1`, apiKey: realKey || \"aigetwey\" },\n models: Object.fromEntries(ocModels.map((m) => [m, { name: m, modalities: modalitiesForModel(m) }])),\n },\n },\n model: `aigetwey/${active || ocModels[0] || \"\"}`,\n },\n null,\n 2,\n )\n : null;\n\n // Claude Code reads its config from ~/.claude/settings.json — show the exact\n // env block the auto-apply writes (merged into the existing settings).\n const claudeJson =\n tool.id === \"claude-code\"\n ? JSON.stringify(\n {\n hasCompletedOnboarding: true,\n env: {\n ANTHROPIC_BASE_URL: base,\n API_TIMEOUT_MS: \"600000\",\n ...(realKey ? { ANTHROPIC_AUTH_TOKEN: realKey } : {}),\n ...(slots.opus ? { ANTHROPIC_DEFAULT_OPUS_MODEL: slots.opus } : {}),\n ...(slots.sonnet ? { ANTHROPIC_DEFAULT_SONNET_MODEL: slots.sonnet } : {}),\n ...(slots.haiku ? { ANTHROPIC_DEFAULT_HAIKU_MODEL: slots.haiku } : {}),\n },\n },\n null,\n 2,\n )\n : null;\n\n return (\n <div>\n <button onClick={() => router.push(\"/tools\")} className=\"mb-4 inline-flex items-center gap-1 text-[12px] text-text-muted hover:text-text\">\n <Icon name=\"arrow_back\" size={15} /> CLI Tools\n </button>\n\n <div className=\"mb-6 flex items-center gap-3\">\n <span className=\"flex h-9 w-9 items-center justify-center rounded-brand bg-surface-2 text-text-muted\">\n <Icon name={tool.icon} size={20} />\n </span>\n <h1 className=\"text-[22px] font-semibold tracking-tight text-text\">{tool.name}</h1>\n <Badge tone=\"info\">{tool.format}</Badge>\n </div>\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n {tool.autoConfig && (\n <RichCard\n className=\"lg:col-span-2\"\n header={\n <>\n <CardTitle title=\"Local setup\" sub=\"detect this tool on your machine and write its config for you\" />\n {cli && (\n <Badge tone={!cli.installed ? \"neutral\" : cli.configured ? \"live\" : \"warn\"}>\n {!cli.installed ? \"not detected\" : cli.configured ? \"configured\" : \"detected\"}\n </Badge>\n )}\n </>\n }\n >\n {!cli ? (\n <p className=\"text-[12.5px] text-text-subtle\">Checking your machine…</p>\n ) : !cli.installed ? (\n <p className=\"text-[12.5px] text-text-muted\">\n Not found on this machine. Install it (above) or paste the manual env below — then re-open this page.\n </p>\n ) : (\n <div className=\"space-y-3\">\n <SetupRow label=\"Endpoint\">\n <span className=\"tnum text-[12.5px] text-text\">{isAnthropic ? base : `${base}/v1`}</span>\n </SetupRow>\n\n {ep.keys.length > 0 && (\n <SetupRow label=\"API Key\">\n <Select value={String(keyIdx)} onChange={(e) => setKeyIdx(Number(e.target.value))} className=\"max-w-[260px]\">\n {ep.keys.map((k, i) => (\n <option key={i} value={i}>{k.name || `key ${i + 1}`}</option>\n ))}\n </Select>\n </SetupRow>\n )}\n\n {isAnthropic ? (\n <SetupRow label=\"Models\" top>\n <div className=\"flex flex-col gap-2\">\n {([\"opus\", \"sonnet\", \"haiku\"] as const).map((slot) => (\n <div key={slot} className=\"flex items-center gap-2\">\n <span className=\"w-16 text-[12px] capitalize text-text-subtle\">{slot}</span>\n <Select value={slots[slot]} onChange={(e) => setSlots((s) => ({ ...s, [slot]: e.target.value }))} className=\"flex-1\">\n <option value=\"\">— none —</option>\n {allModels.map((m) => <option key={m} value={m}>{m}</option>)}\n </Select>\n </div>\n ))}\n </div>\n </SetupRow>\n ) : (\n <SetupRow label=\"Models\" top>\n <div>\n <div className=\"flex min-h-[34px] flex-wrap gap-1.5 rounded-brand border border-border-subtle bg-bg px-2 py-1.5\">\n {picked.length === 0 ? (\n <span className=\"text-[12px] text-text-subtle\">No models — add one below.</span>\n ) : (\n picked.map((m) => (\n <span\n key={m}\n onClick={() => setActive((a) => (a === m ? \"\" : m))}\n title={m === active ? \"active model — click to clear\" : \"click to set active\"}\n className={`inline-flex cursor-pointer items-center gap-1 rounded px-2 py-0.5 text-[12px] transition-colors ${\n m === active ? \"border border-accent bg-accent-soft text-accent\" : \"border border-transparent bg-surface-2 text-text-muted hover:border-border\"\n }`}\n >\n {m === active && <Icon name=\"star\" size={11} />}\n <span className=\"tnum\">{m}</span>\n <button\n onClick={(e) => { e.stopPropagation(); setPicked((p) => p.filter((x) => x !== m)); setActive((a) => (a === m ? \"\" : a)); }}\n className=\"hover:text-danger\"\n aria-label={`Remove ${m}`}\n >\n <Icon name=\"close\" size={12} />\n </button>\n </span>\n ))\n )}\n </div>\n <div className=\"mt-1.5 flex items-center gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={() => setPickerOpen(true)}>\n <Icon name=\"add\" size={15} /> Add models\n </Button>\n <span className=\"text-[11.5px] text-text-subtle\">\n {active ? <>active: <span className=\"tnum text-accent\">{active}</span></> : picked.length ? \"click a chip to set active\" : \"\"}\n </span>\n </div>\n </div>\n </SetupRow>\n )}\n\n {cli.configured && cli.baseUrl && (\n <SetupRow label=\"Current\">\n <span className=\"tnum text-[11.5px] text-text-subtle\">{cli.baseUrl}</span>\n </SetupRow>\n )}\n\n <div className=\"flex items-center gap-2 border-t border-border-subtle pt-3\">\n <Button onClick={applyCli} disabled={cliBusy === \"apply\"}>\n <Icon name={cliBusy === \"apply\" ? \"progress_activity\" : \"bolt\"} size={15} />\n {cliBusy === \"apply\" ? \"Applying…\" : cli.configured ? \"Re-apply\" : \"Apply config\"}\n </Button>\n {cli.configured && (\n <Button variant=\"ghost\" onClick={resetCli} disabled={cliBusy === \"reset\"}>\n {cliBusy === \"reset\" ? \"Removing…\" : \"Reset\"}\n </Button>\n )}\n {cliMsg && <span className=\"text-[12px] text-text-subtle\">{cliMsg}</span>}\n {cli.path && <span className=\"ml-auto truncate tnum text-[11px] text-text-subtle\">{cli.path}</span>}\n </div>\n </div>\n )}\n </RichCard>\n )}\n\n {tool.install && (\n <RichCard header={<CardTitle title=\"Install\" />}>\n <CopyBlock text={tool.install} />\n </RichCard>\n )}\n\n <RichCard\n className={tool.install ? \"\" : \"lg:col-span-2\"}\n header={\n <>\n <CardTitle title=\"Environment\" sub=\"copy into your shell\" />\n {ep.keys.length > 1 && (\n <Select value={String(keyIdx)} onChange={(e) => setKeyIdx(Number(e.target.value))} className=\"max-w-[180px]\">\n {ep.keys.map((k, i) => (\n <option key={i} value={i}>{k.name || `key ${i + 1}`}</option>\n ))}\n </Select>\n )}\n </>\n }\n >\n <CopyBlock text={block} />\n {ep.keys.length === 0 ? (\n <p className=\"mt-3 text-[12px] text-warning\">\n No gateway key set — auth is disabled. Add one under Endpoint, then it appears here.\n </p>\n ) : (\n <p className=\"mt-3 text-[12px] text-text-subtle\">\n Using key <span className=\"text-text-muted\">{ep.keys[keyIdx]?.name || `#${keyIdx + 1}`}</span>. The real value is filled in above.\n </p>\n )}\n </RichCard>\n\n {opencodeJson && (\n <RichCard\n className=\"lg:col-span-2\"\n header={<CardTitle title=\"Manual config\" sub=\"merge into ~/.config/opencode/opencode.json — every model listed\" />}\n >\n {ocModels.length === 0 ? (\n <p className=\"text-[12.5px] text-text-muted\">Add models above to see them listed here.</p>\n ) : (\n <CopyBlock text={opencodeJson} />\n )}\n <p className=\"mt-3 text-[12px] text-text-subtle\">\n Apply does the same merge for you — it keeps any other providers and existing models, only adding these.\n </p>\n </RichCard>\n )}\n\n {claudeJson && (\n <RichCard\n className=\"lg:col-span-2\"\n header={<CardTitle title=\"Manual config\" sub=\"merge the env block into ~/.claude/settings.json\" />}\n >\n <CopyBlock text={claudeJson} />\n <p className=\"mt-3 text-[12px] text-text-subtle\">\n Apply does the same merge for you — it keeps the rest of your settings, only writing these env keys.\n </p>\n </RichCard>\n )}\n\n {!tool.autoConfig && (\n <RichCard\n className=\"lg:col-span-2\"\n header={<CardTitle title=\"Models to call\" sub=\"name a combo exactly this — the tool will hit it\" />}\n >\n <div className=\"space-y-1.5\">\n {tool.slots.map((s) => {\n const exists = combos.includes(s.alias);\n return (\n <div key={s.alias} className=\"flex items-center gap-3 rounded-brand border border-border-subtle px-3 py-2\">\n <span className=\"w-32 flex-none text-[12px] text-text-subtle\">{s.label}</span>\n <Icon name=\"arrow_forward\" size={14} className=\"flex-none text-text-subtle\" />\n <span className=\"tnum truncate text-[13px] text-text\">{s.alias}</span>\n <span className=\"ml-auto flex flex-none items-center gap-2\">\n {exists ? (\n <Badge tone=\"live\">ready</Badge>\n ) : (\n <>\n <Badge tone=\"warn\">missing</Badge>\n <button\n type=\"button\"\n onClick={() => router.push(\"/combos\")}\n className=\"inline-flex items-center gap-1 text-[12px] text-accent hover:underline\"\n >\n <Icon name=\"add\" size={13} /> create\n </button>\n </>\n )}\n </span>\n </div>\n );\n })}\n </div>\n {combos.length > 0 && (\n <p className=\"mt-2.5 text-[11px] text-text-subtle\">\n Your combos: <span className=\"tnum text-text-muted\">{combos.join(\", \")}</span>\n </p>\n )}\n </RichCard>\n )}\n\n <RichCard className=\"lg:col-span-2\" header={<CardTitle title=\"Steps\" />}>\n <ol className=\"space-y-2.5\">\n {tool.steps.map((s, i) => (\n <li key={i} className=\"flex gap-2.5 text-[13px] text-text-muted\">\n <span className=\"flex h-5 w-5 flex-none items-center justify-center rounded-full bg-surface-2 tnum text-[11px] text-text\">\n {i + 1}\n </span>\n {s}\n </li>\n ))}\n </ol>\n </RichCard>\n </div>\n\n {pickerOpen && (\n <ModelPicker\n title=\"Add models\"\n note=\"Click a model to add it, click again to remove. Then hit Apply.\"\n groups={groups}\n selected={picked}\n onToggle={togglePicked}\n onClose={() => setPickerOpen(false)}\n />\n )}\n </div>\n );\n}\n\n/** label → control row used by the Local setup card (matches aigetwey's layout). */\nfunction SetupRow({ label, children, top }: { label: string; children: React.ReactNode; top?: boolean }) {\n return (\n <div className={`grid grid-cols-[7rem_1fr] gap-3 ${top ? \"items-start\" : \"items-center\"}`}>\n <span className={`text-[12px] font-medium text-text-subtle ${top ? \"pt-1.5\" : \"\"}`}>{label}</span>\n <div className=\"min-w-0\">{children}</div>\n </div>\n );\n}\n\nfunction CopyBlock({ text }: { text: string }) {\n const [copied, setCopied] = useState(false);\n return (\n <div className=\"relative\">\n <pre className=\"overflow-x-auto rounded-brand border border-border-subtle bg-bg px-3 py-2.5 font-mono text-[12.5px] leading-relaxed text-text\">\n {text}\n </pre>\n <button\n onClick={() => {\n void navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1200);\n }}\n className=\"absolute right-2 top-2 flex items-center gap-1 rounded-brand border border-border bg-surface px-2 py-1 text-[11px] text-text-muted hover:text-text\"\n >\n <Icon name={copied ? \"check\" : \"content_copy\"} size={13} /> {copied ? \"copied\" : \"copy\"}\n </button>\n </div>\n );\n}\n"],"names":["ToolDetail","id","router","tool","ep","setEp","combos","setCombos","keyIdx","setKeyIdx","realKey","setRealKey","error","setError","cli","setCli","cliBusy","setCliBusy","cliMsg","setCliMsg","allModels","setAllModels","groups","setGroups","pickerOpen","setPickerOpen","picked","setPicked","active","setActive","slots","setSlots","opus","sonnet","haiku","isAnthropic","format","togglePicked","v","includes","p","filter","x","loadCli","autoConfig","r","status","data","installed","modelSlots","models","length","activeModel","applyCli","baseUrl","port","key","keys","undefined","m","apply","base","ok","resetCli","reset","epRes","cfgRes","Promise","all","fetch","json","cfg","aliases","map","alias","liveProviders","providers","disabled","refs","flatMap","grps","push","label","items","a","value","revealServerKey","then","env","block","e","name","join","ocModels","opencodeJson","JSON","stringify","provider","aigetwey","npm","options","baseURL","apiKey","Object","fromEntries","modalities","model","claudeJson","hasCompletedOnboarding","ANTHROPIC_BASE_URL","API_TIMEOUT_MS","ANTHROPIC_AUTH_TOKEN","ANTHROPIC_DEFAULT_OPUS_MODEL","ANTHROPIC_DEFAULT_SONNET_MODEL","ANTHROPIC_DEFAULT_HAIKU_MODEL","onClick","className","size","icon","tone","header","title","sub","configured","SetupRow","String","onChange","Number","target","k","i","top","slot","s","stopPropagation","type","variant","path","install","CopyBlock","text","exists","steps","note","selected","onToggle","onClose","children","copied","setCopied","navigator","clipboard","writeText","setTimeout"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ {
2
+ "version": 1,
3
+ "functions": {
4
+ "/_middleware": {
5
+ "runtime": "nodejs",
6
+ "matchers": [
7
+ {
8
+ "regexp": "^(?:\\/(_next\\/data\\/[^/]{1,}))?(?:\\/((?!_next\\/static|_next\\/image|favicon.ico|icon.svg).*))(\\.json|\\.rsc|\\.segments\\/.+\\.segment\\.rsc)?[\\/#\\?]?$",
9
+ "originalSource": "/((?!_next/static|_next/image|favicon.ico|icon.svg).*)"
10
+ }
11
+ ]
12
+ }
13
+ }
14
+ }
@@ -0,0 +1 @@
1
+ self.__INTERCEPTION_ROUTE_REWRITE_MANIFEST="[]";
@@ -0,0 +1,6 @@
1
+ {
2
+ "sorted_middleware": [],
3
+ "middleware": {},
4
+ "instrumentation": null,
5
+ "functions": {}
6
+ }
@@ -0,0 +1,22 @@
1
+ globalThis.__BUILD_MANIFEST = {
2
+ "pages": {
3
+ "/_app": []
4
+ },
5
+ "devFiles": [],
6
+ "polyfillFiles": [
7
+ "static/chunks/0cz1d0mv5g_q7.js"
8
+ ],
9
+ "lowPriorityFiles": [
10
+ "static/dkqYdDLx-R5NmenO8DP0C/_buildManifest.js",
11
+ "static/dkqYdDLx-R5NmenO8DP0C/_ssgManifest.js",
12
+ "static/dkqYdDLx-R5NmenO8DP0C/_clientMiddlewareManifest.js"
13
+ ],
14
+ "rootMainFiles": [
15
+ "static/chunks/36ssnkm0cjgq6.js",
16
+ "static/chunks/3jat3x6f_2a6o.js",
17
+ "static/chunks/3j9pm5otqxm82.js",
18
+ "static/chunks/0mk1g55o6kl1e.js",
19
+ "static/chunks/27jktro2p5rq9.js",
20
+ "static/chunks/turbopack-28-wpvvyttgwq.js"
21
+ ]
22
+ };
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "middleware": {},
4
+ "sortedMiddleware": [],
5
+ "functions": {}
6
+ }
@@ -0,0 +1,5 @@
1
+ var R=require("./chunks/[turbopack]_runtime.js")("server/middleware.js")
2
+ R.c("server/chunks/[externals]__1v5t_x8._.js")
3
+ R.c("server/chunks/[root-of-the-server]__043un18._.js")
4
+ R.m(89997)
5
+ module.exports=R.m(89997).exports
@@ -0,0 +1,5 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sections": []
5
+ }
@@ -0,0 +1 @@
1
+ {"version":1,"files":["../../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../../node_modules/@swc/helpers/package.json","../../node_modules/next/dist/build/adapter/setup-node-env.external.js","../../node_modules/next/dist/client/components/app-router-headers.js","../../node_modules/next/dist/client/components/hooks-server-context.js","../../node_modules/next/dist/client/components/static-generation-bailout.js","../../node_modules/next/dist/client/lib/console.js","../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../node_modules/next/dist/compiled/next-server/app-page-turbo.runtime.prod.js","../../node_modules/next/dist/compiled/source-map/package.json","../../node_modules/next/dist/compiled/source-map/source-map.js","../../node_modules/next/dist/compiled/stacktrace-parser/package.json","../../node_modules/next/dist/compiled/stacktrace-parser/stack-trace-parser.cjs.js","../../node_modules/next/dist/compiled/ws/index.js","../../node_modules/next/dist/compiled/ws/package.json","../../node_modules/next/dist/lib/client-and-server-references.js","../../node_modules/next/dist/lib/constants.js","../../node_modules/next/dist/lib/framework/boundary-constants.js","../../node_modules/next/dist/lib/interop-default.js","../../node_modules/next/dist/lib/is-error.js","../../node_modules/next/dist/lib/picocolors.js","../../node_modules/next/dist/lib/scheduler.js","../../node_modules/next/dist/lib/semver-noop.js","../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../node_modules/next/dist/server/app-render/async-local-storage.js","../../node_modules/next/dist/server/app-render/cache-signal.js","../../node_modules/next/dist/server/app-render/console-async-storage-instance.js","../../node_modules/next/dist/server/app-render/console-async-storage.external.js","../../node_modules/next/dist/server/app-render/dynamic-rendering.js","../../node_modules/next/dist/server/app-render/instant-validation/boundary-constants.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../node_modules/next/dist/server/app-render/staged-rendering.js","../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../node_modules/next/dist/server/dev/browser-logs/file-logger.js","../../node_modules/next/dist/server/dynamic-rendering-utils.js","../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../node_modules/next/dist/server/lib/lru-cache.js","../../node_modules/next/dist/server/lib/parse-stack.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../node_modules/next/dist/server/lib/source-maps.js","../../node_modules/next/dist/server/lib/trace/constants.js","../../node_modules/next/dist/server/lib/trace/tracer.js","../../node_modules/next/dist/server/load-manifest.external.js","../../node_modules/next/dist/server/node-environment-baseline.js","../../node_modules/next/dist/server/node-environment-extensions/console-dim.external.js","../../node_modules/next/dist/server/node-environment-extensions/console-exit.js","../../node_modules/next/dist/server/node-environment-extensions/console-file.js","../../node_modules/next/dist/server/node-environment-extensions/date.js","../../node_modules/next/dist/server/node-environment-extensions/error-inspect.js","../../node_modules/next/dist/server/node-environment-extensions/fast-set-immediate.external.js","../../node_modules/next/dist/server/node-environment-extensions/io-utils.js","../../node_modules/next/dist/server/node-environment-extensions/node-crypto.js","../../node_modules/next/dist/server/node-environment-extensions/random.js","../../node_modules/next/dist/server/node-environment-extensions/unhandled-rejection.external.js","../../node_modules/next/dist/server/node-environment-extensions/web-crypto.js","../../node_modules/next/dist/server/node-environment.js","../../node_modules/next/dist/server/node-polyfill-crypto.js","../../node_modules/next/dist/server/patch-error-inspect.js","../../node_modules/next/dist/server/require-hook.js","../../node_modules/next/dist/server/response-cache/types.js","../../node_modules/next/dist/server/runtime-reacts.external.js","../../node_modules/next/dist/shared/lib/deep-freeze.js","../../node_modules/next/dist/shared/lib/invariant-error.js","../../node_modules/next/dist/shared/lib/is-plain-object.js","../../node_modules/next/dist/shared/lib/is-thenable.js","../../node_modules/next/dist/shared/lib/lazy-dynamic/bailout-to-csr.js","../../node_modules/next/dist/shared/lib/promise-with-resolvers.js","../../node_modules/next/dist/shared/lib/server-reference-info.js","../../node_modules/next/package.json","../../node_modules/react/cjs/react.development.js","../../node_modules/react/cjs/react.production.js","../../node_modules/react/index.js","../../node_modules/react/package.json","./chunks/[externals]__1v5t_x8._.js","./chunks/[root-of-the-server]__043un18._.js","./chunks/[turbopack]_runtime.js"]}
@@ -0,0 +1 @@
1
+ self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/src/app/(console)/combos/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/config/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/console/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/endpoint/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/providers/[id]/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/providers/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/quota/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/tools/[id]/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/tools/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/(console)/usage/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/_not-found/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ],\n \"[project]/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2\",\n \"static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"
@@ -0,0 +1,59 @@
1
+ {
2
+ "app": {
3
+ "[project]/src/app/(console)/combos/page": [
4
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
5
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
6
+ ],
7
+ "[project]/src/app/(console)/config/page": [
8
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
9
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
10
+ ],
11
+ "[project]/src/app/(console)/console/page": [
12
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
13
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
14
+ ],
15
+ "[project]/src/app/(console)/endpoint/page": [
16
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
17
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
18
+ ],
19
+ "[project]/src/app/(console)/page": [
20
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
21
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
22
+ ],
23
+ "[project]/src/app/(console)/providers/[id]/page": [
24
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
25
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
26
+ ],
27
+ "[project]/src/app/(console)/providers/page": [
28
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
29
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
30
+ ],
31
+ "[project]/src/app/(console)/quota/page": [
32
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
33
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
34
+ ],
35
+ "[project]/src/app/(console)/tools/[id]/page": [
36
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
37
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
38
+ ],
39
+ "[project]/src/app/(console)/tools/page": [
40
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
41
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
42
+ ],
43
+ "[project]/src/app/(console)/usage/page": [
44
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
45
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
46
+ ],
47
+ "[project]/src/app/_not-found/page": [
48
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
49
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
50
+ ],
51
+ "[project]/src/app/login/page": [
52
+ "static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2",
53
+ "static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2"
54
+ ]
55
+ },
56
+ "appUsingSizeAdjust": true,
57
+ "pages": {},
58
+ "pagesUsingSizeAdjust": false
59
+ }
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html lang="en" class="dark inter_c15e96cb-module__0bjUvq__variable jetbrains_mono_7ea1d0f9-module__6GV5LG__variable"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/chunks/2284qz1hy9776.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/36ssnkm0cjgq6.js"/><script src="/_next/static/chunks/3jat3x6f_2a6o.js" async=""></script><script src="/_next/static/chunks/3j9pm5otqxm82.js" async=""></script><script src="/_next/static/chunks/0mk1g55o6kl1e.js" async=""></script><script src="/_next/static/chunks/27jktro2p5rq9.js" async=""></script><script src="/_next/static/chunks/turbopack-28-wpvvyttgwq.js" async=""></script><script src="/_next/static/chunks/13ge_ybuj8rl3.js" async=""></script><script src="/_next/static/chunks/14mrh2-p_w84d.js" async=""></script><link rel="preload" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&amp;display=block" as="style"/><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>aigetwey</title><meta name="description" content="Console for the aigetwey AI gateway"/><link rel="icon" href="/icon.svg?icon.43yv9zw_mes0x.svg" sizes="any" type="image/svg+xml"/><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&amp;display=block"/><script>(self.__next_s=self.__next_s||[]).push([0,{"children":"try{var t=localStorage.getItem(\"theme\");if(t===\"light\")document.documentElement.className=document.documentElement.className.replace(\"dark\",\"light\")}catch(e){}","id":"theme-init"}])</script><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><div class="fixed bottom-5 right-5 z-[100] flex flex-col gap-2"></div><script src="/_next/static/chunks/36ssnkm0cjgq6.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[79520,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"\"]\n3:I[59919,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"ThemeProvider\"]\n4:I[76972,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"ToastProvider\"]\n5:I[39756,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n6:I[37457,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n7:I[97367,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"OutletBoundary\"]\n8:\"$Sreact.suspense\"\nb:I[97367,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"ViewportBoundary\"]\nd:I[97367,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"MetadataBoundary\"]\nf:I[68027,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/2284qz1hy9776.css\",\"style\"]\n:HL[\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\u0026display=block\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2284qz1hy9776.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/14mrh2-p_w84d.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"dark inter_c15e96cb-module__0bjUvq__variable jetbrains_mono_7ea1d0f9-module__6GV5LG__variable\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"link\",null,{\"rel\":\"stylesheet\",\"href\":\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\u0026display=block\"}],[\"$\",\"$L2\",null,{\"id\":\"theme-init\",\"strategy\":\"beforeInteractive\",\"children\":\"try{var t=localStorage.getItem(\\\"theme\\\");if(t===\\\"light\\\")document.documentElement.className=document.documentElement.className.replace(\\\"dark\\\",\\\"light\\\")}catch(e){}\"}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L3\",null,{\"children\":[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L5\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L6\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L7\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@9\"}]}]]}],{},null,false,null]},null,false,\"$@a\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$8\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/2284qz1hy9776.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"dkqYdDLx-R5NmenO8DP0C\"}\n"])</script><script>self.__next_f.push([1,"10:[]\na:\"$W10\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"11:I[27201,[\"/_next/static/chunks/13ge_ybuj8rl3.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"IconMark\"]\n9:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"aigetwey\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Console for the aigetwey AI gateway\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.svg?icon.43yv9zw_mes0x.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"$L11\",\"3\",{}]]\n"])</script></body></html>
@@ -0,0 +1 @@
1
+ <!DOCTYPE html><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/36ssnkm0cjgq6.js"/><script src="/_next/static/chunks/3jat3x6f_2a6o.js" async=""></script><script src="/_next/static/chunks/3j9pm5otqxm82.js" async=""></script><script src="/_next/static/chunks/0mk1g55o6kl1e.js" async=""></script><script src="/_next/static/chunks/27jktro2p5rq9.js" async=""></script><script src="/_next/static/chunks/turbopack-28-wpvvyttgwq.js" async=""></script><script src="/_next/static/chunks/05-c3ty_6dwfk.js" async=""></script><script src="/_next/static/chunks/14mrh2-p_w84d.js" async=""></script><meta name="next-size-adjust" content=""/><title>500: This page couldn’t load</title><style>:root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }</style><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;display:flex;align-items:center;justify-content:center"><div style="margin-top:-32px;max-width:325px;padding:32px 28px;text-align:left"><svg width="32" height="32" viewBox="-0.2 -1.5 32 32" fill="none" style="margin-bottom:24px"><path d="M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z" fill="var(--next-error-title)"></path></svg><h1 style="font-size:24px;font-weight:500;letter-spacing:-0.02em;line-height:32px;margin:0 0 12px 0;color:var(--next-error-title)">This page couldn’t load</h1><p style="font-size:14px;font-weight:400;line-height:21px;margin:0 0 20px 0;color:var(--next-error-message)">A server error occurred. Reload to try again.</p><form style="margin:0"><button type="submit" style="display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 12px;font-size:14px;font-weight:500;line-height:20px;border-radius:6px;cursor:pointer;color:var(--next-error-btn-text);background:var(--next-error-btn-bg);border:var(--next-error-btn-border)">Reload</button></form></div></div><!--$--><!--/$--><script src="/_next/static/chunks/36ssnkm0cjgq6.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[39756,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n3:I[37457,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\"]\n4:I[97367,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n8:I[97367,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"ViewportBoundary\"]\na:I[97367,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"MetadataBoundary\"]\nc:I[68027,[\"/_next/static/chunks/05-c3ty_6dwfk.js\",\"/_next/static/chunks/14mrh2-p_w84d.js\"],\"default\",1]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[[\"$\",\"title\",null,{\"children\":\"500: This page couldn’t load\"}],[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\":root {--next-error-bg: #fff;--next-error-text: #171717;--next-error-title: #171717;--next-error-message: #171717;--next-error-digest: #666666;--next-error-btn-text: #fff;--next-error-btn-bg: #171717;--next-error-btn-border: none;--next-error-btn-secondary-text: #171717;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(0,0,0,0.08);}@media (prefers-color-scheme: dark) {:root {--next-error-bg: #0a0a0a;--next-error-text: #ededed;--next-error-title: #ededed;--next-error-message: #ededed;--next-error-digest: #a0a0a0;--next-error-btn-text: #0a0a0a;--next-error-btn-bg: #ededed;--next-error-btn-border: none;--next-error-btn-secondary-text: #ededed;--next-error-btn-secondary-bg: transparent;--next-error-btn-secondary-border: 1px solid rgba(255,255,255,0.14);}}body { margin: 0; color: var(--next-error-text); background: var(--next-error-bg); }\"}}]]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"display\":\"flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"marginTop\":\"-32px\",\"maxWidth\":\"325px\",\"padding\":\"32px 28px\",\"textAlign\":\"left\"},\"children\":[[\"$\",\"svg\",null,{\"width\":\"32\",\"height\":\"32\",\"viewBox\":\"-0.2 -1.5 32 32\",\"fill\":\"none\",\"style\":{\"marginBottom\":\"24px\"},\"children\":[\"$\",\"path\",null,{\"d\":\"M16.9328 0C18.0839 0.000116771 19.1334 0.658832 19.634 1.69531L31.4299 26.1309C32.0708 27.4588 31.1036 28.9999 29.6291 29H2.00215C0.527541 29 -0.439628 27.4588 0.201371 26.1309L11.9973 1.69531C12.4979 0.658823 13.5474 7.75066e-05 14.6984 0H16.9328ZM3.59493 26H28.0363L16.9328 3H14.6984L3.59493 26ZM15.8156 19C16.9202 19.0001 17.8156 19.8955 17.8156 21C17.8156 22.1045 16.9202 22.9999 15.8156 23C14.7111 23 13.8156 22.1046 13.8156 21C13.8156 19.8954 14.7111 19 15.8156 19ZM17.3156 16.5H14.3156V8.5H17.3156V16.5Z\",\"fill\":\"var(--next-error-title)\"}]}],[\"$\",\"h1\",null,{\"style\":{\"fontSize\":\"24px\",\"fontWeight\":500,\"letterSpacing\":\"-0.02em\",\"lineHeight\":\"32px\",\"margin\":\"0 0 12px 0\",\"color\":\"var(--next-error-title)\"},\"children\":\"This page couldn’t load\"}],[\"$\",\"p\",null,{\"style\":{\"fontSize\":\"14px\",\"fontWeight\":400,\"lineHeight\":\"21px\",\"margin\":\"0 0 20px 0\",\"color\":\"var(--next-error-message)\"},\"children\":\"A server error occurred. Reload to try again.\"}],[\"$\",\"form\",null,{\"style\":{\"margin\":0},\"children\":[\"$\",\"button\",null,{\"type\":\"submit\",\"style\":{\"display\":\"inline-flex\",\"alignItems\":\"center\",\"justifyContent\":\"center\",\"height\":\"32px\",\"padding\":\"0 12px\",\"fontSize\":\"14px\",\"fontWeight\":500,\"lineHeight\":\"20px\",\"borderRadius\":\"6px\",\"cursor\":\"pointer\",\"color\":\"var(--next-error-btn-text)\",\"background\":\"var(--next-error-btn-bg)\",\"border\":\"var(--next-error-btn-border)\"},\"children\":\"Reload\"}]}]]}]}]}]]}],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,null]},null,false,\"$@7\"],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L8\",null,{\"children\":\"$L9\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$La\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Lb\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$c\",[]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"dkqYdDLx-R5NmenO8DP0C\"}\n"])</script><script>self.__next_f.push([1,"d:[]\n7:\"$Wd\"\n"])</script><script>self.__next_f.push([1,"9:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\nb:[]\n"])</script></body></html>
@@ -0,0 +1,4 @@
1
+ {
2
+ "/404": "pages/404.html",
3
+ "/500": "pages/500.html"
4
+ }
@@ -0,0 +1 @@
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"qpMrrfViVbiU1hTd97HB/NLOx+Dkl4P8JgLnNduB/7o=\"\n}"
@@ -0,0 +1,5 @@
1
+ {
2
+ "node": {},
3
+ "edge": {},
4
+ "encryptionKey": "qpMrrfViVbiU1hTd97HB/NLOx+Dkl4P8JgLnNduB/7o="
5
+ }