aigetwey 1.3.7 → 1.3.8

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 (127) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dashboard/.next/BUILD_ID +1 -1
  3. package/dashboard/.next/build-manifest.json +3 -3
  4. package/dashboard/.next/diagnostics/route-bundle-stats.json +22 -22
  5. package/dashboard/.next/fallback-build-manifest.json +3 -3
  6. package/dashboard/.next/server/app/(console)/combos/page_client-reference-manifest.js +1 -1
  7. package/dashboard/.next/server/app/(console)/config/page_client-reference-manifest.js +1 -1
  8. package/dashboard/.next/server/app/(console)/console/page_client-reference-manifest.js +1 -1
  9. package/dashboard/.next/server/app/(console)/endpoint/page_client-reference-manifest.js +1 -1
  10. package/dashboard/.next/server/app/(console)/page_client-reference-manifest.js +1 -1
  11. package/dashboard/.next/server/app/(console)/providers/[id]/page_client-reference-manifest.js +1 -1
  12. package/dashboard/.next/server/app/(console)/providers/page_client-reference-manifest.js +1 -1
  13. package/dashboard/.next/server/app/(console)/quota/page_client-reference-manifest.js +1 -1
  14. package/dashboard/.next/server/app/(console)/tools/[id]/page_client-reference-manifest.js +1 -1
  15. package/dashboard/.next/server/app/(console)/tools/page_client-reference-manifest.js +1 -1
  16. package/dashboard/.next/server/app/(console)/usage/page_client-reference-manifest.js +1 -1
  17. package/dashboard/.next/server/app/_global-error.html +1 -1
  18. package/dashboard/.next/server/app/_global-error.rsc +1 -1
  19. package/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  20. package/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  21. package/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  22. package/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  23. package/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  24. package/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  25. package/dashboard/.next/server/app/_not-found.html +1 -1
  26. package/dashboard/.next/server/app/_not-found.rsc +2 -2
  27. package/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  28. package/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  29. package/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  30. package/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  31. package/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  32. package/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  33. package/dashboard/.next/server/app/combos.html +1 -1
  34. package/dashboard/.next/server/app/combos.rsc +5 -5
  35. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos/__PAGE__.segment.rsc +2 -2
  36. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp/combos.segment.rsc +1 -1
  37. package/dashboard/.next/server/app/combos.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  38. package/dashboard/.next/server/app/combos.segments/_full.segment.rsc +5 -5
  39. package/dashboard/.next/server/app/combos.segments/_head.segment.rsc +1 -1
  40. package/dashboard/.next/server/app/combos.segments/_index.segment.rsc +2 -2
  41. package/dashboard/.next/server/app/combos.segments/_tree.segment.rsc +2 -2
  42. package/dashboard/.next/server/app/config.html +1 -1
  43. package/dashboard/.next/server/app/config.rsc +5 -5
  44. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config/__PAGE__.segment.rsc +2 -2
  45. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp/config.segment.rsc +1 -1
  46. package/dashboard/.next/server/app/config.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  47. package/dashboard/.next/server/app/config.segments/_full.segment.rsc +5 -5
  48. package/dashboard/.next/server/app/config.segments/_head.segment.rsc +1 -1
  49. package/dashboard/.next/server/app/config.segments/_index.segment.rsc +2 -2
  50. package/dashboard/.next/server/app/config.segments/_tree.segment.rsc +2 -2
  51. package/dashboard/.next/server/app/console.html +1 -1
  52. package/dashboard/.next/server/app/console.rsc +5 -5
  53. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console/__PAGE__.segment.rsc +2 -2
  54. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp/console.segment.rsc +1 -1
  55. package/dashboard/.next/server/app/console.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  56. package/dashboard/.next/server/app/console.segments/_full.segment.rsc +5 -5
  57. package/dashboard/.next/server/app/console.segments/_head.segment.rsc +1 -1
  58. package/dashboard/.next/server/app/console.segments/_index.segment.rsc +2 -2
  59. package/dashboard/.next/server/app/console.segments/_tree.segment.rsc +2 -2
  60. package/dashboard/.next/server/app/endpoint.html +1 -1
  61. package/dashboard/.next/server/app/endpoint.rsc +5 -5
  62. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint/__PAGE__.segment.rsc +2 -2
  63. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp/endpoint.segment.rsc +1 -1
  64. package/dashboard/.next/server/app/endpoint.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  65. package/dashboard/.next/server/app/endpoint.segments/_full.segment.rsc +5 -5
  66. package/dashboard/.next/server/app/endpoint.segments/_head.segment.rsc +1 -1
  67. package/dashboard/.next/server/app/endpoint.segments/_index.segment.rsc +2 -2
  68. package/dashboard/.next/server/app/endpoint.segments/_tree.segment.rsc +2 -2
  69. package/dashboard/.next/server/app/index.html +1 -1
  70. package/dashboard/.next/server/app/index.rsc +5 -5
  71. package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp/__PAGE__.segment.rsc +2 -2
  72. package/dashboard/.next/server/app/index.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  73. package/dashboard/.next/server/app/index.segments/_full.segment.rsc +5 -5
  74. package/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  75. package/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
  76. package/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  77. package/dashboard/.next/server/app/login/page_client-reference-manifest.js +1 -1
  78. package/dashboard/.next/server/app/login.html +1 -1
  79. package/dashboard/.next/server/app/login.rsc +2 -2
  80. package/dashboard/.next/server/app/login.segments/_full.segment.rsc +2 -2
  81. package/dashboard/.next/server/app/login.segments/_head.segment.rsc +1 -1
  82. package/dashboard/.next/server/app/login.segments/_index.segment.rsc +2 -2
  83. package/dashboard/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  84. package/dashboard/.next/server/app/login.segments/login/__PAGE__.segment.rsc +1 -1
  85. package/dashboard/.next/server/app/login.segments/login.segment.rsc +1 -1
  86. package/dashboard/.next/server/app/providers.html +1 -1
  87. package/dashboard/.next/server/app/providers.rsc +5 -5
  88. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers/__PAGE__.segment.rsc +2 -2
  89. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp/providers.segment.rsc +1 -1
  90. package/dashboard/.next/server/app/providers.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  91. package/dashboard/.next/server/app/providers.segments/_full.segment.rsc +5 -5
  92. package/dashboard/.next/server/app/providers.segments/_head.segment.rsc +1 -1
  93. package/dashboard/.next/server/app/providers.segments/_index.segment.rsc +2 -2
  94. package/dashboard/.next/server/app/providers.segments/_tree.segment.rsc +2 -2
  95. package/dashboard/.next/server/app/quota.html +1 -1
  96. package/dashboard/.next/server/app/quota.rsc +5 -5
  97. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota/__PAGE__.segment.rsc +2 -2
  98. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp/quota.segment.rsc +1 -1
  99. package/dashboard/.next/server/app/quota.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  100. package/dashboard/.next/server/app/quota.segments/_full.segment.rsc +5 -5
  101. package/dashboard/.next/server/app/quota.segments/_head.segment.rsc +1 -1
  102. package/dashboard/.next/server/app/quota.segments/_index.segment.rsc +2 -2
  103. package/dashboard/.next/server/app/quota.segments/_tree.segment.rsc +2 -2
  104. package/dashboard/.next/server/app/tools.html +1 -1
  105. package/dashboard/.next/server/app/tools.rsc +5 -5
  106. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools/__PAGE__.segment.rsc +2 -2
  107. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp/tools.segment.rsc +1 -1
  108. package/dashboard/.next/server/app/tools.segments/!KGNvbnNvbGUp.segment.rsc +3 -3
  109. package/dashboard/.next/server/app/tools.segments/_full.segment.rsc +5 -5
  110. package/dashboard/.next/server/app/tools.segments/_head.segment.rsc +1 -1
  111. package/dashboard/.next/server/app/tools.segments/_index.segment.rsc +2 -2
  112. package/dashboard/.next/server/app/tools.segments/_tree.segment.rsc +2 -2
  113. package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js +1 -1
  114. package/dashboard/.next/server/chunks/ssr/_1jt-_lv._.js.map +1 -1
  115. package/dashboard/.next/server/middleware-build-manifest.js +3 -3
  116. package/dashboard/.next/server/pages/404.html +1 -1
  117. package/dashboard/.next/server/pages/500.html +1 -1
  118. package/dashboard/.next/static/chunks/{17nxt0zmkvdgv.js → 13824732j7-dk.js} +1 -1
  119. package/dashboard/.next/static/chunks/452cgglyyo7hp.css +3 -0
  120. package/dashboard/.next/trace +1 -1
  121. package/dashboard/.next/trace-build +1 -1
  122. package/dashboard/src/components/TopBar.tsx +33 -15
  123. package/package.json +1 -1
  124. package/dashboard/.next/static/chunks/03o9w8fy3awov.css +0 -3
  125. /package/dashboard/.next/static/{BHVoneq9_CCAAPwET7GfO → l0QkSM6jT0jiUc4m4dh6K}/_buildManifest.js +0 -0
  126. /package/dashboard/.next/static/{BHVoneq9_CCAAPwET7GfO → l0QkSM6jT0jiUc4m4dh6K}/_clientMiddlewareManifest.js +0 -0
  127. /package/dashboard/.next/static/{BHVoneq9_CCAAPwET7GfO → l0QkSM6jT0jiUc4m4dh6K}/_ssgManifest.js +0 -0
@@ -2,4 +2,4 @@
2
2
  2:I[39756,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
3
3
  3:I[37457,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
4
4
  4:[]
5
- 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"BHVoneq9_CCAAPwET7GfO"}
5
+ 0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"l0QkSM6jT0jiUc4m4dh6K"}
@@ -1,6 +1,6 @@
1
1
  1:"$Sreact.fragment"
2
- 2:I[94434,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/17nxt0zmkvdgv.js"],"Rail"]
3
- 3:I[18993,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/17nxt0zmkvdgv.js"],"TopBar"]
2
+ 2:I[94434,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/13824732j7-dk.js"],"Rail"]
3
+ 3:I[18993,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/13824732j7-dk.js"],"TopBar"]
4
4
  4:I[39756,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
5
5
  5:I[37457,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
6
- 0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/17nxt0zmkvdgv.js","async":true}]],["$","div",null,{"className":"console-grid","children":[["$","aside",null,{"className":"console-rail","children":["$","$L2",null,{}]}],["$","div",null,{"className":"console-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"console-main","children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"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."}]}]]}]}]],[]]}]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BHVoneq9_CCAAPwET7GfO"}
6
+ 0:{"rsc":["$","$1","c",{"children":[[["$","script","script-0",{"src":"/_next/static/chunks/13824732j7-dk.js","async":true}]],["$","div",null,{"className":"console-grid","children":[["$","aside",null,{"className":"console-rail","children":["$","$L2",null,{}]}],["$","div",null,{"className":"console-col","children":[["$","$L3",null,{}],["$","main",null,{"className":"console-main","children":["$","$L4",null,{"parallelRouterKey":"children","template":["$","$L5",null,{}],"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."}]}]]}]}]],[]]}]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"l0QkSM6jT0jiUc4m4dh6K"}
@@ -4,19 +4,19 @@
4
4
  4:I[76972,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ToastProvider"]
5
5
  5:I[39756,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
6
6
  6:I[37457,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
7
- 7:I[94434,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/17nxt0zmkvdgv.js"],"Rail"]
8
- 8:I[18993,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/17nxt0zmkvdgv.js"],"TopBar"]
9
- 9:I[51166,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/17nxt0zmkvdgv.js","/_next/static/chunks/1-r9spn081_wo.js"],"CliToolConfig"]
7
+ 7:I[94434,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/13824732j7-dk.js"],"Rail"]
8
+ 8:I[18993,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/13824732j7-dk.js"],"TopBar"]
9
+ 9:I[51166,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js","/_next/static/chunks/13824732j7-dk.js","/_next/static/chunks/1-r9spn081_wo.js"],"CliToolConfig"]
10
10
  a:I[97367,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"OutletBoundary"]
11
11
  b:"$Sreact.suspense"
12
12
  e:I[97367,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ViewportBoundary"]
13
13
  10:I[97367,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
14
14
  12:I[68027,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default",1]
15
- :HL["/_next/static/chunks/03o9w8fy3awov.css","style"]
15
+ :HL["/_next/static/chunks/452cgglyyo7hp.css","style"]
16
16
  :HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
17
17
  :HL["/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
18
18
  :HL["https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block","style"]
19
- 0:{"P":null,"c":["","tools"],"q":"","i":false,"f":[[["",{"children":["(console)",{"children":["tools",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/03o9w8fy3awov.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&display=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":[[["$","script","script-0",{"src":"/_next/static/chunks/17nxt0zmkvdgv.js","async":true,"nonce":"$undefined"}]],["$","div",null,{"className":"console-grid","children":[["$","aside",null,{"className":"console-rail","children":["$","$L7",null,{}]}],["$","div",null,{"className":"console-col","children":[["$","$L8",null,{}],["$","main",null,{"className":"console-main","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":"$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."}]}]]}]}]],[]],"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":[["$","$L9",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/1-r9spn081_wo.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,null]},null,false,"$@d"]},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Le",null,{"children":"$Lf"}],["$","div",null,{"hidden":true,"children":["$","$L10",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L11"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$12",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/03o9w8fy3awov.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"BHVoneq9_CCAAPwET7GfO"}
19
+ 0:{"P":null,"c":["","tools"],"q":"","i":false,"f":[[["",{"children":["(console)",{"children":["tools",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/452cgglyyo7hp.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&display=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":[[["$","script","script-0",{"src":"/_next/static/chunks/13824732j7-dk.js","async":true,"nonce":"$undefined"}]],["$","div",null,{"className":"console-grid","children":[["$","aside",null,{"className":"console-rail","children":["$","$L7",null,{}]}],["$","div",null,{"className":"console-col","children":[["$","$L8",null,{}],["$","main",null,{"className":"console-main","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":"$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."}]}]]}]}]],[]],"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":[["$","$L9",null,{}],[["$","script","script-0",{"src":"/_next/static/chunks/1-r9spn081_wo.js","async":true,"nonce":"$undefined"}]],["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}]]}],{},null,false,null]},null,false,"$@d"]},null,false,null]},null,false,null],["$","$1","h",{"children":[null,["$","$Le",null,{"children":"$Lf"}],["$","div",null,{"hidden":true,"children":["$","$L10",null,{"children":["$","$b",null,{"name":"Next.Metadata","children":"$L11"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$12",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/452cgglyyo7hp.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"l0QkSM6jT0jiUc4m4dh6K"}
20
20
  13:[]
21
21
  d:"$W13"
22
22
  f:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -3,4 +3,4 @@
3
3
  3:I[97367,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"MetadataBoundary"]
4
4
  4:"$Sreact.suspense"
5
5
  5:I[27201,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"IconMark"]
6
- 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","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"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BHVoneq9_CCAAPwET7GfO"}
6
+ 0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","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"}],["$","$L5","3",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"l0QkSM6jT0jiUc4m4dh6K"}
@@ -4,6 +4,6 @@
4
4
  4:I[76972,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"ToastProvider"]
5
5
  5:I[39756,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
6
6
  6:I[37457,["/_next/static/chunks/13ge_ybuj8rl3.js","/_next/static/chunks/14mrh2-p_w84d.js"],"default"]
7
- :HL["/_next/static/chunks/03o9w8fy3awov.css","style"]
7
+ :HL["/_next/static/chunks/452cgglyyo7hp.css","style"]
8
8
  :HL["https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block","style"]
9
- 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/03o9w8fy3awov.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/13ge_ybuj8rl3.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true}]],["$","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&display=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","template":["$","$L6",null,{}],"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."}]}]]}]}]],[]]}]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"BHVoneq9_CCAAPwET7GfO"}
9
+ 0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/452cgglyyo7hp.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/13ge_ybuj8rl3.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/14mrh2-p_w84d.js","async":true}]],["$","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&display=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","template":["$","$L6",null,{}],"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."}]}]]}]}]],[]]}]}]}]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"l0QkSM6jT0jiUc4m4dh6K"}
@@ -1,5 +1,5 @@
1
- :HL["/_next/static/chunks/03o9w8fy3awov.css","style"]
1
+ :HL["/_next/static/chunks/452cgglyyo7hp.css","style"]
2
2
  :HL["/_next/static/media/70bc3e132a0a741e-s.p.3t6q91iet4nsy.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
3
3
  :HL["/_next/static/media/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
4
4
  :HL["https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0&display=block","style"]
5
- 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"(console)","param":null,"prefetchHints":0,"slots":{"children":{"name":"tools","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"BHVoneq9_CCAAPwET7GfO"}
5
+ 0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"(console)","param":null,"prefetchHints":0,"slots":{"children":{"name":"tools","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"l0QkSM6jT0jiUc4m4dh6K"}
@@ -1,3 +1,3 @@
1
- module.exports=[88644,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},39118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},54427,(a,b,c)=>{"use strict";function d(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createPromiseWithResolvers",{enumerable:!0,get:function(){return d}})},7078,a=>{"use strict";var b=a.i(87924);let c={primary:"bg-accent text-accent-ink shadow-warm hover:bg-accent-hover border border-transparent font-semibold",ghost:"bg-transparent text-text-muted border border-border hover:text-text hover:border-text-subtle",danger:"bg-transparent text-text-muted border border-border hover:text-danger hover:border-danger/50"};a.s(["Button",0,function({variant:a="primary",className:d,...e}){return(0,b.jsx)("button",{className:`inline-flex items-center justify-center gap-1.5 rounded-brand px-3.5 py-2 text-[13px] font-medium transition-colors duration-150 cursor-pointer disabled:opacity-45 disabled:cursor-not-allowed ${c[a]}${d?` ${d}`:""}`,...e})},"Field",0,function({label:a,hint:c,children:d}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-text-subtle",children:[a,c&&(0,b.jsxs)("span",{className:"ml-1.5 lowercase tracking-normal text-text-subtle/70",children:["· ",c]})]}),d]})},"Input",0,function({className:a,...c}){return(0,b.jsx)("input",{className:`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text placeholder:text-text-subtle focus:border-accent focus:outline-none transition-colors${a?` ${a}`:""}`,...c})},"Select",0,function({className:a,...c}){return(0,b.jsx)("select",{className:`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text focus:border-accent focus:outline-none transition-colors${a?` ${a}`:""}`,...c})}])},56173,a=>{"use strict";async function b(a,b,c){let d;try{d=await fetch(`/api/gw${b}`,{method:a,headers:void 0!==c?{"content-type":"application/json"}:{},body:void 0!==c?JSON.stringify(c):void 0})}catch(a){return{ok:!1,status:0,data:null,error:a.message}}let e=await d.text(),f=null;try{f=e?JSON.parse(e):null}catch{f=null}if(!d.ok){let a=f?.error??`request failed (${d.status})`;return{ok:!1,status:d.status,data:f,error:a}}return{ok:!0,status:d.status,data:f}}async function c(a,b,c){let d;try{d=await fetch(b,{method:a,headers:void 0!==c?{"content-type":"application/json"}:{},body:void 0!==c?JSON.stringify(c):void 0})}catch(a){return{ok:!1,status:0,data:null,error:a.message}}let e=await d.text(),f=e?JSON.parse(e):null;if(!d.ok){let a=f?.error??`request failed (${d.status})`;return{ok:!1,status:d.status,data:f,error:a}}return{ok:!0,status:d.status,data:f}}a.s(["account",0,{changePassword:(a,b)=>c("POST","/api/password",{current:a,next:b})},"adminApi",0,{providers:()=>b("GET","/admin/providers"),budgets:()=>b("GET","/admin/budgets"),models:()=>b("GET","/admin/models"),keys:()=>b("GET","/admin/keys"),keysUsage:()=>b("GET","/admin/keys/usage"),setBudget:a=>b("PUT","/admin/budgets",a),clearBudget:a=>b("DELETE",`/admin/budgets/${encodeURIComponent(a)}`),addProvider:a=>b("POST","/admin/providers",a),editProvider:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}`,c),renameProvider:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/rename`,{id:c}),removeProvider:a=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}`),addKey:(a,c,d)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/keys`,{key:c,name:d}),editKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/${c}`,d),removeKey:(a,c)=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/keys/${c}`),revealKey:(a,c)=>b("GET",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/reveal`),addModel:(a,c,d)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models`,{model:c,...d}),addModels:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models`,{models:c}),removeModel:(a,c)=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/models?model=${encodeURIComponent(c)}`),clearModels:a=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/models`),pricing:()=>b("GET","/admin/pricing"),setModelPrice:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/models/price`,{model:c,...d}),testProvider:a=>b("POST",`/admin/providers/${encodeURIComponent(a)}/test`),testKey:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/test`),testModel:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models/test?model=${encodeURIComponent(c)}`),validateProvider:a=>b("POST","/admin/providers/validate",a),discoverModels:a=>b("POST",`/admin/providers/${encodeURIComponent(a)}/connect`),reorderKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/reorder`,{from:c,to:d}),toggleKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/toggle`,{enabled:d}),setProviderStrategy:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/strategy`,{strategy:c,sticky:d}),setProviderDisabled:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/disabled`,{disabled:c}),setRoute:(a,c)=>b("PUT",`/admin/routes/${encodeURIComponent(a)}`,c),removeRoute:a=>b("DELETE",`/admin/routes/${encodeURIComponent(a)}`),endpoint:()=>b("GET","/admin/endpoint"),setRtk:a=>b("PUT","/admin/endpoint/rtk",{enabled:a}),setCaveman:a=>b("PUT","/admin/endpoint/caveman",{level:a}),setPonytail:a=>b("PUT","/admin/endpoint/ponytail",{level:a}),addServerKey:(a,c)=>b("POST","/admin/endpoint/keys",{key:a,name:c}),editServerKey:(a,c)=>b("PUT",`/admin/endpoint/keys/${a}`,{name:c}),setServerKeyScope:(a,c)=>b("PUT",`/admin/endpoint/keys/${a}/scope`,c),removeServerKey:a=>b("DELETE",`/admin/endpoint/keys/${a}`),revealServerKey:a=>b("GET",`/admin/endpoint/keys/${a}/reveal`),setHeadroom:a=>b("PUT","/admin/endpoint/headroom",a),headroomStatus:()=>b("GET","/admin/headroom/status"),headroomStart:()=>b("POST","/admin/headroom/start"),headroomStop:()=>b("POST","/admin/headroom/stop"),putConfig:a=>b("PUT","/admin/config",{text:a}),version:()=>b("GET","/admin/version"),shutdown:()=>b("POST","/admin/shutdown")},"cliConfig",0,{status:a=>c("GET",`/api/cli-detect/${encodeURIComponent(a)}`),apply:(a,b)=>c("POST",`/api/cli-detect/${encodeURIComponent(a)}`,b),reset:a=>c("DELETE",`/api/cli-detect/${encodeURIComponent(a)}`)}])},73858,a=>{"use strict";var b=a.i(87924),c=a.i(7078),d=a.i(93026);a.s(["ConfirmModal",0,function({title:a,message:e,confirmLabel:f="Delete",onConfirm:g,onCancel:h,busy:i}){return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6",onClick:h,children:(0,b.jsxs)("div",{className:"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 shadow-elevated",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-full bg-danger/10 text-danger",children:(0,b.jsx)(d.Icon,{name:"warning",size:16})}),(0,b.jsx)("h2",{className:"text-[15px] font-semibold text-text",children:a})]}),(0,b.jsx)("p",{className:"mb-4 text-[12.5px] text-text-muted",children:e}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(c.Button,{variant:"ghost",onClick:h,children:"Cancel"}),(0,b.jsx)(c.Button,{variant:"danger",disabled:i,onClick:g,children:f})]})]})})}])},68862,a=>{"use strict";var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(93026);let f=[{href:"/",label:"Endpoint & Key",icon:"api"},{href:"/providers",label:"Providers",icon:"dns"},{href:"/combos",label:"Combos",icon:"layers"},{href:"/usage",label:"Usage",icon:"bar_chart"},{href:"/quota",label:"Budgets",icon:"data_usage"},{href:"/tools",label:"CLI Tools",icon:"terminal"}],g=[{href:"/console",label:"Server Console",icon:"terminal"},{href:"/config",label:"Settings",icon:"settings"}];a.s(["Rail",0,function(){let a=(0,d.usePathname)(),h=(0,d.useRouter)();async function i(){await fetch("/api/logout",{method:"POST"}),h.replace("/login"),h.refresh()}let j=d=>{let f,g="/"===(f=d.href)?"/"===a||a.startsWith("/endpoint"):a===f||a.startsWith(`${f}/`);return(0,b.jsx)(c.default,{href:d.href,"data-label":d.label,className:`rail-icon${g?" rail-icon-active":""}`,"aria-label":d.label,children:(0,b.jsx)(e.Icon,{name:d.icon,size:20,fill:g})},d.href)};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.default,{href:"/",className:"rail-brand","aria-label":"aigetwey",children:(0,b.jsxs)("svg",{viewBox:"0 0 512 512",width:"26",height:"26","aria-hidden":!0,children:[(0,b.jsx)("text",{x:"120",y:"338",fontFamily:"ui-sans-serif, Arial, sans-serif",fontSize:"260",fontWeight:"800",textAnchor:"middle",fill:"#14140f",children:"a"}),(0,b.jsxs)("g",{fill:"none",stroke:"#14140f",strokeWidth:"34",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("polyline",{points:"276,182 352,256 276,330"}),(0,b.jsx)("polyline",{points:"346,182 422,256 346,330"})]})]})}),(0,b.jsxs)("nav",{className:"flex flex-col items-center gap-3",children:[f.map(j),(0,b.jsx)("div",{className:"rail-divider"}),g.map(j)]}),(0,b.jsx)("button",{onClick:i,"data-label":"Disconnect",className:"rail-icon","aria-label":"Disconnect",children:(0,b.jsx)(e.Icon,{name:"logout",size:19})})]})}])},8255,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(93026),f=a.i(1221),g=a.i(73858),h=a.i(56173);let i={"":"Endpoint & Key",endpoint:"Endpoint & Key",providers:"Providers",combos:"Combos",usage:"Usage",quota:"Budgets",tools:"CLI Tools",console:"Server Console",config:"Settings"};a.s(["TopBar",0,function(){let a=(0,d.usePathname)(),{theme:j,toggle:k}=(0,f.useTheme)(),l="/"===a?"":a.split("/")[1]??"",m=i[l]??l,[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(!1),[t,u]=(0,c.useState)(!1);async function v(){u(!0),await h.adminApi.shutdown(),s(!0),q(!1),u(!1)}return(0,c.useEffect)(()=>{h.adminApi.version().then(a=>{a.ok&&a.data&&o(a.data)})},[]),(0,b.jsxs)("header",{className:"console-topbar",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("span",{className:"text-text-subtle",children:"aigetwey"}),(0,b.jsx)("span",{className:"text-text-subtle",children:"/"}),(0,b.jsx)("span",{className:"font-medium text-text",children:m})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2.5",children:[n&&(0,b.jsxs)("span",{className:"flex items-center gap-1 text-[11px] text-text-subtle",title:n.updateAvailable?`Update available: v${n.latest}`:"You're on the latest version",children:["v",n.current,n.updateAvailable&&(0,b.jsxs)("span",{className:"flex items-center gap-1 rounded-full bg-warning/12 px-1.5 py-0.5 text-warning",children:[(0,b.jsx)(e.Icon,{name:"arrow_upward",size:11}),"v",n.latest]})]}),(0,b.jsx)("button",{onClick:k,className:"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-text","aria-label":"Toggle theme",title:"dark"===j?"Switch to light mode":"Switch to dark mode",children:(0,b.jsx)(e.Icon,{name:"dark"===j?"light_mode":"dark_mode",size:18})}),(0,b.jsx)("button",{onClick:()=>q(!0),className:"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-danger","aria-label":"Shut down gateway",title:"Shut down the gateway",children:(0,b.jsx)(e.Icon,{name:"power_settings_new",size:18})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface py-1 pl-1 pr-3",children:[(0,b.jsx)("span",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-accent text-[11px] font-bold text-accent-ink",children:"A"}),(0,b.jsx)("span",{className:"text-[12px] text-text-muted",children:"admin"})]})]}),p&&(0,b.jsx)(g.ConfirmModal,{title:"Shut down gateway?",message:"The gateway process will stop and all requests will fail until you restart it (run.sh). The dashboard stays up but can't reach the gateway.",confirmLabel:"Shut down",busy:t,onConfirm:v,onCancel:()=>q(!1)}),r&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-6",children:(0,b.jsxs)("div",{className:"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 text-center shadow-elevated",children:[(0,b.jsx)("span",{className:"mx-auto mb-2 flex h-9 w-9 items-center justify-center rounded-full bg-danger/10 text-danger",children:(0,b.jsx)(e.Icon,{name:"power_settings_new",size:20})}),(0,b.jsx)("h2",{className:"text-[15px] font-semibold text-text",children:"Gateway stopped"}),(0,b.jsxs)("p",{className:"mt-1 text-[12.5px] text-text-muted",children:["Restart it with ",(0,b.jsx)("code",{className:"rounded bg-surface-2 px-1",children:"run.sh"}),", then reload this page."]})]})})]})}])}];
1
+ module.exports=[88644,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},39118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},54427,(a,b,c)=>{"use strict";function d(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createPromiseWithResolvers",{enumerable:!0,get:function(){return d}})},7078,a=>{"use strict";var b=a.i(87924);let c={primary:"bg-accent text-accent-ink shadow-warm hover:bg-accent-hover border border-transparent font-semibold",ghost:"bg-transparent text-text-muted border border-border hover:text-text hover:border-text-subtle",danger:"bg-transparent text-text-muted border border-border hover:text-danger hover:border-danger/50"};a.s(["Button",0,function({variant:a="primary",className:d,...e}){return(0,b.jsx)("button",{className:`inline-flex items-center justify-center gap-1.5 rounded-brand px-3.5 py-2 text-[13px] font-medium transition-colors duration-150 cursor-pointer disabled:opacity-45 disabled:cursor-not-allowed ${c[a]}${d?` ${d}`:""}`,...e})},"Field",0,function({label:a,hint:c,children:d}){return(0,b.jsxs)("label",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("span",{className:"text-[11px] font-medium uppercase tracking-wider text-text-subtle",children:[a,c&&(0,b.jsxs)("span",{className:"ml-1.5 lowercase tracking-normal text-text-subtle/70",children:["· ",c]})]}),d]})},"Input",0,function({className:a,...c}){return(0,b.jsx)("input",{className:`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text placeholder:text-text-subtle focus:border-accent focus:outline-none transition-colors${a?` ${a}`:""}`,...c})},"Select",0,function({className:a,...c}){return(0,b.jsx)("select",{className:`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text focus:border-accent focus:outline-none transition-colors${a?` ${a}`:""}`,...c})}])},56173,a=>{"use strict";async function b(a,b,c){let d;try{d=await fetch(`/api/gw${b}`,{method:a,headers:void 0!==c?{"content-type":"application/json"}:{},body:void 0!==c?JSON.stringify(c):void 0})}catch(a){return{ok:!1,status:0,data:null,error:a.message}}let e=await d.text(),f=null;try{f=e?JSON.parse(e):null}catch{f=null}if(!d.ok){let a=f?.error??`request failed (${d.status})`;return{ok:!1,status:d.status,data:f,error:a}}return{ok:!0,status:d.status,data:f}}async function c(a,b,c){let d;try{d=await fetch(b,{method:a,headers:void 0!==c?{"content-type":"application/json"}:{},body:void 0!==c?JSON.stringify(c):void 0})}catch(a){return{ok:!1,status:0,data:null,error:a.message}}let e=await d.text(),f=e?JSON.parse(e):null;if(!d.ok){let a=f?.error??`request failed (${d.status})`;return{ok:!1,status:d.status,data:f,error:a}}return{ok:!0,status:d.status,data:f}}a.s(["account",0,{changePassword:(a,b)=>c("POST","/api/password",{current:a,next:b})},"adminApi",0,{providers:()=>b("GET","/admin/providers"),budgets:()=>b("GET","/admin/budgets"),models:()=>b("GET","/admin/models"),keys:()=>b("GET","/admin/keys"),keysUsage:()=>b("GET","/admin/keys/usage"),setBudget:a=>b("PUT","/admin/budgets",a),clearBudget:a=>b("DELETE",`/admin/budgets/${encodeURIComponent(a)}`),addProvider:a=>b("POST","/admin/providers",a),editProvider:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}`,c),renameProvider:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/rename`,{id:c}),removeProvider:a=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}`),addKey:(a,c,d)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/keys`,{key:c,name:d}),editKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/${c}`,d),removeKey:(a,c)=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/keys/${c}`),revealKey:(a,c)=>b("GET",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/reveal`),addModel:(a,c,d)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models`,{model:c,...d}),addModels:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models`,{models:c}),removeModel:(a,c)=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/models?model=${encodeURIComponent(c)}`),clearModels:a=>b("DELETE",`/admin/providers/${encodeURIComponent(a)}/models`),pricing:()=>b("GET","/admin/pricing"),setModelPrice:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/models/price`,{model:c,...d}),testProvider:a=>b("POST",`/admin/providers/${encodeURIComponent(a)}/test`),testKey:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/test`),testModel:(a,c)=>b("POST",`/admin/providers/${encodeURIComponent(a)}/models/test?model=${encodeURIComponent(c)}`),validateProvider:a=>b("POST","/admin/providers/validate",a),discoverModels:a=>b("POST",`/admin/providers/${encodeURIComponent(a)}/connect`),reorderKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/reorder`,{from:c,to:d}),toggleKey:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/keys/${c}/toggle`,{enabled:d}),setProviderStrategy:(a,c,d)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/strategy`,{strategy:c,sticky:d}),setProviderDisabled:(a,c)=>b("PUT",`/admin/providers/${encodeURIComponent(a)}/disabled`,{disabled:c}),setRoute:(a,c)=>b("PUT",`/admin/routes/${encodeURIComponent(a)}`,c),removeRoute:a=>b("DELETE",`/admin/routes/${encodeURIComponent(a)}`),endpoint:()=>b("GET","/admin/endpoint"),setRtk:a=>b("PUT","/admin/endpoint/rtk",{enabled:a}),setCaveman:a=>b("PUT","/admin/endpoint/caveman",{level:a}),setPonytail:a=>b("PUT","/admin/endpoint/ponytail",{level:a}),addServerKey:(a,c)=>b("POST","/admin/endpoint/keys",{key:a,name:c}),editServerKey:(a,c)=>b("PUT",`/admin/endpoint/keys/${a}`,{name:c}),setServerKeyScope:(a,c)=>b("PUT",`/admin/endpoint/keys/${a}/scope`,c),removeServerKey:a=>b("DELETE",`/admin/endpoint/keys/${a}`),revealServerKey:a=>b("GET",`/admin/endpoint/keys/${a}/reveal`),setHeadroom:a=>b("PUT","/admin/endpoint/headroom",a),headroomStatus:()=>b("GET","/admin/headroom/status"),headroomStart:()=>b("POST","/admin/headroom/start"),headroomStop:()=>b("POST","/admin/headroom/stop"),putConfig:a=>b("PUT","/admin/config",{text:a}),version:()=>b("GET","/admin/version"),shutdown:()=>b("POST","/admin/shutdown")},"cliConfig",0,{status:a=>c("GET",`/api/cli-detect/${encodeURIComponent(a)}`),apply:(a,b)=>c("POST",`/api/cli-detect/${encodeURIComponent(a)}`,b),reset:a=>c("DELETE",`/api/cli-detect/${encodeURIComponent(a)}`)}])},73858,a=>{"use strict";var b=a.i(87924),c=a.i(7078),d=a.i(93026);a.s(["ConfirmModal",0,function({title:a,message:e,confirmLabel:f="Delete",onConfirm:g,onCancel:h,busy:i}){return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6",onClick:h,children:(0,b.jsxs)("div",{className:"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 shadow-elevated",onClick:a=>a.stopPropagation(),children:[(0,b.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-full bg-danger/10 text-danger",children:(0,b.jsx)(d.Icon,{name:"warning",size:16})}),(0,b.jsx)("h2",{className:"text-[15px] font-semibold text-text",children:a})]}),(0,b.jsx)("p",{className:"mb-4 text-[12.5px] text-text-muted",children:e}),(0,b.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,b.jsx)(c.Button,{variant:"ghost",onClick:h,children:"Cancel"}),(0,b.jsx)(c.Button,{variant:"danger",disabled:i,onClick:g,children:f})]})]})})}])},68862,a=>{"use strict";var b=a.i(87924),c=a.i(38246),d=a.i(50944),e=a.i(93026);let f=[{href:"/",label:"Endpoint & Key",icon:"api"},{href:"/providers",label:"Providers",icon:"dns"},{href:"/combos",label:"Combos",icon:"layers"},{href:"/usage",label:"Usage",icon:"bar_chart"},{href:"/quota",label:"Budgets",icon:"data_usage"},{href:"/tools",label:"CLI Tools",icon:"terminal"}],g=[{href:"/console",label:"Server Console",icon:"terminal"},{href:"/config",label:"Settings",icon:"settings"}];a.s(["Rail",0,function(){let a=(0,d.usePathname)(),h=(0,d.useRouter)();async function i(){await fetch("/api/logout",{method:"POST"}),h.replace("/login"),h.refresh()}let j=d=>{let f,g="/"===(f=d.href)?"/"===a||a.startsWith("/endpoint"):a===f||a.startsWith(`${f}/`);return(0,b.jsx)(c.default,{href:d.href,"data-label":d.label,className:`rail-icon${g?" rail-icon-active":""}`,"aria-label":d.label,children:(0,b.jsx)(e.Icon,{name:d.icon,size:20,fill:g})},d.href)};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(c.default,{href:"/",className:"rail-brand","aria-label":"aigetwey",children:(0,b.jsxs)("svg",{viewBox:"0 0 512 512",width:"26",height:"26","aria-hidden":!0,children:[(0,b.jsx)("text",{x:"120",y:"338",fontFamily:"ui-sans-serif, Arial, sans-serif",fontSize:"260",fontWeight:"800",textAnchor:"middle",fill:"#14140f",children:"a"}),(0,b.jsxs)("g",{fill:"none",stroke:"#14140f",strokeWidth:"34",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,b.jsx)("polyline",{points:"276,182 352,256 276,330"}),(0,b.jsx)("polyline",{points:"346,182 422,256 346,330"})]})]})}),(0,b.jsxs)("nav",{className:"flex flex-col items-center gap-3",children:[f.map(j),(0,b.jsx)("div",{className:"rail-divider"}),g.map(j)]}),(0,b.jsx)("button",{onClick:i,"data-label":"Disconnect",className:"rail-icon","aria-label":"Disconnect",children:(0,b.jsx)(e.Icon,{name:"logout",size:19})})]})}])},8255,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(50944),e=a.i(93026),f=a.i(1221),g=a.i(73858),h=a.i(56173);let i={"":"Endpoint & Key",endpoint:"Endpoint & Key",providers:"Providers",combos:"Combos",usage:"Usage",quota:"Budgets",tools:"CLI Tools",console:"Server Console",config:"Settings"};function j({version:a}){let[d,f]=(0,c.useState)(!1),g=`npm install -g aigetwey@${a}`;return(0,b.jsx)("button",{onClick:()=>{navigator.clipboard.writeText(g).then(()=>{f(!0),setTimeout(()=>f(!1),1800)})},className:"flex h-6 w-6 items-center justify-center rounded-full text-warning/70 transition-colors hover:bg-warning/10 hover:text-warning",title:`Copy: ${g}`,children:(0,b.jsx)(e.Icon,{name:d?"check":"content_copy",size:13})})}a.s(["TopBar",0,function(){let a=(0,d.usePathname)(),{theme:k,toggle:l}=(0,f.useTheme)(),m="/"===a?"":a.split("/")[1]??"",n=i[m]??m,[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(!1),[u,v]=(0,c.useState)(!1);async function w(){v(!0),await h.adminApi.shutdown(),t(!0),r(!1),v(!1)}return(0,c.useEffect)(()=>{h.adminApi.version().then(a=>{a.ok&&a.data&&p(a.data)})},[]),(0,b.jsxs)("header",{className:"console-topbar",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 text-[13px]",children:[(0,b.jsx)("span",{className:"text-text-subtle",children:"aigetwey"}),(0,b.jsx)("span",{className:"text-text-subtle",children:"/"}),(0,b.jsx)("span",{className:"font-medium text-text",children:n})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2.5",children:[o&&(o.updateAvailable?(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsxs)("a",{href:"https://github.com/xk1ko/aigetwey/releases",target:"_blank",rel:"noopener noreferrer",className:"flex items-center gap-1.5 rounded-full border border-warning/30 bg-warning/10 px-2.5 py-1 text-[11px] font-medium text-warning transition-colors hover:bg-warning/20",title:`Update available — v${o.latest} is out (you have v${o.current})`,children:[(0,b.jsx)(e.Icon,{name:"arrow_upward",size:12}),"v",o.latest," available"]}),(0,b.jsx)(j,{version:o.latest})]}):(0,b.jsxs)("span",{className:"text-[11px] text-text-subtle",title:"You're on the latest version",children:["v",o.current]})),(0,b.jsx)("button",{onClick:l,className:"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-text","aria-label":"Toggle theme",title:"dark"===k?"Switch to light mode":"Switch to dark mode",children:(0,b.jsx)(e.Icon,{name:"dark"===k?"light_mode":"dark_mode",size:18})}),(0,b.jsx)("button",{onClick:()=>r(!0),className:"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-danger","aria-label":"Shut down gateway",title:"Shut down the gateway",children:(0,b.jsx)(e.Icon,{name:"power_settings_new",size:18})}),(0,b.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface py-1 pl-1 pr-3",children:[(0,b.jsx)("span",{className:"flex h-6 w-6 items-center justify-center rounded-full bg-accent text-[11px] font-bold text-accent-ink",children:"A"}),(0,b.jsx)("span",{className:"text-[12px] text-text-muted",children:"admin"})]})]}),q&&(0,b.jsx)(g.ConfirmModal,{title:"Shut down gateway?",message:"The gateway process will stop and all requests will fail until you restart it (run.sh). The dashboard stays up but can't reach the gateway.",confirmLabel:"Shut down",busy:u,onConfirm:w,onCancel:()=>r(!1)}),s&&(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-6",children:(0,b.jsxs)("div",{className:"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 text-center shadow-elevated",children:[(0,b.jsx)("span",{className:"mx-auto mb-2 flex h-9 w-9 items-center justify-center rounded-full bg-danger/10 text-danger",children:(0,b.jsx)(e.Icon,{name:"power_settings_new",size:20})}),(0,b.jsx)("h2",{className:"text-[15px] font-semibold text-text",children:"Gateway stopped"}),(0,b.jsxs)("p",{className:"mt-1 text-[12.5px] text-text-muted",children:["Restart it with ",(0,b.jsx)("code",{className:"rounded bg-surface-2 px-1",children:"run.sh"}),", then reload this page."]})]})})]})}])}];
2
2
 
3
3
  //# sourceMappingURL=_1jt-_lv._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/next/src/shared/lib/invariant-error.ts","../../../../node_modules/next/src/shared/lib/segment.ts","../../../../node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../src/components/Button.tsx","../../../../src/lib/client.ts","../../../../src/components/ConfirmModal.tsx","../../../../src/components/Rail.tsx","../../../../src/components/TopBar.tsx"],"sourcesContent":["export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import type { ButtonHTMLAttributes } from \"react\";\n\ntype Variant = \"primary\" | \"ghost\" | \"danger\";\n\nconst VARIANTS: Record<Variant, string> = {\n primary: \"bg-accent text-accent-ink shadow-warm hover:bg-accent-hover border border-transparent font-semibold\",\n ghost: \"bg-transparent text-text-muted border border-border hover:text-text hover:border-text-subtle\",\n danger: \"bg-transparent text-text-muted border border-border hover:text-danger hover:border-danger/50\",\n};\n\nexport function Button({\n variant = \"primary\",\n className,\n ...props\n}: ButtonHTMLAttributes<HTMLButtonElement> & { variant?: Variant }) {\n return (\n <button\n className={`inline-flex items-center justify-center gap-1.5 rounded-brand px-3.5 py-2 text-[13px] font-medium transition-colors duration-150 cursor-pointer disabled:opacity-45 disabled:cursor-not-allowed ${VARIANTS[variant]}${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Input({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) {\n return (\n <input\n className={`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text placeholder:text-text-subtle focus:border-accent focus:outline-none transition-colors${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Select({ className, ...props }: React.SelectHTMLAttributes<HTMLSelectElement>) {\n return (\n <select\n className={`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text focus:border-accent focus:outline-none transition-colors${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Field({\n label,\n hint,\n children,\n}: {\n label: string;\n hint?: string;\n children: React.ReactNode;\n}) {\n return (\n <label className=\"flex flex-col gap-1.5\">\n <span className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">\n {label}\n {hint && <span className=\"ml-1.5 lowercase tracking-normal text-text-subtle/70\">· {hint}</span>}\n </span>\n {children}\n </label>\n );\n}\n","\"use client\";\n\n/**\n * Browser-side admin client. Talks to the gateway THROUGH the same-origin proxy\n * (`/api/gw/admin/...`), which injects the admin Bearer server-side — so the\n * password never reaches the browser. Server components read initial data via\n * lib/gateway.ts directly; client components mutate through here.\n */\nimport type {\n BudgetStatus,\n ConfigReply,\n EndpointPayload,\n HeadroomStatusReply,\n InjectLevel,\n KeyUsageRow,\n ModelsPayload,\n PingResult,\n PricingPayload,\n ProviderSnapshot,\n WireFormat,\n} from \"./gateway\";\n\nexport interface ApiResult<T> {\n ok: boolean;\n status: number;\n data: T | null;\n error?: string;\n}\n\nasync function api<T>(method: string, path: string, body?: unknown): Promise<ApiResult<T>> {\n let res: Response;\n try {\n res = await fetch(`/api/gw${path}`, {\n method,\n headers: body !== undefined ? { \"content-type\": \"application/json\" } : {},\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n return { ok: false, status: 0, data: null, error: (e as Error).message };\n }\n const text = await res.text();\n let data: T | null = null;\n try {\n data = text ? (JSON.parse(text) as T) : null;\n } catch {\n data = null;\n }\n if (!res.ok) {\n const err = (data as { error?: string } | null)?.error ?? `request failed (${res.status})`;\n return { ok: false, status: res.status, data, error: err };\n }\n return { ok: true, status: res.status, data };\n}\n\nexport const adminApi = {\n providers: () => api<{ providers: ProviderSnapshot[] }>(\"GET\", \"/admin/providers\"),\n budgets: () => api<{ budgets: BudgetStatus[] }>(\"GET\", \"/admin/budgets\"),\n models: () => api<ModelsPayload>(\"GET\", \"/admin/models\"),\n keys: () => api<Array<{ fingerprint: string; name: string; masked: string }>>(\"GET\", \"/admin/keys\"),\n keysUsage: () => api<{ keys: KeyUsageRow[] }>(\"GET\", \"/admin/keys/usage\"),\n\n setBudget: (body: {\n scope: { type: \"global\" } | { type: \"provider\"; id: string } | { type: \"model\"; id: string } | { type: \"key\"; id: string };\n unit: \"usd\" | \"tokens\";\n limit: number;\n window: \"5h\" | \"24h\" | \"7day\" | \"30day\";\n alert_at?: number;\n note?: string;\n }) => api<ConfigReply>(\"PUT\", \"/admin/budgets\", body),\n clearBudget: (key: string) => api<ConfigReply>(\"DELETE\", `/admin/budgets/${encodeURIComponent(key)}`),\n\n addProvider: (p: {\n id: string;\n format: WireFormat;\n base_url: string;\n api_key?: string;\n free?: boolean;\n auto_models?: boolean;\n service_account?: string;\n }) => api<ConfigReply>(\"POST\", \"/admin/providers\", p),\n editProvider: (id: string, patch: { base_url?: string; format?: WireFormat; name?: string }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}`, patch),\n renameProvider: (id: string, newId: string) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/rename`, { id: newId }),\n removeProvider: (id: string) => api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}`),\n addKey: (id: string, key: string, name?: string) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/keys`, { key, name }),\n editKey: (id: string, index: number, patch: { key?: string; name?: string }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}`, patch),\n removeKey: (id: string, index: number) =>\n api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}`),\n revealKey: (id: string, index: number) =>\n api<{ key: string }>(\"GET\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/reveal`),\n addModel: (id: string, model: string, price?: { price_in?: number; price_out?: number }) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { model, ...price }),\n addModels: (id: string, models: string[]) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { models }),\n // model id can hold a slash (provider/model); send it as a query param so the\n // proxy's path split doesn't mangle it.\n removeModel: (id: string, model: string) =>\n api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models?model=${encodeURIComponent(model)}`),\n clearModels: (id: string) => api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models`),\n pricing: () => api<PricingPayload>(\"GET\", \"/admin/pricing\"),\n setModelPrice: (id: string, model: string, price: { price_in?: number | null; price_out?: number | null }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/models/price`, { model, ...price }),\n testProvider: (id: string) => api<PingResult>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/test`),\n testKey: (id: string, index: number) =>\n api<PingResult>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/test`),\n testModel: (id: string, model: string) =>\n api<{ ok: boolean; status?: number; error?: string }>(\n \"POST\",\n `/admin/providers/${encodeURIComponent(id)}/models/test?model=${encodeURIComponent(model)}`,\n ),\n validateProvider: (b: { format: WireFormat; base_url: string; api_key?: string }) =>\n api<PingResult>(\"POST\", \"/admin/providers/validate\", b),\n // discover: returns the upstream catalog flagged with which ids are in config.\n discoverModels: (id: string) =>\n api<{ ok: boolean; models: Array<{ id: string; added: boolean }> }>(\n \"POST\",\n `/admin/providers/${encodeURIComponent(id)}/connect`,\n ),\n\n reorderKey: (id: string, from: number, to: number) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/reorder`, { from, to }),\n toggleKey: (id: string, index: number, enabled: boolean) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/toggle`, { enabled }),\n setProviderStrategy: (id: string, strategy: \"fallback\" | \"round-robin\" | null, sticky?: number) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/strategy`, { strategy, sticky }),\n setProviderDisabled: (id: string, disabled: boolean) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/disabled`, { disabled }),\n\n setRoute: (\n alias: string,\n body: { target: string[]; model?: string | string[]; strategy?: \"fallback\" | \"round-robin\"; price_in?: number; price_out?: number },\n ) => api<ConfigReply>(\"PUT\", `/admin/routes/${encodeURIComponent(alias)}`, body),\n removeRoute: (alias: string) => api<ConfigReply>(\"DELETE\", `/admin/routes/${encodeURIComponent(alias)}`),\n\n endpoint: () => api<EndpointPayload>(\"GET\", \"/admin/endpoint\"),\n setRtk: (enabled: boolean) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/rtk\", { enabled }),\n setCaveman: (level: InjectLevel) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/caveman\", { level }),\n setPonytail: (level: InjectLevel) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/ponytail\", { level }),\n addServerKey: (key: string, name?: string) => api<ConfigReply>(\"POST\", \"/admin/endpoint/keys\", { key, name }),\n editServerKey: (index: number, name: string) => api<ConfigReply>(\"PUT\", `/admin/endpoint/keys/${index}`, { name }),\n setServerKeyScope: (index: number, body: { models?: string[]; rpm?: number | null; expires?: number | null }) =>\n api<ConfigReply>(\"PUT\", `/admin/endpoint/keys/${index}/scope`, body),\n removeServerKey: (index: number) => api<ConfigReply>(\"DELETE\", `/admin/endpoint/keys/${index}`),\n revealServerKey: (index: number) => api<{ key: string }>(\"GET\", `/admin/endpoint/keys/${index}/reveal`),\n\n setHeadroom: (patch: { enabled?: boolean; url?: string; compress_user_messages?: boolean }) =>\n api<ConfigReply>(\"PUT\", \"/admin/endpoint/headroom\", patch),\n headroomStatus: () => api<HeadroomStatusReply>(\"GET\", \"/admin/headroom/status\"),\n headroomStart: () => api<{ success?: boolean; pid?: number; alreadyRunning?: boolean }>(\"POST\", \"/admin/headroom/start\"),\n headroomStop: () => api<{ stopped: boolean; reason?: string; pid?: number }>(\"POST\", \"/admin/headroom/stop\"),\n\n putConfig: (text: string) => api<{ ok: boolean }>(\"PUT\", \"/admin/config\", { text }),\n\n version: () => api<{ current: string; latest: string | null; updateAvailable: boolean }>(\"GET\", \"/admin/version\"),\n shutdown: () => api<{ ok: boolean; message: string }>(\"POST\", \"/admin/shutdown\"),\n};\n\n// Local CLI-tool detection/auto-config. These hit the dashboard's OWN server\n// routes (/api/cli-detect/*), not the gateway proxy — they read/write the tool's\n// config file on this machine. Session-gated by middleware like everything else.\nexport interface CliStatus {\n auto: boolean;\n installed: boolean;\n configured?: boolean;\n path?: string;\n baseUrl?: string | null;\n models?: string[];\n activeModel?: string | null;\n // claude returns its three slot defaults instead of a flat list\n modelSlots?: { opus?: string | null; sonnet?: string | null; haiku?: string | null };\n}\n\nasync function appApi<T>(method: string, url: string, body?: unknown): Promise<ApiResult<T>> {\n let res: Response;\n try {\n res = await fetch(url, {\n method,\n headers: body !== undefined ? { \"content-type\": \"application/json\" } : {},\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n return { ok: false, status: 0, data: null, error: (e as Error).message };\n }\n const text = await res.text();\n const data = text ? (JSON.parse(text) as T) : null;\n if (!res.ok) {\n const err = (data as { error?: string } | null)?.error ?? `request failed (${res.status})`;\n return { ok: false, status: res.status, data, error: err };\n }\n return { ok: true, status: res.status, data };\n}\n\n/** Admin account actions that hit the dashboard's OWN routes (not the gw proxy). */\nexport const account = {\n changePassword: (current: string, next: string) =>\n appApi<{ ok: boolean }>(\"POST\", \"/api/password\", { current, next }),\n};\n\nexport const cliConfig = {\n status: (tool: string) => appApi<CliStatus>(\"GET\", `/api/cli-detect/${encodeURIComponent(tool)}`),\n apply: (tool: string, body: { base: string; key?: string; models?: string[] | Record<string, string>; active?: string }) =>\n appApi<{ success?: boolean; path?: string }>(\"POST\", `/api/cli-detect/${encodeURIComponent(tool)}`, body),\n reset: (tool: string) => appApi<{ success?: boolean }>(\"DELETE\", `/api/cli-detect/${encodeURIComponent(tool)}`),\n};\n","\"use client\";\n\nimport { Button } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\n\ninterface ConfirmModalProps {\n title: string;\n message: string;\n confirmLabel?: string;\n onConfirm: () => void;\n onCancel: () => void;\n busy?: boolean;\n}\n\nexport function ConfirmModal({ title, message, confirmLabel = \"Delete\", onConfirm, onCancel, busy }: ConfirmModalProps) {\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6\" onClick={onCancel}>\n <div\n className=\"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 shadow-elevated\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"flex h-7 w-7 items-center justify-center rounded-full bg-danger/10 text-danger\">\n <Icon name=\"warning\" size={16} />\n </span>\n <h2 className=\"text-[15px] font-semibold text-text\">{title}</h2>\n </div>\n <p className=\"mb-4 text-[12.5px] text-text-muted\">{message}</p>\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={onCancel}>Cancel</Button>\n <Button variant=\"danger\" disabled={busy} onClick={onConfirm}>{confirmLabel}</Button>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { Icon } from \"./Icon\";\n\n// Floating icon-rail (user's preferred chrome), carrying aigetwey's IA: Endpoint\n// is the landing, routing lives in Combos, and operational pages sit below a\n// divider. Labels surface as hover tooltips (data-label).\ntype NavItem = { href: string; label: string; icon: string };\n\nconst MAIN: NavItem[] = [\n { href: \"/\", label: \"Endpoint & Key\", icon: \"api\" },\n { href: \"/providers\", label: \"Providers\", icon: \"dns\" },\n { href: \"/combos\", label: \"Combos\", icon: \"layers\" },\n { href: \"/usage\", label: \"Usage\", icon: \"bar_chart\" },\n { href: \"/quota\", label: \"Budgets\", icon: \"data_usage\" },\n { href: \"/tools\", label: \"CLI Tools\", icon: \"terminal\" },\n];\n\nconst SYSTEM: NavItem[] = [\n { href: \"/console\", label: \"Server Console\", icon: \"terminal\" },\n { href: \"/config\", label: \"Settings\", icon: \"settings\" },\n];\n\nexport function Rail() {\n const path = usePathname();\n const router = useRouter();\n\n async function logout() {\n await fetch(\"/api/logout\", { method: \"POST\" });\n router.replace(\"/login\");\n router.refresh();\n }\n\n // Endpoint owns both \"/\" (landing) and \"/endpoint\"; others match the segment\n // and its sub-routes (e.g. /providers/[id]).\n const isActive = (href: string) =>\n href === \"/\"\n ? path === \"/\" || path.startsWith(\"/endpoint\")\n : path === href || path.startsWith(`${href}/`);\n\n const link = (item: NavItem) => {\n const active = isActive(item.href);\n return (\n <Link\n key={item.href}\n href={item.href}\n data-label={item.label}\n className={`rail-icon${active ? \" rail-icon-active\" : \"\"}`}\n aria-label={item.label}\n >\n <Icon name={item.icon} size={20} fill={active} />\n </Link>\n );\n };\n\n return (\n <>\n <Link href=\"/\" className=\"rail-brand\" aria-label=\"aigetwey\">\n {/* \"a»\" mark — ink on the lime tile (CSS provides the tile) */}\n <svg viewBox=\"0 0 512 512\" width=\"26\" height=\"26\" aria-hidden>\n <text x=\"120\" y=\"338\" fontFamily=\"ui-sans-serif, Arial, sans-serif\" fontSize=\"260\" fontWeight=\"800\" textAnchor=\"middle\" fill=\"#14140f\">a</text>\n <g fill=\"none\" stroke=\"#14140f\" strokeWidth=\"34\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"276,182 352,256 276,330\" />\n <polyline points=\"346,182 422,256 346,330\" />\n </g>\n </svg>\n </Link>\n\n <nav className=\"flex flex-col items-center gap-3\">\n {MAIN.map(link)}\n <div className=\"rail-divider\" />\n {SYSTEM.map(link)}\n </nav>\n\n <button onClick={logout} data-label=\"Disconnect\" className=\"rail-icon\" aria-label=\"Disconnect\">\n <Icon name=\"logout\" size={19} />\n </button>\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport { Icon } from \"./Icon\";\nimport { useTheme } from \"./ThemeProvider\";\nimport { ConfirmModal } from \"./ConfirmModal\";\nimport { adminApi } from \"@/lib/client\";\n\nconst LABELS: Record<string, string> = {\n \"\": \"Endpoint & Key\",\n endpoint: \"Endpoint & Key\",\n providers: \"Providers\",\n combos: \"Combos\",\n usage: \"Usage\",\n quota: \"Budgets\",\n tools: \"CLI Tools\",\n console: \"Server Console\",\n config: \"Settings\",\n};\n\nexport function TopBar() {\n const path = usePathname();\n const { theme, toggle } = useTheme();\n const seg = path === \"/\" ? \"\" : (path.split(\"/\")[1] ?? \"\");\n const current = LABELS[seg] ?? seg;\n\n const [version, setVersion] = useState<{ current: string; latest: string | null; updateAvailable: boolean } | null>(null);\n const [confirmShutdown, setConfirmShutdown] = useState(false);\n const [stopped, setStopped] = useState(false);\n const [busy, setBusy] = useState(false);\n\n // version + update check on mount, via aigetwey's sidebar npm poll.\n useEffect(() => {\n void adminApi.version().then((r) => {\n if (r.ok && r.data) setVersion(r.data);\n });\n }, []);\n\n async function doShutdown() {\n setBusy(true);\n await adminApi.shutdown();\n // the gateway exits ~300ms after replying; reflect it in the UI.\n setStopped(true);\n setConfirmShutdown(false);\n setBusy(false);\n }\n\n return (\n <header className=\"console-topbar\">\n <div className=\"flex items-center gap-2 text-[13px]\">\n <span className=\"text-text-subtle\">aigetwey</span>\n <span className=\"text-text-subtle\">/</span>\n <span className=\"font-medium text-text\">{current}</span>\n </div>\n\n <div className=\"ml-auto flex items-center gap-2.5\">\n {version && (\n <span\n className=\"flex items-center gap-1 text-[11px] text-text-subtle\"\n title={\n version.updateAvailable\n ? `Update available: v${version.latest}`\n : \"You're on the latest version\"\n }\n >\n v{version.current}\n {version.updateAvailable && (\n <span className=\"flex items-center gap-1 rounded-full bg-warning/12 px-1.5 py-0.5 text-warning\">\n <Icon name=\"arrow_upward\" size={11} />v{version.latest}\n </span>\n )}\n </span>\n )}\n\n <button\n onClick={toggle}\n className=\"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Toggle theme\"\n title={theme === \"dark\" ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n <Icon name={theme === \"dark\" ? \"light_mode\" : \"dark_mode\"} size={18} />\n </button>\n\n <button\n onClick={() => setConfirmShutdown(true)}\n className=\"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-danger\"\n aria-label=\"Shut down gateway\"\n title=\"Shut down the gateway\"\n >\n <Icon name=\"power_settings_new\" size={18} />\n </button>\n\n <div className=\"flex items-center gap-2 rounded-full border border-border bg-surface py-1 pl-1 pr-3\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full bg-accent text-[11px] font-bold text-accent-ink\">\n A\n </span>\n <span className=\"text-[12px] text-text-muted\">admin</span>\n </div>\n </div>\n\n {confirmShutdown && (\n <ConfirmModal\n title=\"Shut down gateway?\"\n message=\"The gateway process will stop and all requests will fail until you restart it (run.sh). The dashboard stays up but can't reach the gateway.\"\n confirmLabel=\"Shut down\"\n busy={busy}\n onConfirm={doShutdown}\n onCancel={() => setConfirmShutdown(false)}\n />\n )}\n\n {stopped && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-6\">\n <div className=\"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 text-center shadow-elevated\">\n <span className=\"mx-auto mb-2 flex h-9 w-9 items-center justify-center rounded-full bg-danger/10 text-danger\">\n <Icon name=\"power_settings_new\" size={20} />\n </span>\n <h2 className=\"text-[15px] font-semibold text-text\">Gateway stopped</h2>\n <p className=\"mt-1 text-[12.5px] text-text-muted\">\n Restart it with <code className=\"rounded bg-surface-2 px-1\">run.sh</code>, then reload this page.\n </p>\n </div>\n </div>\n )}\n </header>\n );\n}\n"],"names":["InvariantError","Error","constructor","message","options","endsWith","name","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","createPromiseWithResolvers","resolve","reject","promise","Promise","res","rej","VARIANTS","primary","ghost","danger","Button","variant","className","props","Input","Select","Field","label","hint","api","method","path","body","fetch","headers","undefined","e","ok","status","data","error","text","parse","err","adminApi","providers","budgets","models","keys","keysUsage","setBudget","clearBudget","key","encodeURIComponent","addProvider","p","editProvider","id","patch","renameProvider","newId","removeProvider","addKey","editKey","index","removeKey","revealKey","addModel","model","price","addModels","removeModel","clearModels","pricing","setModelPrice","testProvider","testKey","testModel","validateProvider","b","discoverModels","reorderKey","from","to","toggleKey","enabled","setProviderStrategy","strategy","sticky","setProviderDisabled","disabled","setRoute","alias","removeRoute","endpoint","setRtk","setCaveman","level","setPonytail","addServerKey","editServerKey","setServerKeyScope","removeServerKey","revealServerKey","setHeadroom","headroomStatus","headroomStart","headroomStop","putConfig","version","shutdown","appApi","url","account","changePassword","current","next","cliConfig","tool","apply","reset","ConfirmModal","title","confirmLabel","onConfirm","onCancel","busy","onClick","stopPropagation","size","MAIN","href","icon","SYSTEM","Rail","router","logout","replace","refresh","isActive","link","item","active","fill","viewBox","width","height","x","y","fontFamily","fontSize","fontWeight","textAnchor","stroke","strokeWidth","strokeLinecap","strokeLinejoin","points","map","LABELS","combos","usage","quota","tools","console","config","TopBar","theme","toggle","seg","split","setVersion","confirmShutdown","setConfirmShutdown","stopped","setStopped","setBusy","then","r","doShutdown","updateAvailable","latest"],"mappings":"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","ignoreList":[0,1,2]}
1
+ {"version":3,"sources":["../../../../node_modules/next/src/shared/lib/invariant-error.ts","../../../../node_modules/next/src/shared/lib/segment.ts","../../../../node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../src/components/Button.tsx","../../../../src/lib/client.ts","../../../../src/components/ConfirmModal.tsx","../../../../src/components/Rail.tsx","../../../../src/components/TopBar.tsx"],"sourcesContent":["export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import type { ButtonHTMLAttributes } from \"react\";\n\ntype Variant = \"primary\" | \"ghost\" | \"danger\";\n\nconst VARIANTS: Record<Variant, string> = {\n primary: \"bg-accent text-accent-ink shadow-warm hover:bg-accent-hover border border-transparent font-semibold\",\n ghost: \"bg-transparent text-text-muted border border-border hover:text-text hover:border-text-subtle\",\n danger: \"bg-transparent text-text-muted border border-border hover:text-danger hover:border-danger/50\",\n};\n\nexport function Button({\n variant = \"primary\",\n className,\n ...props\n}: ButtonHTMLAttributes<HTMLButtonElement> & { variant?: Variant }) {\n return (\n <button\n className={`inline-flex items-center justify-center gap-1.5 rounded-brand px-3.5 py-2 text-[13px] font-medium transition-colors duration-150 cursor-pointer disabled:opacity-45 disabled:cursor-not-allowed ${VARIANTS[variant]}${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Input({ className, ...props }: React.InputHTMLAttributes<HTMLInputElement>) {\n return (\n <input\n className={`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text placeholder:text-text-subtle focus:border-accent focus:outline-none transition-colors${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Select({ className, ...props }: React.SelectHTMLAttributes<HTMLSelectElement>) {\n return (\n <select\n className={`w-full rounded-brand border border-border bg-bg px-3 py-2 text-[13px] text-text focus:border-accent focus:outline-none transition-colors${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n );\n}\n\nexport function Field({\n label,\n hint,\n children,\n}: {\n label: string;\n hint?: string;\n children: React.ReactNode;\n}) {\n return (\n <label className=\"flex flex-col gap-1.5\">\n <span className=\"text-[11px] font-medium uppercase tracking-wider text-text-subtle\">\n {label}\n {hint && <span className=\"ml-1.5 lowercase tracking-normal text-text-subtle/70\">· {hint}</span>}\n </span>\n {children}\n </label>\n );\n}\n","\"use client\";\n\n/**\n * Browser-side admin client. Talks to the gateway THROUGH the same-origin proxy\n * (`/api/gw/admin/...`), which injects the admin Bearer server-side — so the\n * password never reaches the browser. Server components read initial data via\n * lib/gateway.ts directly; client components mutate through here.\n */\nimport type {\n BudgetStatus,\n ConfigReply,\n EndpointPayload,\n HeadroomStatusReply,\n InjectLevel,\n KeyUsageRow,\n ModelsPayload,\n PingResult,\n PricingPayload,\n ProviderSnapshot,\n WireFormat,\n} from \"./gateway\";\n\nexport interface ApiResult<T> {\n ok: boolean;\n status: number;\n data: T | null;\n error?: string;\n}\n\nasync function api<T>(method: string, path: string, body?: unknown): Promise<ApiResult<T>> {\n let res: Response;\n try {\n res = await fetch(`/api/gw${path}`, {\n method,\n headers: body !== undefined ? { \"content-type\": \"application/json\" } : {},\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n return { ok: false, status: 0, data: null, error: (e as Error).message };\n }\n const text = await res.text();\n let data: T | null = null;\n try {\n data = text ? (JSON.parse(text) as T) : null;\n } catch {\n data = null;\n }\n if (!res.ok) {\n const err = (data as { error?: string } | null)?.error ?? `request failed (${res.status})`;\n return { ok: false, status: res.status, data, error: err };\n }\n return { ok: true, status: res.status, data };\n}\n\nexport const adminApi = {\n providers: () => api<{ providers: ProviderSnapshot[] }>(\"GET\", \"/admin/providers\"),\n budgets: () => api<{ budgets: BudgetStatus[] }>(\"GET\", \"/admin/budgets\"),\n models: () => api<ModelsPayload>(\"GET\", \"/admin/models\"),\n keys: () => api<Array<{ fingerprint: string; name: string; masked: string }>>(\"GET\", \"/admin/keys\"),\n keysUsage: () => api<{ keys: KeyUsageRow[] }>(\"GET\", \"/admin/keys/usage\"),\n\n setBudget: (body: {\n scope: { type: \"global\" } | { type: \"provider\"; id: string } | { type: \"model\"; id: string } | { type: \"key\"; id: string };\n unit: \"usd\" | \"tokens\";\n limit: number;\n window: \"5h\" | \"24h\" | \"7day\" | \"30day\";\n alert_at?: number;\n note?: string;\n }) => api<ConfigReply>(\"PUT\", \"/admin/budgets\", body),\n clearBudget: (key: string) => api<ConfigReply>(\"DELETE\", `/admin/budgets/${encodeURIComponent(key)}`),\n\n addProvider: (p: {\n id: string;\n format: WireFormat;\n base_url: string;\n api_key?: string;\n free?: boolean;\n auto_models?: boolean;\n service_account?: string;\n }) => api<ConfigReply>(\"POST\", \"/admin/providers\", p),\n editProvider: (id: string, patch: { base_url?: string; format?: WireFormat; name?: string }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}`, patch),\n renameProvider: (id: string, newId: string) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/rename`, { id: newId }),\n removeProvider: (id: string) => api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}`),\n addKey: (id: string, key: string, name?: string) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/keys`, { key, name }),\n editKey: (id: string, index: number, patch: { key?: string; name?: string }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}`, patch),\n removeKey: (id: string, index: number) =>\n api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}`),\n revealKey: (id: string, index: number) =>\n api<{ key: string }>(\"GET\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/reveal`),\n addModel: (id: string, model: string, price?: { price_in?: number; price_out?: number }) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { model, ...price }),\n addModels: (id: string, models: string[]) =>\n api<ConfigReply>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/models`, { models }),\n // model id can hold a slash (provider/model); send it as a query param so the\n // proxy's path split doesn't mangle it.\n removeModel: (id: string, model: string) =>\n api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models?model=${encodeURIComponent(model)}`),\n clearModels: (id: string) => api<ConfigReply>(\"DELETE\", `/admin/providers/${encodeURIComponent(id)}/models`),\n pricing: () => api<PricingPayload>(\"GET\", \"/admin/pricing\"),\n setModelPrice: (id: string, model: string, price: { price_in?: number | null; price_out?: number | null }) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/models/price`, { model, ...price }),\n testProvider: (id: string) => api<PingResult>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/test`),\n testKey: (id: string, index: number) =>\n api<PingResult>(\"POST\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/test`),\n testModel: (id: string, model: string) =>\n api<{ ok: boolean; status?: number; error?: string }>(\n \"POST\",\n `/admin/providers/${encodeURIComponent(id)}/models/test?model=${encodeURIComponent(model)}`,\n ),\n validateProvider: (b: { format: WireFormat; base_url: string; api_key?: string }) =>\n api<PingResult>(\"POST\", \"/admin/providers/validate\", b),\n // discover: returns the upstream catalog flagged with which ids are in config.\n discoverModels: (id: string) =>\n api<{ ok: boolean; models: Array<{ id: string; added: boolean }> }>(\n \"POST\",\n `/admin/providers/${encodeURIComponent(id)}/connect`,\n ),\n\n reorderKey: (id: string, from: number, to: number) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/reorder`, { from, to }),\n toggleKey: (id: string, index: number, enabled: boolean) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/keys/${index}/toggle`, { enabled }),\n setProviderStrategy: (id: string, strategy: \"fallback\" | \"round-robin\" | null, sticky?: number) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/strategy`, { strategy, sticky }),\n setProviderDisabled: (id: string, disabled: boolean) =>\n api<ConfigReply>(\"PUT\", `/admin/providers/${encodeURIComponent(id)}/disabled`, { disabled }),\n\n setRoute: (\n alias: string,\n body: { target: string[]; model?: string | string[]; strategy?: \"fallback\" | \"round-robin\"; price_in?: number; price_out?: number },\n ) => api<ConfigReply>(\"PUT\", `/admin/routes/${encodeURIComponent(alias)}`, body),\n removeRoute: (alias: string) => api<ConfigReply>(\"DELETE\", `/admin/routes/${encodeURIComponent(alias)}`),\n\n endpoint: () => api<EndpointPayload>(\"GET\", \"/admin/endpoint\"),\n setRtk: (enabled: boolean) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/rtk\", { enabled }),\n setCaveman: (level: InjectLevel) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/caveman\", { level }),\n setPonytail: (level: InjectLevel) => api<ConfigReply>(\"PUT\", \"/admin/endpoint/ponytail\", { level }),\n addServerKey: (key: string, name?: string) => api<ConfigReply>(\"POST\", \"/admin/endpoint/keys\", { key, name }),\n editServerKey: (index: number, name: string) => api<ConfigReply>(\"PUT\", `/admin/endpoint/keys/${index}`, { name }),\n setServerKeyScope: (index: number, body: { models?: string[]; rpm?: number | null; expires?: number | null }) =>\n api<ConfigReply>(\"PUT\", `/admin/endpoint/keys/${index}/scope`, body),\n removeServerKey: (index: number) => api<ConfigReply>(\"DELETE\", `/admin/endpoint/keys/${index}`),\n revealServerKey: (index: number) => api<{ key: string }>(\"GET\", `/admin/endpoint/keys/${index}/reveal`),\n\n setHeadroom: (patch: { enabled?: boolean; url?: string; compress_user_messages?: boolean }) =>\n api<ConfigReply>(\"PUT\", \"/admin/endpoint/headroom\", patch),\n headroomStatus: () => api<HeadroomStatusReply>(\"GET\", \"/admin/headroom/status\"),\n headroomStart: () => api<{ success?: boolean; pid?: number; alreadyRunning?: boolean }>(\"POST\", \"/admin/headroom/start\"),\n headroomStop: () => api<{ stopped: boolean; reason?: string; pid?: number }>(\"POST\", \"/admin/headroom/stop\"),\n\n putConfig: (text: string) => api<{ ok: boolean }>(\"PUT\", \"/admin/config\", { text }),\n\n version: () => api<{ current: string; latest: string | null; updateAvailable: boolean }>(\"GET\", \"/admin/version\"),\n shutdown: () => api<{ ok: boolean; message: string }>(\"POST\", \"/admin/shutdown\"),\n};\n\n// Local CLI-tool detection/auto-config. These hit the dashboard's OWN server\n// routes (/api/cli-detect/*), not the gateway proxy — they read/write the tool's\n// config file on this machine. Session-gated by middleware like everything else.\nexport interface CliStatus {\n auto: boolean;\n installed: boolean;\n configured?: boolean;\n path?: string;\n baseUrl?: string | null;\n models?: string[];\n activeModel?: string | null;\n // claude returns its three slot defaults instead of a flat list\n modelSlots?: { opus?: string | null; sonnet?: string | null; haiku?: string | null };\n}\n\nasync function appApi<T>(method: string, url: string, body?: unknown): Promise<ApiResult<T>> {\n let res: Response;\n try {\n res = await fetch(url, {\n method,\n headers: body !== undefined ? { \"content-type\": \"application/json\" } : {},\n body: body !== undefined ? JSON.stringify(body) : undefined,\n });\n } catch (e) {\n return { ok: false, status: 0, data: null, error: (e as Error).message };\n }\n const text = await res.text();\n const data = text ? (JSON.parse(text) as T) : null;\n if (!res.ok) {\n const err = (data as { error?: string } | null)?.error ?? `request failed (${res.status})`;\n return { ok: false, status: res.status, data, error: err };\n }\n return { ok: true, status: res.status, data };\n}\n\n/** Admin account actions that hit the dashboard's OWN routes (not the gw proxy). */\nexport const account = {\n changePassword: (current: string, next: string) =>\n appApi<{ ok: boolean }>(\"POST\", \"/api/password\", { current, next }),\n};\n\nexport const cliConfig = {\n status: (tool: string) => appApi<CliStatus>(\"GET\", `/api/cli-detect/${encodeURIComponent(tool)}`),\n apply: (tool: string, body: { base: string; key?: string; models?: string[] | Record<string, string>; active?: string }) =>\n appApi<{ success?: boolean; path?: string }>(\"POST\", `/api/cli-detect/${encodeURIComponent(tool)}`, body),\n reset: (tool: string) => appApi<{ success?: boolean }>(\"DELETE\", `/api/cli-detect/${encodeURIComponent(tool)}`),\n};\n","\"use client\";\n\nimport { Button } from \"@/components/Button\";\nimport { Icon } from \"@/components/Icon\";\n\ninterface ConfirmModalProps {\n title: string;\n message: string;\n confirmLabel?: string;\n onConfirm: () => void;\n onCancel: () => void;\n busy?: boolean;\n}\n\nexport function ConfirmModal({ title, message, confirmLabel = \"Delete\", onConfirm, onCancel, busy }: ConfirmModalProps) {\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/60 p-6\" onClick={onCancel}>\n <div\n className=\"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 shadow-elevated\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"mb-2 flex items-center gap-2\">\n <span className=\"flex h-7 w-7 items-center justify-center rounded-full bg-danger/10 text-danger\">\n <Icon name=\"warning\" size={16} />\n </span>\n <h2 className=\"text-[15px] font-semibold text-text\">{title}</h2>\n </div>\n <p className=\"mb-4 text-[12.5px] text-text-muted\">{message}</p>\n <div className=\"flex justify-end gap-2\">\n <Button variant=\"ghost\" onClick={onCancel}>Cancel</Button>\n <Button variant=\"danger\" disabled={busy} onClick={onConfirm}>{confirmLabel}</Button>\n </div>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport Link from \"next/link\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { Icon } from \"./Icon\";\n\n// Floating icon-rail (user's preferred chrome), carrying aigetwey's IA: Endpoint\n// is the landing, routing lives in Combos, and operational pages sit below a\n// divider. Labels surface as hover tooltips (data-label).\ntype NavItem = { href: string; label: string; icon: string };\n\nconst MAIN: NavItem[] = [\n { href: \"/\", label: \"Endpoint & Key\", icon: \"api\" },\n { href: \"/providers\", label: \"Providers\", icon: \"dns\" },\n { href: \"/combos\", label: \"Combos\", icon: \"layers\" },\n { href: \"/usage\", label: \"Usage\", icon: \"bar_chart\" },\n { href: \"/quota\", label: \"Budgets\", icon: \"data_usage\" },\n { href: \"/tools\", label: \"CLI Tools\", icon: \"terminal\" },\n];\n\nconst SYSTEM: NavItem[] = [\n { href: \"/console\", label: \"Server Console\", icon: \"terminal\" },\n { href: \"/config\", label: \"Settings\", icon: \"settings\" },\n];\n\nexport function Rail() {\n const path = usePathname();\n const router = useRouter();\n\n async function logout() {\n await fetch(\"/api/logout\", { method: \"POST\" });\n router.replace(\"/login\");\n router.refresh();\n }\n\n // Endpoint owns both \"/\" (landing) and \"/endpoint\"; others match the segment\n // and its sub-routes (e.g. /providers/[id]).\n const isActive = (href: string) =>\n href === \"/\"\n ? path === \"/\" || path.startsWith(\"/endpoint\")\n : path === href || path.startsWith(`${href}/`);\n\n const link = (item: NavItem) => {\n const active = isActive(item.href);\n return (\n <Link\n key={item.href}\n href={item.href}\n data-label={item.label}\n className={`rail-icon${active ? \" rail-icon-active\" : \"\"}`}\n aria-label={item.label}\n >\n <Icon name={item.icon} size={20} fill={active} />\n </Link>\n );\n };\n\n return (\n <>\n <Link href=\"/\" className=\"rail-brand\" aria-label=\"aigetwey\">\n {/* \"a»\" mark — ink on the lime tile (CSS provides the tile) */}\n <svg viewBox=\"0 0 512 512\" width=\"26\" height=\"26\" aria-hidden>\n <text x=\"120\" y=\"338\" fontFamily=\"ui-sans-serif, Arial, sans-serif\" fontSize=\"260\" fontWeight=\"800\" textAnchor=\"middle\" fill=\"#14140f\">a</text>\n <g fill=\"none\" stroke=\"#14140f\" strokeWidth=\"34\" strokeLinecap=\"round\" strokeLinejoin=\"round\">\n <polyline points=\"276,182 352,256 276,330\" />\n <polyline points=\"346,182 422,256 346,330\" />\n </g>\n </svg>\n </Link>\n\n <nav className=\"flex flex-col items-center gap-3\">\n {MAIN.map(link)}\n <div className=\"rail-divider\" />\n {SYSTEM.map(link)}\n </nav>\n\n <button onClick={logout} data-label=\"Disconnect\" className=\"rail-icon\" aria-label=\"Disconnect\">\n <Icon name=\"logout\" size={19} />\n </button>\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport { usePathname } from \"next/navigation\";\nimport { Icon } from \"./Icon\";\nimport { useTheme } from \"./ThemeProvider\";\nimport { ConfirmModal } from \"./ConfirmModal\";\nimport { adminApi } from \"@/lib/client\";\n\nconst LABELS: Record<string, string> = {\n \"\": \"Endpoint & Key\",\n endpoint: \"Endpoint & Key\",\n providers: \"Providers\",\n combos: \"Combos\",\n usage: \"Usage\",\n quota: \"Budgets\",\n tools: \"CLI Tools\",\n console: \"Server Console\",\n config: \"Settings\",\n};\n\nfunction CopyUpdateCmd({ version }: { version: string }) {\n const [copied, setCopied] = useState(false);\n const cmd = `npm install -g aigetwey@${version}`;\n return (\n <button\n onClick={() => { void navigator.clipboard.writeText(cmd).then(() => { setCopied(true); setTimeout(() => setCopied(false), 1800); }); }}\n className=\"flex h-6 w-6 items-center justify-center rounded-full text-warning/70 transition-colors hover:bg-warning/10 hover:text-warning\"\n title={`Copy: ${cmd}`}\n >\n <Icon name={copied ? \"check\" : \"content_copy\"} size={13} />\n </button>\n );\n}\n\nexport function TopBar() {\n const path = usePathname();\n const { theme, toggle } = useTheme();\n const seg = path === \"/\" ? \"\" : (path.split(\"/\")[1] ?? \"\");\n const current = LABELS[seg] ?? seg;\n\n const [version, setVersion] = useState<{ current: string; latest: string | null; updateAvailable: boolean } | null>(null);\n const [confirmShutdown, setConfirmShutdown] = useState(false);\n const [stopped, setStopped] = useState(false);\n const [busy, setBusy] = useState(false);\n\n // version + update check on mount, via aigetwey's sidebar npm poll.\n useEffect(() => {\n void adminApi.version().then((r) => {\n if (r.ok && r.data) setVersion(r.data);\n });\n }, []);\n\n async function doShutdown() {\n setBusy(true);\n await adminApi.shutdown();\n // the gateway exits ~300ms after replying; reflect it in the UI.\n setStopped(true);\n setConfirmShutdown(false);\n setBusy(false);\n }\n\n return (\n <header className=\"console-topbar\">\n <div className=\"flex items-center gap-2 text-[13px]\">\n <span className=\"text-text-subtle\">aigetwey</span>\n <span className=\"text-text-subtle\">/</span>\n <span className=\"font-medium text-text\">{current}</span>\n </div>\n\n <div className=\"ml-auto flex items-center gap-2.5\">\n {version && (\n version.updateAvailable ? (\n <div className=\"flex items-center gap-1\">\n <a\n href=\"https://github.com/xk1ko/aigetwey/releases\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-1.5 rounded-full border border-warning/30 bg-warning/10 px-2.5 py-1 text-[11px] font-medium text-warning transition-colors hover:bg-warning/20\"\n title={`Update available — v${version.latest} is out (you have v${version.current})`}\n >\n <Icon name=\"arrow_upward\" size={12} />\n v{version.latest} available\n </a>\n <CopyUpdateCmd version={version.latest!} />\n </div>\n ) : (\n <span className=\"text-[11px] text-text-subtle\" title=\"You're on the latest version\">\n v{version.current}\n </span>\n )\n )}\n\n <button\n onClick={toggle}\n className=\"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-text\"\n aria-label=\"Toggle theme\"\n title={theme === \"dark\" ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n <Icon name={theme === \"dark\" ? \"light_mode\" : \"dark_mode\"} size={18} />\n </button>\n\n <button\n onClick={() => setConfirmShutdown(true)}\n className=\"flex h-8 w-8 items-center justify-center rounded-full text-text-subtle transition-colors hover:text-danger\"\n aria-label=\"Shut down gateway\"\n title=\"Shut down the gateway\"\n >\n <Icon name=\"power_settings_new\" size={18} />\n </button>\n\n <div className=\"flex items-center gap-2 rounded-full border border-border bg-surface py-1 pl-1 pr-3\">\n <span className=\"flex h-6 w-6 items-center justify-center rounded-full bg-accent text-[11px] font-bold text-accent-ink\">\n A\n </span>\n <span className=\"text-[12px] text-text-muted\">admin</span>\n </div>\n </div>\n\n {confirmShutdown && (\n <ConfirmModal\n title=\"Shut down gateway?\"\n message=\"The gateway process will stop and all requests will fail until you restart it (run.sh). The dashboard stays up but can't reach the gateway.\"\n confirmLabel=\"Shut down\"\n busy={busy}\n onConfirm={doShutdown}\n onCancel={() => setConfirmShutdown(false)}\n />\n )}\n\n {stopped && (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/70 p-6\">\n <div className=\"w-full max-w-sm rounded-brand-lg border border-border bg-surface p-5 text-center shadow-elevated\">\n <span className=\"mx-auto mb-2 flex h-9 w-9 items-center justify-center rounded-full bg-danger/10 text-danger\">\n <Icon name=\"power_settings_new\" size={20} />\n </span>\n <h2 className=\"text-[15px] font-semibold text-text\">Gateway stopped</h2>\n <p className=\"mt-1 text-[12.5px] text-text-muted\">\n Restart it with <code className=\"rounded bg-surface-2 px-1\">run.sh</code>, then reload this page.\n </p>\n </div>\n </div>\n )}\n </header>\n );\n}\n"],"names":["InvariantError","Error","constructor","message","options","endsWith","name","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","createPromiseWithResolvers","resolve","reject","promise","Promise","res","rej","VARIANTS","primary","ghost","danger","Button","variant","className","props","Input","Select","Field","label","hint","api","method","path","body","fetch","headers","undefined","e","ok","status","data","error","text","parse","err","adminApi","providers","budgets","models","keys","keysUsage","setBudget","clearBudget","key","encodeURIComponent","addProvider","p","editProvider","id","patch","renameProvider","newId","removeProvider","addKey","editKey","index","removeKey","revealKey","addModel","model","price","addModels","removeModel","clearModels","pricing","setModelPrice","testProvider","testKey","testModel","validateProvider","b","discoverModels","reorderKey","from","to","toggleKey","enabled","setProviderStrategy","strategy","sticky","setProviderDisabled","disabled","setRoute","alias","removeRoute","endpoint","setRtk","setCaveman","level","setPonytail","addServerKey","editServerKey","setServerKeyScope","removeServerKey","revealServerKey","setHeadroom","headroomStatus","headroomStart","headroomStop","putConfig","version","shutdown","appApi","url","account","changePassword","current","next","cliConfig","tool","apply","reset","ConfirmModal","title","confirmLabel","onConfirm","onCancel","busy","onClick","stopPropagation","size","MAIN","href","icon","SYSTEM","Rail","router","logout","replace","refresh","isActive","link","item","active","fill","viewBox","width","height","x","y","fontFamily","fontSize","fontWeight","textAnchor","stroke","strokeWidth","strokeLinecap","strokeLinejoin","points","map","LABELS","combos","usage","quota","tools","console","config","CopyUpdateCmd","copied","setCopied","cmd","navigator","clipboard","writeText","then","setTimeout","TopBar","theme","toggle","seg","split","setVersion","confirmShutdown","setConfirmShutdown","stopped","setStopped","setBusy","r","doShutdown","updateAvailable","target","rel","latest"],"mappings":"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","ignoreList":[0,1,2]}
@@ -7,9 +7,9 @@ globalThis.__BUILD_MANIFEST = {
7
7
  "static/chunks/0cz1d0mv5g_q7.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/BHVoneq9_CCAAPwET7GfO/_buildManifest.js",
11
- "static/BHVoneq9_CCAAPwET7GfO/_ssgManifest.js",
12
- "static/BHVoneq9_CCAAPwET7GfO/_clientMiddlewareManifest.js"
10
+ "static/l0QkSM6jT0jiUc4m4dh6K/_buildManifest.js",
11
+ "static/l0QkSM6jT0jiUc4m4dh6K/_ssgManifest.js",
12
+ "static/l0QkSM6jT0jiUc4m4dh6K/_clientMiddlewareManifest.js"
13
13
  ],
14
14
  "rootMainFiles": [
15
15
  "static/chunks/36ssnkm0cjgq6.js",
@@ -1 +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/03o9w8fy3awov.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/03o9w8fy3awov.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/03o9w8fy3awov.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/03o9w8fy3awov.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"BHVoneq9_CCAAPwET7GfO\"}\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>
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/452cgglyyo7hp.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/452cgglyyo7hp.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/452cgglyyo7hp.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/452cgglyyo7hp.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"l0QkSM6jT0jiUc4m4dh6K\"}\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>